5 #include "CLHEP/Vector/RotationInterfaces.h"
39 #include "CLHEP/Vector/ThreeVector.h"
65 _commonTrackerLevel(align::
invalid),
90 const std::vector<std::string>& levels = cfg.
getUntrackedParameter< std::vector<std::string> > (
"levels");
101 edm::LogInfo(
"TrackerGeometryCompare") <<
"levels: " << levels.size();
102 for (
unsigned int l = 0;
l < levels.size(); ++
l){
105 edm::LogInfo(
"TrackerGeometryCompare") <<
"level: " << levels[
l];
113 fin.open( _detIdFlagFile.c_str() );
115 while (!fin.eof() && fin.good() ){
126 std::ifstream inFile;
127 inFile.open( _weightByIdFile.c_str() );
129 while ( !inFile.eof() ){
133 inFile.ignore(256,
'\n');
141 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
142 _alignTree =
new TTree(
"alignTree",
"alignTree");
143 _alignTree->Branch(
"id", &
_id,
"id/I");
144 _alignTree->Branch(
"level", &
_level,
"level/I");
145 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
146 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
147 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
148 _alignTree->Branch(
"x", &
_xVal,
"x/F");
149 _alignTree->Branch(
"y", &
_yVal,
"y/F");
150 _alignTree->Branch(
"z", &
_zVal,
"z/F");
151 _alignTree->Branch(
"r", &
_rVal,
"r/F");
152 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
153 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
154 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
155 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
156 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
157 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
158 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
159 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
160 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
161 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
162 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
163 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
164 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
165 _alignTree->Branch(
"du", &
_duVal,
"du/F");
166 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
167 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
168 _alignTree->Branch(
"da", &
_daVal,
"da/F");
169 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
170 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
171 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
172 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
173 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
174 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
175 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
176 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
177 _alignTree->Branch(
"type", &
_type,
"type/I");
178 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
180 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
189 for (
int ii = 0; ii < 13; ++ii) {
190 std::stringstream histname0 ;
191 histname0 <<
"SurfDeform_Par_" << ii ;
194 std::stringstream histname1 ;
195 histname1 <<
"SurfDeform_PixelBarrel_Par_" << ii ;
198 std::stringstream histname2 ;
199 histname2 <<
"SurfDeform_PixelEndcap_Par_" << ii ;
212 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
213 std::stringstream mapname ;
214 mapname <<
"TkMap_SurfDeform" << iname <<
".png" ;
215 it->save(
true,0,0,mapname.str());
216 mapname.str( std::string() );
218 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf" ;
219 it->save(
true,0,0,mapname.str());
257 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
270 int inputRawId1, inputRawId2;
271 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
272 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
280 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
281 _inputTree01->SetBranchAddress(
"x", &inputX1);
282 _inputTree01->SetBranchAddress(
"y", &inputY1);
283 _inputTree01->SetBranchAddress(
"z", &inputZ1);
284 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
285 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
286 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
288 int nEntries1 = _inputTree01->GetEntries();
290 for (
int i = 0;
i < nEntries1; ++
i){
292 _inputTree01->GetEntry(
i);
293 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
294 CLHEP::HepEulerAngles eulerangles1(inputAlpha1,inputBeta1,inputGamma1);
295 uint32_t detid1 = inputRawId1;
297 alignments1->
m_align.push_back(transform1);
300 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
302 alignmentErrors1->
m_alignError.push_back(transformError);
315 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
316 _inputTree02->SetBranchAddress(
"x", &inputX2);
317 _inputTree02->SetBranchAddress(
"y", &inputY2);
318 _inputTree02->SetBranchAddress(
"z", &inputZ2);
319 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
320 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
321 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
323 int nEntries2 = _inputTree02->GetEntries();
325 for (
int i = 0;
i < nEntries2; ++
i){
327 _inputTree02->GetEntry(
i);
328 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
329 CLHEP::HepEulerAngles eulerangles2(inputAlpha2,inputBeta2,inputGamma2);
330 uint32_t detid2 = inputRawId2;
332 alignments2->
m_align.push_back(transform2);
335 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
337 alignmentErrors2->
m_alignError.push_back(transformError);
367 int inputDtype1, inputDtype2 ;
368 std::vector<double> inputDpar1;
369 std::vector<double> inputDpar2 ;
370 std::vector<double>* p_inputDpar1 = &inputDpar1;
371 std::vector<double>* p_inputDpar2 = &inputDpar2;
378 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
379 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
380 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
382 unsigned int nEntries11 = _inputTree11->GetEntries();
383 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11 << std::endl ;
384 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
385 _inputTree11->GetEntry(iEntry) ;
389 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
390 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
410 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
411 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
412 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
414 unsigned int nEntries12 = _inputTree12->GetEntries();
415 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12 << std::endl ;
416 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
417 _inputTree12->GetEntry(iEntry) ;
421 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
422 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
429 delete alignmentErrors1;
431 delete alignmentErrors2;
441 int inputSubdetid1, inputSubdetid2 ;
442 int inputDtype1, inputDtype2 ;
443 std::vector<double> inputDpar1;
444 std::vector<double> inputDpar2 ;
445 std::vector<double>* p_inputDpar1 = &inputDpar1;
446 std::vector<double>* p_inputDpar2 = &inputDpar2;
449 refTree->SetBranchAddress(
"irawid", &inputRawid1);
450 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
451 refTree->SetBranchAddress(
"dtype", &inputDtype1);
452 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
455 curTree->SetBranchAddress(
"irawid", &inputRawid2);
456 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
457 curTree->SetBranchAddress(
"dtype", &inputDtype2);
458 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
460 unsigned int nEntries11 = refTree->GetEntries();
461 unsigned int nEntries12 = curTree->GetEntries();
463 if (nEntries11 != nEntries12) {
464 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n" ;
468 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
469 refTree->GetEntry(iEntry) ;
470 curTree->GetEntry(iEntry) ;
471 for (
int ii = 0; ii < 13; ++ii) {
_surfDeform[ii] = -1.0 ; }
472 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
473 if (inputRawid1 == inputRawid2) {
474 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
475 std::stringstream histname0 ;
476 histname0 <<
"SurfDeform_Par_" << npar ;
478 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
479 std::stringstream histname1 ;
480 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
483 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
484 std::stringstream histname2 ;
485 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
498 std::vector<double> inputDpar2 ;
499 std::vector<double>* p_inputDpar2 = &inputDpar2;
502 curTree->SetBranchAddress(
"irawid", &inputRawid2);
503 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
504 curTree->SetBranchAddress(
"dtype", &inputDtype2);
505 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
507 unsigned int nEntries12 = curTree->GetEntries();
509 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
510 curTree->GetEntry(iEntry) ;
511 for (
int ii = 0; ii < 12; ++ii) {
_surfDeform[ii] = -1.0 ; }
512 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
514 std::stringstream histname0 ;
515 histname0 <<
"SurfDeform_Par_" << npar ;
517 if (inputSubdetid2 == 1) {
518 std::stringstream histname1 ;
519 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
522 if (inputSubdetid2 == 2) {
523 std::stringstream histname2 ;
524 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
536 std::vector<double> inputDpar1;
537 std::vector<double>* p_inputDpar1 = &inputDpar1;
540 refTree->SetBranchAddress(
"irawid", &inputRawid1);
541 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
542 refTree->SetBranchAddress(
"dtype", &inputDtype1);
543 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
545 unsigned int nEntries11 = refTree->GetEntries();
547 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
548 refTree->GetEntry(iEntry) ;
549 for (
int ii = 0; ii < 12; ++ii) {
_surfDeform[ii] = -1.0 ; }
550 for (
int npar = 0; npar < int(inputDpar1.size()); ++npar ) {
552 std::stringstream histname0 ;
553 histname0 <<
"SurfDeform_Par_" << npar ;
555 if (inputSubdetid1 == 1) {
556 std::stringstream histname1 ;
557 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
560 if (inputSubdetid1 == 2) {
561 std::stringstream histname2 ;
562 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
571 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
580 using namespace align ;
582 const std::vector<Alignable*>& refComp = refAli->
components();
583 const std::vector<Alignable*>& curComp = curAli->
components();
585 unsigned int nComp = refComp.size();
587 bool useLevel =
false;
599 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
600 Rtotal.set(0.,0.,0.);
601 Wtotal.set(0.,0.,0.);
602 lRtotal.set(0.,0.,0.);
603 lWtotal.set(0.,0.,0.);
605 for (
int i = 0;
i < 100;
i++){
607 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
609 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
610 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
611 CLHEP::HepRotation drot(dW.unit(),dW.mag());
613 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
615 lRtotal.set(diff[6],diff[7],diff[8]);
616 lWtotal.set(diff[9],diff[10],diff[11]);
618 float tolerance = 1
e-7;
622 if ((checkR.
mag() > tolerance)||(checkW.
mag() > tolerance)){
625 <<
", subdetId: "<<
detid.subdetId() <<
"): " <<
diff;
626 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
635 TRtot(1) = Rtotal.x(); TRtot(2) = Rtotal.y(); TRtot(3) = Rtotal.z();
636 TRtot(4) = Wtotal.x(); TRtot(5) = Wtotal.y(); TRtot(6) = Wtotal.z();
638 TRtot(7) = lRtotal.x(); TRtot(8) = lRtotal.y(); TRtot(9) = lRtotal.z();
639 TRtot(10) = lWtotal.x(); TRtot(11) = lWtotal.y(); TRtot(12) = lWtotal.z();
645 for (
unsigned int i = 0;
i < nComp; ++
i)
652 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
663 std::cout <<
"what we get from overlaying the pixels..." << theR <<
", " << rot << std::endl;
678 TrackerCommonTR(1) = theRprime.x(); TrackerCommonTR(2) = theRprime.y(); TrackerCommonTR(3) = theRprime.z();
681 std::cout <<
"and after the transformation: " << TrackerCommonTR << std::endl;
689 const std::vector<Alignable*>& refComp = refAli->
components();
690 const std::vector<Alignable*>& curComp = curAli->
components();
692 unsigned int nComp = refComp.size();
694 bool useLevel =
false;
699 CLHEP::Hep3Vector Rtotal, Wtotal;
700 Rtotal.set(0.,0.,0.); Wtotal.set(0.,0.,0.);
703 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
705 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
706 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
707 CLHEP::HepRotation drot(dW.unit(),dW.mag());
709 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
834 std::vector<Alignable*> detTID = ali->
TIDGeomDets();
838 std::vector<Alignable*> allGeomDets;
839 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
840 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
841 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
842 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
843 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
844 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
846 std::vector<Alignable*> rcdAlis;
847 for (std::vector<Alignable*>::iterator
i = allGeomDets.begin();
i!= allGeomDets.end();
i++){
848 if ((*i)->components().size() == 1){
849 rcdAlis.push_back((*
i));
851 else if ((*i)->components().size() > 1){
852 rcdAlis.push_back((*
i));
853 std::vector<Alignable*> comp = (*i)->components();
854 for (std::vector<Alignable*>::iterator
j = comp.begin();
j != comp.end();
j++){
855 rcdAlis.push_back((*
j));
861 for(std::vector<Alignable*>::iterator
k = rcdAlis.begin();
k != rcdAlis.end();
k++){
863 const SurveyDet* surveyInfo = (*k)->survey();
866 CLHEP::Hep3Vector clhepVector(
pos.x(),
pos.y(),
pos.z());
867 CLHEP::HepRotation clhepRotation( CLHEP::HepRep3x3(
rot.xx(),
rot.xy(),
rot.xz(),
rot.yx(),
rot.yy(),
rot.yz(),
rot.zx(),
rot.zy(),
rot.zz()));
882 const std::vector<Alignable*>& comp = ali->
components();
884 unsigned int nComp = comp.size();
894 <<
"Error reading survey info from DB. Mismatched id!";
902 rot.yx(), rot.yy(), rot.yz(),
903 rot.zx(), rot.zy(), rot.zz() ) );
919 for (
int i = 0;
i < nEntries;
i++){
930 switch( subdetlevel ){
1000 std::cout <<
"Error: bad subdetid!!" << std::endl;
align::Scalar width() const
void compareGeometries(Alignable *refAli, Alignable *curAli)
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.
unsigned int panel() const
panel id
align::GlobalVector _TrackerCommonR
unsigned int layer() const
layer id
Vector3DBase< Scalar, GlobalTag > GlobalVector
Class to update a given geometry with a set of alignments.
std::string _inputTreenameDeform
std::vector< align::StructureType > m_theLevels
#define DEFINE_FWK_MODULE(type)
ErrorMatrix matrix() const
const Alignments * theSurveyValues
void addSurveyInfo(Alignable *ali)
std::vector< AlignTransformError > m_alignError
Geom::Phi< T > phi() 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)
std::vector< TrackerMap > m_vtkmap
unsigned int ladder() const
ladder id
const RotationType & globalRotation() const
Return the global orientation of the object.
void setWidth(align::Scalar width)
uint8_t structureType() const
virtual Alignables components() const =0
Return vector of all direct components.
std::vector< AlignTransform > m_align
std::vector< unsigned int > string() const
string id
unsigned int module() const
det id
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
unsigned int layer() const
layer id
unsigned int side() const
positive or negative id
std::vector< unsigned int > rod() const
rod id
unsigned int blade() const
blade id
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 > petal() const
petal id
virtual void beginJob()
Read from DB and print survey info.
Alignables & innerBarrelGeomDets()
Return inner barrel GeomDets.
bool check(const DataFrame &df, bool capcheck, bool dvercheck)
cond::Time_t beginOfTime() const
void fillTree(Alignable *refAli, AlgebraicVector diff)
Alignables & TIDGeomDets()
Return TID GeomDets.
std::vector< uint32_t > _detIdFlagVector
void get(HolderT &iHolder) const
unsigned int ring() const
ring id
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
AlignmentErrors * alignmentErrors() const
Return alignment errors, sorted by DetId.
unsigned int module() const
det id
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrors *alignmentErrors, const AlignTransform &globalCoordinates)
Allows conversion between type and name, and vice-versa.
unsigned int module() const
det id
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
std::vector< unsigned int > module() const
det id
TrackerGeometryCompare(const edm::ParameterSet &)
Do nothing. Required by framework.
virtual void analyze(const edm::Event &, const edm::EventSetup &)
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) ...
unsigned int disk() const
disk id
Alignables & endcapGeomDets()
Return endcap GeomDets.
align::PositionType _TrackerCommonCM
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Alignables & pixelEndcapGeomDets()
Return pixel endcap GeomDets.
std::string _inputFilename1
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
align::Scalar length() const
Alignables & outerBarrelGeomDets()
Return outer barrel GeomDets.
AlignableTracker * currentTracker
const Alignables & deepComponents() const
unsigned int module() const
detector id
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
unsigned int side() const
positive or negative id
void setSurvey(const SurveyDet *)
Set survey info.
void setCommonTrackerSystem()
TrackerGeometry * build(const GeometricDet *gd)
unsigned int wheel() const
wheel id
unsigned int theSurveyIndex
align::StructureType nameToType(const std::string &name) const
Convert name to type.
unsigned int layer() const
layer id
AlignableTracker * referenceTracker
void fillIdentifiers(int subdetlevel, int rawid)
void createROOTGeometry(const edm::EventSetup &iSetup)
unsigned int ring() const
ring id
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
T * make() const
make new ROOT object
unsigned int side() const
positive or negative id
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
const SurveyErrors * theSurveyErrors
unsigned int module() const
detector id
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
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
std::string _weightByIdFile
void surveyToTracker(AlignableTracker *ali, Alignments *alignVals, AlignmentErrors *alignErrors)
void compareSurfaceDeformations(TTree *_inputTree11, TTree *_inputTree12)
unsigned int wheel() const
wheel id