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 std::cout <<
"Error: Module list not found! Please verify that given list exists!" << std::endl;
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);
400 int inputDtype1, inputDtype2 ;
401 std::vector<double> inputDpar1;
402 std::vector<double> inputDpar2 ;
403 std::vector<double>* p_inputDpar1 = &inputDpar1;
404 std::vector<double>* p_inputDpar2 = &inputDpar2;
406 const std::vector<Alignable*> comp1 = referenceTracker->deepComponents();
411 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
412 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
413 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
415 unsigned int nEntries11 = _inputTree11->GetEntries();
416 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11 << std::endl ;
417 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
418 _inputTree11->GetEntry(iEntry) ;
422 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
423 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
438 const std::vector<Alignable*> comp2 = currentTracker->deepComponents();
443 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
444 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
445 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
447 unsigned int nEntries12 = _inputTree12->GetEntries();
448 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12 << std::endl ;
449 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
450 _inputTree12->GetEntry(iEntry) ;
454 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
455 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
462 delete alignmentErrors1;
464 delete alignmentErrors2;
474 int inputSubdetid1, inputSubdetid2 ;
475 int inputDtype1, inputDtype2 ;
476 std::vector<double> inputDpar1;
477 std::vector<double> inputDpar2 ;
478 std::vector<double>* p_inputDpar1 = &inputDpar1;
479 std::vector<double>* p_inputDpar2 = &inputDpar2;
482 refTree->SetBranchAddress(
"irawid", &inputRawid1);
483 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
484 refTree->SetBranchAddress(
"dtype", &inputDtype1);
485 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
488 curTree->SetBranchAddress(
"irawid", &inputRawid2);
489 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
490 curTree->SetBranchAddress(
"dtype", &inputDtype2);
491 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
493 unsigned int nEntries11 = refTree->GetEntries();
494 unsigned int nEntries12 = curTree->GetEntries();
496 if (nEntries11 != nEntries12) {
497 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n" ;
501 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
502 refTree->GetEntry(iEntry) ;
503 curTree->GetEntry(iEntry) ;
505 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar ) {
506 if (inputRawid1 == inputRawid2) {
507 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
508 std::stringstream histname0 ;
509 histname0 <<
"SurfDeform_Par_" << npar ;
511 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
512 std::stringstream histname1 ;
513 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
516 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
517 std::stringstream histname2 ;
518 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
531 std::vector<double> inputDpar2 ;
532 std::vector<double>* p_inputDpar2 = &inputDpar2;
535 curTree->SetBranchAddress(
"irawid", &inputRawid2);
536 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
537 curTree->SetBranchAddress(
"dtype", &inputDtype2);
538 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
540 unsigned int nEntries12 = curTree->GetEntries();
542 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
543 curTree->GetEntry(iEntry) ;
545 for (
int npar = 0; npar <
int(inputDpar2.size()); ++npar ) {
547 std::stringstream histname0 ;
548 histname0 <<
"SurfDeform_Par_" << npar ;
550 if (inputSubdetid2 == 1) {
551 std::stringstream histname1 ;
552 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
555 if (inputSubdetid2 == 2) {
556 std::stringstream histname2 ;
557 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
569 std::vector<double> inputDpar1;
570 std::vector<double>* p_inputDpar1 = &inputDpar1;
573 refTree->SetBranchAddress(
"irawid", &inputRawid1);
574 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
575 refTree->SetBranchAddress(
"dtype", &inputDtype1);
576 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
578 unsigned int nEntries11 = refTree->GetEntries();
580 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
581 refTree->GetEntry(iEntry) ;
583 for (
int npar = 0; npar <
int(inputDpar1.size()); ++npar ) {
585 std::stringstream histname0 ;
586 histname0 <<
"SurfDeform_Par_" << npar ;
588 if (inputSubdetid1 == 1) {
589 std::stringstream histname1 ;
590 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
593 if (inputSubdetid1 == 2) {
594 std::stringstream histname2 ;
595 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
604 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
613 using namespace align ;
615 const std::vector<Alignable*>& refComp = refAli->
components();
616 const std::vector<Alignable*>& curComp = curAli->
components();
618 unsigned int nComp = refComp.size();
620 bool useLevel =
false;
632 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
633 Rtotal.set(0.,0.,0.);
634 Wtotal.set(0.,0.,0.);
635 lRtotal.set(0.,0.,0.);
636 lWtotal.set(0.,0.,0.);
638 for (
int i = 0;
i < 100;
i++){
640 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
642 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
643 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
644 CLHEP::HepRotation drot(dW.unit(),dW.mag());
646 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
648 lRtotal.set(diff[6],diff[7],diff[8]);
649 lWtotal.set(diff[9],diff[10],diff[11]);
659 <<
", subdetId: "<< detid.subdetId() <<
"): " <<
diff;
660 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
669 TRtot(1) = Rtotal.x(); TRtot(2) = Rtotal.y(); TRtot(3) = Rtotal.z();
670 TRtot(4) = Wtotal.x(); TRtot(5) = Wtotal.y(); TRtot(6) = Wtotal.z();
672 TRtot(7) = lRtotal.x(); TRtot(8) = lRtotal.y(); TRtot(9) = lRtotal.z();
673 TRtot(10) = lWtotal.x(); TRtot(11) = lWtotal.y(); TRtot(12) = lWtotal.z();
675 fillTree(refAli, TRtot, tTopo, iSetup);
679 for (
unsigned int i = 0;
i < nComp; ++
i)
686 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
698 std::cout <<
"what we get from overlaying the pixels..." << theR <<
", " << rot << std::endl;
713 TrackerCommonTR(1) = theRprime.x(); TrackerCommonTR(2) = theRprime.y(); TrackerCommonTR(3) = theRprime.z();
716 std::cout <<
"and after the transformation: " << TrackerCommonTR << std::endl;
724 const std::vector<Alignable*>& refComp = refAli->
components();
725 const std::vector<Alignable*>& curComp = curAli->
components();
727 unsigned int nComp = refComp.size();
729 bool useLevel =
false;
734 CLHEP::Hep3Vector Rtotal, Wtotal;
735 Rtotal.set(0.,0.,0.); Wtotal.set(0.,0.,0.);
738 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
740 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
741 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
742 CLHEP::HepRotation drot(dW.unit(),dW.mag());
744 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
896 std::vector<Alignable*> detTID = ali->
TIDGeomDets();
900 std::vector<Alignable*> allGeomDets;
901 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
902 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
903 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
904 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
905 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
906 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
908 std::vector<Alignable*> rcdAlis;
909 for (std::vector<Alignable*>::iterator
i = allGeomDets.begin();
i!= allGeomDets.end();
i++){
910 if ((*i)->components().size() == 1){
911 rcdAlis.push_back((*
i));
913 else if ((*i)->components().size() > 1){
914 rcdAlis.push_back((*
i));
915 std::vector<Alignable*>
comp = (*i)->components();
916 for (std::vector<Alignable*>::iterator
j = comp.begin();
j != comp.end();
j++){
917 rcdAlis.push_back((*
j));
923 for(std::vector<Alignable*>::iterator
k = rcdAlis.begin();
k != rcdAlis.end();
k++){
925 const SurveyDet* surveyInfo = (*k)->survey();
928 CLHEP::Hep3Vector clhepVector(
pos.x(),
pos.y(),
pos.z());
929 CLHEP::HepRotation clhepRotation( CLHEP::HepRep3x3(
rot.xx(),
rot.xy(),
rot.xz(),
rot.yx(),
rot.yy(),
rot.yz(),
rot.zx(),
rot.zy(),
rot.zz()));
946 unsigned int nComp = comp.size();
956 <<
"Error reading survey info from DB. Mismatched id!";
964 rot.yx(), rot.yy(), rot.yz(),
965 rot.zx(), rot.zy(), rot.zz() ) );
981 for (
int i = 0;
i < nEntries;
i++){
992 switch( subdetlevel ){
1062 std::cout <<
"Error: bad subdetid!!" << std::endl;
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)
AlignmentErrorsExtended * alignmentErrors() const
Return alignment errors, sorted by DetId.
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
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)
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
uint32_t rawId() const
get the raw id
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 void beginJob()
Read from DB and print survey info.
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.
virtual Alignables components() const =0
Return vector of all direct components.
cond::Time_t beginOfTime() const
Alignables & TIDGeomDets()
Return TID GeomDets.
std::vector< uint32_t > _detIdFlagVector
void get(HolderT &iHolder) const
bool IsModuleBad(const uint32_t &detid) const
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
TrackerGeometryCompare(const edm::ParameterSet &)
Do nothing. Required by framework.
virtual void analyze(const edm::Event &, const edm::EventSetup &)
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
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
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
unsigned int tobModule(const DetId &id) const
return(e1-e2)*(e1-e2)+dp *dp
AlignableTracker * referenceTracker
void createROOTGeometry(const edm::EventSetup &iSetup)
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
unsigned int pxfSide(const DetId &id) const
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
const SurveyErrors * theSurveyErrors
std::vector< unsigned int > _weightByIdVector
const PositionType & globalPosition() const
Return the global position of the object.
Alignments * alignments() const
Return alignments, sorted by DetId.
std::vector< int > _moduleList
std::vector< SurveyError > m_surveyErrors
Basic3DVector< T > multiplyInverse(const Basic3DVector< T > &v) const
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