49 return position->second;
51 const DetId detId(alignable->
id());
53 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::alignableLabel" 54 <<
"Alignable " <<
typeid(*alignable).name()
55 <<
" not in map, det/subdet/alignableStructureType = " << detId.det() <<
"/" 65 unsigned int )
const {
73 return position->second;
76 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::lasBeamLabel" 77 <<
"No label for beam Id " << lasBeamId;
85 throw cms::Exception(
"Alignment") <<
"@SUB=PedeLabeler::parameterLabel" 86 <<
"Parameter number " << parNum <<
" out of range 0 <= num < " <<
theMaxNumParam;
88 return aliLabel + parNum;
94 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::paramNumFromLabel" 95 <<
"Label " << paramLabel <<
" should be >= " <<
theMinLabel;
114 return position->second;
119 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::alignableFromLabel" 120 <<
"Alignable label " << aliLabel <<
" not in map.";
134 return position->second;
136 edm::LogError(
"LogicError") <<
"@SUB=PedeLabeler::lasBeamIdFromLabel" 137 <<
"Alignable label " << aliLabel <<
" not in map.";
148 for (
const auto& iAli : alis) {
150 allComps.push_back(iAli);
151 iAli->recursiveComponents(allComps);
156 for (
const auto& iter : allComps) {
165 unsigned int beamIds[] = {0, 10, 20, 30, 40, 50, 60, 70,
166 1, 11, 21, 31, 41, 51, 61, 71,
167 100, 110, 120, 130, 140, 150, 160, 170,
168 101, 111, 121, 131, 141, 151, 161, 171,
169 200, 210, 220, 230, 240, 250, 260, 270};
171 const size_t nBeams =
sizeof(beamIds) /
sizeof(beamIds[0]);
172 for (
size_t iBeam = 0; iBeam < nBeams; ++iBeam) {
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
Alignable * alignableFromLabel(unsigned int label) const override
unsigned int alignableLabelFromParamAndInstance(Alignable *alignable, unsigned int param, unsigned int instance) const override
static const unsigned int theMinLabel
PedeLabeler(const PedeLabelerBase::TopLevelAlignables &alignables, const edm::ParameterSet &config)
constructor from three Alignables (null pointers allowed )
unsigned int lasBeamLabel(unsigned int lasBeamId) const override
unsigned int buildReverseMap()
returns size of map
static const unsigned int theMaxNumParam
AlignableTracker * aliTracker_
UintUintMap theLabelToLasBeamMap
labels for las beams
unsigned int paramNumFromLabel(unsigned int paramLabel) const override
parameter number, 0 <= .. < theMaxNumParam, belonging to unique parameter label
AlignableToIdMap::value_type AlignableToIdPair
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
~PedeLabeler() override
destructor
IdToAlignableMap theIdToAlignableMap
providing unique ID for alignable, space for param IDs
unsigned int buildMap(const align::Alignables &)
returns size of map
AlignableToIdMap theAlignableToIdMap
unsigned int alignableLabelFromLabel(unsigned int label) const override
alignable label from parameter label (works also for alignable label...)
AlignableExtras * aliExtras_
UintUintMap theLasBeamToLabelMap
reverse map
unsigned int lasBeamIdFromLabel(unsigned int label) const override
unsigned int alignableLabel(Alignable *alignable) const override
Return 32-bit unique label for alignable, 0 indicates failure.
std::vector< Alignable * > Alignables
unsigned int parameterLabel(unsigned int aliLabel, unsigned int parNum) const override
returns the label for a given alignable parameter number combination
static int position[264][3]
#define DEFINE_EDM_PLUGIN(factory, type, name)