CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes
PedeLabeler Class Reference

#include <PedeLabeler.h>

Public Member Functions

AlignablealignableFromLabel (unsigned int label) const
 
unsigned int alignableLabel (Alignable *alignable) const
 Return 32-bit unique label for alignable, 0 indicates failure. More...
 
unsigned int alignableLabelFromLabel (unsigned int label) const
 alignable label from parameter label (works also for alignable label...) More...
 
unsigned int lasBeamIdFromLabel (unsigned int label) const
 
unsigned int lasBeamLabel (unsigned int lasBeamId) const
 
unsigned int parameterLabel (unsigned int aliLabel, unsigned int parNum) const
 
unsigned int paramNumFromLabel (unsigned int paramLabel) const
 parameter number, 0 <= .. < theMaxNumParam, belonging to unique parameter label More...
 
 PedeLabeler (const std::vector< Alignable * > &alis)
 constructor from array of Alignables More...
 
 PedeLabeler (Alignable *ali1, Alignable *ali2, AlignableExtras *extras)
 constructor from two Alignables (null pointers allowed ) More...
 
 ~PedeLabeler ()
 

Static Public Attributes

static const unsigned int theMaxNumParam = RigidBodyAlignmentParameters::N_PARAM + 14
 reverse of the above More...
 
static const unsigned int theMinLabel = 1
 

Private Types

typedef std::map< Alignable
*, unsigned int > 
AlignableToIdMap
 
typedef
AlignableToIdMap::value_type 
AlignableToIdPair
 
typedef std::map< unsigned int,
Alignable * > 
IdToAlignableMap
 
typedef std::map< unsigned int,
unsigned int > 
UintUintMap
 

Private Member Functions

unsigned int buildMap (const std::vector< Alignable * > &alis)
 returns size of map More...
 
unsigned int buildReverseMap ()
 returns size of map More...
 

Private Attributes

AlignableToIdMap myAlignableToIdMap
 
IdToAlignableMap myIdToAlignableMap
 providing unique ID for alignable, space for param IDs More...
 
UintUintMap myLabelToLasBeamMap
 labels for las beams More...
 
UintUintMap myLasBeamToLabelMap
 reverse map More...
 

Detailed Description

provides labels for AlignmentParameters for pede

Author
: Gero Flucke date : September 2007
Date:
2010/09/10 13:31:54
Revision:
1.3

(last update by

Author:
mussgill

)

Definition at line 25 of file PedeLabeler.h.

Member Typedef Documentation

typedef std::map<Alignable*, unsigned int> PedeLabeler::AlignableToIdMap
private

Definition at line 54 of file PedeLabeler.h.

typedef AlignableToIdMap::value_type PedeLabeler::AlignableToIdPair
private

Definition at line 55 of file PedeLabeler.h.

typedef std::map<unsigned int, Alignable*> PedeLabeler::IdToAlignableMap
private

Definition at line 56 of file PedeLabeler.h.

typedef std::map<unsigned int, unsigned int> PedeLabeler::UintUintMap
private

Definition at line 57 of file PedeLabeler.h.

Constructor & Destructor Documentation

PedeLabeler::PedeLabeler ( const std::vector< Alignable * > &  alis)

constructor from array of Alignables

Definition at line 25 of file PedeLabeler.cc.

References buildMap().

26 {
27  this->buildMap(alis);
28 }
unsigned int buildMap(const std::vector< Alignable * > &alis)
returns size of map
Definition: PedeLabeler.cc:154
PedeLabeler::PedeLabeler ( Alignable ali1,
Alignable ali2,
AlignableExtras extras 
)

constructor from two Alignables (null pointers allowed )

Definition at line 31 of file PedeLabeler.cc.

References buildMap(), and AlignableExtras::components().

32 {
33  std::vector<Alignable*> alis;
34  alis.push_back(ali1);
35  alis.push_back(ali2);
36 
37  if (extras) {
38  align::Alignables allExtras = extras->components();
39  for ( std::vector<Alignable*>::iterator it = allExtras.begin(); it != allExtras.end(); ++it ) {
40  alis.push_back(*it);
41  }
42  }
43 
44  this->buildMap(alis);
45 }
Alignables components() const
std::vector< Alignable * > Alignables
Definition: Utilities.h:28
unsigned int buildMap(const std::vector< Alignable * > &alis)
returns size of map
Definition: PedeLabeler.cc:154
PedeLabeler::~PedeLabeler ( )

non-virtual destructor: do not inherit from this class

Definition at line 49 of file PedeLabeler.cc.

50 {
51 }

Member Function Documentation

