CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackerAlignmentLevelBuilder Class Reference

#include <TrackerAlignmentLevelBuilder.h>

Public Member Functions

void addDetUnitInfo (const DetId &detId)
 
std::vector< align::AlignmentLevelsbuild ()
 
const AlignableObjectIdobjectIdProvider () const
 
 TrackerAlignmentLevelBuilder (const TrackerTopology *, const TrackerGeometry *)
 
const align::TrackerNameSpacetrackerNameSpace () const
 
virtual ~TrackerAlignmentLevelBuilder ()
 

Private Member Functions

void addPXBDetUnitInfo (const DetId &detId)
 
void addPXEDetUnitInfo (const DetId &detId)
 
void addTECDetUnitInfo (const DetId &detId)
 
void addTIBDetUnitInfo (const DetId &detId)
 
void addTIDDetUnitInfo (const DetId &detId)
 
void addTOBDetUnitInfo (const DetId &detId)
 
align::AlignmentLevels buildPXBAlignmentLevels ()
 
align::AlignmentLevels buildPXEAlignmentLevels ()
 
align::AlignmentLevels buildTECAlignmentLevels ()
 
align::AlignmentLevels buildTIBAlignmentLevels ()
 
align::AlignmentLevels buildTIDAlignmentLevels ()
 
align::AlignmentLevels buildTOBAlignmentLevels ()
 

Private Attributes

const AlignableObjectId alignableObjectId_
 
bool levelsBuilt_ {false}
 
std::set< unsigned int > pxbLadderIDs_
 
std::map< unsigned int, unsigned int > pxbLaddersPerLayer_
 
std::set< unsigned int > pxbLayerIDs_
 
std::set< unsigned int > pxbModuleIDs_
 
std::map< unsigned int, unsigned int > pxbStringsPerHalfShell_
 
std::set< unsigned int > pxeBladeIDs_
 
std::set< unsigned int > pxeDiskIDs_
 
std::set< unsigned int > pxeModuleIDs_
 
std::set< unsigned int > pxePanelIDs_
 
std::set< unsigned int > pxeSideIDs_
 
std::set< unsigned int > tecModuleIDs_
 
std::set< unsigned int > tecPetalIDs_
 
std::set< unsigned int > tecRingIDs_
 
std::set< unsigned int > tecSideIDs_
 
std::set< unsigned int > tecWheelIDs_
 
std::set< unsigned int > tibLayerIDs_
 
std::set< unsigned int > tibModuleIDs_
 
std::set< unsigned int > tibSideIDs_
 
std::set< unsigned int > tibStringIDs_
 
std::set< unsigned int > tidModuleIDs_
 
std::set< unsigned int > tidRingIDs_
 
std::set< unsigned int > tidSideIDs_
 
std::map< unsigned int, unsigned int > tidStringsInnerLayer_
 
std::map< unsigned int, unsigned int > tidStringsOuterLayer_
 
std::set< unsigned int > tidWheelIDs_
 
std::set< unsigned int > tobLayerIDs_
 
std::set< unsigned int > tobModuleIDs_
 
std::set< unsigned int > tobRodIDs_
 
std::set< unsigned int > tobSideIDs_
 
align::TrackerNameSpace trackerNameSpace_
 
const TrackerTopologytrackerTopology_
 

Detailed Description

Definition at line 24 of file TrackerAlignmentLevelBuilder.h.

Constructor & Destructor Documentation

◆ TrackerAlignmentLevelBuilder()

TrackerAlignmentLevelBuilder::TrackerAlignmentLevelBuilder ( const TrackerTopology trackerTopology,
const TrackerGeometry trackerGeometry 
)

Definition at line 17 of file TrackerAlignmentLevelBuilder.cc.

19  : trackerTopology_(trackerTopology),
20  alignableObjectId_(trackerGeometry, nullptr, nullptr, nullptr),
21  trackerNameSpace_(trackerTopology) {}
const AlignableObjectId alignableObjectId_

◆ ~TrackerAlignmentLevelBuilder()

TrackerAlignmentLevelBuilder::~TrackerAlignmentLevelBuilder ( )
virtual

Definition at line 24 of file TrackerAlignmentLevelBuilder.cc.

24 {}

Member Function Documentation

◆ addDetUnitInfo()

void TrackerAlignmentLevelBuilder::addDetUnitInfo ( const DetId detId)

Definition at line 27 of file TrackerAlignmentLevelBuilder.cc.

