26 std::vector<Alignable*> alis;
32 for ( std::vector<Alignable*>::iterator it = allExtras.begin(); it != allExtras.end(); ++it ) {
49 if (!alignable)
return 0;
53 return position->second;
55 const DetId detId(alignable->
id());
58 <<
"@SUB=PedeLabeler::alignableLabel" <<
"Alignable " 59 <<
typeid(*alignable).name() <<
" not in map, det/subdet/alignableStructureType = " 60 << detId.det() <<
"/" << detId.subdetId() <<
"/" << alignable->
alignableObjectId();
79 return position->second;
82 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::lasBeamLabel" 83 <<
"No label for beam Id " << lasBeamId;
92 throw cms::Exception(
"Alignment") <<
"@SUB=PedeLabeler::parameterLabel" 93 <<
"Parameter number " << parNum
96 return aliLabel + parNum;
103 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::paramNumFromLabel" 104 <<
"Label " << paramLabel <<
" should be >= " <<
theMinLabel;
125 return position->second;
130 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::alignableFromLabel" 131 <<
"Alignable label " << aliLabel <<
" not in map.";
146 return position->second;
148 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::lasBeamIdFromLabel" 149 <<
"Alignable label " << aliLabel <<
" not in map.";
159 std::vector<Alignable*> allComps;
161 for (std::vector<Alignable*>::const_iterator iAli = alis.begin(); iAli != alis.end(); ++iAli) {
163 allComps.push_back(*iAli);
164 (*iAli)->recursiveComponents(allComps);
169 for (std::vector<Alignable*>::const_iterator iter = allComps.begin();
170 iter != allComps.end(); ++iter) {
179 unsigned int beamIds[] = { 0, 10, 20, 30, 40, 50, 60, 70,
180 1, 11, 21, 31, 41, 51, 61, 71,
181 100, 110, 120, 130, 140, 150, 160, 170,
182 101, 111, 121, 131, 141, 151, 161, 171,
183 200, 210, 220, 230, 240, 250, 260, 270};
185 const size_t nBeams =
sizeof(beamIds)/
sizeof(beamIds[0]);
186 for (
size_t iBeam = 0; iBeam < nBeams; ++iBeam) {
205 const unsigned int key = (*it).second;
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
unsigned int alignableLabelFromParamAndInstance(Alignable *alignable, unsigned int param, unsigned int instance) const
unsigned int lasBeamLabel(unsigned int lasBeamId) const
unsigned int paramNumFromLabel(unsigned int paramLabel) const
parameter number, 0 <= .. < theMaxNumParam, belonging to unique parameter label
static const unsigned int theMinLabel
PedeLabeler(const PedeLabelerBase::TopLevelAlignables &alignables, const edm::ParameterSet &config)
constructor from three Alignables (null pointers allowed )
unsigned int parameterLabel(unsigned int aliLabel, unsigned int parNum) const
returns the label for a given alignable parameter number combination
unsigned int buildReverseMap()
returns size of map
static const unsigned int theMaxNumParam
AlignableTracker * aliTracker_
UintUintMap theLabelToLasBeamMap
labels for las beams
AlignableToIdMap::value_type AlignableToIdPair
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
IdToAlignableMap theIdToAlignableMap
providing unique ID for alignable, space for param IDs
AlignableToIdMap theAlignableToIdMap
AlignableExtras * aliExtras_
Alignable * alignableFromLabel(unsigned int label) const
unsigned int alignableLabel(Alignable *alignable) const
Return 32-bit unique label for alignable, 0 indicates failure.
UintUintMap theLasBeamToLabelMap
reverse map
unsigned int alignableLabelFromLabel(unsigned int label) const
alignable label from parameter label (works also for alignable label...)
std::vector< Alignable * > Alignables
unsigned int lasBeamIdFromLabel(unsigned int label) const
static int position[264][3]
#define DEFINE_EDM_PLUGIN(factory, type, name)
unsigned int buildMap(const std::vector< Alignable * > &alis)
returns size of map