Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-09-10 02:59:07

0001 #ifndef SimG4CMS_Muon_MuonG4Numbering_h
0002 #define SimG4CMS_Muon_MuonG4Numbering_h
0003 
0004 /** \class MuonG4Numbering
0005  *
0006  * class to handle the conversion to MuonBaseNumber from tree of 
0007  * G4 copy numbers extracted from G4VPhysicalVolume;
0008  * needs DDD compatible format of G4 copy numbers; the format
0009  * itself may in a later version also be defined by DDD constants
0010  *
0011  * in the xml muon constant section one has to define
0012  * level, super and base constants (eg. 1000,100,1) and
0013  * the start value of the copy numbers (0 or 1)
0014  *  
0015  * \author Arno Straessner, CERN <arno.straessner@cern.ch>
0016  *
0017  * Modification:
0018  *
0019  */
0020 
0021 class G4Step;
0022 class MuonBaseNumber;
0023 class MuonGeometryConstants;
0024 class MuonOffsetMap;
0025 
0026 class MuonG4Numbering {
0027 public:
0028   MuonG4Numbering(const MuonGeometryConstants& muonConstants, const MuonOffsetMap* offMap, bool dd4hep);
0029   ~MuonG4Numbering() {}
0030 
0031   MuonBaseNumber PhysicalVolumeToBaseNumber(const G4Step* aStep);
0032 
0033 private:
0034   const int getCopyNoLevel(const int);
0035   const int getCopyNoSuperNo(const int);
0036   const int getCopyNoBaseNo(const int);
0037   const bool copyNoRelevant(const int);
0038 
0039   const MuonOffsetMap* offMap_;
0040   const bool dd4hep_;
0041   int theLevelPart;
0042   int theSuperPart;
0043   int theBasePart;
0044   int theStartCopyNo;
0045 };
0046 
0047 #endif