References addPXBDetUnitInfo(), addPXEDetUnitInfo(), addTECDetUnitInfo(), addTIBDetUnitInfo(), addTIDDetUnitInfo(), addTOBDetUnitInfo(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, DetId::subdetId(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, and StripSubdetector::TOB.

Referenced by AlignableTrackerBuilder::convertGeomDetsToAlignables().

27  {
28  int subdetId = detId.subdetId();
29 
30  switch (subdetId) {
32  addPXBDetUnitInfo(detId);
33  break;
35  addPXEDetUnitInfo(detId);
36  break;
38  addTIBDetUnitInfo(detId);
39  break;
41  addTIDDetUnitInfo(detId);
42  break;
44  addTOBDetUnitInfo(detId);
45  break;
47  addTECDetUnitInfo(detId);
48  break;
49  }
50 }
static constexpr auto TEC
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
static constexpr auto TOB
static constexpr auto TIB
void addPXBDetUnitInfo(const DetId &detId)
static constexpr auto TID
void addPXEDetUnitInfo(const DetId &detId)

◆ addPXBDetUnitInfo()

void TrackerAlignmentLevelBuilder::addPXBDetUnitInfo ( const DetId detId)
private

Definition at line 81 of file TrackerAlignmentLevelBuilder.cc.

References TrackerTopology::module(), TrackerTopology::pxbLadder(), pxbLadderIDs_, pxbLaddersPerLayer_, TrackerTopology::pxbLayer(), pxbLayerIDs_, pxbModuleIDs_, and trackerTopology_.

Referenced by addDetUnitInfo().

81  {
82  auto layerID = trackerTopology_->pxbLayer(detId);
83  auto ladderID = trackerTopology_->pxbLadder(detId);
84  auto moduleID = trackerTopology_->module(detId);
85 
86  if (pxbLaddersPerLayer_[layerID - 1] < ladderID) {
87  pxbLaddersPerLayer_[layerID - 1] = ladderID;
88  }
89 
90  pxbLayerIDs_.insert(layerID);
91  pxbLadderIDs_.insert(ladderID);
92  pxbModuleIDs_.insert(moduleID);
93 }
unsigned int pxbLayer(const DetId &id) const
std::map< unsigned int, unsigned int > pxbLaddersPerLayer_
unsigned int pxbLadder(const DetId &id) const
unsigned int module(const DetId &id) const

◆ addPXEDetUnitInfo()

void TrackerAlignmentLevelBuilder::addPXEDetUnitInfo ( const DetId detId)
private

Definition at line 96 of file TrackerAlignmentLevelBuilder.cc.

References TrackerTopology::module(), pxeBladeIDs_, pxeDiskIDs_, pxeModuleIDs_, pxePanelIDs_, pxeSideIDs_, TrackerTopology::pxfBlade(), TrackerTopology::pxfDisk(), TrackerTopology::pxfPanel(), TrackerTopology::pxfSide(), and trackerTopology_.

Referenced by addDetUnitInfo().

96  {
97  auto sideID = trackerTopology_->pxfSide(detId);
98  auto diskID = trackerTopology_->pxfDisk(detId);
99  auto bladeID = trackerTopology_->pxfBlade(detId);
100  auto panelID = trackerTopology_->pxfPanel(detId);
101  auto moduleID = trackerTopology_->module(detId);
102 
103  pxeSideIDs_.insert(sideID);
104  pxeDiskIDs_.insert(diskID);
105  pxeBladeIDs_.insert(bladeID);
106  pxePanelIDs_.insert(panelID);
107  pxeModuleIDs_.insert(moduleID);
108 }
unsigned int pxfBlade(const DetId &id) const
unsigned int module(const DetId &id) const
unsigned int pxfDisk(const DetId &id) const
unsigned int pxfPanel(const DetId &id) const
unsigned int pxfSide(const DetId &id) const

◆ addTECDetUnitInfo()

void TrackerAlignmentLevelBuilder::addTECDetUnitInfo ( const DetId detId)
private

Definition at line 162 of file TrackerAlignmentLevelBuilder.cc.

References TrackerTopology::module(), tecModuleIDs_, tecPetalIDs_, TrackerTopology::tecPetalNumber(), TrackerTopology::tecRing(), tecRingIDs_, TrackerTopology::tecSide(), tecSideIDs_, TrackerTopology::tecWheel(), tecWheelIDs_, and trackerTopology_.

Referenced by addDetUnitInfo().

162  {
163  auto sideID = trackerTopology_->tecSide(detId);
164  auto wheelID = trackerTopology_->tecWheel(detId);
165  auto petalID = trackerTopology_->tecPetalNumber(detId);
166  auto ringID = trackerTopology_->tecRing(detId);
167  auto moduleID = trackerTopology_->module(detId);
168 
169  tecSideIDs_.insert(sideID);
170  tecWheelIDs_.insert(wheelID);
171  tecPetalIDs_.insert(petalID);
172  tecRingIDs_.insert(ringID);
173  tecModuleIDs_.insert(moduleID);
174 }
unsigned int tecPetalNumber(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
unsigned int tecRing(const DetId &id) const
ring id
unsigned int module(const DetId &id) const
unsigned int tecSide(const DetId &id) const

◆ addTIBDetUnitInfo()

void TrackerAlignmentLevelBuilder::addTIBDetUnitInfo ( const DetId detId)
private

Definition at line 111 of file TrackerAlignmentLevelBuilder.cc.

References TrackerTopology::module(), TrackerTopology::tibLayer(), tibLayerIDs_, tibModuleIDs_, TrackerTopology::tibOrder(), TrackerTopology::tibSide(), tibSideIDs_, TrackerTopology::tibString(), tibStringIDs_, tidStringsInnerLayer_, tidStringsOuterLayer_, and trackerTopology_.

Referenced by addDetUnitInfo().

111  {
112  auto sideID = trackerTopology_->tibSide(detId);
113  auto layerID = trackerTopology_->tibLayer(detId);
114  auto layerSide = trackerTopology_->tibOrder(detId);
115  auto stringID = trackerTopology_->tibString(detId);
116  auto moduleID = trackerTopology_->module(detId);
117 
118  if (layerSide == 1) {
119  if (tidStringsInnerLayer_[layerID - 1] < stringID) {
120  tidStringsInnerLayer_[layerID - 1] = stringID;
121  }
122  } else {
123  if (tidStringsOuterLayer_[layerID - 1] < stringID) {
124  tidStringsOuterLayer_[layerID - 1] = stringID;
125  }
126  }
127 
128  tibSideIDs_.insert(sideID);
129  tibLayerIDs_.insert(layerID);
130  tibStringIDs_.insert(stringID);
131  tibModuleIDs_.insert(moduleID);
132 }
unsigned int tibSide(const DetId &id) const
unsigned int tibOrder(const DetId &id) const
unsigned int tibString(const DetId &id) const
unsigned int module(const DetId &id) const
std::map< unsigned int, unsigned int > tidStringsOuterLayer_
std::map< unsigned int, unsigned int > tidStringsInnerLayer_
unsigned int tibLayer(const DetId &id) const

◆ addTIDDetUnitInfo()

void TrackerAlignmentLevelBuilder::addTIDDetUnitInfo ( const DetId detId)
private

Definition at line 135 of file TrackerAlignmentLevelBuilder.cc.

References TrackerTopology::module(), tidModuleIDs_, TrackerTopology::tidRing(), tidRingIDs_, TrackerTopology::tidSide(), tidSideIDs_, TrackerTopology::tidWheel(), tidWheelIDs_, and trackerTopology_.

Referenced by addDetUnitInfo().

135  {
136  auto sideID = trackerTopology_->tidSide(detId);
137  auto wheelID = trackerTopology_->tidWheel(detId);
138  auto ringID = trackerTopology_->tidRing(detId);
139  auto moduleID = trackerTopology_->module(detId);
140 
141  // tidOrder
142  tidSideIDs_.insert(sideID);
143  tidWheelIDs_.insert(wheelID);
144  tidRingIDs_.insert(ringID);
145  tidModuleIDs_.insert(moduleID);
146 }
unsigned int tidSide(const DetId &id) const
unsigned int tidWheel(const DetId &id) const
unsigned int module(const DetId &id) const
unsigned int tidRing(const DetId &id) const

◆ addTOBDetUnitInfo()

void TrackerAlignmentLevelBuilder::addTOBDetUnitInfo ( const DetId detId)
private

Definition at line 149 of file TrackerAlignmentLevelBuilder.cc.

References TrackerTopology::module(), TrackerTopology::tobLayer(), tobLayerIDs_, tobModuleIDs_, TrackerTopology::tobRod(), tobRodIDs_, TrackerTopology::tobSide(), tobSideIDs_, and trackerTopology_.

Referenced by addDetUnitInfo().

149  {
150  auto layerID = trackerTopology_->tobLayer(detId);
151  auto sideID = trackerTopology_->tobSide(detId);
152  auto rodID = trackerTopology_->tobRod(detId);
153  auto moduleID = trackerTopology_->module(detId);
154 
155  tobLayerIDs_.insert(layerID);
156  tobSideIDs_.insert(sideID);
157  tobRodIDs_.insert(rodID);
158  tobModuleIDs_.insert(moduleID);
159 }
unsigned int tobLayer(const DetId &id) const
unsigned int tobSide(const DetId &id) const
unsigned int module(const DetId &id) const
unsigned int tobRod(const DetId &id) const

◆ build()

std::vector< align::AlignmentLevels > TrackerAlignmentLevelBuilder::build ( )

Definition at line 53 of file TrackerAlignmentLevelBuilder.cc.

References buildPXBAlignmentLevels(), buildPXEAlignmentLevels(), buildTECAlignmentLevels(), buildTIBAlignmentLevels(), buildTIDAlignmentLevels(), buildTOBAlignmentLevels(), jetsAK4_CHS_cff::levels, and levelsBuilt_.

Referenced by AlignableTrackerBuilder::buildAlignableComposites(), and psClasses.BuildThread::run().

53  {
54  std::vector<align::AlignmentLevels> levels;
55  levels.push_back(buildPXBAlignmentLevels());
56  levels.push_back(buildPXEAlignmentLevels());
57  levels.push_back(buildTIBAlignmentLevels());
58  levels.push_back(buildTIDAlignmentLevels());
59  levels.push_back(buildTOBAlignmentLevels());
60  levels.push_back(buildTECAlignmentLevels());
61  levelsBuilt_ = true;
62  return levels;
63 }
align::AlignmentLevels buildTOBAlignmentLevels()
align::AlignmentLevels buildPXEAlignmentLevels()
align::AlignmentLevels buildTIDAlignmentLevels()
align::AlignmentLevels buildPXBAlignmentLevels()
align::AlignmentLevels buildTIBAlignmentLevels()
align::AlignmentLevels buildTECAlignmentLevels()

◆ buildPXBAlignmentLevels()

align::AlignmentLevels TrackerAlignmentLevelBuilder::buildPXBAlignmentLevels ( )
private

Definition at line 177 of file TrackerAlignmentLevelBuilder.cc.

References alignableObjectId_, AlignableObjectId::idToString(), phase1PixelTopology::layer, align::TrackerNameSpace::TPB::lpqc_, gpuClustering::maxNumModules, pxbLadderIDs_, pxbLaddersPerLayer_, pxbLayerIDs_, pxbModuleIDs_, contentValuesCheck::ss, align::TrackerNameSpace::tpb_, align::TPBBarrel, align::TPBHalfBarrel, align::TPBLadder, align::TPBLayer, align::TPBModule, and trackerNameSpace_.

Referenced by build().

177  {
178  int maxNumModules = pxbModuleIDs_.size();
179  int maxNumLadders = pxbLadderIDs_.size() / 2; // divide by 2 since we have
180  // HalfBarrels
181  int maxNumLayers = pxbLayerIDs_.size();
182 
183  std::ostringstream ss;
184  ss << "determined following numbers for " << alignableObjectId_.idToString(align::TPBBarrel) << " geometry:"
185  << "\n"
186  << " max. number of modules: " << maxNumModules << "\n"
187  << " max. number of ladders: " << maxNumLadders << "\n";
188 
189  for (size_t layer = 0; layer < pxbLaddersPerLayer_.size(); ++layer) {
190  // divide by 4, because we need the ladders per quarter cylinder
192  ss << " ladders in layer-" << layer << ": " << pxbLaddersPerLayer_[layer] << "\n";
193  }
194 
195  ss << " max. number of layers: " << maxNumLayers;
196  edm::LogInfo("AlignableBuildProcess") << "@SUB=TrackerAlignmentLevelBuilder::buildPXBAlignmentLevels" << ss.str();
197 
199  pxb.push_back(std::make_unique<AlignmentLevel>(align::TPBModule, maxNumModules, false));
200  pxb.push_back(std::make_unique<AlignmentLevel>(align::TPBLadder, maxNumLadders, true));
201  pxb.push_back(std::make_unique<AlignmentLevel>(align::TPBLayer, maxNumLayers, false));
202  pxb.push_back(std::make_unique<AlignmentLevel>(align::TPBHalfBarrel, 2, false));
203  pxb.push_back(std::make_unique<AlignmentLevel>(align::TPBBarrel, 1, false));
204  return pxb;
205 }
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
Definition: Utilities.h:33
std::map< unsigned int, unsigned int > pxbLaddersPerLayer_
constexpr std::array< uint8_t, layerIndexSize > layer
constexpr uint16_t maxNumModules
Log< level::Info, false > LogInfo
const AlignableObjectId alignableObjectId_
const char * idToString(align::StructureType type) const
std::vector< unsigned int > lpqc_
Number of ladders for each quarter cylinder.

◆ buildPXEAlignmentLevels()

align::AlignmentLevels TrackerAlignmentLevelBuilder::buildPXEAlignmentLevels ( )
private

Definition at line 208 of file TrackerAlignmentLevelBuilder.cc.

References alignableObjectId_, align::TrackerNameSpace::TPE::bpqd_, AlignableObjectId::idToString(), gpuClustering::maxNumModules, pxeBladeIDs_, pxeDiskIDs_, pxeModuleIDs_, pxePanelIDs_, pxeSideIDs_, contentValuesCheck::ss, align::TrackerNameSpace::tpe_, align::TPEBlade, align::TPEEndcap, align::TPEHalfCylinder, align::TPEHalfDisk, align::TPEModule, align::TPEPanel, and trackerNameSpace_.

Referenced by build().

208  {
209  int maxNumModules = pxeModuleIDs_.size();
210  int maxNumPanels = pxePanelIDs_.size();
211  int maxNumBlades = pxeBladeIDs_.size() / 2;
212  int maxNumDisks = pxeDiskIDs_.size();
213  int maxNumSides = pxeSideIDs_.size();
214 
215  std::ostringstream ss;
216  ss << "determined following numbers for " << alignableObjectId_.idToString(align::TPEEndcap) << " geometry:"
217  << "\n"
218  << " max. number of modules: " << maxNumModules << "\n"
219  << " max. number of panels: " << maxNumPanels << "\n"
220  << " max. number of blades: " << maxNumBlades << "\n";
221 
222  trackerNameSpace_.tpe_.bpqd_ = maxNumBlades / 2;
223 
224  ss << " blades per quarter disk: " << trackerNameSpace_.tpe_.bpqd_ << "\n"
225  << " max. number of disks: " << maxNumDisks << "\n"
226  << " max. number of sides: " << maxNumSides;
227  edm::LogInfo("AlignableBuildProcess") << "@SUB=TrackerAlignmentLevelBuilder::buildPXEAlignmentLevels" << ss.str();
228 
230  pxe.push_back(std::make_unique<AlignmentLevel>(align::TPEModule, maxNumModules, false));
231  pxe.push_back(std::make_unique<AlignmentLevel>(align::TPEPanel, maxNumPanels, true));
232  pxe.push_back(std::make_unique<AlignmentLevel>(align::TPEBlade, maxNumBlades, true));
233  pxe.push_back(std::make_unique<AlignmentLevel>(align::TPEHalfDisk, maxNumDisks, false));
234  pxe.push_back(std::make_unique<AlignmentLevel>(align::TPEHalfCylinder, 2, false));
235  pxe.push_back(std::make_unique<AlignmentLevel>(align::TPEEndcap, maxNumSides, false));
236  return pxe;
237 }
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
Definition: Utilities.h:33
unsigned int bpqd_
no. of blades per quarter disk
constexpr uint16_t maxNumModules
Log< level::Info, false > LogInfo
const AlignableObjectId alignableObjectId_
const char * idToString(align::StructureType type) const

◆ buildTECAlignmentLevels()

align::AlignmentLevels TrackerAlignmentLevelBuilder::buildTECAlignmentLevels ( )
private

Definition at line 329 of file TrackerAlignmentLevelBuilder.cc.

References alignableObjectId_, AlignableObjectId::idToString(), gpuClustering::maxNumModules, align::TECDisk, align::TECEndcap, align::TECModule, tecModuleIDs_, align::TECPetal, tecPetalIDs_, align::TECRing, tecRingIDs_, align::TECSide, tecSideIDs_, and tecWheelIDs_.

Referenced by build().

329  {
330  int maxNumModules = tecModuleIDs_.size();
331  int maxNumRings = tecRingIDs_.size();
332  int maxNumPetals = tecPetalIDs_.size();
333  int maxNumDisks = tecWheelIDs_.size();
334  int maxNumSides = tecSideIDs_.size();
335 
336  edm::LogInfo("AlignableBuildProcess") << "@SUB=TrackerAlignmentLevelBuilder::buildTECAlignmentLevels"
337  << "determined following numbers for "
339  << "\n"
340  << " max. number of modules: " << maxNumModules << "\n"
341  << " max. number of rings: " << maxNumRings << "\n"
342  << " max. number of petals: " << maxNumPetals << "\n"
343  << " max. number of wheels: " << maxNumDisks << "\n"
344  << " max. number of sides: " << maxNumSides;
345 
347  tec.push_back(std::make_unique<AlignmentLevel>(align::TECModule, maxNumModules, false));
348  tec.push_back(std::make_unique<AlignmentLevel>(align::TECRing, maxNumRings, true));
349  tec.push_back(std::make_unique<AlignmentLevel>(align::TECPetal, maxNumPetals, true));
350  tec.push_back(std::make_unique<AlignmentLevel>(align::TECSide, 2, false)); // 2 sides per disk
351  tec.push_back(std::make_unique<AlignmentLevel>(align::TECDisk, maxNumDisks, false));
352  tec.push_back(std::make_unique<AlignmentLevel>(align::TECEndcap, 2, false));
353  return tec;
354 }
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
Definition: Utilities.h:33
constexpr uint16_t maxNumModules
Log< level::Info, false > LogInfo
const AlignableObjectId alignableObjectId_
const char * idToString(align::StructureType type) const

◆ buildTIBAlignmentLevels()

align::AlignmentLevels TrackerAlignmentLevelBuilder::buildTIBAlignmentLevels ( )
private

Definition at line 240 of file TrackerAlignmentLevelBuilder.cc.

References alignableObjectId_, AlignableObjectId::idToString(), phase1PixelTopology::layer, gpuClustering::maxNumModules, align::TrackerNameSpace::TIB::sphs_, contentValuesCheck::ss, align::TrackerNameSpace::tib_, align::TIBBarrel, align::TIBHalfBarrel, align::TIBHalfShell, align::TIBLayer, tibLayerIDs_, align::TIBModule, tibModuleIDs_, tibSideIDs_, align::TIBString, tibStringIDs_, align::TIBSurface, tidStringsInnerLayer_, tidStringsOuterLayer_, and trackerNameSpace_.

Referenced by build().

240  {
241  int maxNumModules = tibModuleIDs_.size();
242  int maxNumStrings = tibStringIDs_.size();
243  int maxNumLayers = tibLayerIDs_.size();
244  int maxNumSides = tibSideIDs_.size();
245 
246  std::ostringstream ss;
247  ss << "determined following numbers for " << alignableObjectId_.idToString(align::TIBBarrel) << " geometry:"
248  << "\n"
249  << " max. number of modules: " << maxNumModules << "\n"
250  << " max. number of strings: " << maxNumStrings << "\n";
251 
252  for (size_t layer = 0; layer < tidStringsInnerLayer_.size(); ++layer) {
253  // divide by 2, because we have HalfShells
256 
257  ss << " strings in layer-" << layer << " (inside): " << tidStringsInnerLayer_[layer] << "\n"
258  << " strings in layer-" << layer << " (outside): " << tidStringsOuterLayer_[layer] << "\n";
259  }
260 
261  ss << " max. number of layers: " << maxNumLayers << "\n"
262  << " max. number of sides: " << maxNumSides;
263  edm::LogInfo("AlignableBuildProcess") << "@SUB=TrackerAlignmentLevelBuilder::buildTIBAlignmentLevels" << ss.str();
264 
266  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBModule, maxNumModules, false));
267  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBString, maxNumStrings, true));
268  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBSurface, 2, false)); // 2 surfaces per half shell
269  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBHalfShell, 2, false)); // 2 half shells per layer
270  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBLayer, maxNumLayers, false));
271  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBHalfBarrel, 2, false));
272  tib.push_back(std::make_unique<AlignmentLevel>(align::TIBBarrel, 1, false));
273  return tib;
274 }
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
Definition: Utilities.h:33
std::vector< unsigned int > sphs_
Number of strings for each surface of a half shell.
constexpr std::array< uint8_t, layerIndexSize > layer
constexpr uint16_t maxNumModules
std::map< unsigned int, unsigned int > tidStringsOuterLayer_
Log< level::Info, false > LogInfo
const AlignableObjectId alignableObjectId_
std::map< unsigned int, unsigned int > tidStringsInnerLayer_
const char * idToString(align::StructureType type) const

