5 #include "CLHEP/Vector/RotationInterfaces.h" 46 #include "CLHEP/Vector/ThreeVector.h" 68 _levelStrings(cfg.getUntrackedParameter<
std::vector<
std::
string> >(
"levels")),
69 _writeToDB(cfg.getUntrackedParameter<
bool>(
"writeToDB")),
108 fin.open( _detIdFlagFile.c_str() );
110 while (!fin.eof() && fin.good() ){
121 std::ifstream inFile;
122 inFile.open( _weightByIdFile.c_str() );
124 while ( !inFile.eof() ){
128 inFile.ignore(256,
'\n');
136 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
137 _alignTree =
new TTree(
"alignTree",
"alignTree");
138 _alignTree->Branch(
"id", &
_id,
"id/I");
139 _alignTree->Branch(
"badModuleQuality", &
_badModuleQuality,
"badModuleQuality/I");
140 _alignTree->Branch(
"inModuleList", &
_inModuleList,
"inModuleList/I");
141 _alignTree->Branch(
"level", &
_level,
"level/I");
142 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
143 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
144 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
145 _alignTree->Branch(
"x", &
_xVal,
"x/F");
146 _alignTree->Branch(
"y", &
_yVal,
"y/F");
147 _alignTree->Branch(
"z", &
_zVal,
"z/F");
148 _alignTree->Branch(
"r", &
_rVal,
"r/F");
149 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
150 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
151 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
152 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
153 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
154 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
155 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
156 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
157 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
158 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
159 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
160 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
161 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
162 _alignTree->Branch(
"du", &
_duVal,
"du/F");
163 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
164 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
165 _alignTree->Branch(
"da", &
_daVal,
"da/F");
166 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
167 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
168 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
169 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
170 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
171 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
172 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
173 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
174 _alignTree->Branch(
"type", &
_type,
"type/I");
175 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
177 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
186 for (
int ii = 0;
ii < 13; ++
ii) {
187 std::stringstream histname0 ;
188 histname0 <<
"SurfDeform_Par_" <<
ii ;
191 std::stringstream histname1 ;
192 histname1 <<
"SurfDeform_PixelBarrel_Par_" <<
ii ;
195 std::stringstream histname2 ;
196 histname2 <<
"SurfDeform_PixelEndcap_Par_" <<
ii ;
209 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
210 std::stringstream mapname ;
211 mapname <<
"TkMap_SurfDeform" << iname <<
".png" ;
212 it->save(
true,0,0,mapname.str());
215 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf" ;
216 it->save(
true,0,0,mapname.str());
244 <<
"structure type: " 270 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
283 int inputRawId1, inputRawId2;
284 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
285 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
302 edm::LogInfo(
"TrackerGeometryCompare") <<
"Error: Module list not found! Please verify that given list exists!";
311 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
312 _inputTree01->SetBranchAddress(
"x", &inputX1);
313 _inputTree01->SetBranchAddress(
"y", &inputY1);
314 _inputTree01->SetBranchAddress(
"z", &inputZ1);
315 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
316 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
317 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
319 int nEntries1 = _inputTree01->GetEntries();
321 for (
int i = 0;
i < nEntries1; ++
i){
323 _inputTree01->GetEntry(
i);
324 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
325 CLHEP::HepEulerAngles eulerangles1(inputAlpha1,inputBeta1,inputGamma1);
326 uint32_t detid1 = inputRawId1;
328 alignments1->
m_align.push_back(transform1);
331 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
333 alignmentErrors1->
m_alignError.push_back(transformError);
346 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
347 _inputTree02->SetBranchAddress(
"x", &inputX2);
348 _inputTree02->SetBranchAddress(
"y", &inputY2);
349 _inputTree02->SetBranchAddress(
"z", &inputZ2);
350 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
351 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
352 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
354 int nEntries2 = _inputTree02->GetEntries();
356 for (
int i = 0;
i < nEntries2; ++
i){
358 _inputTree02->GetEntry(
i);
359 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
360 CLHEP::HepEulerAngles eulerangles2(inputAlpha2,inputBeta2,inputGamma2);
361 uint32_t detid2 = inputRawId2;
363 alignments2->
m_align.push_back(transform2);
366 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
368 alignmentErrors2->
m_alignError.push_back(transformError);
397 int inputDtype1, inputDtype2 ;
398 std::vector<double> inputDpar1;
399 std::vector<double> inputDpar2 ;
400 std::vector<double>* p_inputDpar1 = &inputDpar1;
401 std::vector<double>* p_inputDpar2 = &inputDpar2;
403 const auto& comp1 = referenceTracker->deepComponents();
408 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
409 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
410 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
412 unsigned int nEntries11 = _inputTree11->GetEntries();
413 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11;
414 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
415 _inputTree11->GetEntry(iEntry) ;
419 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
420 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
435 const auto& comp2 = currentTracker->deepComponents();
440 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
441 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
442 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
444 unsigned int nEntries12 = _inputTree12->GetEntries();
445 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12;
446 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
447 _inputTree12->GetEntry(iEntry) ;
451 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
452 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
459 delete alignmentErrors1;
461 delete alignmentErrors2;
471 int inputSubdetid1, inputSubdetid2 ;
472 int inputDtype1, inputDtype2 ;
473 std::vector<double> inputDpar1;
474 std::vector<double> inputDpar2 ;
475 std::vector<double>* p_inputDpar1 = &inputDpar1;
476 std::vector<double>* p_inputDpar2 = &inputDpar2;
479 refTree->SetBranchAddress(
"irawid", &inputRawid1);
480 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
481 refTree->SetBranchAddress(
"dtype", &inputDtype1);
482 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
485 curTree->SetBranchAddress(
"irawid", &inputRawid2);
486 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
487 curTree->SetBranchAddress(
"dtype", &inputDtype2);
488 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
490 unsigned int nEntries11 = refTree->GetEntries();
491 unsigned int nEntries12 = curTree->GetEntries();
493 if (nEntries11 != nEntries12) {
494 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n" ;
498 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
499 refTree->GetEntry(iEntry) ;
500 curTree->GetEntry(iEntry) ;
502 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar ) {
503 if (inputRawid1 == inputRawid2) {
504 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
505 std::stringstream histname0 ;
506 histname0 <<
"SurfDeform_Par_" << npar ;
508 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
509 std::stringstream histname1 ;
510 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
513 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
514 std::stringstream histname2 ;
515 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
528 std::vector<double> inputDpar2 ;
529 std::vector<double>* p_inputDpar2 = &inputDpar2;
532 curTree->SetBranchAddress(
"irawid", &inputRawid2);
533 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
534 curTree->SetBranchAddress(
"dtype", &inputDtype2);
535 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
537 unsigned int nEntries12 = curTree->GetEntries();
539 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
540 curTree->GetEntry(iEntry) ;
542 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar ) {
544 std::stringstream histname0 ;
545 histname0 <<
"SurfDeform_Par_" << npar ;
547 if (inputSubdetid2 == 1) {
548 std::stringstream histname1 ;
549 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
552 if (inputSubdetid2 == 2) {
553 std::stringstream histname2 ;
554 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
566 std::vector<double> inputDpar1;
567 std::vector<double>* p_inputDpar1 = &inputDpar1;
570 refTree->SetBranchAddress(
"irawid", &inputRawid1);
571 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
572 refTree->SetBranchAddress(
"dtype", &inputDtype1);
573 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
575 unsigned int nEntries11 = refTree->GetEntries();
577 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
578 refTree->GetEntry(iEntry) ;
580 for (
int npar = 0; npar <
int(inputDpar1.size()); ++npar ) {
582 std::stringstream histname0 ;
583 histname0 <<
"SurfDeform_Par_" << npar ;
585 if (inputSubdetid1 == 1) {
586 std::stringstream histname1 ;
587 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
590 if (inputSubdetid1 == 2) {
591 std::stringstream histname2 ;
592 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
601 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
610 using namespace align ;
615 unsigned int nComp = refComp.size();
617 bool useLevel =
false;
629 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
630 Rtotal.set(0.,0.,0.);
631 Wtotal.set(0.,0.,0.);
632 lRtotal.set(0.,0.,0.);
633 lWtotal.set(0.,0.,0.);
635 bool converged =
false;
639 for (
int i = 0;
i < 100;
i++){
648 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
649 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
650 CLHEP::Hep3Vector dRLocal(diff[6],diff[7],diff[8]);
651 CLHEP::Hep3Vector dWLocal(diff[9],diff[10],diff[11]);
658 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
659 CLHEP::HepRotation drot(dW.unit(),dW.mag());
661 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
663 CLHEP::HepRotation rotLocal(lWtotal.unit(),lWtotal.mag());
664 CLHEP::HepRotation drotLocal(dWLocal.unit(),dWLocal.mag());
666 lWtotal.set(rotLocal.axis().x()*rotLocal.delta(), rotLocal.axis().y()*rotLocal.delta(), rotLocal.axis().z()*rotLocal.delta());
688 <<
", subdetId: "<< detid.subdetId() <<
"): " << diff <<
check;
689 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
694 TRtot(1) = Rtotal.x(); TRtot(2) = Rtotal.y(); TRtot(3) = Rtotal.z();
695 TRtot(4) = Wtotal.x(); TRtot(5) = Wtotal.y(); TRtot(6) = Wtotal.z();
697 TRtot(7) = lRtotal.x(); TRtot(8) = lRtotal.y(); TRtot(9) = lRtotal.z();
698 TRtot(10) = lWtotal.x(); TRtot(11) = lWtotal.y(); TRtot(12) = lWtotal.z();
700 fillTree(refAli, TRtot, tTopo, iSetup);
704 for (
unsigned int i = 0;
i < nComp; ++
i)
711 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
723 edm::LogInfo(
"TrackerGeometryCompare") <<
"what we get from overlaying the pixels..." << theR <<
", " <<
rot;
738 TrackerCommonTR(1) = theRprime.x(); TrackerCommonTR(2) = theRprime.y(); TrackerCommonTR(3) = theRprime.z();
741 edm::LogInfo(
"TrackerGeometryCompare") <<
"and after the transformation: " << TrackerCommonTR;
752 unsigned int nComp = refComp.size();
754 bool useLevel =
false;
759 CLHEP::Hep3Vector Rtotal, Wtotal;
760 Rtotal.set(0.,0.,0.); Wtotal.set(0.,0.,0.);
763 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
765 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
766 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
767 CLHEP::HepRotation drot(dW.unit(),dW.mag());
769 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
926 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
927 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
928 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
929 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
930 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
931 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
934 for (
const auto&
i: allGeomDets){
935 if (
i->components().size() == 1){
936 rcdAlis.push_back(
i);
938 else if (
i->components().size() > 1){
939 rcdAlis.push_back(
i);
940 const auto&
comp =
i->components();
941 for (
const auto& j:
comp) rcdAlis.push_back(j);
946 for(
const auto&
k: rcdAlis) {
950 CLHEP::Hep3Vector clhepVector(
pos.x(),
pos.y(),
pos.z());
951 CLHEP::HepRotation clhepRotation( CLHEP::HepRep3x3(
rot.xx(),
rot.xy(),
rot.xz(),
rot.yx(),
rot.yy(),
rot.yz(),
rot.zx(),
rot.zy(),
rot.zz()));
968 unsigned int nComp =
comp.size();
978 <<
"Error reading survey info from DB. Mismatched id!";
986 rot.yx(), rot.yy(), rot.yz(),
987 rot.zx(), rot.zy(), rot.zz() ) );
1003 for (
int i = 0;
i < nEntries;
i++){
1014 switch( subdetlevel ){
1084 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
#define DEFINE_FWK_MODULE(type)
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::map< std::string, TH1D * > m_h1
std::string _inputTreenameAlign
std::vector< unsigned int > tecPetalInfo(const DetId &id) const
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) ...
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()
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
std::vector< unsigned int > _weightByIdVector
const PositionType & globalPosition() const
Return the global position of the object.
std::vector< int > _moduleList
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
unsigned int tobLayer(const DetId &id) const
std::string _weightByIdFile
void compareSurfaceDeformations(TTree *_inputTree11, TTree *_inputTree12)
unsigned int tecSide(const DetId &id) const