5 #include "CLHEP/Vector/RotationInterfaces.h"
41 #include "CLHEP/Vector/ThreeVector.h"
63 _commonTrackerLevel(align::
invalid),
88 const std::vector<std::string>& levels = cfg.
getUntrackedParameter< std::vector<std::string> > (
"levels");
99 edm::LogInfo(
"TrackerGeometryCompare") <<
"levels: " << levels.size();
100 for (
unsigned int l = 0;
l < levels.size(); ++
l){
103 edm::LogInfo(
"TrackerGeometryCompare") <<
"level: " << levels[
l];
112 fin.open( _detIdFlagFile.c_str() );
114 while (!fin.eof() && fin.good() ){
125 std::ifstream inFile;
126 inFile.open( _weightByIdFile.c_str() );
128 while ( !inFile.eof() ){
132 inFile.ignore(256,
'\n');
140 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
141 _alignTree =
new TTree(
"alignTree",
"alignTree");
142 _alignTree->Branch(
"id", &
_id,
"id/I");
143 _alignTree->Branch(
"level", &
_level,
"level/I");
144 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
145 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
146 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
147 _alignTree->Branch(
"x", &
_xVal,
"x/F");
148 _alignTree->Branch(
"y", &
_yVal,
"y/F");
149 _alignTree->Branch(
"z", &
_zVal,
"z/F");
150 _alignTree->Branch(
"r", &
_rVal,
"r/F");
151 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
152 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
153 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
154 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
155 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
156 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
157 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
158 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
159 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
160 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
161 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
162 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
163 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
164 _alignTree->Branch(
"du", &
_duVal,
"du/F");
165 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
166 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
167 _alignTree->Branch(
"da", &
_daVal,
"da/F");
168 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
169 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
170 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
171 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
172 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
173 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
174 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
175 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
176 _alignTree->Branch(
"type", &
_type,
"type/I");
177 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
179 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
188 for (
int ii = 0;
ii < 13; ++
ii) {
189 std::stringstream histname0 ;
190 histname0 <<
"SurfDeform_Par_" <<
ii ;
193 std::stringstream histname1 ;
194 histname1 <<
"SurfDeform_PixelBarrel_Par_" <<
ii ;
197 std::stringstream histname2 ;
198 histname2 <<
"SurfDeform_PixelEndcap_Par_" <<
ii ;
211 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
212 std::stringstream mapname ;
213 mapname <<
"TkMap_SurfDeform" << iname <<
".png" ;
214 it->save(
true,0,0,mapname.str());
217 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf" ;
218 it->save(
true,0,0,mapname.str());
261 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
274 int inputRawId1, inputRawId2;
275 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
276 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
289 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
290 _inputTree01->SetBranchAddress(
"x", &inputX1);
291 _inputTree01->SetBranchAddress(
"y", &inputY1);
292 _inputTree01->SetBranchAddress(
"z", &inputZ1);
293 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
294 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
295 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
297 int nEntries1 = _inputTree01->GetEntries();
299 for (
int i = 0;
i < nEntries1; ++
i){
301 _inputTree01->GetEntry(
i);
302 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
303 CLHEP::HepEulerAngles eulerangles1(inputAlpha1,inputBeta1,inputGamma1);
304 uint32_t detid1 = inputRawId1;
306 alignments1->
m_align.push_back(transform1);
309 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
311 alignmentErrors1->
m_alignError.push_back(transformError);
324 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
325 _inputTree02->SetBranchAddress(
"x", &inputX2);
326 _inputTree02->SetBranchAddress(
"y", &inputY2);
327 _inputTree02->SetBranchAddress(
"z", &inputZ2);
328 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
329 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
330 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
332 int nEntries2 = _inputTree02->GetEntries();
334 for (
int i = 0;
i < nEntries2; ++
i){
336 _inputTree02->GetEntry(
i);
337 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
338 CLHEP::HepEulerAngles eulerangles2(inputAlpha2,inputBeta2,inputGamma2);
339 uint32_t detid2 = inputRawId2;
341 alignments2->
m_align.push_back(transform2);
344 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
346 alignmentErrors2->
m_alignError.push_back(transformError);
378 int inputDtype1, inputDtype2 ;
379 std::vector<double> inputDpar1;
380 std::vector<double> inputDpar2 ;
381 std::vector<double>* p_inputDpar1 = &inputDpar1;
382 std::vector<double>* p_inputDpar2 = &inputDpar2;
389 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
390 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
391 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
393 unsigned int nEntries11 = _inputTree11->GetEntries();
394 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11 << std::endl ;
395 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
396 _inputTree11->GetEntry(iEntry) ;
400 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
401 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
421 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
422 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
423 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
425 unsigned int nEntries12 = _inputTree12->GetEntries();
426 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12 << std::endl ;
427 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
428 _inputTree12->GetEntry(iEntry) ;
432 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
433 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
440 delete alignmentErrors1;
442 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) ;
483 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
484 if (inputRawid1 == inputRawid2) {
485 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
486 std::stringstream histname0 ;
487 histname0 <<
"SurfDeform_Par_" << npar ;
489 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
490 std::stringstream histname1 ;
491 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
494 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
495 std::stringstream histname2 ;
496 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
509 std::vector<double> inputDpar2 ;
510 std::vector<double>* p_inputDpar2 = &inputDpar2;
513 curTree->SetBranchAddress(
"irawid", &inputRawid2);
514 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
515 curTree->SetBranchAddress(
"dtype", &inputDtype2);
516 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
518 unsigned int nEntries12 = curTree->GetEntries();
520 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
521 curTree->GetEntry(iEntry) ;
523 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
525 std::stringstream histname0 ;
526 histname0 <<
"SurfDeform_Par_" << npar ;
528 if (inputSubdetid2 == 1) {
529 std::stringstream histname1 ;
530 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
533 if (inputSubdetid2 == 2) {
534 std::stringstream histname2 ;
535 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
547 std::vector<double> inputDpar1;
548 std::vector<double>* p_inputDpar1 = &inputDpar1;
551 refTree->SetBranchAddress(
"irawid", &inputRawid1);
552 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
553 refTree->SetBranchAddress(
"dtype", &inputDtype1);
554 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
556 unsigned int nEntries11 = refTree->GetEntries();
558 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
559 refTree->GetEntry(iEntry) ;
561 for (
int npar = 0; npar < int(inputDpar1.size()); ++npar ) {
563 std::stringstream histname0 ;
564 histname0 <<
"SurfDeform_Par_" << npar ;
566 if (inputSubdetid1 == 1) {
567 std::stringstream histname1 ;
568 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
571 if (inputSubdetid1 == 2) {
572 std::stringstream histname2 ;
573 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
582 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
591 using namespace align ;
593 const std::vector<Alignable*>& refComp = refAli->
components();
594 const std::vector<Alignable*>& curComp = curAli->
components();
596 unsigned int nComp = refComp.size();
598 bool useLevel =
false;
610 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
611 Rtotal.set(0.,0.,0.);
612 Wtotal.set(0.,0.,0.);
613 lRtotal.set(0.,0.,0.);
614 lWtotal.set(0.,0.,0.);
616 for (
int i = 0;
i < 100;
i++){
618 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
620 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
621 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
622 CLHEP::HepRotation drot(dW.unit(),dW.mag());
624 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
626 lRtotal.set(diff[6],diff[7],diff[8]);
627 lWtotal.set(diff[9],diff[10],diff[11]);
630 float tolerance = 1
e-7;
634 if ((checkR.
mag() > tolerance)||(checkW.
mag() > tolerance)){
637 <<
", subdetId: "<<
detid.subdetId() <<
"): " <<
diff;
638 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
647 TRtot(1) = Rtotal.x(); TRtot(2) = Rtotal.y(); TRtot(3) = Rtotal.z();
648 TRtot(4) = Wtotal.x(); TRtot(5) = Wtotal.y(); TRtot(6) = Wtotal.z();
650 TRtot(7) = lRtotal.x(); TRtot(8) = lRtotal.y(); TRtot(9) = lRtotal.z();
651 TRtot(10) = lWtotal.x(); TRtot(11) = lWtotal.y(); TRtot(12) = lWtotal.z();
657 for (
unsigned int i = 0;
i < nComp; ++
i)
664 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
676 std::cout <<
"what we get from overlaying the pixels..." << theR <<
", " << rot << std::endl;
691 TrackerCommonTR(1) = theRprime.x(); TrackerCommonTR(2) = theRprime.y(); TrackerCommonTR(3) = theRprime.z();
694 std::cout <<
"and after the transformation: " << TrackerCommonTR << std::endl;
702 const std::vector<Alignable*>& refComp = refAli->
components();
703 const std::vector<Alignable*>& curComp = curAli->
components();
705 unsigned int nComp = refComp.size();
707 bool useLevel =
false;
712 CLHEP::Hep3Vector Rtotal, Wtotal;
713 Rtotal.set(0.,0.,0.); Wtotal.set(0.,0.,0.);
716 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
718 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
719 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
720 CLHEP::HepRotation drot(dW.unit(),dW.mag());
722 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
847 std::vector<Alignable*> detTID = ali->
TIDGeomDets();
851 std::vector<Alignable*> allGeomDets;
852 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
853 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
854 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
855 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
856 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
857 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
859 std::vector<Alignable*> rcdAlis;
860 for (std::vector<Alignable*>::iterator
i = allGeomDets.begin();
i!= allGeomDets.end();
i++){
861 if ((*i)->components().size() == 1){
862 rcdAlis.push_back((*
i));
864 else if ((*i)->components().size() > 1){
865 rcdAlis.push_back((*
i));
866 std::vector<Alignable*>
comp = (*i)->components();
867 for (std::vector<Alignable*>::iterator
j = comp.begin();
j != comp.end();
j++){
868 rcdAlis.push_back((*
j));
874 for(std::vector<Alignable*>::iterator
k = rcdAlis.begin();
k != rcdAlis.end();
k++){
876 const SurveyDet* surveyInfo = (*k)->survey();
879 CLHEP::Hep3Vector clhepVector(pos.x(),pos.y(),pos.z());
880 CLHEP::HepRotation clhepRotation( CLHEP::HepRep3x3(
rot.xx(),
rot.xy(),
rot.xz(),
rot.yx(),
rot.yy(),
rot.yz(),
rot.zx(),
rot.zy(),
rot.zz()));
897 unsigned int nComp = comp.size();
907 <<
"Error reading survey info from DB. Mismatched id!";
915 rot.yx(), rot.yy(), rot.yz(),
916 rot.zx(), rot.zy(), rot.zz() ) );
932 for (
int i = 0;
i < nEntries;
i++){
943 switch( subdetlevel ){
1013 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)
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
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
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp)
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