◆ buildTIDAlignmentLevels()

align::AlignmentLevels TrackerAlignmentLevelBuilder::buildTIDAlignmentLevels ( )
private

Definition at line 277 of file TrackerAlignmentLevelBuilder.cc.

References alignableObjectId_, AlignableObjectId::idToString(), gpuClustering::maxNumModules, align::TIDDisk, align::TIDEndcap, align::TIDModule, tidModuleIDs_, align::TIDRing, tidRingIDs_, align::TIDSide, tidSideIDs_, and tidWheelIDs_.

Referenced by build().

277  {
278  int maxNumModules = tidModuleIDs_.size();
279  int maxNumRings = tidRingIDs_.size();
280  // TODO: for PhaseII geometry the method name for tidWheel changes:
281  // -> trackerTopology->tidDisk(detId);
282  int maxNumWheels = tidWheelIDs_.size();
283  int maxNumSides = tidSideIDs_.size();
284 
285  edm::LogInfo("AlignableBuildProcess") << "@SUB=TrackerAlignmentLevelBuilder::buildTIDAlignmentLevels"
286  << "determined following numbers for "
288  << "\n"
289  << " max. number of modules: " << maxNumModules << "\n"
290  << " max. number of rings: " << maxNumRings << "\n"
291  << " max. number of wheels: " << maxNumWheels << "\n"
292  << " max. number of sides: " << maxNumSides;
293 
295  tid.push_back(std::make_unique<AlignmentLevel>(align::TIDModule, maxNumModules, false));
296  tid.push_back(std::make_unique<AlignmentLevel>(align::TIDSide, 2, false)); // 2 sides per ring
297  tid.push_back(std::make_unique<AlignmentLevel>(align::TIDRing, maxNumRings, false));
298  tid.push_back(std::make_unique<AlignmentLevel>(align::TIDDisk, maxNumWheels, false));
299  tid.push_back(std::make_unique<AlignmentLevel>(align::TIDEndcap, 2, false)); // 2 endcaps in TID
300  return tid;
301 }
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
Definition: Utilities.h:33
constexpr uint16_t maxNumModules
Log< level::Info, false > LogInfo
const AlignableObjectId alignableObjectId_
const char * idToString(align::StructureType type) const

