13 namespace tpb {
extern std::vector<unsigned int>
lpqc; }
14 namespace tpe {
extern unsigned int bpqd; }
15 namespace tib {
extern std::vector<unsigned int>
sphs; }
27 trackerTopology_(trackerTopology)
57 std::vector<align::AlignmentLevels> levels;
58 levels.push_back(buildPXBAlignmentLevels());
59 levels.push_back(buildPXEAlignmentLevels());
60 levels.push_back(buildTIBAlignmentLevels());
61 levels.push_back(buildTIDAlignmentLevels());
62 levels.push_back(buildTOBAlignmentLevels());
63 levels.push_back(buildTECAlignmentLevels());
77 auto layerID = trackerTopology_->pxbLayer(detId);
78 auto ladderID = trackerTopology_->pxbLadder(detId);
79 auto moduleID = trackerTopology_->module(detId);
81 if (pxbLaddersPerLayer_[layerID-1] < ladderID) {
82 pxbLaddersPerLayer_[layerID-1] = ladderID;
85 pxbLayerIDs_.
insert(layerID);
86 pxbLadderIDs_.insert(ladderID);
87 pxbModuleIDs_.insert(moduleID);
94 auto sideID = trackerTopology_->pxfSide(detId);
95 auto diskID = trackerTopology_->pxfDisk(detId);
96 auto bladeID = trackerTopology_->pxfBlade(detId);
97 auto panelID = trackerTopology_->pxfPanel(detId);
98 auto moduleID = trackerTopology_->module(detId);
100 pxeSideIDs_.
insert(sideID);
101 pxeDiskIDs_.
insert(diskID);
102 pxeBladeIDs_.
insert(bladeID);
103 pxePanelIDs_.
insert(panelID);
104 pxeModuleIDs_.insert(moduleID);
111 auto sideID = trackerTopology_->tibSide(detId);
112 auto layerID = trackerTopology_->tibLayer(detId);
113 auto layerSide = trackerTopology_->tibOrder(detId);
114 auto stringID = trackerTopology_->tibString(detId);
115 auto moduleID = trackerTopology_->module(detId);
117 if (layerSide == 1) {
118 if (tidStringsInnerLayer_[layerID-1] < stringID) {
119 tidStringsInnerLayer_[layerID-1] = stringID;
122 if (tidStringsOuterLayer_[layerID-1] < stringID) {
123 tidStringsOuterLayer_[layerID-1] = stringID;
127 tibSideIDs_.
insert(sideID);
128 tibLayerIDs_.
insert(layerID);
129 tibStringIDs_.insert(stringID);
130 tibModuleIDs_.insert(moduleID);
137 auto sideID = trackerTopology_->tidSide(detId);
138 auto wheelID = trackerTopology_->tidWheel(detId);
139 auto ringID = trackerTopology_->tidRing(detId);
140 auto moduleID = trackerTopology_->module(detId);
143 tidSideIDs_.
insert(sideID);
144 tidWheelIDs_.
insert(wheelID);
145 tidRingIDs_.
insert(ringID);
146 tidModuleIDs_.insert(moduleID);
153 auto layerID = trackerTopology_->tobLayer(detId);
154 auto sideID = trackerTopology_->tobSide(detId);
155 auto rodID = trackerTopology_->tobRod(detId);
156 auto moduleID = trackerTopology_->module(detId);
158 tobLayerIDs_.
insert(layerID);
159 tobSideIDs_.
insert(sideID);
160 tobRodIDs_.
insert(rodID);
161 tobModuleIDs_.insert(moduleID);
168 auto sideID = trackerTopology_->tecSide(detId);
169 auto wheelID = trackerTopology_->tecWheel(detId);
170 auto petalID = trackerTopology_->tecPetalNumber(detId);
171 auto ringID = trackerTopology_->tecRing(detId);
172 auto moduleID = trackerTopology_->module(detId);
174 tecSideIDs_.
insert(sideID);
175 tecWheelIDs_.
insert(wheelID);
176 tecPetalIDs_.
insert(petalID);
177 tecRingIDs_.
insert(ringID);
178 tecModuleIDs_.insert(moduleID);
187 int maxNumModules = pxbModuleIDs_.size();
188 int maxNumLadders = pxbLadderIDs_.size() / 2;
190 int maxNumLayers = pxbLayerIDs_.size();
192 std::ostringstream
ss;
193 ss <<
"determined following numbers for "
195 <<
" max. number of modules: " << maxNumModules <<
"\n"
196 <<
" max. number of ladders: " << maxNumLadders <<
"\n";
198 for (
size_t layer = 0; layer < pxbLaddersPerLayer_.size(); ++layer) {
201 ss <<
" ladders in layer-" << layer <<
": "
202 << pxbLaddersPerLayer_[layer] <<
"\n";
205 ss <<
" max. number of layers: " << maxNumLayers;
207 <<
"@SUB=TrackerAlignmentLevelBuilder::buildPXBAlignmentLevels"
211 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBModule, maxNumModules,
false));
212 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBLadder, maxNumLadders,
true));
213 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBLayer, maxNumLayers,
false));
215 pxb.push_back(std::make_unique<AlignmentLevel>(
align::TPBBarrel, 1,
false));
223 int maxNumModules = pxeModuleIDs_.size();
224 int maxNumPanels = pxePanelIDs_.size();
225 int maxNumBlades = pxeBladeIDs_.size() / 2;
226 int maxNumDisks = pxeDiskIDs_.size();
227 int maxNumSides = pxeSideIDs_.size();
229 std::ostringstream
ss;
230 ss <<
"determined following numbers for "
232 <<
" max. number of modules: " << maxNumModules <<
"\n"
233 <<
" max. number of panels: " << maxNumPanels <<
"\n"
234 <<
" max. number of blades: " << maxNumBlades <<
"\n";
239 <<
" max. number of disks: " << maxNumDisks <<
"\n"
240 <<
" max. number of sides: " << maxNumSides;
242 <<
"@SUB=TrackerAlignmentLevelBuilder::buildPXEAlignmentLevels"
246 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEModule, maxNumModules,
false));
247 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEPanel, maxNumPanels,
true));
248 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEBlade, maxNumBlades,
true));
249 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEHalfDisk, maxNumDisks,
false));
251 pxe.push_back(std::make_unique<AlignmentLevel>(
align::TPEEndcap, maxNumSides,
false));
259 int maxNumModules = tibModuleIDs_.size();
260 int maxNumStrings = tibStringIDs_.size();
261 int maxNumLayers = tibLayerIDs_.size();
262 int maxNumSides = tibSideIDs_.size();
264 std::ostringstream
ss;
265 ss <<
"determined following numbers for "
267 <<
" max. number of modules: " << maxNumModules <<
"\n"
268 <<
" max. number of strings: " << maxNumStrings <<
"\n";
270 for (
size_t layer = 0; layer < tidStringsInnerLayer_.size(); ++layer) {
275 ss <<
" strings in layer-" << layer <<
" (inside): "
276 << tidStringsInnerLayer_[layer] <<
"\n"
277 <<
" strings in layer-" << layer <<
" (outside): "
278 << tidStringsOuterLayer_[layer] <<
"\n";
281 ss <<
" max. number of layers: " << maxNumLayers <<
"\n"
282 <<
" max. number of sides: " << maxNumSides;
284 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTIBAlignmentLevels"
288 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBModule, maxNumModules,
false));
289 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBString, maxNumStrings,
true));
292 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBLayer, maxNumLayers,
false));
294 tib.push_back(std::make_unique<AlignmentLevel>(
align::TIBBarrel, 1,
false));
302 int maxNumModules = tidModuleIDs_.size();
303 int maxNumRings = tidRingIDs_.size();
306 int maxNumWheels = tidWheelIDs_.size();
307 int maxNumSides = tidSideIDs_.size();
310 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTIDAlignmentLevels"
311 <<
"determined following numbers for "
313 <<
" max. number of modules: " << maxNumModules <<
"\n"
314 <<
" max. number of rings: " << maxNumRings <<
"\n"
315 <<
" max. number of wheels: " << maxNumWheels <<
"\n"
316 <<
" max. number of sides: " << maxNumSides;
319 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDModule, maxNumModules,
false));
320 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDSide, 2,
false));
321 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDRing, maxNumRings,
false));
322 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDDisk, maxNumWheels,
false));
323 tid.push_back(std::make_unique<AlignmentLevel>(
align::TIDEndcap, 2,
false));
331 int maxNumModules = tobModuleIDs_.size();
332 int maxNumRods = tobRodIDs_.size();
333 int maxNumSides = tobSideIDs_.size();
334 int maxNumLayers = tobLayerIDs_.size();
337 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTOBAlignmentLevels"
338 <<
"determined following numbers for "
340 <<
" max. number of modules: " << maxNumModules <<
"\n"
341 <<
" max. number of rods: " << maxNumRods <<
"\n"
342 <<
" max. number of sides: " << maxNumSides <<
"\n"
343 <<
" max. number of layers: " << maxNumLayers;
346 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBModule, maxNumModules,
false));
347 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBRod, maxNumRods,
true));
348 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBLayer, maxNumLayers,
false));
350 tob.push_back(std::make_unique<AlignmentLevel>(
align::TOBBarrel, 1,
false));
358 int maxNumModules = tecModuleIDs_.size();
359 int maxNumRings = tecRingIDs_.size();
360 int maxNumPetals = tecPetalIDs_.size();
361 int maxNumDisks = tecWheelIDs_.size();
362 int maxNumSides = tecSideIDs_.size();
365 <<
"@SUB=TrackerAlignmentLevelBuilder::buildTECAlignmentLevels"
366 <<
"determined following numbers for "
368 <<
" max. number of modules: " << maxNumModules <<
"\n"
369 <<
" max. number of rings: " << maxNumRings <<
"\n"
370 <<
" max. number of petals: " << maxNumPetals <<
"\n"
371 <<
" max. number of wheels: " << maxNumDisks <<
"\n"
372 <<
" max. number of sides: " << maxNumSides;
375 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECModule, maxNumModules,
false));
376 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECRing, maxNumRings,
true));
377 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECPetal, maxNumPetals,
true));
378 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECSide, 2,
false));
379 tec.push_back(std::make_unique<AlignmentLevel>(
align::TECDisk, maxNumDisks,
false));
380 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()
TrackerAlignmentLevelBuilder(const TrackerTopology *)
align::AlignmentLevels buildTIDAlignmentLevels()
align::AlignmentLevels buildPXBAlignmentLevels()
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) ...
unsigned int bpqd
no. of blades per quarter disk
void addPXBDetUnitInfo(const DetId &detId)
align::AlignmentLevels buildTIBAlignmentLevels()
void addTECDetUnitInfo(const DetId &detId)
std::vector< unsigned int > sphs
Number of strings for each surface of a half shell.
static const char * idToString(align::StructureType type)
align::AlignmentLevels buildTECAlignmentLevels()
std::vector< unsigned int > lpqc
Number of ladders for each quarter cylinder.
void addPXEDetUnitInfo(const DetId &detId)