File indexing completed on 2024-09-07 04:34:43
0001 #ifndef Alignment_TrackerAlignment_AlignableTracker_H
0002 #define Alignment_TrackerAlignment_AlignableTracker_H
0003
0004
0005
0006
0007
0008
0009 #include "Alignment/CommonAlignment/interface/AlignableMap.h"
0010 #include "Alignment/CommonAlignment/interface/AlignableComposite.h"
0011 #include "Alignment/CommonAlignment/interface/AlignableObjectId.h"
0012 #include "Alignment/TrackerAlignment/interface/TrackerNameSpace.h"
0013
0014 class TrackerGeometry;
0015 class TrackerTopology;
0016
0017 class AlignableTracker : public AlignableComposite {
0018
0019 friend class AlignableTrackerBuilder;
0020
0021 public:
0022 AlignableTracker(const TrackerGeometry*, const TrackerTopology*);
0023 ~AlignableTracker() override { }
0024
0025
0026
0027 Alignables& subStructures(const std::string& subStructName) { return alignableMap_.find(subStructName); }
0028
0029
0030
0031 void update(const TrackerGeometry*, const TrackerTopology*);
0032
0033
0034 Alignables& outerHalfBarrels() { return this->subStructures(alignableObjectId_.typeToName(align::TOBHalfBarrel)); }
0035
0036 Alignables& innerHalfBarrels() { return this->subStructures(alignableObjectId_.typeToName(align::TIBHalfBarrel)); }
0037
0038 Alignables& pixelHalfBarrels() { return this->subStructures(alignableObjectId_.typeToName(align::TPBHalfBarrel)); }
0039
0040 Alignables& endCaps() { return this->subStructures(alignableObjectId_.typeToName(align::TECEndcap)); }
0041
0042 Alignables& pixelEndCaps() { return this->subStructures(alignableObjectId_.typeToName(align::TPEEndcap)); }
0043
0044 Alignables& TIDs() { return this->subStructures(alignableObjectId_.typeToName(align::TIDEndcap)); }
0045
0046 Alignables& pixelEndcapHalfCylinders() {
0047 return this->subStructures(alignableObjectId_.typeToName(align::TPEHalfCylinder));
0048 }
0049
0050
0051 Alignables barrelGeomDets() { return this->merge(this->innerBarrelGeomDets(), this->outerBarrelGeomDets()); }
0052
0053 Alignables TIBTIDGeomDets() { return this->merge(this->innerBarrelGeomDets(), this->TIDGeomDets()); }
0054
0055 Alignables& innerBarrelGeomDets() { return this->subStructures(alignableObjectId_.typeToName(align::TIBModule)); }
0056
0057 Alignables& outerBarrelGeomDets() { return this->subStructures(alignableObjectId_.typeToName(align::TOBModule)); }
0058
0059 Alignables& pixelHalfBarrelGeomDets() { return this->subStructures(alignableObjectId_.typeToName(align::TPBModule)); }
0060
0061 Alignables& endcapGeomDets() { return this->subStructures(alignableObjectId_.typeToName(align::TECModule)); }
0062
0063 Alignables& TIDGeomDets() { return this->subStructures(alignableObjectId_.typeToName(align::TIDModule)); }
0064
0065 Alignables& pixelEndcapGeomDets() { return this->subStructures(alignableObjectId_.typeToName(align::TPEModule)); }
0066
0067
0068 Alignables barrelRods() { return this->merge(this->innerBarrelRods(), this->outerBarrelRods()); }
0069
0070 Alignables& innerBarrelRods() { return this->subStructures(alignableObjectId_.typeToName(align::TIBString)); }
0071
0072 Alignables& outerBarrelRods() { return this->subStructures(alignableObjectId_.typeToName(align::TOBRod)); }
0073
0074 Alignables& pixelHalfBarrelLadders() { return this->subStructures(alignableObjectId_.typeToName(align::TPBLadder)); }
0075
0076 Alignables& endcapPetals() { return this->subStructures(alignableObjectId_.typeToName(align::TECPetal)); }
0077
0078 Alignables& TIDRings() { return this->subStructures(alignableObjectId_.typeToName(align::TIDRing)); }
0079
0080 Alignables& pixelEndcapPetals() { return this->subStructures(alignableObjectId_.typeToName(align::TPEPanel)); }
0081
0082
0083 Alignables barrelLayers() { return this->merge(this->innerBarrelLayers(), this->outerBarrelLayers()); }
0084
0085 Alignables& innerBarrelLayers() { return this->subStructures(alignableObjectId_.typeToName(align::TIBLayer)); }
0086
0087 Alignables& outerBarrelLayers() { return this->subStructures(alignableObjectId_.typeToName(align::TOBLayer)); }
0088
0089 Alignables& pixelHalfBarrelLayers() { return this->subStructures(alignableObjectId_.typeToName(align::TPBLayer)); }
0090
0091 Alignables& endcapLayers() { return this->subStructures(alignableObjectId_.typeToName(align::TECDisk)); }
0092
0093 Alignables& TIDLayers() { return this->subStructures(alignableObjectId_.typeToName(align::TIDDisk)); }
0094
0095 Alignables& pixelEndcapLayers() { return this->subStructures(alignableObjectId_.typeToName(align::TPEHalfDisk)); }
0096
0097
0098 Alignments* alignments() const override;
0099
0100
0101 AlignmentErrorsExtended* alignmentErrors() const override;
0102
0103
0104 const TrackerTopology* trackerTopology() const { return tTopo_; }
0105
0106
0107 const align::TrackerNameSpace& trackerNameSpace() const { return trackerNameSpace_; }
0108
0109
0110 const AlignableObjectId& objectIdProvider() const { return alignableObjectId_; }
0111
0112 private:
0113 Alignables merge(const Alignables& list1, const Alignables& list2) const;
0114
0115 const TrackerTopology* tTopo_;
0116 align::TrackerNameSpace trackerNameSpace_;
0117 AlignableObjectId alignableObjectId_;
0118 AlignableMap alignableMap_;
0119 };
0120
0121 #endif