◆ buildTOBAlignmentLevels()

align::AlignmentLevels TrackerAlignmentLevelBuilder::buildTOBAlignmentLevels ( )
private

Definition at line 304 of file TrackerAlignmentLevelBuilder.cc.

References alignableObjectId_, AlignableObjectId::idToString(), gpuClustering::maxNumModules, align::TOBBarrel, align::TOBHalfBarrel, align::TOBLayer, tobLayerIDs_, align::TOBModule, tobModuleIDs_, align::TOBRod, tobRodIDs_, and tobSideIDs_.

Referenced by build().

304  {
305  int maxNumModules = tobModuleIDs_.size();
306  int maxNumRods = tobRodIDs_.size();
307  int maxNumSides = tobSideIDs_.size();
308  int maxNumLayers = tobLayerIDs_.size();
309 
310  edm::LogInfo("AlignableBuildProcess") << "@SUB=TrackerAlignmentLevelBuilder::buildTOBAlignmentLevels"
311  << "determined following numbers for "
313  << "\n"
314  << " max. number of modules: " << maxNumModules << "\n"
315  << " max. number of rods: " << maxNumRods << "\n"
316  << " max. number of sides: " << maxNumSides << "\n"
317  << " max. number of layers: " << maxNumLayers;
318 
320  tob.push_back(std::make_unique<AlignmentLevel>(align::TOBModule, maxNumModules, false));
321  tob.push_back(std::make_unique<AlignmentLevel>(align::TOBRod, maxNumRods, true));
322  tob.push_back(std::make_unique<AlignmentLevel>(align::TOBLayer, maxNumLayers, false));
323  tob.push_back(std::make_unique<AlignmentLevel>(align::TOBHalfBarrel, maxNumSides, false));
324  tob.push_back(std::make_unique<AlignmentLevel>(align::TOBBarrel, 1, false));
325  return tob;
326 }
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
Definition: Utilities.h:33
constexpr uint16_t maxNumModules
Log< level::Info, false > LogInfo
const AlignableObjectId alignableObjectId_
const char * idToString(align::StructureType type) const

