Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:22:33

0001 #ifndef MagBRod_H
0002 #define MagBRod_H
0003 
0004 /** \class MagBRod
0005  *
0006  *  A container of volumes in the barrel. It is part of the hierarchical 
0007  *  organisation of barrel volumes:
0008  *
0009  *  A barrel layer (MagBLayer) groups volumes at the same distance to
0010  *  the origin. It consists of 12 sectors in phi (MagBSector). 
0011  *  Each sector consists of one or more rods (MagBRods) of equal width in phi.
0012  *  Rods consist of one or more slabs (MagBSlab); each one consisting of one 
0013  *  or, in few cases, several volumes with the same lenght in Z.
0014  *
0015  *  \author N. Amapane - INFN Torino
0016  */
0017 
0018 #include <vector>
0019 
0020 class MagBSlab;
0021 class MagVolume;
0022 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0023 #include "MagneticField/Layers/interface/MagBinFinders.h"
0024 
0025 class MagBRod {
0026 public:
0027   /// Constructor
0028   MagBRod(std::vector<MagBSlab*>& slabs, Geom::Phi<float> phiMin);
0029 
0030   /// Destructor
0031   virtual ~MagBRod();
0032 
0033   /// Find the volume containing a point, with a given tolerance
0034   const MagVolume* findVolume(const GlobalPoint& gp, double tolerance) const;
0035 
0036   /// Phi of rod start
0037   Geom::Phi<float> minPhi() const { return thePhiMin; }
0038 
0039 private:
0040   std::vector<MagBSlab*> theSlabs;
0041   Geom::Phi<float> thePhiMin;
0042   MagBinFinders::GeneralBinFinderInZ<double>* theBinFinder;
0043 };
0044 #endif