CMS 3D CMS Logo

MuonAlignmentInputSurveyDB.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: MuonAlignment
4 // Class : MuonAlignmentInputSurveyDB
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author: Jim Pivarski
10 // Created: Thu Mar 6 17:30:46 CST 2008
11 // $Id: MuonAlignmentInputSurveyDB.cc,v 1.1 2008/03/15 20:26:46 pivarski Exp $
12 //
13 
14 // system include files
16 
17 // user include files
25 
26 //
27 // constants, enums and typedefs
28 //
29 
30 //
31 // static data member definitions
32 //
33 
34 //
35 // constructors and destructor
36 //
38  : m_dtLabel(""), m_cscLabel(""), idealGeometryLabel("idealForInputSurveyDB") {}
39 
42  std::string idealLabel)
43  : m_dtLabel(dtLabel), m_cscLabel(cscLabel), idealGeometryLabel(idealLabel) {}
44 
45 // MuonAlignmentInputSurveyDB::MuonAlignmentInputSurveyDB(const MuonAlignmentInputSurveyDB& rhs)
46 // {
47 // // do actual copying here;
48 // }
49 
51 
52 //
53 // assignment operators
54 //
55 // const MuonAlignmentInputSurveyDB& MuonAlignmentInputSurveyDB::operator=(const MuonAlignmentInputSurveyDB& rhs)
56 // {
57 // //An exception safe implementation is
58 // MuonAlignmentInputSurveyDB temp(rhs);
59 // swap(rhs);
60 //
61 // return *this;
62 // }
63 
64 //
65 // member functions
66 //
67 
69  edm::ESHandle<DTGeometry> dtGeometry;
70  edm::ESHandle<CSCGeometry> cscGeometry;
71  iSetup.get<MuonGeometryRecord>().get(idealGeometryLabel, dtGeometry);
72  iSetup.get<MuonGeometryRecord>().get(idealGeometryLabel, cscGeometry);
73 
75  edm::ESHandle<SurveyErrors> dtSurveyError;
76  edm::ESHandle<Alignments> cscSurvey;
77  edm::ESHandle<SurveyErrors> cscSurveyError;
78  iSetup.get<DTSurveyRcd>().get(m_dtLabel, dtSurvey);
79  iSetup.get<DTSurveyErrorExtendedRcd>().get(m_dtLabel, dtSurveyError);
80  iSetup.get<CSCSurveyRcd>().get(m_cscLabel, cscSurvey);
81  iSetup.get<CSCSurveyErrorExtendedRcd>().get(m_cscLabel, cscSurveyError);
82 
83  AlignableMuon* output = new AlignableMuon(&(*dtGeometry), &(*cscGeometry));
84 
85  unsigned int theSurveyIndex = 0;
86  const Alignments* theSurveyValues = &*dtSurvey;
87  const SurveyErrors* theSurveyErrors = &*dtSurveyError;
88  const auto& barrels = output->DTBarrel();
89  for (const auto& iter : barrels) {
90  addSurveyInfo_(iter, &theSurveyIndex, theSurveyValues, theSurveyErrors);
91  }
92 
93  theSurveyIndex = 0;
94  theSurveyValues = &*cscSurvey;
95  theSurveyErrors = &*cscSurveyError;
96  const auto& endcaps = output->CSCEndcaps();
97  for (const auto& iter : endcaps) {
98  addSurveyInfo_(iter, &theSurveyIndex, theSurveyValues, theSurveyErrors);
99  }
100 
101  return output;
102 }
103 
104 // This function was copied (with minimal modifications) from
105 // Alignment/CommonAlignmentProducer/plugins/AlignmentProducer.cc
106 // (version CMSSW_2_0_0_pre1), guaranteed to work the same way
107 // unless AlignmentProducer.cc's version changes!
109  unsigned int* theSurveyIndex,
110  const Alignments* theSurveyValues,
111  const SurveyErrors* theSurveyErrors) const {
112  const auto& comp = ali->components();
113 
114  unsigned int nComp = comp.size();
115 
116  for (unsigned int i = 0; i < nComp; ++i)
117  addSurveyInfo_(comp[i], theSurveyIndex, theSurveyValues, theSurveyErrors);
118 
119  const SurveyError& error = theSurveyErrors->m_surveyErrors[*theSurveyIndex];
120 
121  if (ali->geomDetId().rawId() != error.rawId() || ali->alignableObjectId() != error.structureType()) {
122  throw cms::Exception("DatabaseError") << "Error reading survey info from DB. Mismatched id!";
123  }
124 
125  const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[*theSurveyIndex].translation();
126  const CLHEP::HepRotation& rot = theSurveyValues->m_align[*theSurveyIndex].rotation();
127 
128  AlignableSurface surf(
129  align::PositionType(pos.x(), pos.y(), pos.z()),
130  align::RotationType(rot.xx(), rot.xy(), rot.xz(), rot.yx(), rot.yy(), rot.yz(), rot.zx(), rot.zy(), rot.zz()));
131 
132  surf.setWidth(ali->surface().width());
133  surf.setLength(ali->surface().length());
134 
135  ali->setSurvey(new SurveyDet(surf, error.matrix()));
136 
137  (*theSurveyIndex)++;
138 }
139 
140 //
141 // const member functions
142 //
143 
144 //
145 // static member functions
146 //
TkRotation< Scalar >
mps_fire.i
i
Definition: mps_fire.py:428
ESHandle.h
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
MuonAlignmentInputSurveyDB::m_dtLabel
std::string m_dtLabel
Definition: MuonAlignmentInputSurveyDB.h:57
Alignable
Definition: Alignable.h:27
pos
Definition: PixelAliasList.h:18
MuonAlignmentInputSurveyDB::newAlignableMuon
AlignableMuon * newAlignableMuon(const edm::EventSetup &iSetup) const override
Definition: MuonAlignmentInputSurveyDB.cc:68
CSCSurveyRcd
Definition: CSCSurveyRcd.h:15
CSCSurveyRcd.h
convertSQLitetoXML_cfg.cscLabel
cscLabel
Definition: convertSQLitetoXML_cfg.py:68
AlignableSurface::length
align::Scalar length() const
Definition: AlignableSurface.h:32
relativeConstraints.error
error
Definition: relativeConstraints.py:53
AlCaHLTBitMon_QueryRunRegistry.comp
comp
Definition: AlCaHLTBitMon_QueryRunRegistry.py:249
DTSurveyErrorExtendedRcd.h
SurveyErrors
Definition: SurveyErrors.h:19
CSCSurveyErrorExtendedRcd.h
SurveyDet
Definition: SurveyDet.h:15
align::AlignableMuon
Definition: StructureType.h:84
Alignable::setSurvey
void setSurvey(const SurveyDet *)
Set survey info.
Definition: Alignable.cc:266
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
convertSQLitetoXML_cfg.dtLabel
dtLabel
Definition: convertSQLitetoXML_cfg.py:67
Alignable::alignableObjectId
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
MuonAlignmentInputSurveyDB::MuonAlignmentInputSurveyDB
MuonAlignmentInputSurveyDB()
Definition: MuonAlignmentInputSurveyDB.cc:37
edm::ESHandle< DTGeometry >
Alignable::surface
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
Point3DBase< Scalar, GlobalTag >
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
MuonAlignmentInputSurveyDB.h
AlignableMuon
Constructor of the full muon geometry.
Definition: AlignableMuon.h:33
Alignable::geomDetId
const DetId & geomDetId() const
Definition: Alignable.h:177
edm::EventSetup
Definition: EventSetup.h:57
DTSurveyRcd
Definition: DTSurveyRcd.h:15
get
#define get
MuonAlignmentInputSurveyDB::addSurveyInfo_
void addSurveyInfo_(Alignable *ali, unsigned int *theSurveyIndex, const Alignments *theSurveyValues, const SurveyErrors *theSurveyErrors) const
Definition: MuonAlignmentInputSurveyDB.cc:108
AlignableSurface::setWidth
void setWidth(align::Scalar width)
Definition: AlignableSurface.h:34
MuonAlignmentInputSurveyDB::~MuonAlignmentInputSurveyDB
~MuonAlignmentInputSurveyDB() override
Definition: MuonAlignmentInputSurveyDB.cc:50
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
AlignableSurface
Definition: AlignableSurface.h:20
DTSurveyErrorExtendedRcd
Definition: DTSurveyErrorExtendedRcd.h:15
AlignableSurface::width
align::Scalar width() const
Definition: AlignableSurface.h:30
CSCSurveyErrorExtendedRcd
Definition: CSCSurveyErrorExtendedRcd.h:15
Exception
Definition: hltDiff.cc:246
AlignableSurface::setLength
void setLength(align::Scalar length)
Definition: AlignableSurface.h:36
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
MuonAlignmentInputSurveyDB::m_cscLabel
std::string m_cscLabel
Definition: MuonAlignmentInputSurveyDB.h:57
SurveyError
Definition: SurveyError.h:23
Alignments::m_align
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
SurveyDet.h
MuonGeometryRecord.h
MuonAlignmentInputSurveyDB::idealGeometryLabel
std::string idealGeometryLabel
Definition: MuonAlignmentInputSurveyDB.h:57
SurveyErrors::m_surveyErrors
std::vector< SurveyError > m_surveyErrors
Definition: SurveyErrors.h:22
Alignable::components
virtual const Alignables & components() const =0
Return vector of all direct components.
Alignments
Definition: Alignments.h:10
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
DTSurveyRcd.h