5 #include "CLHEP/Vector/RotationInterfaces.h"
39 #include "CLHEP/Vector/ThreeVector.h"
62 _commonTrackerLevel(align::
invalid),
87 const std::vector<std::string>& levels = cfg.
getUntrackedParameter< std::vector<std::string> > (
"levels");
98 edm::LogInfo(
"TrackerGeometryCompare") <<
"levels: " << levels.size();
99 for (
unsigned int l = 0;
l < levels.size(); ++
l){
102 edm::LogInfo(
"TrackerGeometryCompare") <<
"level: " << levels[
l];
111 fin.open( _detIdFlagFile.c_str() );
113 while (!fin.eof() && fin.good() ){
124 std::ifstream inFile;
125 inFile.open( _weightByIdFile.c_str() );
127 while ( !inFile.eof() ){
131 inFile.ignore(256,
'\n');
139 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
140 _alignTree =
new TTree(
"alignTree",
"alignTree");
141 _alignTree->Branch(
"id", &
_id,
"id/I");
142 _alignTree->Branch(
"level", &
_level,
"level/I");
143 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
144 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
145 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
146 _alignTree->Branch(
"x", &
_xVal,
"x/F");
147 _alignTree->Branch(
"y", &
_yVal,
"y/F");
148 _alignTree->Branch(
"z", &
_zVal,
"z/F");
149 _alignTree->Branch(
"r", &
_rVal,
"r/F");
150 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
151 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
152 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
153 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
154 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
155 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
156 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
157 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
158 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
159 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
160 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
161 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
162 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
163 _alignTree->Branch(
"du", &
_duVal,
"du/F");
164 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
165 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
166 _alignTree->Branch(
"da", &
_daVal,
"da/F");
167 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
168 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
169 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
170 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
171 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
172 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
173 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
174 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
175 _alignTree->Branch(
"type", &
_type,
"type/I");
176 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
178 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
187 for (
int ii = 0;
ii < 13; ++
ii) {
188 std::stringstream histname0 ;
189 histname0 <<
"SurfDeform_Par_" <<
ii ;
192 std::stringstream histname1 ;
193 histname1 <<
"SurfDeform_PixelBarrel_Par_" <<
ii ;
196 std::stringstream histname2 ;
197 histname2 <<
"SurfDeform_PixelEndcap_Par_" <<
ii ;
210 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
211 std::stringstream mapname ;
212 mapname <<
"TkMap_SurfDeform" << iname <<
".png" ;
213 it->save(
true,0,0,mapname.str());
216 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf" ;
217 it->save(
true,0,0,mapname.str());
260 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
273 int inputRawId1, inputRawId2;
274 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
275 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
288 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
289 _inputTree01->SetBranchAddress(
"x", &inputX1);
290 _inputTree01->SetBranchAddress(
"y", &inputY1);
291 _inputTree01->SetBranchAddress(
"z", &inputZ1);
292 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
293 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
294 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
296 int nEntries1 = _inputTree01->GetEntries();
298 for (
int i = 0;
i < nEntries1; ++
i){
300 _inputTree01->GetEntry(
i);
301 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
302 CLHEP::HepEulerAngles eulerangles1(inputAlpha1,inputBeta1,inputGamma1);
303 uint32_t detid1 = inputRawId1;
305 alignments1->
m_align.push_back(transform1);
308 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
310 alignmentErrors1->
m_alignError.push_back(transformError);
323 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
324 _inputTree02->SetBranchAddress(
"x", &inputX2);
325 _inputTree02->SetBranchAddress(
"y", &inputY2);
326 _inputTree02->SetBranchAddress(
"z", &inputZ2);
327 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
328 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
329 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
331 int nEntries2 = _inputTree02->GetEntries();
333 for (
int i = 0;
i < nEntries2; ++
i){
335 _inputTree02->GetEntry(
i);
336 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
337 CLHEP::HepEulerAngles eulerangles2(inputAlpha2,inputBeta2,inputGamma2);
338 uint32_t detid2 = inputRawId2;
340 alignments2->
m_align.push_back(transform2);
343 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
345 alignmentErrors2->
m_alignError.push_back(transformError);
375 int inputDtype1, inputDtype2 ;
376 std::vector<double> inputDpar1;
377 std::vector<double> inputDpar2 ;
378 std::vector<double>* p_inputDpar1 = &inputDpar1;
379 std::vector<double>* p_inputDpar2 = &inputDpar2;
386 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
387 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
388 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
390 unsigned int nEntries11 = _inputTree11->GetEntries();
391 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11 << std::endl ;
392 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
393 _inputTree11->GetEntry(iEntry) ;
397 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
398 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
418 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
419 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
420 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
422 unsigned int nEntries12 = _inputTree12->GetEntries();
423 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12 << std::endl ;
424 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
425 _inputTree12->GetEntry(iEntry) ;
429 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
430 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
437 delete alignmentErrors1;
439 delete alignmentErrors2;
449 int inputSubdetid1, inputSubdetid2 ;
450 int inputDtype1, inputDtype2 ;
451 std::vector<double> inputDpar1;
452 std::vector<double> inputDpar2 ;
453 std::vector<double>* p_inputDpar1 = &inputDpar1;
454 std::vector<double>* p_inputDpar2 = &inputDpar2;
457 refTree->SetBranchAddress(
"irawid", &inputRawid1);
458 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
459 refTree->SetBranchAddress(
"dtype", &inputDtype1);
460 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
463 curTree->SetBranchAddress(
"irawid", &inputRawid2);
464 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
465 curTree->SetBranchAddress(
"dtype", &inputDtype2);
466 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
468 unsigned int nEntries11 = refTree->GetEntries();
469 unsigned int nEntries12 = curTree->GetEntries();
471 if (nEntries11 != nEntries12) {
472 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n" ;
476 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
477 refTree->GetEntry(iEntry) ;
478 curTree->GetEntry(iEntry) ;
480 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
481 if (inputRawid1 == inputRawid2) {
482 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
483 std::stringstream histname0 ;
484 histname0 <<
"SurfDeform_Par_" << npar ;
486 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
487 std::stringstream histname1 ;
488 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
491 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
492 std::stringstream histname2 ;
493 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
506 std::vector<double> inputDpar2 ;
507 std::vector<double>* p_inputDpar2 = &inputDpar2;
510 curTree->SetBranchAddress(
"irawid", &inputRawid2);
511 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
512 curTree->SetBranchAddress(
"dtype", &inputDtype2);
513 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
515 unsigned int nEntries12 = curTree->GetEntries();
517 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
518 curTree->GetEntry(iEntry) ;
520 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
522 std::stringstream histname0 ;
523 histname0 <<
"SurfDeform_Par_" << npar ;
525 if (inputSubdetid2 == 1) {
526 std::stringstream histname1 ;
527 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
530 if (inputSubdetid2 == 2) {
531 std::stringstream histname2 ;
532 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
544 std::vector<double> inputDpar1;
545 std::vector<double>* p_inputDpar1 = &inputDpar1;
548 refTree->SetBranchAddress(
"irawid", &inputRawid1);
549 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
550 refTree->SetBranchAddress(
"dtype", &inputDtype1);
551 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
553 unsigned int nEntries11 = refTree->GetEntries();
555 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
556 refTree->GetEntry(iEntry) ;
558 for (
int npar = 0; npar < int(inputDpar1.size()); ++npar ) {
560 std::stringstream histname0 ;
561 histname0 <<
"SurfDeform_Par_" << npar ;
563 if (inputSubdetid1 == 1) {
564 std::stringstream histname1 ;
565 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
568 if (inputSubdetid1 == 2) {
569 std::stringstream histname2 ;
570 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
579 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
588 using namespace align ;
590 const std::vector<Alignable*>& refComp = refAli->
components();
591 const std::vector<Alignable*>& curComp = curAli->
components();
593 unsigned int nComp = refComp.size();
595 bool useLevel =
false;
607 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
608 Rtotal.set(0.,0.,0.);
609 Wtotal.set(0.,0.,0.);
610 lRtotal.set(0.,0.,0.);
611 lWtotal.set(0.,0.,0.);
613 for (
int i = 0;
i < 100;
i++){
615 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
617 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
618 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
619 CLHEP::HepRotation drot(dW.unit(),dW.mag());
621 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
623 lRtotal.set(diff[6],diff[7],diff[8]);
624 lWtotal.set(diff[9],diff[10],diff[11]);
627 float tolerance = 1
e-7;
631 if ((checkR.
mag() > tolerance)||(checkW.
mag() > tolerance)){
634 <<
", subdetId: "<<
detid.subdetId() <<
"): " <<
diff;
635 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
644 TRtot(1) = Rtotal.x(); TRtot(2) = Rtotal.y(); TRtot(3) = Rtotal.z();
645 TRtot(4) = Wtotal.x(); TRtot(5) = Wtotal.y(); TRtot(6) = Wtotal.z();
647 TRtot(7) = lRtotal.x(); TRtot(8) = lRtotal.y(); TRtot(9) = lRtotal.z();
648 TRtot(10) = lWtotal.x(); TRtot(11) = lWtotal.y(); TRtot(12) = lWtotal.z();
654 for (
unsigned int i = 0;
i < nComp; ++
i)
661 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
673 std::cout <<
"what we get from overlaying the pixels..." << theR <<
", " << rot << std::endl;
688 TrackerCommonTR(1) = theRprime.x(); TrackerCommonTR(2) = theRprime.y(); TrackerCommonTR(3) = theRprime.z();
691 std::cout <<
"and after the transformation: " << TrackerCommonTR << std::endl;
699 const std::vector<Alignable*>& refComp = refAli->
components();
700 const std::vector<Alignable*>& curComp = curAli->
components();
702 unsigned int nComp = refComp.size();
704 bool useLevel =
false;
709 CLHEP::Hep3Vector Rtotal, Wtotal;
710 Rtotal.set(0.,0.,0.); Wtotal.set(0.,0.,0.);
713 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
715 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
716 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
717 CLHEP::HepRotation drot(dW.unit(),dW.mag());
719 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
844 std::vector<Alignable*> detTID = ali->
TIDGeomDets();
848 std::vector<Alignable*> allGeomDets;
849 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
850 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
851 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
852 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
853 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
854 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
856 std::vector<Alignable*> rcdAlis;
857 for (std::vector<Alignable*>::iterator
i = allGeomDets.begin();
i!= allGeomDets.end();
i++){
858 if ((*i)->components().size() == 1){
859 rcdAlis.push_back((*
i));
861 else if ((*i)->components().size() > 1){
862 rcdAlis.push_back((*
i));
863 std::vector<Alignable*>
comp = (*i)->components();
864 for (std::vector<Alignable*>::iterator
j = comp.begin();
j != comp.end();
j++){
865 rcdAlis.push_back((*
j));
871 for(std::vector<Alignable*>::iterator
k = rcdAlis.begin();
k != rcdAlis.end();
k++){
873 const SurveyDet* surveyInfo = (*k)->survey();
876 CLHEP::Hep3Vector clhepVector(pos.x(),pos.y(),pos.z());
877 CLHEP::HepRotation clhepRotation( CLHEP::HepRep3x3(
rot.xx(),
rot.xy(),
rot.xz(),
rot.yx(),
rot.yy(),
rot.yz(),
rot.zx(),
rot.zy(),
rot.zz()));
894 unsigned int nComp = comp.size();
904 <<
"Error reading survey info from DB. Mismatched id!";
912 rot.yx(), rot.yy(), rot.yz(),
913 rot.zx(), rot.zy(), rot.zz() ) );
929 for (
int i = 0;
i < nEntries;
i++){
940 switch( subdetlevel ){
1010 std::cout <<
"Error: bad subdetid!!" << std::endl;
align::Scalar width() 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.
void compareGeometries(Alignable *refAli, Alignable *curAli, const TrackerTopology *tTopo)
edm::ParameterSet m_params
align::GlobalVector _TrackerCommonR
unsigned int tibLayer(const DetId &id) const
unsigned int tidRing(const DetId &id) const
Vector3DBase< Scalar, GlobalTag > GlobalVector
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
TrackerGeometry * build(const GeometricDet *gd, const edm::ParameterSet &pSet)
unsigned int tecRing(const DetId &id) const
ring id
void addSurveyInfo(Alignable *ali)
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.
void setWidth(align::Scalar width)
uint8_t structureType() const
std::vector< unsigned int > tibStringInfo(const DetId &id) const
virtual Alignables components() const =0
Return vector of all direct components.
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
static align::StructureType stringToId(const char *)
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.
bool check(const std::string &)
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
void get(HolderT &iHolder) const
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
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) ...
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
unsigned int pxbLayer(const DetId &id) const
unsigned int tecModule(const DetId &id) const
void fillTree(Alignable *refAli, const AlgebraicVector &diff, const TrackerTopology *tTopo)
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
const Alignables & deepComponents() const
void surveyToTracker(AlignableTracker *ali, Alignments *alignVals, AlignmentErrorsExtended *alignErrors)
std::vector< AlignTransformErrorExtended > m_alignError
void setSurvey(const SurveyDet *)
Set survey info.
void setCommonTrackerSystem()
T const * product() const
void fillIdentifiers(int subdetlevel, int rawid, const TrackerTopology *tTopo)
unsigned int theSurveyIndex
unsigned int tobModule(const DetId &id) const
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< 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.
Alignable * mother() const
Return pointer to container alignable (if any)
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