Alignable * PedeLabeler::alignableFromLabel ( unsigned int  label) const

Alignable from alignable or parameter label, null if no alignable (but error only if not las beam, either!)

Definition at line 116 of file PedeLabeler.cc.

References alignableLabelFromLabel(), myIdToAlignableMap, myLabelToLasBeamMap, position, and theMinLabel.

Referenced by PedeReader::setParameter().

117 {
118  const unsigned int aliLabel = this->alignableLabelFromLabel(label);
119  if (aliLabel < theMinLabel) return 0; // error already given
120 
121  if (myIdToAlignableMap.empty()) const_cast<PedeLabeler*>(this)->buildReverseMap();
122  IdToAlignableMap::const_iterator position = myIdToAlignableMap.find(aliLabel);
123  if (position != myIdToAlignableMap.end()) {
124  return position->second;
125  } else {
126  // error only if not in lasBeamMap:
127  UintUintMap::const_iterator position = myLabelToLasBeamMap.find(aliLabel);
128  if (position == myLabelToLasBeamMap.end()) {
129  edm::LogError("LogicError") << "@SUB=PedeLabeler::alignableFromLabel"
130  << "Alignable label " << aliLabel << " not in map.";
131  }
132  return 0;
133  }
134 }
const std::string & label
Definition: MVAComputer.cc:186
static const unsigned int theMinLabel
Definition: PedeLabeler.h:73
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
UintUintMap myLabelToLasBeamMap
labels for las beams
Definition: PedeLabeler.h:69
IdToAlignableMap myIdToAlignableMap
providing unique ID for alignable, space for param IDs
Definition: PedeLabeler.h:67
unsigned int alignableLabelFromLabel(unsigned int label) const
alignable label from parameter label (works also for alignable label...)
Definition: PedeLabeler.cc:110
unsigned int PedeLabeler::alignableLabel ( Alignable alignable) const

Return 32-bit unique label for alignable, 0 indicates failure.

uniqueId of Alignable, 0 if alignable not known between this ID and the next there is enough 'space' to add parameter numbers 0...nPar-1 to make unique IDs for the labels of active parameters

Definition at line 55 of file PedeLabeler.cc.

References Alignable::alignableObjectId(), Alignable::id(), myAlignableToIdMap, and position.

Referenced by MillePedeAlignmentAlgorithm::addPxbSurvey(), MillePedeAlignmentAlgorithm::buildUserVariables(), PedeReader::checkAliParams(), PedeSteerer::fixParameter(), PedeSteerer::hierarchyConstraint(), and PedeSteerer::presigmasFile().

56 {
57  if (!alignable) return 0;
58 
59  AlignableToIdMap::const_iterator position = myAlignableToIdMap.find(alignable);
60  if (position != myAlignableToIdMap.end()) {
61  return position->second;
62  } else {
63  const DetId detId(alignable->id());
64  //throw cms::Exception("LogicError")
65  edm::LogError("LogicError")
66  << "@SUB=PedeLabeler::alignableLabel" << "Alignable "
67  << typeid(*alignable).name() << " not in map, det/subdet/alignableStructureType = "
68  << detId.det() << "/" << detId.subdetId() << "/" << alignable->alignableObjectId();
69  return 0;
70  }
71 }
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
AlignableToIdMap myAlignableToIdMap
Definition: PedeLabeler.h:66
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
Definition: DetId.h:20
unsigned int PedeLabeler::alignableLabelFromLabel ( unsigned int  label) const

alignable label from parameter label (works also for alignable label...)

Definition at line 110 of file PedeLabeler.cc.

References paramNumFromLabel().

Referenced by alignableFromLabel(), lasBeamIdFromLabel(), and PedeReader::setParameter().

111 {
112  return paramLabel - this->paramNumFromLabel(paramLabel);
113 }
unsigned int paramNumFromLabel(unsigned int paramLabel) const
parameter number, 0 &lt;= .. &lt; theMaxNumParam, belonging to unique parameter label
Definition: PedeLabeler.cc:99
unsigned int PedeLabeler::buildMap ( const std::vector< Alignable * > &  alis)
private

returns size of map

Definition at line 154 of file PedeLabeler.cc.

References ExpressReco_HICollisions_FallBack::id, myAlignableToIdMap, myLasBeamToLabelMap, theMaxNumParam, and theMinLabel.

Referenced by PedeLabeler().

