#ifndef MagCylinder_H
#define MagCylinder_H

#include "MagneticField/VolumeGeometry/interface/MagVolume.h"
#include "MagneticField/VolumeGeometry/interface/VolumeSide.h"

#include <vector>

//-- FIXME
#include <string>
//--

template <class T>
class MagneticFieldProvider;

class MagCylinder final : public MagVolume {
public:
  MagCylinder(const PositionType& pos,
              const RotationType& rot,
              const std::vector<VolumeSide>& faces,
              const MagneticFieldProvider<float>* mfp);

  bool inside(const GlobalPoint& gp, double tolerance = 0.) const override;
  bool inside(const LocalPoint& lp, double tolerance = 0.) const override;

  /// Access to volume faces
  const std::vector<VolumeSide>& faces() const override { return theFaces; }

  //-- FIXME
  std::string name;
  //--

private:
  std::vector<VolumeSide> theFaces;
  Scalar theZmin;
  Scalar theZmax;
  Scalar theInnerR;
  Scalar theOuterR;
};

#endif
