20 : trackerTopology_(trackerTopology),
21 alignableObjectId_(trackerGeometry, nullptr, nullptr, nullptr),
22 alignableIndexer_(alignableIndexer) {}
36 std::ostringstream
ss;
39 unsigned int numCompositeAlignables = 0;
44 ss <<
"built " << numCompositeAlignables <<
" CompositeAlignables for "
46 edm::LogInfo(
"AlignableBuildProcess") <<
"@SUB=AlignableCompositeBuilder::buildAll" << ss.str();
48 return numCompositeAlignables;
58 std::ostringstream&
ss,
60 unsigned int childLevel = parentLevel - 1;
76 for (
auto*
child : children) {
83 if (!parent && !update) {
85 throw cms::Exception(
"LogicError") <<
"@SUB=AlignableCompositeBuilder::buildLevel\n"
86 <<
"trying to update a non-existing AlignableComposite";
101 throw cms::Exception(
"LogicError") <<
"@SUB=AlignableCompositeBuilder::buildLevel\n"
102 <<
"trying to update a flat composite that is not of type "
103 <<
"AlignableComposite";
105 if (mother->id() ==
child->id()) {
106 mother->update(
child->id(), parentType,
child->globalRotation());
113 parent->addComponent(
child);
117 <<
"(s) (theoretical maximum: " << maxNumParents <<
") consisting of " << children.size() <<
" "
143 return indexOf(
id) - 1;
TkRotation< Scalar > RotationType
align::Alignables & get(const std::string &name="")
AlignableCompositeBuilder(const TrackerTopology *, const TrackerGeometry *, const AlignableIndexer &)
unsigned int getIndexOfStructure(align::ID, unsigned int level) const
align::AlignmentLevels alignmentLevels_
const AlignableObjectId alignableObjectId_
align::Alignables & find(const std::string &name="")
virtual align::Counter get(align::StructureType, const AlignableObjectId &) const
Get a counter based on its structure type.
Log< level::Info, false > LogInfo
void clearAlignmentLevels()
Resets the alignment-levels.
const char * idToString(align::StructureType type) const
unsigned int maxNumComponents(unsigned int startLevel) const
std::vector< Alignable * > Alignables
unsigned int buildLevel(unsigned int parentLevel, AlignableMap &, std::ostringstream &, bool update=false)
Builds the components for a given level in the hierarchy.
unsigned int buildAll(AlignableMap &, bool update=false)
AlignableIndexer alignableIndexer_
void addAlignmentLevel(std::unique_ptr< AlignmentLevel > level)