155 {
156  myAlignableToIdMap.clear(); // just in case of re-use...
157 
158  std::vector<Alignable*> allComps;
159 
160  for (std::vector<Alignable*>::const_iterator iAli = alis.begin(); iAli != alis.end(); ++iAli) {
161  if (*iAli) {
162  allComps.push_back(*iAli);
163  (*iAli)->recursiveComponents(allComps);
164  }
165  }
166 
167  unsigned int id = theMinLabel;
168  for (std::vector<Alignable*>::const_iterator iter = allComps.begin();
169  iter != allComps.end(); ++iter) {
170  myAlignableToIdMap.insert(AlignableToIdPair(*iter, id));
171  id += theMaxNumParam;
172  }
173 
174  // also care about las beams
175  myLasBeamToLabelMap.clear(); // just in case of re-use...
176  // FIXME: Temporarily hard code values stolen from
177  // https://twiki.cern.ch/twiki/bin/view/CMS/TkLasTrackBasedInterface#Beam_identifier .
178  unsigned int beamIds[] = { 0, 10, 20, 30, 40, 50, 60, 70, // TEC+ R4
179  1, 11, 21, 31, 41, 51, 61, 71, // TEC+ R6
180  100, 110, 120, 130, 140, 150, 160, 170, // TEC- R4
181  101, 111, 121, 131, 141, 151, 161, 171, // TEC- R6
182  200, 210, 220, 230, 240, 250, 260, 270};// AT
183 
184  const size_t nBeams = sizeof(beamIds)/sizeof(beamIds[0]);
185  for (size_t iBeam = 0; iBeam < nBeams; ++iBeam) {
186  //edm::LogInfo("Alignment") << "Las beam " << beamIds[iBeam] << " gets label " << id << ".";
187  myLasBeamToLabelMap[beamIds[iBeam]] = id;
188  id += theMaxNumParam;
189  }
190 
191  // return combined size
192  return myAlignableToIdMap.size() + myLasBeamToLabelMap.size();
193 }
static const unsigned int theMinLabel
Definition: PedeLabeler.h:73
AlignableToIdMap myAlignableToIdMap
Definition: PedeLabeler.h:66
AlignableToIdMap::value_type AlignableToIdPair
Definition: PedeLabeler.h:55
static const unsigned int theMaxNumParam
reverse of the above
Definition: PedeLabeler.h:72
UintUintMap myLasBeamToLabelMap
reverse map
Definition: PedeLabeler.h:68
unsigned int PedeLabeler::buildReverseMap ( )
private

returns size of map

Definition at line 196 of file PedeLabeler.cc.

References combine::key, myAlignableToIdMap, myIdToAlignableMap, myLabelToLasBeamMap, and myLasBeamToLabelMap.

197 {
198 
199  // alignables
200  myIdToAlignableMap.clear(); // just in case of re-use...
201 
202  for (AlignableToIdMap::iterator it = myAlignableToIdMap.begin();
203  it != myAlignableToIdMap.end(); ++it) {
204  const unsigned int key = (*it).second;
205  Alignable *ali = (*it).first;
206  myIdToAlignableMap[key] = ali;
207  }
208 
209  // las beams
210  myLabelToLasBeamMap.clear(); // just in case of re-use...
211 
212  for (UintUintMap::const_iterator it = myLasBeamToLabelMap.begin();
213  it != myLasBeamToLabelMap.end(); ++it) {
214  myLabelToLasBeamMap[it->second] = it->first; //revert key/value
215  }
216 
217  // return combined size
218  return myIdToAlignableMap.size() + myLabelToLasBeamMap.size();
219 }
AlignableToIdMap myAlignableToIdMap
Definition: PedeLabeler.h:66
UintUintMap myLasBeamToLabelMap
reverse map
Definition: PedeLabeler.h:68
UintUintMap myLabelToLasBeamMap
labels for las beams
Definition: PedeLabeler.h:69
IdToAlignableMap myIdToAlignableMap
providing unique ID for alignable, space for param IDs
Definition: PedeLabeler.h:67
list key
Definition: combine.py:13
unsigned int PedeLabeler::lasBeamIdFromLabel ( unsigned int  label) const

las beam id from las beam or parameter label zero and error if not a valid las beam label

Definition at line 137 of file PedeLabeler.cc.

References alignableLabelFromLabel(), myLabelToLasBeamMap, position, and theMinLabel.

Referenced by PedeReader::setParameter().

