Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:57:25

0001 #ifndef ALIGNMENT_TRACKERALIGNMENT_INTERFACE_TRACKERALIGNMENTLEVELBUILDER_H_
0002 #define ALIGNMENT_TRACKERALIGNMENT_INTERFACE_TRACKERALIGNMENTLEVELBUILDER_H_
0003 
0004 // Original Author:  Max Stark
0005 //         Created:  Wed, 10 Feb 2016 13:48:41 CET
0006 
0007 // system includes
0008 #include <set>
0009 #include <map>
0010 
0011 // core framework functionality
0012 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0013 
0014 // alignment
0015 #include "Alignment/CommonAlignment/interface/AlignableObjectId.h"
0016 #include "Alignment/CommonAlignment/interface/AlignmentLevel.h"
0017 #include "Alignment/CommonAlignment/interface/Utilities.h"
0018 #include "Alignment/TrackerAlignment/interface/TrackerNameSpace.h"
0019 
0020 class DetId;
0021 class TrackerTopology;
0022 class TrackerGeometry;
0023 
0024 class TrackerAlignmentLevelBuilder {
0025   //========================== PUBLIC METHODS =================================
0026 public:  //===================================================================
0027   TrackerAlignmentLevelBuilder(const TrackerTopology*, const TrackerGeometry*);
0028   virtual ~TrackerAlignmentLevelBuilder();
0029 
0030   void addDetUnitInfo(const DetId& detId);
0031   std::vector<align::AlignmentLevels> build();
0032   const AlignableObjectId& objectIdProvider() const { return alignableObjectId_; }
0033   const align::TrackerNameSpace& trackerNameSpace() const;
0034 
0035   //========================= PRIVATE METHODS =================================
0036 private:  //==================================================================
0037   void addPXBDetUnitInfo(const DetId& detId);
0038   void addPXEDetUnitInfo(const DetId& detId);
0039   void addTIBDetUnitInfo(const DetId& detId);
0040   void addTIDDetUnitInfo(const DetId& detId);
0041   void addTOBDetUnitInfo(const DetId& detId);
0042   void addTECDetUnitInfo(const DetId& detId);
0043 
0044   align::AlignmentLevels buildPXBAlignmentLevels();
0045   align::AlignmentLevels buildPXEAlignmentLevels();
0046   align::AlignmentLevels buildTIBAlignmentLevels();
0047   align::AlignmentLevels buildTIDAlignmentLevels();
0048   align::AlignmentLevels buildTOBAlignmentLevels();
0049   align::AlignmentLevels buildTECAlignmentLevels();
0050 
0051   //========================== PRIVATE DATA ===================================
0052   //===========================================================================
0053 
0054   const TrackerTopology* trackerTopology_;
0055   const AlignableObjectId alignableObjectId_;
0056   align::TrackerNameSpace trackerNameSpace_;
0057   bool levelsBuilt_{false};
0058 
0059   // PixelBarrel
0060   std::set<unsigned int> pxbLayerIDs_;
0061   std::set<unsigned int> pxbLadderIDs_;
0062   std::set<unsigned int> pxbModuleIDs_;
0063   std::map<unsigned int, unsigned int> pxbLaddersPerLayer_;
0064 
0065   // PixelEndcap
0066   std::set<unsigned int> pxeSideIDs_;
0067   std::set<unsigned int> pxeDiskIDs_;
0068   std::set<unsigned int> pxeBladeIDs_;
0069   std::set<unsigned int> pxePanelIDs_;
0070   std::set<unsigned int> pxeModuleIDs_;
0071 
0072   // TIB
0073   std::set<unsigned int> tibSideIDs_;
0074   std::set<unsigned int> tibLayerIDs_;
0075   std::set<unsigned int> tibStringIDs_;
0076   std::set<unsigned int> tibModuleIDs_;
0077   std::map<unsigned int, unsigned int> pxbStringsPerHalfShell_;
0078 
0079   // TID
0080   std::set<unsigned int> tidSideIDs_;
0081   std::set<unsigned int> tidWheelIDs_;
0082   std::set<unsigned int> tidRingIDs_;
0083   std::set<unsigned int> tidModuleIDs_;
0084   std::map<unsigned int, unsigned int> tidStringsInnerLayer_;
0085   std::map<unsigned int, unsigned int> tidStringsOuterLayer_;
0086 
0087   // TOB
0088   std::set<unsigned int> tobLayerIDs_;
0089   std::set<unsigned int> tobSideIDs_;
0090   std::set<unsigned int> tobRodIDs_;
0091   std::set<unsigned int> tobModuleIDs_;
0092 
0093   // TEC
0094   std::set<unsigned int> tecSideIDs_;
0095   std::set<unsigned int> tecWheelIDs_;
0096   std::set<unsigned int> tecPetalIDs_;
0097   std::set<unsigned int> tecRingIDs_;
0098   std::set<unsigned int> tecModuleIDs_;
0099 };
0100 
0101 #endif /* ALIGNMENT_TRACKERALIGNMENT_INTERFACE_TRACKERALIGNMENTLEVELBUILDER_H_ */