CMS 3D CMS Logo

MuonAlignmentOutputXML.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: MuonAlignment
4 // Class : MuonAlignmentOutputXML
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author:
10 // Created: Fri Mar 14 18:02:33 CDT 2008
11 // $Id: MuonAlignmentOutputXML.cc,v 1.9 2011/06/07 19:38:24 khotilov Exp $
12 //
13 
14 // system include files
17 
18 // user include files
30 
31 //
32 // constants, enums and typedefs
33 //
34 
35 //
36 // static data member definitions
37 //
38 
39 //
40 // constructors and destructor
41 //
43  : m_fileName(iConfig.getParameter<std::string>("fileName")),
44  m_survey(iConfig.getParameter<bool>("survey")),
45  m_rawIds(iConfig.getParameter<bool>("rawIds")),
46  m_eulerAngles(iConfig.getParameter<bool>("eulerAngles")),
47  m_precision(iConfig.getParameter<int>("precision")),
48  m_suppressDTBarrel(iConfig.getUntrackedParameter<bool>("suppressDTBarrel", false)),
49  m_suppressDTWheels(iConfig.getUntrackedParameter<bool>("suppressDTWheels", false)),
50  m_suppressDTStations(iConfig.getUntrackedParameter<bool>("suppressDTStations", false)),
51  m_suppressDTChambers(iConfig.getUntrackedParameter<bool>("suppressDTChambers", false)),
52  m_suppressDTSuperLayers(iConfig.getUntrackedParameter<bool>("suppressDTSuperLayers", false)),
53  m_suppressDTLayers(iConfig.getUntrackedParameter<bool>("suppressDTLayers", false)),
54  m_suppressCSCEndcaps(iConfig.getUntrackedParameter<bool>("suppressCSCEndcaps", false)),
55  m_suppressCSCStations(iConfig.getUntrackedParameter<bool>("suppressCSCStations", false)),
56  m_suppressCSCRings(iConfig.getUntrackedParameter<bool>("suppressCSCRings", false)),
57  m_suppressCSCChambers(iConfig.getUntrackedParameter<bool>("suppressCSCChambers", false)),
58  m_suppressCSCLayers(iConfig.getUntrackedParameter<bool>("suppressCSCLayers", false)),
59  idealGeometryLabel("idealForOutputXML") {
60  std::string str_relativeto = iConfig.getParameter<std::string>("relativeto");
61 
62  if (str_relativeto == std::string("none")) {
63  m_relativeto = 0;
64  } else if (str_relativeto == std::string("ideal")) {
65  m_relativeto = 1;
66  } else if (str_relativeto == std::string("container")) {
67  m_relativeto = 2;
68  } else {
69  throw cms::Exception("BadConfig") << "relativeto must be \"none\", \"ideal\", or \"container\"" << std::endl;
70  }
71 }
72 
73 // MuonAlignmentOutputXML::MuonAlignmentOutputXML(const MuonAlignmentOutputXML& rhs)
74 // {
75 // // do actual copying here;
76 // }
77 
79 
80 //
81 // assignment operators
82 //
83 // const MuonAlignmentOutputXML& MuonAlignmentOutputXML::operator=(const MuonAlignmentOutputXML& rhs)
84 // {
85 // //An exception safe implementation is
86 // MuonAlignmentOutputXML temp(rhs);
87 // swap(rhs);
88 //
89 // return *this;
90 // }
91 
92 //
93 // member functions
94 //
95 
96 void MuonAlignmentOutputXML::write(AlignableMuon *alignableMuon, const edm::EventSetup &iSetup) const {
97  std::ofstream outputFile(m_fileName.c_str());
98  outputFile << std::setprecision(m_precision) << std::fixed;
99 
100  outputFile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl;
101  outputFile << "<?xml-stylesheet type=\"text/xml\" href=\"MuonAlignment.xsl\"?>" << std::endl;
102  outputFile << "<MuonAlignment>" << std::endl << std::endl;
103 
104  std::map<align::ID, CLHEP::HepSymMatrix> errors;
105  AlignmentErrorsExtended *dtErrors = alignableMuon->dtAlignmentErrorsExtended();
106  AlignmentErrorsExtended *cscErrors = alignableMuon->cscAlignmentErrorsExtended();
107  for (std::vector<AlignTransformErrorExtended>::const_iterator dtError = dtErrors->m_alignError.begin();
108  dtError != dtErrors->m_alignError.end();
109  ++dtError) {
110  errors[dtError->rawId()] = dtError->matrix();
111  }
112  for (std::vector<AlignTransformErrorExtended>::const_iterator cscError = cscErrors->m_alignError.begin();
113  cscError != cscErrors->m_alignError.end();
114  ++cscError) {
115  errors[cscError->rawId()] = cscError->matrix();
116  }
117 
118  align::Alignables barrels = alignableMuon->DTBarrel();
119  align::Alignables endcaps = alignableMuon->CSCEndcaps();
120 
121  if (m_relativeto == 1) {
122  edm::ESHandle<DTGeometry> dtGeometry;
123  edm::ESHandle<CSCGeometry> cscGeometry;
125  iSetup.get<MuonGeometryRecord>().get(idealGeometryLabel, dtGeometry);
126  iSetup.get<MuonGeometryRecord>().get(idealGeometryLabel, cscGeometry);
128 
129  AlignableMuon ideal_alignableMuon(&(*dtGeometry), &(*cscGeometry), &(*gemGeometry));
130 
131  align::Alignables ideal_barrels = ideal_alignableMuon.DTBarrel();
132  align::Alignables ideal_endcaps = ideal_alignableMuon.CSCEndcaps();
133 
134  writeComponents(barrels, ideal_barrels, errors, outputFile, true, alignableMuon->objectIdProvider());
135  writeComponents(endcaps, ideal_endcaps, errors, outputFile, false, alignableMuon->objectIdProvider());
136  } else {
137  align::Alignables empty1, empty2;
138 
139  writeComponents(barrels, empty1, errors, outputFile, true, alignableMuon->objectIdProvider());
140  writeComponents(endcaps, empty2, errors, outputFile, false, alignableMuon->objectIdProvider());
141  }
142 
143  outputFile << "</MuonAlignment>" << std::endl;
144 }
145 
147  align::Alignables &ideals,
148  std::map<align::ID, CLHEP::HepSymMatrix> &errors,
149  std::ofstream &outputFile,
150  bool DT,
151  const AlignableObjectId &objectIdProvider) const {
152  align::Alignables::const_iterator ideal = ideals.begin();
153  for (align::Alignables::const_iterator alignable = alignables.begin(); alignable != alignables.end(); ++alignable) {
154  if (m_survey && (*alignable)->survey() == nullptr) {
155  throw cms::Exception("Alignment") << "SurveyDets must all be defined when writing to XML" << std::endl;
156  } // now I can assume it's okay everywhere
157 
158  align::StructureType alignableObjectId = (*alignable)->alignableObjectId();
159 
160  if ((alignableObjectId == align::AlignableDTBarrel && !m_suppressDTBarrel) ||
161  (alignableObjectId == align::AlignableDTWheel && !m_suppressDTWheels) ||
162  (alignableObjectId == align::AlignableDTStation && !m_suppressDTStations) ||
163  (alignableObjectId == align::AlignableDTChamber && !m_suppressDTChambers) ||
164  (DT && alignableObjectId == align::AlignableDTSuperLayer && !m_suppressDTSuperLayers) ||
165  (DT && alignableObjectId == align::AlignableDetUnit && !m_suppressDTLayers) ||
166  (alignableObjectId == align::AlignableCSCEndcap && !m_suppressCSCEndcaps) ||
167  (alignableObjectId == align::AlignableCSCStation && !m_suppressCSCStations) ||
168  (alignableObjectId == align::AlignableCSCRing && !m_suppressCSCRings) ||
169  (alignableObjectId == align::AlignableCSCChamber && !m_suppressCSCChambers) ||
170  (!DT && alignableObjectId == align::AlignableDetUnit && !m_suppressCSCLayers)) {
171  unsigned int rawId = (*alignable)->geomDetId().rawId();
172  outputFile << "<operation>" << std::endl;
173 
174  if (DT) {
175  if (m_rawIds && rawId != 0) {
176  std::string typeName = objectIdProvider.idToString(alignableObjectId);
177  if (alignableObjectId == align::AlignableDTSuperLayer)
178  typeName = std::string("DTSuperLayer");
179  if (alignableObjectId == align::AlignableDetUnit)
180  typeName = std::string("DTLayer");
181  outputFile << " <" << typeName << " rawId=\"" << rawId << "\" />" << std::endl;
182  } else {
183  if (alignableObjectId == align::AlignableDetUnit) {
184  DTLayerId id(rawId);
185  outputFile << " <DTLayer wheel=\"" << id.wheel() << "\" station=\"" << id.station() << "\" sector=\""
186  << id.sector() << "\" superlayer=\"" << id.superlayer() << "\" layer=\"" << id.layer() << "\" />"
187  << std::endl;
188  } else if (alignableObjectId == align::AlignableDTSuperLayer) {
189  DTSuperLayerId id(rawId);
190  outputFile << " <DTSuperLayer wheel=\"" << id.wheel() << "\" station=\"" << id.station() << "\" sector=\""
191  << id.sector() << "\" superlayer=\"" << id.superlayer() << "\" />" << std::endl;
192  } else if (alignableObjectId == align::AlignableDTChamber) {
193  DTChamberId id(rawId);
194  outputFile << " <DTChamber wheel=\"" << id.wheel() << "\" station=\"" << id.station() << "\" sector=\""
195  << id.sector() << "\" />" << std::endl;
196  }
197 
198  else {
199  DTChamberId id((*alignable)->id());
200  if (alignableObjectId == align::AlignableDTStation) {
201  outputFile << " <DTStation wheel=\"" << id.wheel() << "\" station=\"" << id.station() << "\" />"
202  << std::endl;
203  } else if (alignableObjectId == align::AlignableDTWheel) {
204  outputFile << " <DTWheel wheel=\"" << id.wheel() << "\" />" << std::endl;
205  } else if (alignableObjectId == align::AlignableDTBarrel) {
206  outputFile << " <DTBarrel />" << std::endl;
207  } else
208  throw cms::Exception("Alignment") << "Unknown DT Alignable StructureType" << std::endl;
209  }
210 
211  } // end if not rawId
212  } // end if DT
213 
214  else { // CSC
215  if (m_rawIds && rawId != 0) {
216  std::string typeName = objectIdProvider.idToString(alignableObjectId);
217  if (alignableObjectId == align::AlignableDetUnit)
218  typeName = std::string("CSCLayer");
219  outputFile << " <" << typeName << " rawId=\"" << rawId << "\" />" << std::endl;
220  } else {
221  if (alignableObjectId == align::AlignableDetUnit) {
222  CSCDetId id(rawId);
223  outputFile << " <CSCLayer endcap=\"" << id.endcap() << "\" station=\"" << id.station() << "\" ring=\""
224  << id.ring() << "\" chamber=\"" << id.chamber() << "\" layer=\"" << id.layer() << "\" />"
225  << std::endl;
226  } else if (alignableObjectId == align::AlignableCSCChamber) {
227  CSCDetId id(rawId);
228  outputFile << " <CSCChamber endcap=\"" << id.endcap() << "\" station=\"" << id.station() << "\" ring=\""
229  << id.ring() << "\" chamber=\"" << id.chamber() << "\" />" << std::endl;
230  } else {
231  CSCDetId id((*alignable)->id());
232  if (alignableObjectId == align::AlignableCSCRing) {
233  outputFile << " <CSCRing endcap=\"" << id.endcap() << "\" station=\"" << id.station() << "\" ring=\""
234  << id.ring() << "\" />" << std::endl;
235  } else if (alignableObjectId == align::AlignableCSCStation) {
236  outputFile << " <CSCStation endcap=\"" << id.endcap() << "\" station=\"" << id.station() << "\" />"
237  << std::endl;
238  } else if (alignableObjectId == align::AlignableCSCEndcap) {
239  outputFile << " <CSCEndcap endcap=\"" << id.endcap() << "\" />" << std::endl;
240  } else
241  throw cms::Exception("Alignment") << "Unknown CSC Alignable StructureType" << std::endl;
242  }
243 
244  } // end if not rawId
245  } // end if CSC
246 
247  align::PositionType pos = (*alignable)->globalPosition();
248  align::RotationType rot = (*alignable)->globalRotation();
249 
250  if (m_survey) {
251  pos = (*alignable)->survey()->position();
252  rot = (*alignable)->survey()->rotation();
253  }
254 
255  std::string str_relativeto;
256  if (m_relativeto == 0) {
257  str_relativeto = std::string("none");
258  }
259 
260  else if (m_relativeto == 1) {
261  if (ideal == ideals.end() || (*ideal)->alignableObjectId() != alignableObjectId ||
262  (*ideal)->id() != (*alignable)->id()) {
263  throw cms::Exception("Alignment") << "AlignableMuon and ideal_AlignableMuon are out of sync!" << std::endl;
264  }
265 
266  align::PositionType idealPosition = (*ideal)->globalPosition();
267  align::RotationType idealRotation = (*ideal)->globalRotation();
268 
269  pos = align::PositionType(idealRotation * (pos.basicVector() - idealPosition.basicVector()));
270  rot = rot * idealRotation.transposed();
271 
272  str_relativeto = std::string("ideal");
273 
274  bool csc_debug = false;
275  if (csc_debug && !DT) {
276  CSCDetId id(rawId);
277  if (id.endcap() == 1 && id.station() == 1 && id.ring() == 1 && id.chamber() == 33) {
278  std::cout << " investigating " << id << std::endl
279  << (*alignable)->globalRotation() << std::endl
280  << std::endl
281  << idealRotation.transposed() << std::endl
282  << std::endl
283  << rot << std::endl
284  << std::endl;
285  double phix = atan2(rot.yz(), rot.zz());
286  double phiy = asin(-rot.xz());
287  double phiz = atan2(rot.xy(), rot.xx());
288 
289  std::cout << "phix=\"" << phix << "\" phiy=\"" << phiy << "\" phiz=\"" << phiz << std::endl;
290 
291  align::EulerAngles eulerAngles = align::toAngles((*alignable)->globalRotation());
292  std::cout << "alpha=\"" << eulerAngles(1) << "\" beta=\"" << eulerAngles(2) << "\" gamma=\""
293  << eulerAngles(3) << std::endl;
294  eulerAngles = align::toAngles(idealRotation);
295  std::cout << "alpha=\"" << eulerAngles(1) << "\" beta=\"" << eulerAngles(2) << "\" gamma=\""
296  << eulerAngles(3) << std::endl;
297  eulerAngles = align::toAngles(rot);
298  std::cout << "alpha=\"" << eulerAngles(1) << "\" beta=\"" << eulerAngles(2) << "\" gamma=\""
299  << eulerAngles(3) << std::endl;
300  }
301  }
302  }
303 
304  else if (m_relativeto == 2 && (*alignable)->mother() != nullptr) {
305  align::PositionType globalPosition = (*alignable)->mother()->globalPosition();
306  align::RotationType globalRotation = (*alignable)->mother()->globalRotation();
307 
308  pos = align::PositionType(globalRotation * (pos.basicVector() - globalPosition.basicVector()));
309  rot = rot * globalRotation.transposed();
310 
311  str_relativeto = std::string("container");
312  }
313 
314  else
315  assert(false); // can't happen: see constructor
316 
317  outputFile << " <setposition relativeto=\"" << str_relativeto << "\" "
318  << "x=\"" << pos.x() << "\" y=\"" << pos.y() << "\" z=\"" << pos.z() << "\" ";
319 
320  if (m_eulerAngles) {
321  align::EulerAngles eulerAngles = align::toAngles(rot);
322  outputFile << "alpha=\"" << eulerAngles(1) << "\" beta=\"" << eulerAngles(2) << "\" gamma=\"" << eulerAngles(3)
323  << "\" />" << std::endl;
324  }
325 
326  else {
327  // the angle convention originally used in alignment, also known as "non-standard Euler angles with a Z-Y-X convention"
328  // this also gets the sign convention right
329  double phix = atan2(rot.yz(), rot.zz());
330  double phiy = asin(-rot.xz());
331  double phiz = atan2(rot.xy(), rot.xx());
332 
333  outputFile << "phix=\"" << phix << "\" phiy=\"" << phiy << "\" phiz=\"" << phiz << "\" />" << std::endl;
334  }
335 
336  if (m_survey) {
337  align::ErrorMatrix err = (*alignable)->survey()->errors();
338 
339  outputFile << " <setsurveyerr"
340  << " xx=\"" << err(0, 0) << "\" xy=\"" << err(0, 1) << "\" xz=\"" << err(0, 2) << "\" xa=\""
341  << err(0, 3) << "\" xb=\"" << err(0, 4) << "\" xc=\"" << err(0, 5) << "\" yy=\"" << err(1, 1)
342  << "\" yz=\"" << err(1, 2) << "\" ya=\"" << err(1, 3) << "\" yb=\"" << err(1, 4) << "\" yc=\""
343  << err(1, 5) << "\" zz=\"" << err(2, 2) << "\" za=\"" << err(2, 3) << "\" zb=\"" << err(2, 4)
344  << "\" zc=\"" << err(2, 5) << "\" aa=\"" << err(3, 3) << "\" ab=\"" << err(3, 4) << "\" ac=\""
345  << err(3, 5) << "\" bb=\"" << err(4, 4) << "\" bc=\"" << err(4, 5) << "\" cc=\"" << err(5, 5)
346  << "\" />" << std::endl;
347  }
348 
349  else if (rawId != 0) {
350  CLHEP::HepSymMatrix err = errors[(*alignable)->id()];
351 
352  outputFile << " <setape xx=\"" << err(1, 1) << "\" xy=\"" << err(1, 2) << "\" xz=\"" << err(1, 3) << "\" xa=\""
353  << err(1, 4) << "\" xb=\"" << err(1, 5) << "\" xc=\"" << err(1, 6) << "\" yy=\"" << err(2, 2)
354  << "\" yz=\"" << err(2, 3) << "\" ya=\"" << err(2, 4) << "\" yb=\"" << err(2, 5) << "\" yc=\""
355  << err(2, 6) << "\" zz=\"" << err(3, 3) << "\" za=\"" << err(3, 4) << "\" zb=\"" << err(3, 5)
356  << "\" zc=\"" << err(3, 6) << "\" aa=\"" << err(4, 4) << "\" ab=\"" << err(4, 5) << "\" ac=\""
357  << err(4, 6) << "\" bb=\"" << err(5, 5) << "\" bc=\"" << err(5, 6) << "\" cc=\"" << err(6, 6)
358  << "\" />" << std::endl;
359  }
360 
361  outputFile << "</operation>" << std::endl << std::endl;
362 
363  } // end if not suppressed
364 
365  // write superstructures before substructures: this is important because <setape> overwrites all substructures' APEs
366  if (ideal != ideals.end()) {
367  align::Alignables components = (*alignable)->components();
368  align::Alignables ideal_components = (*ideal)->components();
369  writeComponents(components, ideal_components, errors, outputFile, DT, objectIdProvider);
370  ++ideal; // important for synchronization in the "for" loop!
371  } else {
372  align::Alignables components = (*alignable)->components();
374  writeComponents(components, dummy, errors, outputFile, DT, objectIdProvider);
375  }
376 
377  } // end loop over alignables
378 }
379 
380 //
381 // const member functions
382 //
383 
384 //
385 // static member functions
386 //
AlignmentErrorsExtended.h
align::toAngles
EulerAngles toAngles(const RotationType &)
Convert rotation matrix to angles about x-, y-, z-axes (frame rotation).
Definition: Utilities.cc:8
TkRotation< Scalar >
AlignableObjectId
Allows conversion between type and name, and vice-versa.
Definition: AlignableObjectId.h:13
DTSuperLayerId
Definition: DTSuperLayerId.h:12
AlignableMuon::dtAlignmentErrorsExtended
AlignmentErrorsExtended * dtAlignmentErrorsExtended()
Get DT alignment errors sorted by DetId.
Definition: AlignableMuon.cc:561
alignBH_cfg.fixed
fixed
Definition: alignBH_cfg.py:54
electrons_cff.bool
bool
Definition: electrons_cff.py:366
ESTransientHandle.h
funct::false
false
Definition: Factorize.h:29
MuonAlignmentOutputXML::m_suppressCSCLayers
bool m_suppressCSCLayers
Definition: MuonAlignmentOutputXML.h:67
ESHandle.h
MuonAlignmentOutputXML::m_suppressDTChambers
bool m_suppressDTChambers
Definition: MuonAlignmentOutputXML.h:65
DTLayerId.h
MuonAlignmentOutputXML::idealGeometryLabel
std::string idealGeometryLabel
Definition: MuonAlignmentOutputXML.h:68
relativeConstraints.station
station
Definition: relativeConstraints.py:67
gather_cfg.cout
cout
Definition: gather_cfg.py:144
pos
Definition: PixelAliasList.h:18
MuonAlignmentOutputXML::MuonAlignmentOutputXML
MuonAlignmentOutputXML(const edm::ParameterSet &iConfig)
Definition: MuonAlignmentOutputXML.cc:42
align::PositionType
Point3DBase< Scalar, GlobalTag > PositionType
Definition: Definitions.h:28
MuonAlignmentOutputXML::m_eulerAngles
bool m_eulerAngles
Definition: MuonAlignmentOutputXML.h:63
cms::cuda::assert
assert(be >=bs)
align::ErrorMatrix
math::Error< 6 >::type ErrorMatrix
Definition: Definitions.h:37
MuonAlignmentOutputXML.h
align::AlignableCSCStation
Definition: StructureType.h:80
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
align::AlignableDTChamber
Definition: StructureType.h:76
MuonAlignmentOutputXML::m_rawIds
bool m_rawIds
Definition: MuonAlignmentOutputXML.h:63
CSCDetId.h
MuonAlignmentOutputXML::m_relativeto
int m_relativeto
Definition: MuonAlignmentOutputXML.h:62
MuonAlignmentOutputXML::m_suppressCSCEndcaps
bool m_suppressCSCEndcaps
Definition: MuonAlignmentOutputXML.h:67
download_sqlite_cfg.outputFile
outputFile
Definition: download_sqlite_cfg.py:5
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
align::AlignableDTSuperLayer
Definition: StructureType.h:77
align::AlignableCSCEndcap
Definition: StructureType.h:79
errors
Definition: errors.py:1
edm::ESHandle< DTGeometry >
MuonAlignmentOutputXML::~MuonAlignmentOutputXML
virtual ~MuonAlignmentOutputXML()
Definition: MuonAlignmentOutputXML.cc:78
MuonAlignmentOutputXML::m_survey
bool m_survey
Definition: MuonAlignmentOutputXML.h:63
Point3DBase< Scalar, GlobalTag >
AlignableMuon::DTBarrel
align::Alignables DTBarrel()
Definition: AlignableMuon.cc:396
DTChamberId.h
DTLayerId
Definition: DTLayerId.h:12
AlignableMuon::objectIdProvider
const AlignableObjectId & objectIdProvider() const
Return muon alignable object ID provider derived from the muon system geometry.
Definition: AlignableMuon.h:92
align::StructureType
StructureType
Definition: StructureType.h:16
DTGeometry.h
dqmiodumpindices.typeName
typeName
Definition: dqmiodumpindices.py:33
GeomDetEnumerators::DT
Definition: GeomDetEnumerators.h:18
align::AlignableDetUnit
Definition: StructureType.h:19
align::AlignableDTStation
Definition: StructureType.h:75
edm::ParameterSet
Definition: ParameterSet.h:47
MuonAlignmentOutputXML::m_suppressCSCChambers
bool m_suppressCSCChambers
Definition: MuonAlignmentOutputXML.h:67
CSCDetId
Definition: CSCDetId.h:26
AlignableMuon
Constructor of the full muon geometry.
Definition: AlignableMuon.h:38
MuonAlignmentOutputXML::writeComponents
void writeComponents(align::Alignables &alignables, align::Alignables &ideals, std::map< align::ID, CLHEP::HepSymMatrix > &errors, std::ofstream &outputFile, bool DT, const AlignableObjectId &) const
Definition: MuonAlignmentOutputXML.cc:146
createfilelist.int
int
Definition: createfilelist.py:10
align::AlignableCSCChamber
Definition: StructureType.h:82
edm::EventSetup
Definition: EventSetup.h:58
submitPVResolutionJobs.err
err
Definition: submitPVResolutionJobs.py:85
get
#define get
align::EulerAngles
AlgebraicVector EulerAngles
Definition: Definitions.h:34
AlignmentErrorsExtended
Definition: AlignmentErrorsExtended.h:10
MuonAlignmentOutputXML::m_suppressDTStations
bool m_suppressDTStations
Definition: MuonAlignmentOutputXML.h:65
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PV3DBase::basicVector
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
MuonAlignmentOutputXML::m_suppressDTBarrel
bool m_suppressDTBarrel
Definition: MuonAlignmentOutputXML.h:65
MuonAlignmentOutputXML::m_precision
int m_precision
Definition: MuonAlignmentOutputXML.h:64
align::AlignableDTBarrel
Definition: StructureType.h:73
AlignableObjectId.h
align::AlignableDTWheel
Definition: StructureType.h:74
align::Alignables
std::vector< Alignable * > Alignables
Definition: Utilities.h:31
AlignableMuon::CSCEndcaps
align::Alignables CSCEndcaps()
Definition: AlignableMuon.cc:439
std
Definition: JetResolutionObject.h:76
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
makeMuonMisalignmentScenario.components
string components
Definition: makeMuonMisalignmentScenario.py:58
MuonAlignmentOutputXML::m_suppressCSCStations
bool m_suppressCSCStations
Definition: MuonAlignmentOutputXML.h:67
Exception
Definition: hltDiff.cc:245
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
MuonAlignmentOutputXML::m_suppressDTWheels
bool m_suppressDTWheels
Definition: MuonAlignmentOutputXML.h:65
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TkRotation::transposed
TkRotation transposed() const
Definition: extTkRotation.h:161
gemGeometry_cff.gemGeometry
gemGeometry
Definition: gemGeometry_cff.py:5
AlignableObjectId::idToString
const char * idToString(align::StructureType type) const
Definition: AlignableObjectId.cc:273
AlignmentErrorsExtended::m_alignError
std::vector< AlignTransformErrorExtended > m_alignError
Definition: AlignmentErrorsExtended.h:19
MuonAlignmentOutputXML::m_suppressDTSuperLayers
bool m_suppressDTSuperLayers
Definition: MuonAlignmentOutputXML.h:65
DTChamberId
Definition: DTChamberId.h:14
dummy
Definition: DummySelector.h:38
SurveyDet.h
DTSuperLayerId.h
AlignableMuon::cscAlignmentErrorsExtended
AlignmentErrorsExtended * cscAlignmentErrorsExtended()
Get CSC alignment errors sorted by DetId.
Definition: AlignableMuon.cc:580
MuonGeometryRecord.h
align::AlignableCSCRing
Definition: StructureType.h:81
MuonAlignmentOutputXML::m_suppressCSCRings
bool m_suppressCSCRings
Definition: MuonAlignmentOutputXML.h:67
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
MuonAlignmentOutputXML::write
void write(AlignableMuon *alignableMuon, const edm::EventSetup &iSetup) const
Definition: MuonAlignmentOutputXML.cc:96
MuonAlignmentOutputXML::m_fileName
std::string m_fileName
Definition: MuonAlignmentOutputXML.h:61
CSCGeometry.h
MuonAlignmentOutputXML::m_suppressDTLayers
bool m_suppressDTLayers
Definition: MuonAlignmentOutputXML.h:65
debug_messages_cfi.errors
errors
Definition: debug_messages_cfi.py:54