138 {
139  const unsigned int aliLabel = this->alignableLabelFromLabel(label);
140  if (aliLabel < theMinLabel) return 0; // error already given
141 
142  if (myLabelToLasBeamMap.empty()) const_cast<PedeLabeler*>(this)->buildReverseMap();
143  UintUintMap::const_iterator position = myLabelToLasBeamMap.find(aliLabel);
144  if (position != myLabelToLasBeamMap.end()) {
145  return position->second;
146  } else {
147  edm::LogError("LogicError") << "@SUB=PedeLabeler::lasBeamIdFromLabel"
148  << "Alignable label " << aliLabel << " not in map.";
149  return 0;
150  }
151 }
const std::string & label
Definition: MVAComputer.cc:186
static const unsigned int theMinLabel
Definition: PedeLabeler.h:73
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
UintUintMap myLabelToLasBeamMap
labels for las beams
Definition: PedeLabeler.h:69
unsigned int alignableLabelFromLabel(unsigned int label) const
alignable label from parameter label (works also for alignable label...)
Definition: PedeLabeler.cc:110
unsigned int PedeLabeler::lasBeamLabel ( unsigned int  lasBeamId) const

Definition at line 74 of file PedeLabeler.cc.

References myLasBeamToLabelMap, and position.

Referenced by MillePedeAlignmentAlgorithm::addLasBeam().

75 {
76  UintUintMap::const_iterator position = myLasBeamToLabelMap.find(lasBeamId);
77  if (position != myLasBeamToLabelMap.end()) {
78  return position->second;
79  } else {
80  //throw cms::Exception("LogicError")
81  edm::LogError("LogicError") << "@SUB=PedeLabeler::lasBeamLabel"
82  << "No label for beam Id " << lasBeamId;
83  return 0;
84  }
85 }
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
UintUintMap myLasBeamToLabelMap
reverse map
Definition: PedeLabeler.h:68
unsigned int PedeLabeler::parameterLabel ( unsigned int  aliLabel,
unsigned int  parNum 
) const

Definition at line 88 of file PedeLabeler.cc.

References edm::hlt::Exception, and theMaxNumParam.

Referenced by MillePedeAlignmentAlgorithm::addLasBeam(), PedeSteerer::fixParameter(), PedeSteerer::hierarchyConstraint(), and PedeSteerer::presigmasFile().

89 {
90  if (parNum >= theMaxNumParam) {
91  throw cms::Exception("Alignment") << "@SUB=PedeLabeler::parameterLabel"
92  << "Parameter number " << parNum
93  << " out of range 0 <= num < " << theMaxNumParam;
94  }
95  return aliLabel + parNum;
96 }
static const unsigned int theMaxNumParam
reverse of the above
Definition: PedeLabeler.h:72
unsigned int PedeLabeler::paramNumFromLabel ( unsigned int  paramLabel) const

parameter number, 0 <= .. < theMaxNumParam, belonging to unique parameter label

Definition at line 99 of file PedeLabeler.cc.

References theMaxNumParam, and theMinLabel.

Referenced by alignableLabelFromLabel(), and PedeReader::setParameter().

100 {
101  if (paramLabel < theMinLabel) {
102  edm::LogError("LogicError") << "@SUB=PedeLabeler::paramNumFromLabel"
103  << "Label " << paramLabel << " should be >= " << theMinLabel;
104  return 0;
105  }
107 }
static const unsigned int theMinLabel
Definition: PedeLabeler.h:73
static const unsigned int theMaxNumParam
reverse of the above
Definition: PedeLabeler.h:72

Member Data Documentation

AlignableToIdMap PedeLabeler::myAlignableToIdMap
private

Definition at line 66 of file PedeLabeler.h.

Referenced by alignableLabel(), buildMap(), and buildReverseMap().

IdToAlignableMap PedeLabeler::myIdToAlignableMap
private

providing unique ID for alignable, space for param IDs

Definition at line 67 of file PedeLabeler.h.

Referenced by alignableFromLabel(), and buildReverseMap().

UintUintMap PedeLabeler::myLabelToLasBeamMap
private

labels for las beams

Definition at line 69 of file PedeLabeler.h.

Referenced by alignableFromLabel(), buildReverseMap(), and lasBeamIdFromLabel().

UintUintMap PedeLabeler::myLasBeamToLabelMap
private

reverse map

Definition at line 68 of file PedeLabeler.h.

Referenced by buildMap(), buildReverseMap(), and lasBeamLabel().

const unsigned int PedeLabeler::theMaxNumParam = RigidBodyAlignmentParameters::N_PARAM + 14
static

reverse of the above

Definition at line 72 of file PedeLabeler.h.

Referenced by buildMap(), MillePedeMonitor::fillDerivatives(), MillePedeMonitor::init(), parameterLabel(), and paramNumFromLabel().

const unsigned int PedeLabeler::theMinLabel = 1
static

Definition at line 73 of file PedeLabeler.h.

Referenced by alignableFromLabel(), buildMap(), lasBeamIdFromLabel(), and paramNumFromLabel().