Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef bLayer_H
0002 #define bLayer_H
0003 
0004 /** \class bLayer
0005  *  A layer of barrel volumes. Holds a list of volumes and 12 sectors.
0006  *  It is assumed that the geometry is 12-fold periodic in phi!
0007  *
0008  *  \author N. Amapane - INFN Torino
0009  */
0010 
0011 #include "bSector.h"
0012 
0013 class MagBLayer;
0014 
0015 namespace magneticfield {
0016 
0017   class bLayer {
0018   public:
0019     /// Constructor from list of volumes
0020     bLayer(handles::const_iterator begin, handles::const_iterator end, bool debugFlag = false);
0021 
0022     /// Destructor
0023     ~bLayer() = default;
0024 
0025     /// Distance  from center along normal of sectors.
0026     const float RN() const { return theVolumes.front()->RN(); }
0027 
0028     /// Return the list of all volumes.
0029     const handles& volumes() const { return theVolumes; }
0030 
0031     /// Return sector at i (handling periodicity)
0032     //   const bSector & sector(int i) const;
0033 
0034     /// Min R (conservative guess).
0035     double minR() const;
0036 
0037     // Depends on volumeHandle::maxR(), which actually returns max RN.
0038     // (should be changed?)
0039     // double maxR() const;
0040 
0041     /// Construct the MagBLayer upon request.
0042     MagBLayer* buildMagBLayer() const;
0043 
0044   private:
0045     int size;  //< the number of volumes
0046 
0047     // Check periodicity;
0048     int bin(int i) const;
0049 
0050     std::vector<bSector> sectors;  // the sectors in this layer
0051     handles theVolumes;            // pointer to all volumes in this layer
0052 
0053     mutable MagBLayer* mlayer;
0054     const bool debug;
0055   };
0056 }  // namespace magneticfield
0057 
0058 #endif