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")),
107 fin.open( _detIdFlagFile.c_str() );
109 while (!fin.eof() && fin.good() ){
120 std::ifstream inFile;
121 inFile.open( _weightByIdFile.c_str() );
123 while ( !inFile.eof() ){
127 inFile.ignore(256,
'\n');
135 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
136 _alignTree =
new TTree(
"alignTree",
"alignTree");
137 _alignTree->Branch(
"id", &
_id,
"id/I");
138 _alignTree->Branch(
"badModuleQuality", &
_badModuleQuality,
"badModuleQuality/I");
139 _alignTree->Branch(
"inModuleList", &
_inModuleList,
"inModuleList/I");
140 _alignTree->Branch(
"level", &
_level,
"level/I");
141 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
142 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
143 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
144 _alignTree->Branch(
"x", &
_xVal,
"x/F");
145 _alignTree->Branch(
"y", &
_yVal,
"y/F");
146 _alignTree->Branch(
"z", &
_zVal,
"z/F");
147 _alignTree->Branch(
"r", &
_rVal,
"r/F");
148 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
149 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
150 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
151 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
152 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
153 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
154 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
155 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
156 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
157 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
158 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
159 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
160 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
161 _alignTree->Branch(
"du", &
_duVal,
"du/F");
162 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
163 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
164 _alignTree->Branch(
"da", &
_daVal,
"da/F");
165 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
166 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
167 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
168 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
169 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
170 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
171 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
172 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
173 _alignTree->Branch(
"type", &
_type,
"type/I");
174 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
176 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
185 for (
int ii = 0;
ii < 13; ++
ii) {
186 std::stringstream histname0 ;
187 histname0 <<
"SurfDeform_Par_" <<
ii ;
190 std::stringstream histname1 ;
191 histname1 <<
"SurfDeform_PixelBarrel_Par_" <<
ii ;
194 std::stringstream histname2 ;
195 histname2 <<
"SurfDeform_PixelEndcap_Par_" <<
ii ;
208 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
209 std::stringstream mapname ;
210 mapname <<
"TkMap_SurfDeform" << iname <<
".png" ;
211 it->save(
true,0,0,mapname.str());
214 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf" ;
215 it->save(
true,0,0,mapname.str());
243 <<
"structure type: " 269 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
282 int inputRawId1, inputRawId2;
283 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
284 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
301 edm::LogInfo(
"TrackerGeometryCompare") <<
"Error: Module list not found! Please verify that given list exists!";
310 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
311 _inputTree01->SetBranchAddress(
"x", &inputX1);
312 _inputTree01->SetBranchAddress(
"y", &inputY1);
313 _inputTree01->SetBranchAddress(
"z", &inputZ1);
314 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
315 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
316 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
318 int nEntries1 = _inputTree01->GetEntries();
320 for (
int i = 0;
i < nEntries1; ++
i){
322 _inputTree01->GetEntry(
i);
323 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
324 CLHEP::HepEulerAngles eulerangles1(inputAlpha1,inputBeta1,inputGamma1);
325 uint32_t detid1 = inputRawId1;
327 alignments1->
m_align.push_back(transform1);
330 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
332 alignmentErrors1->
m_alignError.push_back(transformError);
336 std::sort( alignments1->
m_align.begin(), alignments1->
m_align.end());
345 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
346 _inputTree02->SetBranchAddress(
"x", &inputX2);
347 _inputTree02->SetBranchAddress(
"y", &inputY2);
348 _inputTree02->SetBranchAddress(
"z", &inputZ2);
349 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
350 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
351 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
353 int nEntries2 = _inputTree02->GetEntries();
355 for (
int i = 0;
i < nEntries2; ++
i){
357 _inputTree02->GetEntry(
i);
358 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
359 CLHEP::HepEulerAngles eulerangles2(inputAlpha2,inputBeta2,inputGamma2);
360 uint32_t detid2 = inputRawId2;
362 alignments2->m_align.push_back(transform2);
365 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
367 alignmentErrors2->
m_alignError.push_back(transformError);
371 std::sort( alignments2->m_align.begin(), alignments2->m_align.end());
396 int inputDtype1, inputDtype2 ;
397 std::vector<double> inputDpar1;
398 std::vector<double> inputDpar2 ;
399 std::vector<double>* p_inputDpar1 = &inputDpar1;
400 std::vector<double>* p_inputDpar2 = &inputDpar2;
402 const auto& comp1 = referenceTracker->deepComponents();
407 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
408 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
409 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
411 unsigned int nEntries11 = _inputTree11->GetEntries();
412 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11;
413 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
414 _inputTree11->GetEntry(iEntry) ;
418 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
419 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
434 const auto& comp2 = currentTracker->deepComponents();
439 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
440 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
441 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
443 unsigned int nEntries12 = _inputTree12->GetEntries();
444 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12;
445 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
446 _inputTree12->GetEntry(iEntry) ;
450 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
451 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
458 delete alignmentErrors1;
460 delete alignmentErrors2;
470 int inputSubdetid1, inputSubdetid2 ;
471 int inputDtype1, inputDtype2 ;
472 std::vector<double> inputDpar1;
473 std::vector<double> inputDpar2 ;
474 std::vector<double>* p_inputDpar1 = &inputDpar1;
475 std::vector<double>* p_inputDpar2 = &inputDpar2;
478 refTree->SetBranchAddress(
"irawid", &inputRawid1);
479 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
480 refTree->SetBranchAddress(
"dtype", &inputDtype1);
481 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
484 curTree->SetBranchAddress(
"irawid", &inputRawid2);
485 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
486 curTree->SetBranchAddress(
"dtype", &inputDtype2);
487 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
489 unsigned int nEntries11 = refTree->GetEntries();
490 unsigned int nEntries12 = curTree->GetEntries();
492 if (nEntries11 != nEntries12) {
493 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n" ;
497 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
498 refTree->GetEntry(iEntry) ;
499 curTree->GetEntry(iEntry) ;
501 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar ) {
502 if (inputRawid1 == inputRawid2) {
503 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
504 std::stringstream histname0 ;
505 histname0 <<
"SurfDeform_Par_" << npar ;
507 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
508 std::stringstream histname1 ;
509 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
512 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
513 std::stringstream histname2 ;
514 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
527 std::vector<double> inputDpar2 ;
528 std::vector<double>* p_inputDpar2 = &inputDpar2;
531 curTree->SetBranchAddress(
"irawid", &inputRawid2);
532 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
533 curTree->SetBranchAddress(
"dtype", &inputDtype2);
534 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
536 unsigned int nEntries12 = curTree->GetEntries();
538 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
539 curTree->GetEntry(iEntry) ;
541 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar ) {
543 std::stringstream histname0 ;
544 histname0 <<
"SurfDeform_Par_" << npar ;
546 if (inputSubdetid2 == 1) {
547 std::stringstream histname1 ;
548 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
551 if (inputSubdetid2 == 2) {
552 std::stringstream histname2 ;
553 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
565 std::vector<double> inputDpar1;
566 std::vector<double>* p_inputDpar1 = &inputDpar1;
569 refTree->SetBranchAddress(
"irawid", &inputRawid1);
570 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
571 refTree->SetBranchAddress(
"dtype", &inputDtype1);
572 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
574 unsigned int nEntries11 = refTree->GetEntries();
576 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
577 refTree->GetEntry(iEntry) ;
579 for (
int npar = 0; npar <
int(inputDpar1.size()); ++npar ) {
581 std::stringstream histname0 ;
582 histname0 <<
"SurfDeform_Par_" << npar ;
584 if (inputSubdetid1 == 1) {
585 std::stringstream histname1 ;
586 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
589 if (inputSubdetid1 == 2) {
590 std::stringstream histname2 ;
591 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
600 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
609 using namespace align ;
614 unsigned int nComp = refComp.size();
616 bool useLevel =
false;
628 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
629 Rtotal.set(0.,0.,0.);
630 Wtotal.set(0.,0.,0.);
631 lRtotal.set(0.,0.,0.);
632 lWtotal.set(0.,0.,0.);
634 bool converged =
false;
638 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