◆ objectIdProvider()

const AlignableObjectId& TrackerAlignmentLevelBuilder::objectIdProvider ( ) const
inline

Definition at line 32 of file TrackerAlignmentLevelBuilder.h.

References alignableObjectId_.

32 { return alignableObjectId_; }
const AlignableObjectId alignableObjectId_

◆ trackerNameSpace()

const align::TrackerNameSpace & TrackerAlignmentLevelBuilder::trackerNameSpace ( ) const

Definition at line 66 of file TrackerAlignmentLevelBuilder.cc.

References Exception, levelsBuilt_, and trackerNameSpace_.

Referenced by AlignableTrackerBuilder::buildAlignableComposites(), and AlignableTrackerBuilder::trackerNameSpace().

66  {
67  if (levelsBuilt_) {
68  return trackerNameSpace_;
69  } else {
70  throw cms::Exception("LogicError") << "@SUB=TrackerAlignmentLevelBuilder::trackerNameSpace\n"
71  << "trying to get the name space before it has been properly initialized;"
72  << " please call TrackerAlignmentLevelBuilder::build() first";
73  }
74 }

Member Data Documentation

◆ alignableObjectId_

const AlignableObjectId TrackerAlignmentLevelBuilder::alignableObjectId_
private

◆ levelsBuilt_

