File indexing completed on 2024-04-06 12:22:35
0001 #ifndef MagCylinder_H
0002 #define MagCylinder_H
0003
0004 #include "MagneticField/VolumeGeometry/interface/MagVolume.h"
0005 #include "MagneticField/VolumeGeometry/interface/VolumeSide.h"
0006
0007 #include <vector>
0008
0009
0010 #include <string>
0011
0012
0013 template <class T>
0014 class MagneticFieldProvider;
0015
0016 class MagCylinder final : public MagVolume {
0017 public:
0018 MagCylinder(const PositionType& pos,
0019 const RotationType& rot,
0020 const std::vector<VolumeSide>& faces,
0021 const MagneticFieldProvider<float>* mfp);
0022
0023 bool inside(const GlobalPoint& gp, double tolerance = 0.) const override;
0024 bool inside(const LocalPoint& lp, double tolerance = 0.) const override;
0025
0026
0027 const std::vector<VolumeSide>& faces() const override { return theFaces; }
0028
0029
0030 std::string name;
0031
0032
0033 private:
0034 std::vector<VolumeSide> theFaces;
0035 Scalar theZmin;
0036 Scalar theZmax;
0037 Scalar theInnerR;
0038 Scalar theOuterR;
0039 };
0040
0041 #endif