53 unsigned int nDet = dets.size();
59 for (
unsigned int i = 0;
i < nDet; ++
i) {
61 const unsigned int subdetId = dets[
i]->geographicalId().subdetId();
64 auto detUnit = dets[
i];
65 if (!detUnit->isLeaf()) {
67 <<
"[AlignableTracker] Pixel GeomDet (subdetector " << subdetId <<
") not GeomDetUnit.\n";
74 aliUnits->reserve(576);
76 aliUnits->push_back(alis.back());
91 <<
"[AlignableTracker]" <<
"dynamic_cast<const GluedGeomDet*> failed.\n";
98 aliUnits->reserve(576);
100 aliUnits->insert(aliUnits->end(), detUnits.begin(), detUnits.end());
102 auto detUnit = dets[
i];
103 if (!detUnit->isLeaf()) {
105 <<
"[AlignableTracker] pure 1D GeomDet (subdetector " << subdetId <<
") not GeomDetUnit.\n";
112 aliUnits->reserve(576);
114 aliUnits->push_back(alis.back());
119 <<
"[AlignableTracker] GeomDet of unknown subdetector.";
123 LogDebug(
"Alignment") <<
"@SUB=AlignableTracker"
124 << alis.size() <<
" AlignableDet(Unit)s for " <<
moduleName;
126 LogDebug(
"Alignment") <<
"@SUB=AlignableTracker"
127 << aliUnits->size() <<
" AlignableDetUnits for "
128 << moduleName +
"Unit (capacity = " << aliUnits->capacity() <<
").";
144 barrel[0]->addComponent(halfBarrels[0]);
145 barrel[0]->addComponent(halfBarrels[1]);
238 pixel[0]->addComponent(pixelBarrel[0]);
239 pixel[0]->addComponent(pixelEndcap[0]);
240 pixel[0]->addComponent(pixelEndcap[1]);
250 strip[0]->addComponent(innerBarrel[0]);
251 strip[0]->addComponent(innerEndcap[0]);
252 strip[0]->addComponent(innerEndcap[1]);
253 strip[0]->addComponent(outerBarrel[0]);
254 strip[0]->addComponent(outerEndcap[0]);
255 strip[0]->addComponent(outerEndcap[1]);
260 tracker.push_back(
this);
273 all.insert( all.end(), list2.begin(), list2.end() );
286 for ( align::Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
288 Alignments* tmpAlignments = (*i)->alignments();
290 std::back_inserter(m_alignments->
m_align) );
291 delete tmpAlignments;
294 std::sort( m_alignments->
m_align.begin(), m_alignments->
m_align.end(),
310 for ( align::Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
315 delete tmpAlignmentErrorsExtended;
321 return m_alignmentErrors;
Type & find(const std::string &name="")
std::vector< Alignable * > Alignables
AlignableComposite()
default constructor hidden
void detsToAlignables(const TrackingGeometry::DetContainer &dets, const std::string &moduleName)
Create list of lower-level modules.
AlignmentErrorsExtended * alignmentErrors() const
Return alignment errors, sorted by DetId.
Alignables merge(const Alignables &list1, const Alignables &list2) const
AlignableTracker(const TrackerGeometry *tracker, const TrackerTopology *tTopo)
Constructor (builds the full hierarchy)
void buildAll(AlignSetup< align::Alignables > &setup) const
Build the components for all levels given by user.
std::vector< AlignTransform > m_align
const TrackerTopology * tTopo_
static align::StructureType stringToId(const char *)
std::string moduleName(Provenance const &provenance)
void addLevelInfo(align::StructureType, bool flat, unsigned int maxComponent)
Add info required to build a level to the list.
const DetContainer & detsTEC() const
Type & get(const std::string &name="")
const DetContainer & detsPXB() const
const DetContainer & detsTIB() const
void buildBarrel(const std::string &subDet)
Build a barrel for a given sub-detector (TPB, TIB, TOB).
Detector identifier class for the strip tracker.
std::vector< AlignTransformErrorExtended > m_alignError
align::RotationType RotationType
std::vector< Alignable * > Alignables
const DetContainer & detsPXF() const
const DetContainer & detsTOB() const
TrackerCounters tkCounters_
virtual Alignables components() const
Return vector of direct components.
Alignments * alignments() const
Return alignments, sorted by DetId.
std::vector< GeomDet const * > DetContainer
virtual void addComponent(Alignable *component)
AlignSetup< Alignables > alignableLists_
const DetContainer & detsTID() const