5 #include "CLHEP/Vector/RotationInterfaces.h"
46 #include "CLHEP/Vector/ThreeVector.h"
68 _commonTrackerLevel(align::
invalid),
96 const std::vector<std::string>& levels = cfg.
getUntrackedParameter< std::vector<std::string> > (
"levels");
107 edm::LogInfo(
"TrackerGeometryCompare") <<
"levels: " << levels.size();
108 for (
unsigned int l = 0;
l < levels.size(); ++
l){
111 edm::LogInfo(
"TrackerGeometryCompare") <<
"level: " << levels[
l];
120 fin.open( _detIdFlagFile.c_str() );
122 while (!fin.eof() && fin.good() ){
133 std::ifstream inFile;
134 inFile.open( _weightByIdFile.c_str() );
136 while ( !inFile.eof() ){
140 inFile.ignore(256,
'\n');
148 _theFile =
new TFile(_filename.c_str(),
"RECREATE");
149 _alignTree =
new TTree(
"alignTree",
"alignTree");
150 _alignTree->Branch(
"id", &
_id,
"id/I");
151 _alignTree->Branch(
"badModuleQuality", &
_badModuleQuality,
"badModuleQuality/I");
152 _alignTree->Branch(
"inModuleList", &
_inModuleList,
"inModuleList/I");
153 _alignTree->Branch(
"level", &
_level,
"level/I");
154 _alignTree->Branch(
"mid", &
_mid,
"mid/I");
155 _alignTree->Branch(
"mlevel", &
_mlevel,
"mlevel/I");
156 _alignTree->Branch(
"sublevel", &
_sublevel,
"sublevel/I");
157 _alignTree->Branch(
"x", &
_xVal,
"x/F");
158 _alignTree->Branch(
"y", &
_yVal,
"y/F");
159 _alignTree->Branch(
"z", &
_zVal,
"z/F");
160 _alignTree->Branch(
"r", &
_rVal,
"r/F");
161 _alignTree->Branch(
"phi", &
_phiVal,
"phi/F");
162 _alignTree->Branch(
"eta", &
_etaVal,
"eta/F");
163 _alignTree->Branch(
"alpha", &
_alphaVal,
"alpha/F");
164 _alignTree->Branch(
"beta", &
_betaVal,
"beta/F");
165 _alignTree->Branch(
"gamma", &
_gammaVal,
"gamma/F");
166 _alignTree->Branch(
"dx", &
_dxVal,
"dx/F");
167 _alignTree->Branch(
"dy", &
_dyVal,
"dy/F");
168 _alignTree->Branch(
"dz", &
_dzVal,
"dz/F");
169 _alignTree->Branch(
"dr", &
_drVal,
"dr/F");
170 _alignTree->Branch(
"dphi", &
_dphiVal,
"dphi/F");
171 _alignTree->Branch(
"dalpha", &
_dalphaVal,
"dalpha/F");
172 _alignTree->Branch(
"dbeta", &
_dbetaVal,
"dbeta/F");
173 _alignTree->Branch(
"dgamma", &
_dgammaVal,
"dgamma/F");
174 _alignTree->Branch(
"du", &
_duVal,
"du/F");
175 _alignTree->Branch(
"dv", &
_dvVal,
"dv/F");
176 _alignTree->Branch(
"dw", &
_dwVal,
"dw/F");
177 _alignTree->Branch(
"da", &
_daVal,
"da/F");
178 _alignTree->Branch(
"db", &
_dbVal,
"db/F");
179 _alignTree->Branch(
"dg", &
_dgVal,
"dg/F");
180 _alignTree->Branch(
"useDetId", &
_useDetId,
"useDetId/I");
181 _alignTree->Branch(
"detDim", &
_detDim,
"detDim/I");
182 _alignTree->Branch(
"surW", &
_surWidth,
"surW/F");
183 _alignTree->Branch(
"surL", &
_surLength,
"surL/F");
184 _alignTree->Branch(
"surRot", &
_surRot,
"surRot[9]/D");
185 _alignTree->Branch(
"identifiers", &
_identifiers,
"identifiers[6]/I");
186 _alignTree->Branch(
"type", &
_type,
"type/I");
187 _alignTree->Branch(
"surfDeform", &
_surfDeform,
"surfDeform[13]/D");
189 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
198 for (
int ii = 0;
ii < 13; ++
ii) {
199 std::stringstream histname0 ;
200 histname0 <<
"SurfDeform_Par_" <<
ii ;
203 std::stringstream histname1 ;
204 histname1 <<
"SurfDeform_PixelBarrel_Par_" <<
ii ;
207 std::stringstream histname2 ;
208 histname2 <<
"SurfDeform_PixelEndcap_Par_" <<
ii ;
221 for (std::vector<TrackerMap>::iterator it =
m_vtkmap.begin(); it !=
m_vtkmap.end(); ++it) {
222 std::stringstream mapname ;
223 mapname <<
"TkMap_SurfDeform" << iname <<
".png" ;
224 it->save(
true,0,0,mapname.str());
227 mapname <<
"TkMap_SurfDeform" << iname <<
".pdf" ;
228 it->save(
true,0,0,mapname.str());
271 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
284 int inputRawId1, inputRawId2;
285 double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
286 double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
303 std::cout <<
"Error: Module list not found! Please verify that given list exists!" << std::endl;
312 _inputTree01->SetBranchAddress(
"rawid", &inputRawId1);
313 _inputTree01->SetBranchAddress(
"x", &inputX1);
314 _inputTree01->SetBranchAddress(
"y", &inputY1);
315 _inputTree01->SetBranchAddress(
"z", &inputZ1);
316 _inputTree01->SetBranchAddress(
"alpha", &inputAlpha1);
317 _inputTree01->SetBranchAddress(
"beta", &inputBeta1);
318 _inputTree01->SetBranchAddress(
"gamma", &inputGamma1);
320 int nEntries1 = _inputTree01->GetEntries();
322 for (
int i = 0;
i < nEntries1; ++
i){
324 _inputTree01->GetEntry(
i);
325 CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
326 CLHEP::HepEulerAngles eulerangles1(inputAlpha1,inputBeta1,inputGamma1);
327 uint32_t detid1 = inputRawId1;
329 alignments1->
m_align.push_back(transform1);
332 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
334 alignmentErrors1->
m_alignError.push_back(transformError);
347 _inputTree02->SetBranchAddress(
"rawid", &inputRawId2);
348 _inputTree02->SetBranchAddress(
"x", &inputX2);
349 _inputTree02->SetBranchAddress(
"y", &inputY2);
350 _inputTree02->SetBranchAddress(
"z", &inputZ2);
351 _inputTree02->SetBranchAddress(
"alpha", &inputAlpha2);
352 _inputTree02->SetBranchAddress(
"beta", &inputBeta2);
353 _inputTree02->SetBranchAddress(
"gamma", &inputGamma2);
355 int nEntries2 = _inputTree02->GetEntries();
357 for (
int i = 0;
i < nEntries2; ++
i){
359 _inputTree02->GetEntry(
i);
360 CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
361 CLHEP::HepEulerAngles eulerangles2(inputAlpha2,inputBeta2,inputGamma2);
362 uint32_t detid2 = inputRawId2;
364 alignments2->
m_align.push_back(transform2);
367 CLHEP::HepSymMatrix clhepSymMatrix(3,0);
369 alignmentErrors2->
m_alignError.push_back(transformError);
401 int inputDtype1, inputDtype2 ;
402 std::vector<double> inputDpar1;
403 std::vector<double> inputDpar2 ;
404 std::vector<double>* p_inputDpar1 = &inputDpar1;
405 std::vector<double>* p_inputDpar2 = &inputDpar2;
412 _inputTree11->SetBranchAddress(
"irawid", &inputRawid1);
413 _inputTree11->SetBranchAddress(
"dtype", &inputDtype1);
414 _inputTree11->SetBranchAddress(
"dpar", &p_inputDpar1);
416 unsigned int nEntries11 = _inputTree11->GetEntries();
417 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries11 = " << nEntries11 << std::endl ;
418 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
419 _inputTree11->GetEntry(iEntry) ;
423 if (
int(comp1[iEntry]->
id()) == inputRawid1) {
424 comp1[iEntry]->setSurfaceDeformation(surfDef1,
true) ;
444 _inputTree12->SetBranchAddress(
"irawid", &inputRawid2);
445 _inputTree12->SetBranchAddress(
"dtype", &inputDtype2);
446 _inputTree12->SetBranchAddress(
"dpar", &p_inputDpar2);
448 unsigned int nEntries12 = _inputTree12->GetEntries();
449 edm::LogInfo(
"TrackerGeometryCompare") <<
" nentries12 = " << nEntries12 << std::endl ;
450 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
451 _inputTree12->GetEntry(iEntry) ;
455 if (
int(comp2[iEntry]->
id()) == inputRawid2) {
456 comp2[iEntry]->setSurfaceDeformation(surfDef2,
true) ;
463 delete alignmentErrors1;
465 delete alignmentErrors2;
475 int inputSubdetid1, inputSubdetid2 ;
476 int inputDtype1, inputDtype2 ;
477 std::vector<double> inputDpar1;
478 std::vector<double> inputDpar2 ;
479 std::vector<double>* p_inputDpar1 = &inputDpar1;
480 std::vector<double>* p_inputDpar2 = &inputDpar2;
483 refTree->SetBranchAddress(
"irawid", &inputRawid1);
484 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
485 refTree->SetBranchAddress(
"dtype", &inputDtype1);
486 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
489 curTree->SetBranchAddress(
"irawid", &inputRawid2);
490 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
491 curTree->SetBranchAddress(
"dtype", &inputDtype2);
492 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
494 unsigned int nEntries11 = refTree->GetEntries();
495 unsigned int nEntries12 = curTree->GetEntries();
497 if (nEntries11 != nEntries12) {
498 edm::LogError(
"TrackerGeometryCompare") <<
" Surface deformation parameters in two geometries differ!\n" ;
502 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
503 refTree->GetEntry(iEntry) ;
504 curTree->GetEntry(iEntry) ;
506 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
507 if (inputRawid1 == inputRawid2) {
508 _surfDeform[npar] = inputDpar2.at(npar) - inputDpar1.at(npar) ;
509 std::stringstream histname0 ;
510 histname0 <<
"SurfDeform_Par_" << npar ;
512 if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
513 std::stringstream histname1 ;
514 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
517 if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
518 std::stringstream histname2 ;
519 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
532 std::vector<double> inputDpar2 ;
533 std::vector<double>* p_inputDpar2 = &inputDpar2;
536 curTree->SetBranchAddress(
"irawid", &inputRawid2);
537 curTree->SetBranchAddress(
"subdetid", &inputSubdetid2);
538 curTree->SetBranchAddress(
"dtype", &inputDtype2);
539 curTree->SetBranchAddress(
"dpar", &p_inputDpar2);
541 unsigned int nEntries12 = curTree->GetEntries();
543 for (
unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
544 curTree->GetEntry(iEntry) ;
546 for (
int npar = 0; npar < int(inputDpar2.size()); ++npar ) {
548 std::stringstream histname0 ;
549 histname0 <<
"SurfDeform_Par_" << npar ;
551 if (inputSubdetid2 == 1) {
552 std::stringstream histname1 ;
553 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
556 if (inputSubdetid2 == 2) {
557 std::stringstream histname2 ;
558 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
570 std::vector<double> inputDpar1;
571 std::vector<double>* p_inputDpar1 = &inputDpar1;
574 refTree->SetBranchAddress(
"irawid", &inputRawid1);
575 refTree->SetBranchAddress(
"subdetid", &inputSubdetid1);
576 refTree->SetBranchAddress(
"dtype", &inputDtype1);
577 refTree->SetBranchAddress(
"dpar", &p_inputDpar1);
579 unsigned int nEntries11 = refTree->GetEntries();
581 for (
unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
582 refTree->GetEntry(iEntry) ;
584 for (
int npar = 0; npar < int(inputDpar1.size()); ++npar ) {
586 std::stringstream histname0 ;
587 histname0 <<
"SurfDeform_Par_" << npar ;
589 if (inputSubdetid1 == 1) {
590 std::stringstream histname1 ;
591 histname1 <<
"SurfDeform_PixelBarrel_Par_" << npar ;
594 if (inputSubdetid1 == 2) {
595 std::stringstream histname2 ;
596 histname2 <<
"SurfDeform_PixelEndcap_Par_" << npar ;
605 edm::LogInfo(
"TrackerGeometryCompare") <<
">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n" ;
614 using namespace align ;
616 const std::vector<Alignable*>& refComp = refAli->
components();
617 const std::vector<Alignable*>& curComp = curAli->
components();
619 unsigned int nComp = refComp.size();
621 bool useLevel =
false;
633 CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
634 Rtotal.set(0.,0.,0.);
635 Wtotal.set(0.,0.,0.);
636 lRtotal.set(0.,0.,0.);
637 lWtotal.set(0.,0.,0.);
639 for (
int i = 0;
i < 100;
i++){
641 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
643 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
644 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
645 CLHEP::HepRotation drot(dW.unit(),dW.mag());
647 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
649 lRtotal.set(diff[6],diff[7],diff[8]);
650 lWtotal.set(diff[9],diff[10],diff[11]);
653 float tolerance = 1
e-7;
657 if ((checkR.
mag() > tolerance)||(checkW.
mag() > tolerance)){
660 <<
", subdetId: "<< detid.subdetId() <<
"): " <<
diff;
661 throw cms::Exception(
"Tolerance in TrackerGeometryCompare exceeded");
670 TRtot(1) = Rtotal.x(); TRtot(2) = Rtotal.y(); TRtot(3) = Rtotal.z();
671 TRtot(4) = Wtotal.x(); TRtot(5) = Wtotal.y(); TRtot(6) = Wtotal.z();
673 TRtot(7) = lRtotal.x(); TRtot(8) = lRtotal.y(); TRtot(9) = lRtotal.z();
674 TRtot(10) = lWtotal.x(); TRtot(11) = lWtotal.y(); TRtot(12) = lWtotal.z();
676 fillTree(refAli, TRtot, tTopo, iSetup);
680 for (
unsigned int i = 0;
i < nComp; ++
i)
687 edm::LogInfo(
"TrackerGeometryCompare") <<
"Setting Common Tracker System....";
699 std::cout <<
"what we get from overlaying the pixels..." << theR <<
", " << rot << std::endl;
714 TrackerCommonTR(1) = theRprime.x(); TrackerCommonTR(2) = theRprime.y(); TrackerCommonTR(3) = theRprime.z();
717 std::cout <<
"and after the transformation: " << TrackerCommonTR << std::endl;
725 const std::vector<Alignable*>& refComp = refAli->
components();
726 const std::vector<Alignable*>& curComp = curAli->
components();
728 unsigned int nComp = refComp.size();
730 bool useLevel =
false;
735 CLHEP::Hep3Vector Rtotal, Wtotal;
736 Rtotal.set(0.,0.,0.); Wtotal.set(0.,0.,0.);
739 CLHEP::Hep3Vector
dR(diff[0],diff[1],diff[2]);
741 CLHEP::Hep3Vector dW(diff[3],diff[4],diff[5]);
742 CLHEP::HepRotation
rot(Wtotal.unit(),Wtotal.mag());
743 CLHEP::HepRotation drot(dW.unit(),dW.mag());
745 Wtotal.set(rot.axis().x()*rot.delta(), rot.axis().y()*rot.delta(), rot.axis().z()*rot.delta());
794 if (SiPixelModules->IsModuleBad(
_id)){
798 if (SiStripModules->IsModuleBad(
_id)){
897 std::vector<Alignable*> detTID = ali->
TIDGeomDets();
901 std::vector<Alignable*> allGeomDets;
902 std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
903 std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
904 std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
905 std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
906 std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
907 std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
909 std::vector<Alignable*> rcdAlis;
910 for (std::vector<Alignable*>::iterator
i = allGeomDets.begin();
i!= allGeomDets.end();
i++){
911 if ((*i)->components().size() == 1){
912 rcdAlis.push_back((*
i));
914 else if ((*i)->components().size() > 1){
915 rcdAlis.push_back((*
i));
916 std::vector<Alignable*>
comp = (*i)->components();
917 for (std::vector<Alignable*>::iterator
j = comp.begin();
j != comp.end();
j++){
918 rcdAlis.push_back((*
j));
924 for(std::vector<Alignable*>::iterator
k = rcdAlis.begin();
k != rcdAlis.end();
k++){
926 const SurveyDet* surveyInfo = (*k)->survey();
929 CLHEP::Hep3Vector clhepVector(pos.x(),pos.y(),pos.z());
930 CLHEP::HepRotation clhepRotation( CLHEP::HepRep3x3(
rot.xx(),
rot.xy(),
rot.xz(),
rot.yx(),
rot.yy(),
rot.yz(),
rot.zx(),
rot.zy(),
rot.zz()));
947 unsigned int nComp = comp.size();
957 <<
"Error reading survey info from DB. Mismatched id!";
965 rot.yx(), rot.yy(), rot.yz(),
966 rot.zx(), rot.zy(), rot.zz() ) );
982 for (
int i = 0;
i < nEntries;
i++){
993 switch( subdetlevel ){
1063 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.
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
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.
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
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
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
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.
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