bool TrackerAlignmentLevelBuilder::levelsBuilt_ {false}
private

Definition at line 57 of file TrackerAlignmentLevelBuilder.h.

Referenced by build(), and trackerNameSpace().

◆ pxbLadderIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxbLadderIDs_
private

Definition at line 61 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXBDetUnitInfo(), and buildPXBAlignmentLevels().

◆ pxbLaddersPerLayer_

std::map<unsigned int, unsigned int> TrackerAlignmentLevelBuilder::pxbLaddersPerLayer_
private

Definition at line 63 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXBDetUnitInfo(), and buildPXBAlignmentLevels().

◆ pxbLayerIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxbLayerIDs_
private

Definition at line 60 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXBDetUnitInfo(), and buildPXBAlignmentLevels().

◆ pxbModuleIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxbModuleIDs_
private

Definition at line 62 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXBDetUnitInfo(), and buildPXBAlignmentLevels().

◆ pxbStringsPerHalfShell_

std::map<unsigned int, unsigned int> TrackerAlignmentLevelBuilder::pxbStringsPerHalfShell_
private

Definition at line 77 of file TrackerAlignmentLevelBuilder.h.

◆ pxeBladeIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxeBladeIDs_
private

Definition at line 68 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXEDetUnitInfo(), and buildPXEAlignmentLevels().

