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) {
unsigned int alignableLabel(Alignable *alignable) const override
Return 32-bit unique label for alignable, 0 indicates failure.
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
uint16_t *__restrict__ id
static const unsigned int theMinLabel
PedeLabeler(const PedeLabelerBase::TopLevelAlignables &alignables, const edm::ParameterSet &config)
constructor from three Alignables (null pointers allowed )
unsigned int alignableLabelFromParamAndInstance(Alignable *alignable, unsigned int param, unsigned int instance) const override
Log< level::Error, false > LogError
unsigned int buildReverseMap()
returns size of map
static const unsigned int theMaxNumParam
AlignableTracker * aliTracker_
UintUintMap theLabelToLasBeamMap
labels for las beams
AlignableToIdMap::value_type AlignableToIdPair
~PedeLabeler() override
destructor
Alignable * alignableFromLabel(unsigned int label) const override
IdToAlignableMap theIdToAlignableMap
providing unique ID for alignable, space for param IDs
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
unsigned int buildMap(const align::Alignables &)
returns size of map
AlignableToIdMap theAlignableToIdMap
AlignableExtras * aliExtras_
unsigned int lasBeamLabel(unsigned int lasBeamId) const override
UintUintMap theLasBeamToLabelMap
reverse map
unsigned int alignableLabelFromLabel(unsigned int label) const override
alignable label from parameter label (works also for alignable label...)
unsigned int lasBeamIdFromLabel(unsigned int label) const override
std::vector< Alignable * > Alignables
tuple config
parse the configuration file
unsigned int paramNumFromLabel(unsigned int paramLabel) const override
parameter number, 0 <= .. < theMaxNumParam, belonging to unique parameter label
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)