Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:14:30

0001 #ifndef bSlab_H
0002 #define bSlab_H
0003 
0004 /** \class MagGeoBuilderFromDDD::bSlab
0005  *  One or more slabs constitute a barrel rod.
0006  *  In most cases, a slab is a single volume, but in few cases it consists
0007  *  in several volumes contiguous in phi.
0008  *
0009  *  \author N. Amapane - INFN Torino
0010  */
0011 
0012 #include "BaseVolumeHandle.h"
0013 
0014 #include "DataFormats/GeometryVector/interface/Phi.h"
0015 
0016 #include "MagneticField/VolumeGeometry/interface/MagVolume6Faces.h"
0017 #include "MagneticField/Layers/interface/MagBSlab.h"
0018 
0019 class MagBSlab;
0020 
0021 namespace magneticfield {
0022 
0023   class bSlab {
0024   public:
0025     /// Constructor from list of volumes
0026     bSlab(handles::const_iterator startIter, handles::const_iterator endIter, bool debugVal = false);
0027 
0028     /// Destructor
0029     ~bSlab() = default;
0030 
0031     /// Distance from center along sector normal.
0032     const float RN() const { return volumes.front()->RN(); }
0033 
0034     /// Boundary in phi.
0035     // FIXME: use volumeHandle [max|min]Phi, which returns phi at median of
0036     // phi plane (not absolute limits). Used by: bRod ctor (only for dphi)
0037     Geom::Phi<float> minPhi() const;
0038 
0039     /// Boundary in phi.
0040     Geom::Phi<float> maxPhi() const;
0041 
0042     /// Construct the MagBSlab upon request.
0043     MagBSlab* buildMagBSlab() const;
0044 
0045   private:
0046     handles volumes;  // pointers to all volumes in the slab
0047     mutable MagBSlab* mslab;
0048     bool debug;  // Allow assignment
0049   };
0050 }  // namespace magneticfield
0051 
0052 #endif