◆ pxeDiskIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxeDiskIDs_
private

Definition at line 67 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXEDetUnitInfo(), and buildPXEAlignmentLevels().

◆ pxeModuleIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxeModuleIDs_
private

Definition at line 70 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXEDetUnitInfo(), and buildPXEAlignmentLevels().

◆ pxePanelIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxePanelIDs_
private

Definition at line 69 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXEDetUnitInfo(), and buildPXEAlignmentLevels().

◆ pxeSideIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::pxeSideIDs_
private

Definition at line 66 of file TrackerAlignmentLevelBuilder.h.

Referenced by addPXEDetUnitInfo(), and buildPXEAlignmentLevels().

◆ tecModuleIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tecModuleIDs_
private

Definition at line 98 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTECDetUnitInfo(), and buildTECAlignmentLevels().

◆ tecPetalIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tecPetalIDs_
private

Definition at line 96 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTECDetUnitInfo(), and buildTECAlignmentLevels().

◆ tecRingIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tecRingIDs_
private

Definition at line 97 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTECDetUnitInfo(), and buildTECAlignmentLevels().

◆ tecSideIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tecSideIDs_
private

Definition at line 94 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTECDetUnitInfo(), and buildTECAlignmentLevels().

◆ tecWheelIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tecWheelIDs_
private

