21 trackerTopology_(trackerTopology),
23 trackerNameSpace_(trackerTopology)
53 std::vector<align::AlignmentLevels> levels;
54 levels.push_back(buildPXBAlignmentLevels());
55 levels.push_back(buildPXEAlignmentLevels());
56 levels.push_back(buildTIBAlignmentLevels());
57 levels.push_back(buildTIDAlignmentLevels());
58 levels.push_back(buildTOBAlignmentLevels());
59 levels.push_back(buildTECAlignmentLevels());
69 return trackerNameSpace_;
72 <<
"@SUB=TrackerAlignmentLevelBuilder::trackerNameSpace\n"
73 <<
"trying to get the name space before it has been properly initialized;"
74 <<
" please call TrackerAlignmentLevelBuilder::build() first";
88 auto layerID = trackerTopology_->pxbLayer(detId);
89 auto ladderID = trackerTopology_->pxbLadder(detId);
90 auto moduleID = trackerTopology_->module(detId);
92 if (pxbLaddersPerLayer_[layerID-1] < ladderID) {
93 pxbLaddersPerLayer_[layerID-1] = ladderID;
96 pxbLayerIDs_.
insert(layerID);
97 pxbLadderIDs_.insert(ladderID);
98 pxbModuleIDs_.insert(moduleID);
105 auto sideID = trackerTopology_->pxfSide(detId);
106 auto diskID = trackerTopology_->pxfDisk(detId);
107 auto bladeID = trackerTopology_->pxfBlade(detId);
108 auto panelID = trackerTopology_->pxfPanel(detId);
109 auto moduleID = trackerTopology_->module(detId);
111 pxeSideIDs_.
insert(sideID);
112 pxeDiskIDs_.
insert(diskID);
113 pxeBladeIDs_.
insert(bladeID);
114 pxePanelIDs_.
insert(panelID);
115 pxeModuleIDs_.insert(moduleID);
122 auto sideID = trackerTopology_->tibSide(detId);
123 auto layerID = trackerTopology_->tibLayer(detId);
124 auto layerSide = trackerTopology_->tibOrder(detId);
125 auto stringID = trackerTopology_->tibString(detId);
126 auto moduleID = trackerTopology_->module(detId);
128 if (layerSide == 1) {
129 if (tidStringsInnerLayer_[layerID-1] < stringID) {
130 tidStringsInnerLayer_[layerID-1] = stringID;
133 if (tidStringsOuterLayer_[layerID-1] < stringID) {
134 tidStringsOuterLayer_[layerID-1] = stringID;
138 tibSideIDs_.
insert(sideID);
139 tibLayerIDs_.
insert(layerID);
140 tibStringIDs_.insert(stringID);
141 tibModuleIDs_.insert(moduleID);
148 auto sideID = trackerTopology_->tidSide(detId);
149 auto wheelID = trackerTopology_->tidWheel(detId);
150 auto ringID = trackerTopology_->tidRing(detId);
151 auto moduleID = trackerTopology_->module(detId);
154 tidSideIDs_.
insert(sideID);
155 tidWheelIDs_.
insert(wheelID);
156 tidRingIDs_.
insert(ringID);
157 tidModuleIDs_.insert(moduleID);
164 auto layerID = trackerTopology_->tobLayer(detId);
165 auto sideID = trackerTopology_->tobSide(detId);
166 auto rodID = trackerTopology_->tobRod(detId);
167 auto moduleID = trackerTopology_->module(detId);
169 tobLayerIDs_.
insert(layerID);
170 tobSideIDs_.
insert(sideID);
171 tobRodIDs_.
insert(rodID);
172 tobModuleIDs_.insert(moduleID);
179 auto sideID = trackerTopology_->tecSide(detId);
180 auto wheelID = trackerTopology_->tecWheel(detId);
181 auto petalID = trackerTopology_->tecPetalNumber(detId);
182 auto ringID = trackerTopology_->tecRing(detId);
183 auto moduleID = trackerTopology_->module(detId);
185 tecSideIDs_.
insert(sideID);
186 tecWheelIDs_.
insert(wheelID);
187 tecPetalIDs_.
insert(petalID);
188 tecRingIDs_.
insert(ringID);
189 tecModuleIDs_.insert(moduleID);
198 int maxNumModules = pxbModuleIDs_.size();
199 int maxNumLadders = pxbLadderIDs_.size() / 2;
201 int maxNumLayers = pxbLayerIDs_.size();
203 std::ostringstream
ss;
204 ss <<
"determined following numbers for "
206 <<
" max. number of modules: " << maxNumModules <<
"\n"
207 <<
" max. number of ladders: " << maxNumLadders <<
"\n";
209 for (
size_t layer = 0; layer < pxbLaddersPerLayer_.size(); ++layer) {
211 trackerNameSpace_.tpb_.lpqc_.push_back(pxbLaddersPerLayer_[layer] / 4);
212 ss <<
" ladders in layer-" << layer <<
": "
213 << pxbLaddersPerLayer_[layer] <<
"\n";
216 ss <<
" max. number of layers: " << maxNumLayers;
218 <<
"@SUB=TrackerAlignmentLevelBuilder::buildPXBAlignmentLevels"
222 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBModule, maxNumModules,
false));
223 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBLadder, maxNumLadders,
true));
224 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBLayer, maxNumLayers,
false));
226 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBBarrel, 1,
false));
234 int maxNumModules = pxeModuleIDs_.size();
235 int maxNumPanels = pxePanelIDs_.size();
236 int maxNumBlades = pxeBladeIDs_.size() / 2;
237 int maxNumDisks = pxeDiskIDs_.size();
238 int maxNumSides = pxeSideIDs_.size();
240 std::ostringstream
ss;
241 ss <<
"determined following numbers for "
243 <<
" max. number of modules: " << maxNumModules <<
"\n"
244 <<
" max. number of panels: " << maxNumPanels <<
"\n"
245 <<
" max. number of blades: " << maxNumBlades <<
"\n";
247 trackerNameSpace_.tpe_.bpqd_ = maxNumBlades / 2;
249 ss <<
" blades per quarter disk: " << trackerNameSpace_.tpe_.bpqd_ <<
"\n"
250 <<
" max. number of disks: " << maxNumDisks <<
"\n"
251 <<
" max. number of sides: " << maxNumSides;
253 <<
"@SUB=TrackerAlignmentLevelBuilder::buildPXEAlignmentLevels"
257 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEModule, maxNumModules,
false));
258 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEPanel, maxNumPanels,
true));
259 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEBlade, maxNumBlades,
true));
260 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEHalfDisk, maxNumDisks,
false));
262 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEEndcap, maxNumSides,
false));
270 int maxNumModules = tibModuleIDs_.size();
271 int maxNumStrings = tibStringIDs_.size();
272 int maxNumLayers = tibLayerIDs_.size();
273 int maxNumSides = tibSideIDs_.size();
275 std::ostringstream
ss;
276 ss <<
"determined following numbers for "
278 <<
" max. number of modules: " << maxNumModules <<
"\n"
279 <<
" max. number of strings: " << maxNumStrings <<
"\n";
281 for (
size_t layer = 0; layer < tidStringsInnerLayer_.size(); ++layer) {
283 trackerNameSpace_.tib_.sphs_.push_back(tidStringsInnerLayer_[layer] / 2);
284 trackerNameSpace_.tib_.sphs_.push_back(tidStringsOuterLayer_[layer] / 2);
286 ss <<
" strings in layer-" << layer <<
" (inside): "
287 << tidStringsInnerLayer_[layer] <<
"\n"
288 <<
" strings in layer-" << layer <<
" (outside): "
289 << tidStringsOuterLayer_[layer] <<
"\n";
292 ss <<
" max. number of layers: " << maxNumLayers <<
"\n"
293 <<
" max. number of sides: " << maxNumSides;
295 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTIBAlignmentLevels"
299 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBModule, maxNumModules,
false));
300 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBString, maxNumStrings,
true));
303 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBLayer, maxNumLayers,
false));
305 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBBarrel, 1,
false));
313 int maxNumModules = tidModuleIDs_.size();
314 int maxNumRings = tidRingIDs_.size();
317 int maxNumWheels = tidWheelIDs_.size();
318 int maxNumSides = tidSideIDs_.size();
321 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTIDAlignmentLevels"
322 <<
"determined following numbers for "
324 <<
" max. number of modules: " << maxNumModules <<
"\n"
325 <<
" max. number of rings: " << maxNumRings <<
"\n"
326 <<
" max. number of wheels: " << maxNumWheels <<
"\n"
327 <<
" max. number of sides: " << maxNumSides;
330 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDModule, maxNumModules,
false));
331 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDSide, 2,
false));
332 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDRing, maxNumRings,
false));
333 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDDisk, maxNumWheels,
false));
334 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDEndcap, 2,
false));
342 int maxNumModules = tobModuleIDs_.size();
343 int maxNumRods = tobRodIDs_.size();
344 int maxNumSides = tobSideIDs_.size();
345 int maxNumLayers = tobLayerIDs_.size();
348 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTOBAlignmentLevels"
349 <<
"determined following numbers for "
351 <<
" max. number of modules: " << maxNumModules <<
"\n"
352 <<
" max. number of rods: " << maxNumRods <<
"\n"
353 <<
" max. number of sides: " << maxNumSides <<
"\n"
354 <<
" max. number of layers: " << maxNumLayers;
357 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBModule, maxNumModules,
false));
358 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBRod, maxNumRods,
true));
359 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBLayer, maxNumLayers,
false));
361 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBBarrel, 1,
false));
369 int maxNumModules = tecModuleIDs_.size();
370 int maxNumRings = tecRingIDs_.size();
371 int maxNumPetals = tecPetalIDs_.size();
372 int maxNumDisks = tecWheelIDs_.size();
373 int maxNumSides = tecSideIDs_.size();
376 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTECAlignmentLevels"
377 <<
"determined following numbers for "
379 <<
" max. number of modules: " << maxNumModules <<
"\n"
380 <<
" max. number of rings: " << maxNumRings <<
"\n"
381 <<
" max. number of petals: " << maxNumPetals <<
"\n"
382 <<
" max. number of wheels: " << maxNumDisks <<
"\n"
383 <<
" max. number of sides: " << maxNumSides;
386 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECModule, maxNumModules,
false));
387 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECRing, maxNumRings,
true));
388 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECPetal, maxNumPetals,
true));
389 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECSide, 2,
false));
390 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECDisk, maxNumDisks,
false));
391 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECEndcap, 2,
false));
std::vector< std::unique_ptr< AlignmentLevel > > AlignmentLevels
void addTIDDetUnitInfo(const DetId &detId)
void addDetUnitInfo(const DetId &detId)
align::AlignmentLevels buildTOBAlignmentLevels()
virtual ~TrackerAlignmentLevelBuilder()
void addTOBDetUnitInfo(const DetId &detId)
align::AlignmentLevels buildPXEAlignmentLevels()
void addTIBDetUnitInfo(const DetId &detId)
std::vector< align::AlignmentLevels > build()
const align::TrackerNameSpace & trackerNameSpace() const
align::AlignmentLevels buildTIDAlignmentLevels()
align::AlignmentLevels buildPXBAlignmentLevels()
TrackerAlignmentLevelBuilder(const TrackerTopology *, const TrackerGeometry *)
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
void addPXBDetUnitInfo(const DetId &detId)
align::AlignmentLevels buildTIBAlignmentLevels()
void addTECDetUnitInfo(const DetId &detId)
align::AlignmentLevels buildTECAlignmentLevels()
void addPXEDetUnitInfo(const DetId &detId)