5 #include "CLHEP/Vector/RotationInterfaces.h" 45 #include "CLHEP/Vector/ThreeVector.h" 67 _levelStrings(cfg.getUntrackedParameter<
std::vector<
std::
string> >(
"levels")),
68 _writeToDB(cfg.getUntrackedParameter<
bool>(
"writeToDB")),
69 _commonTrackerLevel(
align::invalid),
104 fin.open(_detIdFlagFile.c_str());
106 while (!fin.eof() && fin.good()) {
116 std::ifstream inFile;
117 inFile.open(_weightByIdFile.c_str());
119 while (!inFile.eof()) {
123 inFile.ignore(256,
'\n');
131 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
134 _alignTree->Branch(
"id", &
_id,
"id/I");
135 _alignTree->Branch(
"badModuleQuality", &
_badModuleQuality,
"badModuleQuality/I");
136 _alignTree->Branch(
"inModuleList", &
_inModuleList,
"inModuleList/I");
137 _alignTree->Branch(
"level", &
_level,
"level/I");
138 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
139 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
140 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
141 _alignTree->Branch(
"x", &
_xVal,
"x/F");
142 _alignTree->Branch(
"y", &
_yVal,
"y/F");
143 _alignTree->Branch(
"z", &
_zVal,
"z/F");
144 _alignTree->Branch(
"r", &
_rVal,
"r/F");
145 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
146 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
147 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
148 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
149 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
150 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
151 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
152 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
153 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
154 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
155 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
156 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
157 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
158 _alignTree->Branch(
"du", &
_duVal,
"du/F");
159 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
160 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
161 _alignTree->Branch(
"da", &
_daVal,
"da/F");
162 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
163 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
164 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
165 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
166 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
167 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
168 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
169 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
170 _alignTree->Branch(
"type", &
_type,
"type/I");
171 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
173 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
182 for (
int ii = 0;
ii < 13; ++
ii) {
183 std::stringstream histname0;
184 histname0 <<
"SurfDeform_Par_" <<
ii;
185 m_h1[histname0.str()] =
188 std::stringstream histname1;
189 histname1 <<
"SurfDeform_PixelBarrel_Par_" <<
ii;
190 m_h1[histname1.str()] =
193 std::stringstream histname2;
194 histname2 <<
"SurfDeform_PixelEndcap_Par_" <<
ii;
195 m_h1[histname2.str()] =
204 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
205 std::stringstream mapname;
206 mapname <<
"TkMap_SurfDeform" << iname <<
".png";
207 it->save(
true, 0, 0, mapname.str());
210 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf";
211 it->save(
true, 0, 0, mapname.str());
260 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
264 &(*myAlignmentErrorsExtended), poolDbService->
beginOfTime(),
"TrackerAlignmentErrorExtendedRcd");
272 int inputRawId1, inputRawId2;
273 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
274 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
290 edm::LogInfo(
"TrackerGeometryCompare") <<
"Error: Module list not found! Please verify that given list exists!";
299 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
300 _inputTree01->SetBranchAddress(
"x", &inputX1);
301 _inputTree01->SetBranchAddress(
"y", &inputY1);
302 _inputTree01->SetBranchAddress(
"z", &inputZ1);
303 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
304 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
305 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
307 int nEntries1 = _inputTree01->GetEntries();
309 for (
int i = 0;
i < nEntries1; ++
i) {
310 _inputTree01->GetEntry(
i);
311 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
312 CLHEP::HepEulerAngles eulerangles1(inputAlpha1, inputBeta1, inputGamma1);
313 uint32_t detid1 = inputRawId1;
315 alignments1->
m_align.push_back(transform1);
318 CLHEP::HepSymMatrix clhepSymMatrix(3, 0);
320 alignmentErrors1->
m_alignError.push_back(transformError);
324 std::sort(alignments1->
m_align.begin(), alignments1->
m_align.end());
333 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
334 _inputTree02->SetBranchAddress(
"x", &inputX2);
335 _inputTree02->SetBranchAddress(
"y", &inputY2);
336 _inputTree02->SetBranchAddress(
"z", &inputZ2);
337 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
338 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
339 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
341 int nEntries2 = _inputTree02->GetEntries();
343 for (
int i = 0;
i < nEntries2; ++
i) {
344 _inputTree02->GetEntry(
i);
345 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
346 CLHEP::HepEulerAngles eulerangles2(inputAlpha2, inputBeta2, inputGamma2);
347 uint32_t detid2 = inputRawId2;
349 alignments2->m_align.push_back(transform2);
352 CLHEP::HepSymMatrix clhepSymMatrix(3, 0);
354 alignmentErrors2->
m_alignError.push_back(transformError);
358 std::sort(alignments2->m_align.begin(), alignments2->m_align.end());
376 &(*theRefTracker), &(*alignments1), &(*alignmentErrors1),
AlignTransform());
383 int inputDtype1, inputDtype2;
384 std::vector<double> inputDpar1;
385 std::vector<double> inputDpar2;
386 std::vector<double>* p_inputDpar1 = &inputDpar1;
387 std::vector<double>* p_inputDpar2 = &inputDpar2;
389 const auto& comp1 = referenceTracker->deepComponents();
394 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
395 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
396 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
398 unsigned int nEntries11 = _inputTree11->GetEntries();
399 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11;
400 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
401 _inputTree11->GetEntry(iEntry);
405 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
406 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true);
416 &(*theCurTracker), &(*alignments2), &(*alignmentErrors2),
AlignTransform());
420 const auto& comp2 = currentTracker->deepComponents();
425 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
426 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
427 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
429 unsigned int nEntries12 = _inputTree12->GetEntries();
430 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12;
431 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
432 _inputTree12->GetEntry(iEntry);
436 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
437 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true);
443 delete alignmentErrors1;
445 delete alignmentErrors2;
452 int inputSubdetid1, inputSubdetid2;
453 int inputDtype1, inputDtype2;
454 std::vector<double> inputDpar1;
455 std::vector<double> inputDpar2;
456 std::vector<double>* p_inputDpar1 = &inputDpar1;
457 std::vector<double>* p_inputDpar2 = &inputDpar2;
460 refTree->SetBranchAddress(
"irawid", &inputRawid1);
461 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
462 refTree->SetBranchAddress(
"dtype", &inputDtype1);
463 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
466 curTree->SetBranchAddress(
"irawid", &inputRawid2);
467 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
468 curTree->SetBranchAddress(
"dtype", &inputDtype2);
469 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
471 unsigned int nEntries11 = refTree->GetEntries();
472 unsigned int nEntries12 = curTree->GetEntries();
474 if (nEntries11 != nEntries12) {
475 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n";
479 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
480 refTree->GetEntry(iEntry);
481 curTree->GetEntry(iEntry);
482 for (
int ii = 0;
ii < 13; ++
ii) {
485 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar) {
486 if (inputRawid1 == inputRawid2) {
487 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar);
488 std::stringstream histname0;
489 histname0 <<
"SurfDeform_Par_" << npar;
492 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
493 std::stringstream histname1;
494 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar;
498 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
499 std::stringstream histname2;
500 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar;
513 std::vector<double> inputDpar2;
514 std::vector<double>* p_inputDpar2 = &inputDpar2;
517 curTree->SetBranchAddress(
"irawid", &inputRawid2);
518 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
519 curTree->SetBranchAddress(
"dtype", &inputDtype2);
520 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
522 unsigned int nEntries12 = curTree->GetEntries();
524 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
525 curTree->GetEntry(iEntry);
526 for (
int ii = 0;
ii < 12; ++
ii) {
529 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar) {
531 std::stringstream histname0;
532 histname0 <<
"SurfDeform_Par_" << npar;
535 if (inputSubdetid2 == 1) {
536 std::stringstream histname1;
537 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar;
541 if (inputSubdetid2 == 2) {
542 std::stringstream histname2;
543 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar;
555 std::vector<double> inputDpar1;
556 std::vector<double>* p_inputDpar1 = &inputDpar1;
559 refTree->SetBranchAddress(
"irawid", &inputRawid1);
560 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
561 refTree->SetBranchAddress(
"dtype", &inputDtype1);
562 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
564 unsigned int nEntries11 = refTree->GetEntries();
566 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
567 refTree->GetEntry(iEntry);
568 for (
int ii = 0;
ii < 12; ++
ii) {
571 for (
int npar = 0; npar <
int(inputDpar1.size()); ++npar) {
573 std::stringstream histname0;
574 histname0 <<
"SurfDeform_Par_" << npar;
577 if (inputSubdetid1 == 1) {
578 std::stringstream histname1;
579 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar;
583 if (inputSubdetid1 == 2) {
584 std::stringstream histname2;
585 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar;
594 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n";
604 using namespace align;
609 unsigned int nComp = refComp.size();
611 bool useLevel =
false;
624 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
625 Rtotal.set(0., 0., 0.);
626 Wtotal.set(0., 0., 0.);
627 lRtotal.set(0., 0., 0.);
628 lWtotal.set(0., 0., 0.);
630 bool converged =
false;
634 for (
int i = 0;
i < 100;
i++) {
643 CLHEP::Hep3Vector
dR(-diff[0], -diff[1], -diff[2]);
644 CLHEP::Hep3Vector dW(diff[3], diff[4], diff[5]);
645 CLHEP::Hep3Vector dRLocal(-diff[6], -diff[7], -diff[8]);
646 CLHEP::Hep3Vector dWLocal(diff[9], diff[10], diff[11]);
653 CLHEP::HepRotation
rot(Wtotal.unit(), Wtotal.mag());
654 CLHEP::HepRotation drot(dW.unit(), dW.mag());
656 Wtotal.set(rot.axis().x() * rot.delta(), rot.axis().y() * rot.delta(), rot.axis().z() * rot.delta());
658 CLHEP::HepRotation rotLocal(lWtotal.unit(), lWtotal.mag());
659 CLHEP::HepRotation drotLocal(dWLocal.unit(), dWLocal.mag());
660 rotLocal *= drotLocal;
661 lWtotal.set(rotLocal.axis().x() * rotLocal.delta(),
662 rotLocal.axis().y() * rotLocal.delta(),
663 rotLocal.axis().z() * rotLocal.delta());
684 <<
", rawId: " << refAli->
geomDetId().
rawId() <<
", subdetId: " << detid.subdetId() <<
"): " << diff <<
check;
685 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
690 TRtot(1) = Rtotal.x();
691 TRtot(2) = Rtotal.y();
692 TRtot(3) = Rtotal.z();
693 TRtot(4) = Wtotal.x();
694 TRtot(5) = Wtotal.y();
695 TRtot(6) = Wtotal.z();
697 TRtot(7) = lRtotal.x();
698 TRtot(8) = lRtotal.y();
699 TRtot(9) = lRtotal.z();
700 TRtot(10) = lWtotal.x();
701 TRtot(11) = lWtotal.y();
702 TRtot(12) = lWtotal.z();
704 fillTree(refAli, TRtot, tTopo, iSetup);
708 for (
unsigned int i = 0;
i < nComp; ++
i)
713 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
728 edm::LogInfo(
"TrackerGeometryCompare") <<
"what we get from overlaying the pixels..." << theR <<
", " <<
rot;
744 TrackerCommonTR(1) = theRprime.x();
745 TrackerCommonTR(2) = theRprime.y();
746 TrackerCommonTR(3) = theRprime.z();
751 edm::LogInfo(
"TrackerGeometryCompare") <<
"and after the transformation: " << TrackerCommonTR;
760 unsigned int nComp = refComp.size();
762 bool useLevel =
false;
768 CLHEP::Hep3Vector Rtotal, Wtotal;
769 Rtotal.set(0., 0., 0.);
770 Wtotal.set(0., 0., 0.);
773 CLHEP::Hep3Vector
dR(diff[0], diff[1], diff[2]);
775 CLHEP::Hep3Vector dW(diff[3], diff[4], diff[5]);
776 CLHEP::HepRotation
rot(Wtotal.unit(), Wtotal.mag());
777 CLHEP::HepRotation drot(dW.unit(), dW.mag());
779 Wtotal.set(rot.axis().x() * rot.delta(), rot.axis().y() * rot.delta(), rot.axis().z() * rot.delta());
808 for (
unsigned int i = 0;
i < nComp; ++
i)
939 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
940 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
941 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
942 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
943 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
944 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
947 for (
const auto&
i : allGeomDets) {
948 if (
i->components().size() == 1) {
949 rcdAlis.push_back(
i);
950 }
else if (
i->components().size() > 1) {
951 rcdAlis.push_back(
i);
952 const auto&
comp =
i->components();
953 for (
const auto&
j :
comp)
954 rcdAlis.push_back(
j);
959 for (
const auto&
k : rcdAlis) {
963 CLHEP::Hep3Vector clhepVector(
pos.x(),
pos.y(),
pos.z());
964 CLHEP::HepRotation clhepRotation(
980 unsigned int nComp =
comp.size();
982 for (
unsigned int i = 0;
i < nComp; ++
i)
988 throw cms::Exception(
"DatabaseError") <<
"Error reading survey info from DB. Mismatched id!";
996 align::RotationType(rot.xx(), rot.xy(), rot.xz(), rot.yx(), rot.yy(), rot.yz(), rot.zx(), rot.zy(), rot.zz()));
1010 for (
int i = 0;
i < nEntries;
i++) {
1019 switch (subdetlevel) {
1075 edm::LogInfo(
"TrackerGeometryCompare") <<
"Error: bad subdetid!!";
align::Scalar width() const
align::StructureType stringToId(const char *) const
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
std::string _inputFilename2
T getUntrackedParameter(std::string const &, T const &) const
Alignables & pixelHalfBarrelGeomDets()
Return pixel barrel GeomDets.
align::GlobalVector _TrackerCommonR
unsigned int tibLayer(const DetId &id) const
unsigned int tidRing(const DetId &id) const
Vector3DBase< Scalar, GlobalTag > GlobalVector
void compareGeometries(Alignable *refAli, Alignable *curAli, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
Class to update a given geometry with a set of alignments.
std::string _inputTreenameDeform
std::vector< unsigned int > tidModuleInfo(const DetId &id) const
std::vector< align::StructureType > m_theLevels
unsigned int pxfDisk(const DetId &id) const
ErrorMatrix matrix() const
const Alignments * theSurveyValues
unsigned int tecRing(const DetId &id) const
ring id
void addSurveyInfo(Alignable *ali)
std::string _moduleListName
Geom::Phi< T > phi() const
unsigned int pxbLadder(const DetId &id) const
align::GlobalVector _TrackerCommonT
constexpr uint32_t rawId() const
get the raw id
AlgebraicVector diffAlignables(Alignable *refAli, Alignable *curAli, const std::string &weightBy, bool weightById, const std::vector< unsigned int > &weightByIdVector)
std::string _detIdFlagFile
void diffCommonTrackerSystem(Alignable *refAli, Alignable *curAli)
unsigned int tidWheel(const DetId &id) const
unsigned int pxbModule(const DetId &id) const
std::vector< TrackerMap > m_vtkmap
const RotationType & globalRotation() const
Return the global orientation of the object.
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
void setWidth(align::Scalar width)
virtual const Alignables & components() const =0
Return vector of all direct components.
uint8_t structureType() const
std::vector< unsigned int > tibStringInfo(const DetId &id) const
std::vector< AlignTransform > m_align
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
const align::RotationType & rotation() const
void setLength(align::Scalar length)
const align::PositionType & position() const
std::string _setCommonTrackerSystem
std::string _inputTreenameAlign
std::vector< unsigned int > tecPetalInfo(const DetId &id) const
#define DEFINE_FWK_MODULE(type)
unsigned int tidSide(const DetId &id) const
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
std::vector< unsigned int > tobRodInfo(const DetId &id) const
Alignables & innerBarrelGeomDets()
Return inner barrel GeomDets.
cond::Time_t beginOfTime() const
Alignables & TIDGeomDets()
Return TID GeomDets.
std::vector< uint32_t > _detIdFlagVector
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
std::vector< int > _moduleList
bool IsModuleBad(const uint32_t &detid) const
void beginJob() override
Read from DB and print survey info.
void analyze(const edm::Event &, const edm::EventSetup &) override
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
TrackerGeometryCompare(const edm::ParameterSet &)
Do nothing. Required by framework.
T * make(const Args &...args) const
make new ROOT object
EulerAngles toAngles(const RotationType &)
Convert rotation matrix to angles about x-, y-, z-axes (frame rotation).
align::StructureType _commonTrackerLevel
const AlignableObjectId & objectIdProvider() const
Return tracker alignable object ID provider derived from the tracker's geometry.
bool IsModuleBad(const uint32_t &detid) const
Alignables & endcapGeomDets()
Return endcap GeomDets.
align::PositionType _TrackerCommonCM
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
unsigned int tibModule(const DetId &id) const
Alignables & pixelEndcapGeomDets()
Return pixel endcap GeomDets.
unsigned int pxfModule(const DetId &id) const
void fillTree(Alignable *refAli, const AlgebraicVector &diff, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
unsigned int pxbLayer(const DetId &id) const
unsigned int tecModule(const DetId &id) const
std::string _inputFilename1
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
align::Scalar length() const
Alignables & outerBarrelGeomDets()
Return outer barrel GeomDets.
AlignableTracker * currentTracker
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
void surveyToTracker(AlignableTracker *ali, Alignments *alignVals, AlignmentErrorsExtended *alignErrors)
std::vector< AlignTransformErrorExtended > m_alignError
const std::vector< std::string > _levelStrings
void setSurvey(const SurveyDet *)
Set survey info.
void setCommonTrackerSystem()
std::vector< unsigned int > _weightByIdVector
void fillIdentifiers(int subdetlevel, int rawid, const TrackerTopology *tTopo)
unsigned int theSurveyIndex
std::vector< Alignable * > Alignables
unsigned int tobModule(const DetId &id) const
AlignableTracker * referenceTracker
Alignments * alignments() const override
Return alignments, sorted by DetId.
void createROOTGeometry(const edm::EventSetup &iSetup)
AlignmentErrorsExtended * alignmentErrors() const override
Return alignment errors, sorted by DetId.
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
unsigned int pxfSide(const DetId &id) const
const SurveyErrors * theSurveyErrors
const PositionType & globalPosition() const
Return the global position of the object.
std::vector< SurveyError > m_surveyErrors
unsigned int tecWheel(const DetId &id) const
void moveAlignable(Alignable *ali, AlgebraicVector diff)
Moves the alignable by the AlgebraicVector.
T const * product() const
Alignable * mother() const
Return pointer to container alignable (if any)
std::ifstream _moduleListFile
const DetId & geomDetId() const
unsigned int pxfPanel(const DetId &id) const
unsigned int pxfBlade(const DetId &id) const
std::map< std::string, TH1D * > m_h1
unsigned int tobLayer(const DetId &id) const
std::string _weightByIdFile
void compareSurfaceDeformations(TTree *_inputTree11, TTree *_inputTree12)
unsigned int tecSide(const DetId &id) const