Definition at line 95 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTECDetUnitInfo(), and buildTECAlignmentLevels().

◆ tibLayerIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tibLayerIDs_
private

Definition at line 74 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIBDetUnitInfo(), and buildTIBAlignmentLevels().

◆ tibModuleIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tibModuleIDs_
private

Definition at line 76 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIBDetUnitInfo(), and buildTIBAlignmentLevels().

◆ tibSideIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tibSideIDs_
private

Definition at line 73 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIBDetUnitInfo(), and buildTIBAlignmentLevels().

◆ tibStringIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tibStringIDs_
private

Definition at line 75 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIBDetUnitInfo(), and buildTIBAlignmentLevels().

◆ tidModuleIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tidModuleIDs_
private

Definition at line 83 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIDDetUnitInfo(), and buildTIDAlignmentLevels().

◆ tidRingIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tidRingIDs_
private

Definition at line 82 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIDDetUnitInfo(), and buildTIDAlignmentLevels().

◆ tidSideIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tidSideIDs_
private

Definition at line 80 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIDDetUnitInfo(), and buildTIDAlignmentLevels().

◆ tidStringsInnerLayer_

std::map<unsigned int, unsigned int> TrackerAlignmentLevelBuilder::tidStringsInnerLayer_
private

Definition at line 84 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIBDetUnitInfo(), and buildTIBAlignmentLevels().

◆ tidStringsOuterLayer_

std::map<unsigned int, unsigned int> TrackerAlignmentLevelBuilder::tidStringsOuterLayer_
private

Definition at line 85 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIBDetUnitInfo(), and buildTIBAlignmentLevels().

◆ tidWheelIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tidWheelIDs_
private

Definition at line 81 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTIDDetUnitInfo(), and buildTIDAlignmentLevels().

◆ tobLayerIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tobLayerIDs_
private

Definition at line 88 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTOBDetUnitInfo(), and buildTOBAlignmentLevels().

◆ tobModuleIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tobModuleIDs_
private

Definition at line 91 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTOBDetUnitInfo(), and buildTOBAlignmentLevels().

◆ tobRodIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tobRodIDs_
private

Definition at line 90 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTOBDetUnitInfo(), and buildTOBAlignmentLevels().

◆ tobSideIDs_

std::set<unsigned int> TrackerAlignmentLevelBuilder::tobSideIDs_
private

Definition at line 89 of file TrackerAlignmentLevelBuilder.h.

Referenced by addTOBDetUnitInfo(), and buildTOBAlignmentLevels().

◆ trackerNameSpace_

align::TrackerNameSpace TrackerAlignmentLevelBuilder::trackerNameSpace_
private

◆ trackerTopology_

const TrackerTopology* TrackerAlignmentLevelBuilder::trackerTopology_
private