CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
TrackerGeometryCompare Class Reference

#include <TrackerGeometryCompare.h>

Inheritance diagram for TrackerGeometryCompare:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Types

typedef AlignTransform SurveyValue
 
typedef Alignments SurveyValues
 
- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 Read from DB and print survey info. More...
 
void endJob () override
 
 TrackerGeometryCompare (const edm::ParameterSet &)
 Do nothing. Required by framework. More...
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void addSurveyInfo (Alignable *ali)
 
void compareGeometries (Alignable *refAli, Alignable *curAli, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
 
void compareSurfaceDeformations (TTree *_inputTree11, TTree *_inputTree12)
 
void createROOTGeometry (const edm::EventSetup &iSetup)
 
void diffCommonTrackerSystem (Alignable *refAli, Alignable *curAli)
 
void fillIdentifiers (int subdetlevel, int rawid, const TrackerTopology *tTopo)
 
void fillTree (Alignable *refAli, const AlgebraicVector &diff, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
 
bool passIdCut (uint32_t)
 
void setCommonTrackerSystem ()
 
void surveyToTracker (AlignableTracker *ali, Alignments *alignVals, AlignmentErrorsExtended *alignErrors)
 

Private Attributes

TTree * alignTree_
 
float alphaVal_
 
int badModuleQuality_
 
float betaVal_
 
align::StructureType commonTrackerLevel_
 
const edm::ESGetToken< cms::DDCompactView, IdealGeometryRecordcpvTokenDD4hep_
 
const edm::ESGetToken< DDCompactView, IdealGeometryRecordcpvTokenDDD_
 
AlignableTrackercurrentTracker
 
float dalphaVal_
 
float daVal_
 
float dbetaVal_
 
float dbVal_
 
int detDim_
 
bool detIdFlag_
 
std::string detIdFlagFile_
 
std::vector< uint32_t > detIdFlagVector_
 
float dgammaVal_
 
float dgVal_
 
float dphiVal_
 
float drVal_
 
AlignableTrackerdummyTracker
 
float duVal_
 
float dvVal_
 
float dwVal_
 
float dxVal_
 
float dyVal_
 
float dzVal_
 
float etaVal_
 
std::string filename_
 
bool firstEvent_
 
bool fromDD4hep_
 
float gammaVal_
 
const edm::ESGetToken< GeometricDet, IdealGeometryRecordgeomDetToken_
 
int id_
 
uint32_t identifiers_ [6]
 
int inModuleList_
 
std::string inputFilename1_
 
std::string inputFilename2_
 
TFile * inputRootFile1_
 
TFile * inputRootFile2_
 
TTree * inputTree01_
 
TTree * inputTree02_
 
TTree * inputTree11_
 
TTree * inputTree12_
 
std::string inputTreenameAlign_
 
std::string inputTreenameDeform_
 
int level_
 
const std::vector< std::string > levelStrings_
 
std::map< std::string, TH1D * > m_h1_
 
int m_nBins_
 
double m_rangeHigh_
 
double m_rangeLow_
 
std::vector< align::StructureTypem_theLevels
 
std::vector< TrackerMapm_vtkmap_
 
int mid_
 
int mlevel_
 
int moduleInList_
 
std::vector< int > moduleList_
 
std::ifstream moduleListFile_
 
std::string moduleListName_
 
float phiVal_
 
const edm::ESGetToken< SiPixelQuality, SiPixelQualityRcdpixQualityToken_
 
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcdptpToken_
 
AlignableTrackerreferenceTracker
 
float rVal_
 
std::string setCommonTrackerSystem_
 
const edm::ESGetToken< SiStripQuality, SiStripQualityRcdstripQualityToken_
 
int sublevel_
 
double surfDeform_ [13]
 
std::string surfdir_
 
float surLength_
 
double surRot_ [9]
 
float surWidth_
 
TFile * theFile_
 
const SurveyErrorstheSurveyErrors
 
unsigned int theSurveyIndex
 
const AlignmentstheSurveyValues
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtopoToken_
 
align::PositionType TrackerCommonCM_
 
align::GlobalVector TrackerCommonR_
 
align::GlobalVector TrackerCommonT_
 
int type_
 
int useDetId_
 
std::string weightBy_
 
bool weightById_
 
std::string weightByIdFile_
 
std::vector< unsigned int > weightByIdVector_
 
bool writeToDB_
 
float xVal_
 
float yVal_
 
float zVal_
 

Additional Inherited Members

- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Module that reads survey info from DB and prints them out.

Date
2012/12/02 22:13:12
Revision
1.14
Author
Nhan Tran

******** Including surface deformations in the geometry comparison ********


Definition at line 41 of file TrackerGeometryCompare.h.

Member Typedef Documentation

◆ SurveyValue

Definition at line 43 of file TrackerGeometryCompare.h.

◆ SurveyValues

Definition at line 44 of file TrackerGeometryCompare.h.

Constructor & Destructor Documentation

◆ TrackerGeometryCompare()

TrackerGeometryCompare::TrackerGeometryCompare ( const edm::ParameterSet cfg)

Do nothing. Required by framework.

Definition at line 55 of file TrackerGeometryCompare.cc.

References alignTree_, alphaVal_, badModuleQuality_, betaVal_, looper::cfg, dalphaVal_, daVal_, dbetaVal_, dbVal_, detDim_, detIdFlag_, detIdFlagFile_, detIdFlagVector_, dgammaVal_, dgVal_, dphiVal_, drVal_, duVal_, dvVal_, dwVal_, dxVal_, dyVal_, dzVal_, etaVal_, filename_, groupFilesInBlocks::fin, compareTotals::fs, gammaVal_, l1ctLayer2EG_cff::id, id_, identifiers_, cuy::ii, testHGCalDigi_cfg::inFile, inModuleList_, inputFilename1_, inputFilename2_, inputTreenameAlign_, inputTreenameDeform_, level_, m_h1_, m_nBins_, m_rangeHigh_, m_rangeLow_, m_vtkmap_, TFileDirectory::make(), mid_, mlevel_, moduleListName_, phiVal_, rVal_, setCommonTrackerSystem_, AlCaHLTBitMon_QueryRunRegistry::string, sublevel_, surfDeform_, surfdir_, surLength_, surRot_, surWidth_, theFile_, type_, useDetId_, weightBy_, weightById_, weightByIdFile_, weightByIdVector_, xVal_, yVal_, and zVal_.

63  referenceTracker(nullptr),
64  dummyTracker(nullptr),
65  currentTracker(nullptr),
66  theSurveyIndex(0),
67  theSurveyValues(nullptr),
68  theSurveyErrors(nullptr),
69  levelStrings_(cfg.getUntrackedParameter<std::vector<std::string> >("levels")),
70  fromDD4hep_(cfg.getUntrackedParameter<bool>("fromDD4hep")),
71  writeToDB_(cfg.getUntrackedParameter<bool>("writeToDB")),
74  moduleList_(0),
75  inputRootFile1_(nullptr),
76  inputRootFile2_(nullptr),
77  inputTree01_(nullptr),
78  inputTree02_(nullptr),
79  inputTree11_(nullptr),
80  inputTree12_(nullptr),
81  m_nBins_(10000),
82  m_rangeLow_(-.1),
83  m_rangeHigh_(.1),
84  firstEvent_(true),
85  m_vtkmap_(13) {
86  moduleListName_ = cfg.getUntrackedParameter<std::string>("moduleList");
87 
88  //input is ROOT
89  inputFilename1_ = cfg.getUntrackedParameter<std::string>("inputROOTFile1");
90  inputFilename2_ = cfg.getUntrackedParameter<std::string>("inputROOTFile2");
91  inputTreenameAlign_ = cfg.getUntrackedParameter<std::string>("treeNameAlign");
92  inputTreenameDeform_ = cfg.getUntrackedParameter<std::string>("treeNameDeform");
93 
94  //output file
95  filename_ = cfg.getUntrackedParameter<std::string>("outputFile");
96  //output dir for surface deformations
97  surfdir_ = cfg.getUntrackedParameter<std::string>("surfDir");
98 
99  weightBy_ = cfg.getUntrackedParameter<std::string>("weightBy");
100  setCommonTrackerSystem_ = cfg.getUntrackedParameter<std::string>("setCommonTrackerSystem");
101  detIdFlag_ = cfg.getUntrackedParameter<bool>("detIdFlag");
102  detIdFlagFile_ = cfg.getUntrackedParameter<std::string>("detIdFlagFile");
103  weightById_ = cfg.getUntrackedParameter<bool>("weightById");
104  weightByIdFile_ = cfg.getUntrackedParameter<std::string>("weightByIdFile");
105 
106  // if want to use, make id cut list
107  if (detIdFlag_) {
108  std::ifstream fin;
109  fin.open(detIdFlagFile_.c_str());
110 
111  while (!fin.eof() && fin.good()) {
112  uint32_t id;
113  fin >> id;
114  detIdFlagVector_.push_back(id);
115  }
116  fin.close();
117  }
118 
119  // turn weightByIdFile into weightByIdVector
120  if (weightById_) {
121  std::ifstream inFile;
122  inFile.open(weightByIdFile_.c_str());
123  while (!inFile.eof()) {
124  unsigned int listId;
125  inFile >> listId;
126  inFile.ignore(256, '\n');
127 
128  weightByIdVector_.push_back(listId);
129  }
130  inFile.close();
131  }
132 
133  //root configuration
134  theFile_ = new TFile(filename_.c_str(), "RECREATE");
135  alignTree_ = new TTree("alignTree",
136  "alignTree"); //,"id:level:mid:mlevel:sublevel:x:y:z:r:phi:a:b:c:dx:dy:dz:dr:dphi:da:db:dc");
137  alignTree_->Branch("id", &id_, "id/I");
138  alignTree_->Branch("badModuleQuality", &badModuleQuality_, "badModuleQuality/I");
139  alignTree_->Branch("inModuleList", &inModuleList_, "inModuleList/I");
140  alignTree_->Branch("level", &level_, "level/I");
141  alignTree_->Branch("mid", &mid_, "mid/I");
142  alignTree_->Branch("mlevel", &mlevel_, "mlevel/I");
143  alignTree_->Branch("sublevel", &sublevel_, "sublevel/I");
144  alignTree_->Branch("x", &xVal_, "x/F");
145  alignTree_->Branch("y", &yVal_, "y/F");
146  alignTree_->Branch("z", &zVal_, "z/F");
147  alignTree_->Branch("r", &rVal_, "r/F");
148  alignTree_->Branch("phi", &phiVal_, "phi/F");
149  alignTree_->Branch("eta", &etaVal_, "eta/F");
150  alignTree_->Branch("alpha", &alphaVal_, "alpha/F");
151  alignTree_->Branch("beta", &betaVal_, "beta/F");
152  alignTree_->Branch("gamma", &gammaVal_, "gamma/F");
153  alignTree_->Branch("dx", &dxVal_, "dx/F");
154  alignTree_->Branch("dy", &dyVal_, "dy/F");
155  alignTree_->Branch("dz", &dzVal_, "dz/F");
156  alignTree_->Branch("dr", &drVal_, "dr/F");
157  alignTree_->Branch("dphi", &dphiVal_, "dphi/F");
158  alignTree_->Branch("dalpha", &dalphaVal_, "dalpha/F");
159  alignTree_->Branch("dbeta", &dbetaVal_, "dbeta/F");
160  alignTree_->Branch("dgamma", &dgammaVal_, "dgamma/F");
161  alignTree_->Branch("du", &duVal_, "du/F");
162  alignTree_->Branch("dv", &dvVal_, "dv/F");
163  alignTree_->Branch("dw", &dwVal_, "dw/F");
164  alignTree_->Branch("da", &daVal_, "da/F");
165  alignTree_->Branch("db", &dbVal_, "db/F");
166  alignTree_->Branch("dg", &dgVal_, "dg/F");
167  alignTree_->Branch("useDetId", &useDetId_, "useDetId/I");
168  alignTree_->Branch("detDim", &detDim_, "detDim/I");
169  alignTree_->Branch("surW", &surWidth_, "surW/F");
170  alignTree_->Branch("surL", &surLength_, "surL/F");
171  alignTree_->Branch("surRot", &surRot_, "surRot[9]/D");
172  alignTree_->Branch("identifiers", &identifiers_, "identifiers[6]/I");
173  alignTree_->Branch("type", &type_, "type/I");
174  alignTree_->Branch("surfDeform", &surfDeform_, "surfDeform[13]/D");
175 
176  for (std::vector<TrackerMap>::iterator it = m_vtkmap_.begin(); it != m_vtkmap_.end(); ++it) {
177  it->setPalette(1);
178  it->addPixel(true);
179  }
180 
182  TFileDirectory subDir_All = fs->mkdir("AllSubdetectors");
183  TFileDirectory subDir_PXB = fs->mkdir("PixelBarrel");
184  TFileDirectory subDir_PXF = fs->mkdir("PixelEndcap");
185  for (int ii = 0; ii < 13; ++ii) {
186  std::stringstream histname0;
187  histname0 << "SurfDeform_Par_" << ii;
188  m_h1_[histname0.str()] = subDir_All.make<TH1D>(
189  (histname0.str()).c_str(), (histname0.str()).c_str(), m_nBins_, m_rangeLow_, m_rangeHigh_);
190 
191  std::stringstream histname1;
192  histname1 << "SurfDeform_PixelBarrel_Par_" << ii;
193  m_h1_[histname1.str()] = subDir_PXB.make<TH1D>(
194  (histname1.str()).c_str(), (histname1.str()).c_str(), m_nBins_, m_rangeLow_, m_rangeHigh_);
195 
196  std::stringstream histname2;
197  histname2 << "SurfDeform_PixelEndcap_Par_" << ii;
198  m_h1_[histname2.str()] = subDir_PXF.make<TH1D>(
199  (histname2.str()).c_str(), (histname2.str()).c_str(), m_nBins_, m_rangeLow_, m_rangeHigh_);
200  }
201 }
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
const std::vector< std::string > levelStrings_
const Alignments * theSurveyValues
std::vector< TrackerMap > m_vtkmap_
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
AlignableTracker * dummyTracker
std::map< std::string, TH1D * > m_h1_
std::vector< int > moduleList_
const edm::ESGetToken< SiStripQuality, SiStripQualityRcd > stripQualityToken_
T * make(const Args &...args) const
make new ROOT object
std::vector< uint32_t > detIdFlagVector_
const edm::ESGetToken< DDCompactView, IdealGeometryRecord > cpvTokenDDD_
std::vector< unsigned int > weightByIdVector_
ii
Definition: cuy.py:589
AlignableTracker * currentTracker
const edm::ESGetToken< cms::DDCompactView, IdealGeometryRecord > cpvTokenDD4hep_
align::StructureType commonTrackerLevel_
AlignableTracker * referenceTracker
const SurveyErrors * theSurveyErrors
const edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd > pixQualityToken_

Member Function Documentation

◆ addSurveyInfo()

void TrackerGeometryCompare::addSurveyInfo ( Alignable ali)
private

Definition at line 978 of file TrackerGeometryCompare.cc.

References Alignable::alignableObjectId(), AlCaHLTBitMon_QueryRunRegistry::comp, Alignable::components(), relativeConstraints::error, Exception, Alignable::geomDetId(), mps_fire::i, AlignableSurface::length(), Alignments::m_align, SurveyErrors::m_surveyErrors, DetId::rawId(), makeMuonMisalignmentScenario::rot, AlignableSurface::setLength(), Alignable::setSurvey(), AlignableSurface::setWidth(), Alignable::surface(), theSurveyErrors, theSurveyIndex, theSurveyValues, and AlignableSurface::width().

978  {
979  const auto& comp = ali->components();
980 
981  unsigned int nComp = comp.size();
982 
983  for (unsigned int i = 0; i < nComp; ++i)
984  addSurveyInfo(comp[i]);
985 
987 
988  if (ali->geomDetId().rawId() != error.rawId() || ali->alignableObjectId() != error.structureType()) {
989  throw cms::Exception("DatabaseError") << "Error reading survey info from DB. Mismatched id!";
990  }
991 
992  const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[theSurveyIndex].translation();
993  const CLHEP::HepRotation& rot = theSurveyValues->m_align[theSurveyIndex].rotation();
994 
995  AlignableSurface surf(
996  align::PositionType(pos.x(), pos.y(), pos.z()),
997  align::RotationType(rot.xx(), rot.xy(), rot.xz(), rot.yx(), rot.yy(), rot.yz(), rot.zx(), rot.zy(), rot.zz()));
998 
999  surf.setWidth(ali->surface().width());
1000  surf.setLength(ali->surface().length());
1001 
1002  ali->setSurvey(new SurveyDet(surf, error.matrix()));
1003 
1004  ++theSurveyIndex;
1005 }
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
const Alignments * theSurveyValues
void addSurveyInfo(Alignable *ali)
align::Scalar width() const
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
virtual const Alignables & components() const =0
Return vector of all direct components.
const DetId & geomDetId() const
Definition: Alignable.h:177
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
void setSurvey(const SurveyDet *)
Set survey info.
Definition: Alignable.cc:266
align::Scalar length() const
const SurveyErrors * theSurveyErrors
std::vector< SurveyError > m_surveyErrors
Definition: SurveyErrors.h:22

◆ analyze()

void TrackerGeometryCompare::analyze ( const edm::Event ,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 245 of file TrackerGeometryCompare.cc.

References AlignableTracker::alignmentErrors(), AlignableTracker::alignments(), cond::service::PoolDBOutputService::beginOfTime(), compareGeometries(), compareSurfaceDeformations(), createROOTGeometry(), currentTracker, firstEvent_, edm::EventSetup::getData(), inputTree11_, inputTree12_, edm::Service< T >::isAvailable(), personalPlayback::level, levelStrings_, m_theLevels, AlignableTracker::objectIdProvider(), referenceTracker, setCommonTrackerSystem(), setCommonTrackerSystem_, AlignableObjectId::stringToId(), topoToken_, cond::service::PoolDBOutputService::writeOneIOV(), and writeToDB_.

245  {
246  if (firstEvent_) {
247  //Retrieve tracker topology from geometry
248  const TrackerTopology* const tTopo = &iSetup.getData(topoToken_);
249 
250  //upload the ROOT geometries
251  createROOTGeometry(iSetup);
252 
253  //setting the levels being used in the geometry comparator
254  edm::LogInfo("TrackerGeometryCompare") << "levels: " << levelStrings_.size();
255  for (const auto& level : levelStrings_) {
257  edm::LogInfo("TrackerGeometryCompare") << "level: " << level;
258  edm::LogInfo("TrackerGeometryCompare")
259  << "structure type: " << currentTracker->objectIdProvider().stringToId(level);
260  }
261 
262  //set common tracker system first
263  // if setting the tracker common system
264  if (setCommonTrackerSystem_ != "NONE") {
266  }
267 
268  //compare the goemetries
271 
272  //write out ntuple
273  //might be better to do within output module
274 
275  if (writeToDB_) {
276  Alignments* myAlignments = currentTracker->alignments();
277  AlignmentErrorsExtended* myAlignmentErrorsExtended = currentTracker->alignmentErrors();
278 
279  // 2. Store alignment[Error]s to DB
281  // Call service
282  if (!poolDbService.isAvailable()) // Die if not available
283  throw cms::Exception("NotAvailable") << "PoolDBOutputService not available";
284 
285  poolDbService->writeOneIOV<Alignments>(*myAlignments, poolDbService->beginOfTime(), "TrackerAlignmentRcd");
286  poolDbService->writeOneIOV<AlignmentErrorsExtended>(
287  *myAlignmentErrorsExtended, poolDbService->beginOfTime(), "TrackerAlignmentErrorExtendedRcd");
288  }
289 
290  firstEvent_ = false;
291  }
292 }
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
Alignments * alignments() const override
Return alignments, sorted by DetId.
void compareGeometries(Alignable *refAli, Alignable *curAli, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
std::vector< align::StructureType > m_theLevels
const std::vector< std::string > levelStrings_
Hash writeOneIOV(const T &payload, Time_t time, const std::string &recordName)
Log< level::Info, false > LogInfo
AlignableTracker * currentTracker
AlignmentErrorsExtended * alignmentErrors() const override
Return alignment errors, sorted by DetId.
align::StructureType stringToId(const char *) const
AlignableTracker * referenceTracker
void createROOTGeometry(const edm::EventSetup &iSetup)
const AlignableObjectId & objectIdProvider() const
Return tracker alignable object ID provider derived from the tracker&#39;s geometry.
bool isAvailable() const
Definition: Service.h:40
void compareSurfaceDeformations(TTree *_inputTree11, TTree *_inputTree12)

◆ beginJob()

void TrackerGeometryCompare::beginJob ( )
overridevirtual

Read from DB and print survey info.

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 225 of file TrackerGeometryCompare.cc.

References firstEvent_.

◆ compareGeometries()

void TrackerGeometryCompare::compareGeometries ( Alignable refAli,
Alignable curAli,
const TrackerTopology tTopo,
const edm::EventSetup iSetup 
)
private

Definition at line 625 of file TrackerGeometryCompare.cc.

References Alignable::alignableObjectId(), RPCNoise_example::check, Alignable::components(), change_name::diff, align::diffAlignables(), HGC3DClusterGenMatchSelector_cfi::dR, MillePedeFileConverter_cfg::e, Exception, fillTree(), Alignable::geomDetId(), mps_fire::i, Alignable::id(), m_theLevels, PV3DBase< T, PVType, FrameType >::mag(), align::moveAlignable(), DetId::rawId(), makeMuonMisalignmentScenario::rot, tolerance, weightBy_, weightById_, and weightByIdVector_.

Referenced by analyze().

628  {
629  using namespace align;
630 
631  const auto& refComp = refAli->components();
632  const auto& curComp = curAli->components();
633 
634  unsigned int nComp = refComp.size();
635  //only perform for designate levels
636  bool useLevel = false;
637  for (unsigned int i = 0; i < m_theLevels.size(); ++i) {
638  if (refAli->alignableObjectId() == m_theLevels[i])
639  useLevel = true;
640  }
641 
642  //another added level for difference between det and detunit
643  //if ((refAli->alignableObjectId()==2)&&(nComp == 1)) useLevel = false;
644 
645  //coordinate matching, etc etc
646  if (useLevel) {
647  DetId detid(refAli->id());
648 
649  CLHEP::Hep3Vector Rtotal, Wtotal, lRtotal, lWtotal;
650  Rtotal.set(0., 0., 0.);
651  Wtotal.set(0., 0., 0.);
652  lRtotal.set(0., 0., 0.);
653  lWtotal.set(0., 0., 0.);
654 
655  bool converged = false;
656 
658 
659  for (int i = 0; i < 100; i++) {
660  // Get differences between alignments for rotations and translations
661  // both local and global
663 
664  // 'diffAlignables' returns 'refAli - curAli' for translations and 'curAli - refAli' for rotations.
665  // The plan is to unify this at some point, but a simple change of the sign for one of them was postponed
666  // to do some further checks to understand the rotations better
667  //Updated July 2018: as requested the sign in the translations has been changed to match the one in rotations. A test was done to change the diffAlignables function and solve the issue there, but proved quite time consuming. To unify the sign convention in the least amount of time the choice was made to change the sign here.
668  CLHEP::Hep3Vector dR(-diff[0], -diff[1], -diff[2]);
669  CLHEP::Hep3Vector dW(diff[3], diff[4], diff[5]);
670  CLHEP::Hep3Vector dRLocal(-diff[6], -diff[7], -diff[8]);
671  CLHEP::Hep3Vector dWLocal(diff[9], diff[10], diff[11]);
672 
673  // Translations
674  Rtotal += dR;
675  lRtotal += dRLocal;
676 
677  //Rotations
678  CLHEP::HepRotation rot(Wtotal.unit(), Wtotal.mag());
679  CLHEP::HepRotation drot(dW.unit(), dW.mag());
680  rot *= drot;
681  Wtotal.set(rot.axis().x() * rot.delta(), rot.axis().y() * rot.delta(), rot.axis().z() * rot.delta());
682 
683  CLHEP::HepRotation rotLocal(lWtotal.unit(), lWtotal.mag());
684  CLHEP::HepRotation drotLocal(dWLocal.unit(), dWLocal.mag());
685  rotLocal *= drotLocal;
686  lWtotal.set(rotLocal.axis().x() * rotLocal.delta(),
687  rotLocal.axis().y() * rotLocal.delta(),
688  rotLocal.axis().z() * rotLocal.delta());
689 
690  // Move current alignable by shift and check if difference
691  // is smaller than tolerance value
692  // if true, break the loop
693  align::moveAlignable(curAli, diff);
694  float tolerance = 1e-7;
696  align::GlobalVector checkR(check[0], check[1], check[2]);
697  align::GlobalVector checkW(check[3], check[4], check[5]);
698  if ((checkR.mag() < tolerance) && (checkW.mag() < tolerance)) {
699  converged = true;
700  break;
701  }
702  }
703 
704  // give an exception if difference has not fallen below tolerance level
705  // i.e. method has not converged
706  if (!converged) {
707  edm::LogInfo("TrackerGeometryCompare")
708  << "Tolerance Exceeded!(alObjId: " << refAli->alignableObjectId()
709  << ", rawId: " << refAli->geomDetId().rawId() << ", subdetId: " << detid.subdetId() << "): " << diff << check;
710  throw cms::Exception("Tolerance in TrackerGeometryCompare exceeded");
711  }
712 
713  AlgebraicVector TRtot(12);
714  // global
715  TRtot(1) = Rtotal.x();
716  TRtot(2) = Rtotal.y();
717  TRtot(3) = Rtotal.z();
718  TRtot(4) = Wtotal.x();
719  TRtot(5) = Wtotal.y();
720  TRtot(6) = Wtotal.z();
721  // local
722  TRtot(7) = lRtotal.x();
723  TRtot(8) = lRtotal.y();
724  TRtot(9) = lRtotal.z();
725  TRtot(10) = lWtotal.x();
726  TRtot(11) = lWtotal.y();
727  TRtot(12) = lWtotal.z();
728 
729  fillTree(refAli, TRtot, tTopo, iSetup);
730  }
731 
732  // another added level for difference between det and detunit
733  for (unsigned int i = 0; i < nComp; ++i)
734  compareGeometries(refComp[i], curComp[i], tTopo, iSetup);
735 }
void compareGeometries(Alignable *refAli, Alignable *curAli, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
std::vector< align::StructureType > m_theLevels
const double tolerance
AlgebraicVector diffAlignables(Alignable *refAli, Alignable *curAli, const std::string &weightBy, bool weightById, const std::vector< unsigned int > &weightByIdVector)
Definition: AlignTools.cc:10
std::vector< unsigned int > weightByIdVector_
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
virtual const Alignables & components() const =0
Return vector of all direct components.
void fillTree(Alignable *refAli, const AlgebraicVector &diff, const TrackerTopology *tTopo, const edm::EventSetup &iSetup)
Log< level::Info, false > LogInfo
Definition: DetId.h:17
CLHEP::HepVector AlgebraicVector
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
const DetId & geomDetId() const
Definition: Alignable.h:177
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
void moveAlignable(Alignable *ali, AlgebraicVector diff)
Moves the alignable by the AlgebraicVector.
Definition: AlignTools.cc:84

◆ compareSurfaceDeformations()

void TrackerGeometryCompare::compareSurfaceDeformations ( TTree *  _inputTree11,
TTree *  _inputTree12 
)
private

Definition at line 473 of file TrackerGeometryCompare.cc.

References cuy::ii, inputFilename1_, inputFilename2_, inputRootFile1_, inputRootFile2_, inputTreenameDeform_, createfilelist::int, m_h1_, m_nBins_, m_rangeHigh_, m_rangeLow_, m_vtkmap_, and surfDeform_.

Referenced by analyze().

473  {
474  if (inputFilename1_ != "IDEAL" && inputFilename2_ != "IDEAL") {
475  int inputRawid1;
476  int inputRawid2;
477  int inputSubdetid1, inputSubdetid2;
478  int inputDtype1, inputDtype2;
479  std::vector<double> inputDpar1;
480  std::vector<double> inputDpar2;
481  std::vector<double>* p_inputDpar1 = &inputDpar1;
482  std::vector<double>* p_inputDpar2 = &inputDpar2;
483 
484  TTree* refTree = (TTree*)inputRootFile1_->Get(inputTreenameDeform_.c_str());
485  refTree->SetBranchAddress("irawid", &inputRawid1);
486  refTree->SetBranchAddress("subdetid", &inputSubdetid1);
487  refTree->SetBranchAddress("dtype", &inputDtype1);
488  refTree->SetBranchAddress("dpar", &p_inputDpar1);
489 
490  TTree* curTree = (TTree*)inputRootFile2_->Get(inputTreenameDeform_.c_str());
491  curTree->SetBranchAddress("irawid", &inputRawid2);
492  curTree->SetBranchAddress("subdetid", &inputSubdetid2);
493  curTree->SetBranchAddress("dtype", &inputDtype2);
494  curTree->SetBranchAddress("dpar", &p_inputDpar2);
495 
496  unsigned int nEntries11 = refTree->GetEntries();
497  unsigned int nEntries12 = curTree->GetEntries();
498 
499  if (nEntries11 != nEntries12) {
500  edm::LogError("TrackerGeometryCompare") << " Surface deformation parameters in two geometries differ!\n";
501  return;
502  }
503 
504  for (unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
505  refTree->GetEntry(iEntry);
506  curTree->GetEntry(iEntry);
507  for (int ii = 0; ii < 13; ++ii) {
508  surfDeform_[ii] = -1.0;
509  }
510  for (int npar = 0; npar < int(inputDpar2.size()); ++npar) {
511  if (inputRawid1 == inputRawid2) {
512  surfDeform_[npar] = inputDpar2.at(npar) - inputDpar1.at(npar);
513  std::stringstream histname0;
514  histname0 << "SurfDeform_Par_" << npar;
515  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
516  m_h1_[histname0.str()]->Fill(surfDeform_[npar]);
517  if (inputSubdetid1 == 1 && inputSubdetid2 == 1) {
518  std::stringstream histname1;
519  histname1 << "SurfDeform_PixelBarrel_Par_" << npar;
520  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
521  m_h1_[histname1.str()]->Fill(surfDeform_[npar]);
522  }
523  if (inputSubdetid1 == 2 && inputSubdetid2 == 2) {
524  std::stringstream histname2;
525  histname2 << "SurfDeform_PixelEndcap_Par_" << npar;
526  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
527  m_h1_[histname2.str()]->Fill(surfDeform_[npar]);
528  }
529  (m_vtkmap_.at(npar)).fill_current_val(inputRawid1, surfDeform_[npar]);
530  }
531  }
532  }
533 
534  } else if (inputFilename1_ == "IDEAL" && inputFilename2_ != "IDEAL") {
535  int inputRawid2;
536  int inputSubdetid2;
537  int inputDtype2;
538  std::vector<double> inputDpar2;
539  std::vector<double>* p_inputDpar2 = &inputDpar2;
540 
541  TTree* curTree = (TTree*)inputRootFile2_->Get(inputTreenameDeform_.c_str());
542  curTree->SetBranchAddress("irawid", &inputRawid2);
543  curTree->SetBranchAddress("subdetid", &inputSubdetid2);
544  curTree->SetBranchAddress("dtype", &inputDtype2);
545  curTree->SetBranchAddress("dpar", &p_inputDpar2);
546 
547  unsigned int nEntries12 = curTree->GetEntries();
548 
549  for (unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
550  curTree->GetEntry(iEntry);
551  for (int ii = 0; ii < 12; ++ii) {
552  surfDeform_[ii] = -1.0;
553  }
554  for (int npar = 0; npar < int(inputDpar2.size()); ++npar) {
555  surfDeform_[npar] = inputDpar2.at(npar);
556  std::stringstream histname0;
557  histname0 << "SurfDeform_Par_" << npar;
558  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
559  m_h1_[histname0.str()]->Fill(surfDeform_[npar]);
560  if (inputSubdetid2 == 1) {
561  std::stringstream histname1;
562  histname1 << "SurfDeform_PixelBarrel_Par_" << npar;
563  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
564  m_h1_[histname1.str()]->Fill(surfDeform_[npar]);
565  }
566  if (inputSubdetid2 == 2) {
567  std::stringstream histname2;
568  histname2 << "SurfDeform_PixelEndcap_Par_" << npar;
569  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
570  m_h1_[histname2.str()]->Fill(surfDeform_[npar]);
571  }
572  (m_vtkmap_.at(npar)).fill_current_val(inputRawid2, surfDeform_[npar]);
573  }
574  }
575 
576  } else if (inputFilename1_ != "IDEAL" && inputFilename2_ == "IDEAL") {
577  int inputRawid1;
578  int inputSubdetid1;
579  int inputDtype1;
580  std::vector<double> inputDpar1;
581  std::vector<double>* p_inputDpar1 = &inputDpar1;
582 
583  TTree* refTree = (TTree*)inputRootFile1_->Get(inputTreenameDeform_.c_str());
584  refTree->SetBranchAddress("irawid", &inputRawid1);
585  refTree->SetBranchAddress("subdetid", &inputSubdetid1);
586  refTree->SetBranchAddress("dtype", &inputDtype1);
587  refTree->SetBranchAddress("dpar", &p_inputDpar1);
588 
589  unsigned int nEntries11 = refTree->GetEntries();
590 
591  for (unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
592  refTree->GetEntry(iEntry);
593  for (int ii = 0; ii < 12; ++ii) {
594  surfDeform_[ii] = -1.0;
595  }
596  for (int npar = 0; npar < int(inputDpar1.size()); ++npar) {
597  surfDeform_[npar] = -inputDpar1.at(npar);
598  std::stringstream histname0;
599  histname0 << "SurfDeform_Par_" << npar;
600  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
601  m_h1_[histname0.str()]->Fill(surfDeform_[npar]);
602  if (inputSubdetid1 == 1) {
603  std::stringstream histname1;
604  histname1 << "SurfDeform_PixelBarrel_Par_" << npar;
605  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
606  m_h1_[histname1.str()]->Fill(surfDeform_[npar]);
607  }
608  if (inputSubdetid1 == 2) {
609  std::stringstream histname2;
610  histname2 << "SurfDeform_PixelEndcap_Par_" << npar;
611  if (TMath::Abs(surfDeform_[npar]) > (m_rangeHigh_ - m_rangeLow_) / (10. * m_nBins_))
612  m_h1_[histname2.str()]->Fill(surfDeform_[npar]);
613  }
614  (m_vtkmap_.at(npar)).fill_current_val(inputRawid1, surfDeform_[npar]);
615  }
616  }
617 
618  } else if (inputFilename1_ == "IDEAL" && inputFilename2_ == "IDEAL") {
619  edm::LogInfo("TrackerGeometryCompare") << ">>>> Comparing IDEAL with IDEAL: nothing to do! <<<<\n";
620  }
621 
622  return;
623 }
std::vector< TrackerMap > m_vtkmap_
Log< level::Error, false > LogError
std::map< std::string, TH1D * > m_h1_
ii
Definition: cuy.py:589
Log< level::Info, false > LogInfo

◆ createROOTGeometry()

void TrackerGeometryCompare::createROOTGeometry ( const edm::EventSetup iSetup)
private

Definition at line 294 of file TrackerGeometryCompare.cc.

References GeometryAligner::applyAlignments(), TrackerGeomBuilderFromGeometricDet::build(), cpvTokenDD4hep_, cpvTokenDDD_, SurfaceDeformationFactory::create(), currentTracker, Alignable::deepComponents(), fromDD4hep_, geomDetToken_, edm::EventSetup::getData(), edm::EventSetup::getTransientHandle(), mps_fire::i, inputFilename1_, inputFilename2_, inputRootFile1_, inputRootFile2_, inputTree01_, inputTree02_, inputTree11_, inputTree12_, inputTreenameAlign_, inputTreenameDeform_, mps_splice::line, Alignments::m_align, AlignmentErrorsExtended::m_alignError, moduleList_, moduleListFile_, moduleListName_, ptpToken_, referenceTracker, jetUpdater_cfi::sort, AlCaHLTBitMon_QueryRunRegistry::string, and topoToken_.

Referenced by analyze().

294  {
295  int inputRawId1, inputRawId2;
296  double inputX1, inputY1, inputZ1, inputX2, inputY2, inputZ2;
297  double inputAlpha1, inputBeta1, inputGamma1, inputAlpha2, inputBeta2, inputGamma2;
298 
299  //Retrieve tracker topology from geometry
300  const TrackerTopology* const tTopo = &iSetup.getData(topoToken_);
301 
302  // Fill module IDs from file into a list
304  if (moduleListFile_.is_open()) {
306  while (!moduleListFile_.eof()) {
307  std::getline(moduleListFile_, line);
308  moduleList_.push_back(std::atoi(line.c_str()));
309  }
310  } else {
311  edm::LogInfo("TrackerGeometryCompare") << "Error: Module list not found! Please verify that given list exists!";
312  }
313 
314  //declare alignments
315  Alignments* alignments1 = new Alignments();
316  AlignmentErrorsExtended* alignmentErrors1 = new AlignmentErrorsExtended();
317  if (inputFilename1_ != "IDEAL") {
318  inputRootFile1_ = new TFile(inputFilename1_.c_str());
319  TTree* inputTree01_ = (TTree*)inputRootFile1_->Get(inputTreenameAlign_.c_str());
320  inputTree01_->SetBranchAddress("rawid", &inputRawId1);
321  inputTree01_->SetBranchAddress("x", &inputX1);
322  inputTree01_->SetBranchAddress("y", &inputY1);
323  inputTree01_->SetBranchAddress("z", &inputZ1);
324  inputTree01_->SetBranchAddress("alpha", &inputAlpha1);
325  inputTree01_->SetBranchAddress("beta", &inputBeta1);
326  inputTree01_->SetBranchAddress("gamma", &inputGamma1);
327 
328  int nEntries1 = inputTree01_->GetEntries();
329  //fill alignments
330  for (int i = 0; i < nEntries1; ++i) {
331  inputTree01_->GetEntry(i);
332  CLHEP::Hep3Vector translation1(inputX1, inputY1, inputZ1);
333  CLHEP::HepEulerAngles eulerangles1(inputAlpha1, inputBeta1, inputGamma1);
334  uint32_t detid1 = inputRawId1;
335  AlignTransform transform1(translation1, eulerangles1, detid1);
336  alignments1->m_align.push_back(transform1);
337 
338  // dummy errors
339  // APE matrix was 3x3, now it's 6x6 (because of muons), see PR #6483
340  CLHEP::HepSymMatrix clhepSymMatrix(6, 0);
341  AlignTransformErrorExtended transformError(clhepSymMatrix, detid1);
342  alignmentErrors1->m_alignError.push_back(transformError);
343  }
344 
345  // to get the right order, sort by rawId
346  std::sort(alignments1->m_align.begin(), alignments1->m_align.end());
347  std::sort(alignmentErrors1->m_alignError.begin(), alignmentErrors1->m_alignError.end());
348  }
349  //------------------
350  Alignments* alignments2 = new Alignments();
351  AlignmentErrorsExtended* alignmentErrors2 = new AlignmentErrorsExtended();
352  if (inputFilename2_ != "IDEAL") {
353  inputRootFile2_ = new TFile(inputFilename2_.c_str());
354  TTree* inputTree02_ = (TTree*)inputRootFile2_->Get(inputTreenameAlign_.c_str());
355  inputTree02_->SetBranchAddress("rawid", &inputRawId2);
356  inputTree02_->SetBranchAddress("x", &inputX2);
357  inputTree02_->SetBranchAddress("y", &inputY2);
358  inputTree02_->SetBranchAddress("z", &inputZ2);
359  inputTree02_->SetBranchAddress("alpha", &inputAlpha2);
360  inputTree02_->SetBranchAddress("beta", &inputBeta2);
361  inputTree02_->SetBranchAddress("gamma", &inputGamma2);
362 
363  int nEntries2 = inputTree02_->GetEntries();
364  //fill alignments
365  for (int i = 0; i < nEntries2; ++i) {
366  inputTree02_->GetEntry(i);
367  CLHEP::Hep3Vector translation2(inputX2, inputY2, inputZ2);
368  CLHEP::HepEulerAngles eulerangles2(inputAlpha2, inputBeta2, inputGamma2);
369  uint32_t detid2 = inputRawId2;
370  AlignTransform transform2(translation2, eulerangles2, detid2);
371  alignments2->m_align.push_back(transform2);
372 
373  // dummy errors
374  // APE matrix was 3x3, now it's 6x6 (because of muons), see PR #6483
375  CLHEP::HepSymMatrix clhepSymMatrix(6, 0);
376  AlignTransformErrorExtended transformError(clhepSymMatrix, detid2);
377  alignmentErrors2->m_alignError.push_back(transformError);
378  }
379 
380  // to get the right order, sort by rawId
381  std::sort(alignments2->m_align.begin(), alignments2->m_align.end());
382  std::sort(alignmentErrors2->m_alignError.begin(), alignmentErrors2->m_alignError.end());
383  }
384 
385  //accessing the initial geometry
386  if (!fromDD4hep_) {
388  } else {
390  }
391 
392  const GeometricDet* theGeometricDet = &iSetup.getData(geomDetToken_);
393  const PTrackerParameters* ptp = &iSetup.getData(ptpToken_);
394  TrackerGeomBuilderFromGeometricDet trackerBuilder;
395 
396  //reference tracker
397  TrackerGeometry* theRefTracker = trackerBuilder.build(theGeometricDet, *ptp, tTopo);
398  if (inputFilename1_ != "IDEAL") {
399  GeometryAligner aligner1;
401  &(*theRefTracker), &(*alignments1), &(*alignmentErrors1), AlignTransform());
402  }
403  referenceTracker = new AlignableTracker(&(*theRefTracker), tTopo);
404  //referenceTracker->setSurfaceDeformation(surfDef1, true) ;
405 
406  int inputRawid1;
407  int inputRawid2;
408  int inputDtype1, inputDtype2;
409  std::vector<double> inputDpar1;
410  std::vector<double> inputDpar2;
411  std::vector<double>* p_inputDpar1 = &inputDpar1;
412  std::vector<double>* p_inputDpar2 = &inputDpar2;
413 
414  const auto& comp1 = referenceTracker->deepComponents();
415 
416  SurfaceDeformation* surfDef1;
417  if (inputFilename1_ != "IDEAL") {
418  TTree* inputTree11_ = (TTree*)inputRootFile1_->Get(inputTreenameDeform_.c_str());
419  inputTree11_->SetBranchAddress("irawid", &inputRawid1);
420  inputTree11_->SetBranchAddress("dtype", &inputDtype1);
421  inputTree11_->SetBranchAddress("dpar", &p_inputDpar1);
422 
423  unsigned int nEntries11 = inputTree11_->GetEntries();
424  edm::LogInfo("TrackerGeometryCompare") << " nentries11 = " << nEntries11;
425  for (unsigned int iEntry = 0; iEntry < nEntries11; ++iEntry) {
426  inputTree11_->GetEntry(iEntry);
427 
428  surfDef1 = SurfaceDeformationFactory::create(inputDtype1, inputDpar1);
429 
430  if (int(comp1[iEntry]->id()) == inputRawid1) {
431  comp1[iEntry]->setSurfaceDeformation(surfDef1, true);
432  }
433  }
434  }
435 
436  //currernt tracker
437  TrackerGeometry* theCurTracker = trackerBuilder.build(&*theGeometricDet, *ptp, tTopo);
438  if (inputFilename2_ != "IDEAL") {
439  GeometryAligner aligner2;
441  &(*theCurTracker), &(*alignments2), &(*alignmentErrors2), AlignTransform());
442  }
443  currentTracker = new AlignableTracker(&(*theCurTracker), tTopo);
444 
445  const auto& comp2 = currentTracker->deepComponents();
446 
447  SurfaceDeformation* surfDef2;
448  if (inputFilename2_ != "IDEAL") {
449  TTree* inputTree12_ = (TTree*)inputRootFile2_->Get(inputTreenameDeform_.c_str());
450  inputTree12_->SetBranchAddress("irawid", &inputRawid2);
451  inputTree12_->SetBranchAddress("dtype", &inputDtype2);
452  inputTree12_->SetBranchAddress("dpar", &p_inputDpar2);
453 
454  unsigned int nEntries12 = inputTree12_->GetEntries();
455  edm::LogInfo("TrackerGeometryCompare") << " nentries12 = " << nEntries12;
456  for (unsigned int iEntry = 0; iEntry < nEntries12; ++iEntry) {
457  inputTree12_->GetEntry(iEntry);
458 
459  surfDef2 = SurfaceDeformationFactory::create(inputDtype2, inputDpar2);
460 
461  if (int(comp2[iEntry]->id()) == inputRawid2) {
462  comp2[iEntry]->setSurfaceDeformation(surfDef2, true);
463  }
464  }
465  }
466 
467  delete alignments1;
468  delete alignmentErrors1;
469  delete alignments2;
470  delete alignmentErrors2;
471 }
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
Class to update a given geometry with a set of alignments.
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
const Alignables & deepComponents() const
Definition: Alignable.h:72
std::vector< int > moduleList_
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
void applyAlignments(const C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
const edm::ESGetToken< DDCompactView, IdealGeometryRecord > cpvTokenDDD_
Log< level::Info, false > LogInfo
AlignableTracker * currentTracker
std::vector< AlignTransformErrorExtended > m_alignError
const edm::ESGetToken< cms::DDCompactView, IdealGeometryRecord > cpvTokenDD4hep_
AlignableTracker * referenceTracker
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:141
SurfaceDeformation * create(int type, const std::vector< double > &params)

◆ diffCommonTrackerSystem()

void TrackerGeometryCompare::diffCommonTrackerSystem ( Alignable refAli,
Alignable curAli 
)
private

Definition at line 781 of file TrackerGeometryCompare.cc.

References Alignable::alignableObjectId(), commonTrackerLevel_, Alignable::components(), change_name::diff, align::diffAlignables(), HGC3DClusterGenMatchSelector_cfi::dR, Alignable::globalPosition(), mps_fire::i, makeMuonMisalignmentScenario::rot, TrackerCommonCM_, TrackerCommonR_, TrackerCommonT_, weightBy_, weightById_, and weightByIdVector_.

Referenced by setCommonTrackerSystem().

781  {
782  const auto& refComp = refAli->components();
783  const auto& curComp = curAli->components();
784 
785  unsigned int nComp = refComp.size();
786  //only perform for designate levels
787  bool useLevel = false;
788  if (refAli->alignableObjectId() == commonTrackerLevel_)
789  useLevel = true;
790 
791  //useLevel = false;
792  if (useLevel) {
793  CLHEP::Hep3Vector Rtotal, Wtotal;
794  Rtotal.set(0., 0., 0.);
795  Wtotal.set(0., 0., 0.);
796 
798  CLHEP::Hep3Vector dR(diff[0], diff[1], diff[2]);
799  Rtotal += dR;
800  CLHEP::Hep3Vector dW(diff[3], diff[4], diff[5]);
801  CLHEP::HepRotation rot(Wtotal.unit(), Wtotal.mag());
802  CLHEP::HepRotation drot(dW.unit(), dW.mag());
803  rot *= drot;
804  Wtotal.set(rot.axis().x() * rot.delta(), rot.axis().y() * rot.delta(), rot.axis().z() * rot.delta());
805 
806  TrackerCommonT_ = align::GlobalVector(Rtotal.x(), Rtotal.y(), Rtotal.z());
807  TrackerCommonR_ = align::GlobalVector(Wtotal.x(), Wtotal.y(), Wtotal.z());
808  TrackerCommonCM_ = curAli->globalPosition();
809 
810  } else {
811  for (unsigned int i = 0; i < nComp; ++i)
812  diffCommonTrackerSystem(refComp[i], curComp[i]);
813  }
814 }
align::GlobalVector TrackerCommonR_
Vector3DBase< Scalar, GlobalTag > GlobalVector
Definition: Definitions.h:31
AlgebraicVector diffAlignables(Alignable *refAli, Alignable *curAli, const std::string &weightBy, bool weightById, const std::vector< unsigned int > &weightByIdVector)
Definition: AlignTools.cc:10
void diffCommonTrackerSystem(Alignable *refAli, Alignable *curAli)
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:135
std::vector< unsigned int > weightByIdVector_
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
align::GlobalVector TrackerCommonT_
virtual const Alignables & components() const =0
Return vector of all direct components.
CLHEP::HepVector AlgebraicVector
align::StructureType commonTrackerLevel_
align::PositionType TrackerCommonCM_

◆ endJob()

void TrackerGeometryCompare::endJob ( void  )
overridevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 227 of file TrackerGeometryCompare.cc.

References alignTree_, m_vtkmap_, AlCaHLTBitMon_QueryRunRegistry::string, surfdir_, and theFile_.

Referenced by o2olib.O2ORunMgr::executeJob().

227  {
228  int iname(0);
229  for (std::vector<TrackerMap>::iterator it = m_vtkmap_.begin(); it != m_vtkmap_.end(); ++it) {
230  std::stringstream mapname;
231  mapname << surfdir_ << "/TkMap_SurfDeform" << iname << ".png";
232  it->save(true, 0, 0, mapname.str());
233  mapname.str(std::string());
234  mapname.clear();
235  mapname << surfdir_ << "/TkMap_SurfDeform" << iname << ".pdf";
236  it->save(true, 0, 0, mapname.str());
237  ++iname;
238  }
239 
240  theFile_->cd();
241  alignTree_->Write();
242  theFile_->Close();
243 }
std::vector< TrackerMap > m_vtkmap_

◆ fillDescriptions()

void TrackerGeometryCompare::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 203 of file TrackerGeometryCompare.cc.

References edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, and AlCaHLTBitMon_QueryRunRegistry::string.

203  {
205  desc.setComment("Validates alignment payloads by comparing positions of tracker modules positiona and orientations");
206  desc.addUntracked<std::vector<std::string> >("levels", {});
207  desc.addUntracked<bool>("fromDD4hep", false);
208  desc.addUntracked<bool>("writeToDB", false);
209  desc.addUntracked<std::string>("moduleList", "moduleList.txt");
210  desc.addUntracked<std::string>("inputROOTFile1", "IDEAL");
211  desc.addUntracked<std::string>("inputROOTFile2", "idealtracker2.root");
212  desc.addUntracked<std::string>("treeNameAlign", "alignTree");
213  desc.addUntracked<std::string>("treeNameDeform", "alignTreeDeformations");
214  desc.addUntracked<std::string>("outputFile", "output.root");
215  desc.addUntracked<std::string>("surfDir", ".");
216  desc.addUntracked<std::string>("weightBy", "DetUnit");
217  desc.addUntracked<std::string>("setCommonTrackerSystem", "NONE");
218  desc.addUntracked<bool>("detIdFlag", false);
219  desc.addUntracked<std::string>("detIdFlagFile", "blah.txt");
220  desc.addUntracked<bool>("weightById", false);
221  desc.addUntracked<std::string>("weightByIdFile", "blah2.txt");
222  descriptions.addWithDefaultLabel(desc);
223 }
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)

◆ fillIdentifiers()

void TrackerGeometryCompare::fillIdentifiers ( int  subdetlevel,
int  rawid,
const TrackerTopology tTopo 
)
private

Definition at line 1019 of file TrackerGeometryCompare.cc.

References identifiers_, TrackerTopology::pxbLadder(), TrackerTopology::pxbLayer(), TrackerTopology::pxbModule(), TrackerTopology::pxfBlade(), TrackerTopology::pxfDisk(), TrackerTopology::pxfModule(), TrackerTopology::pxfPanel(), TrackerTopology::pxfSide(), TrackerTopology::tecModule(), TrackerTopology::tecPetalInfo(), TrackerTopology::tecRing(), TrackerTopology::tecSide(), TrackerTopology::tecWheel(), TrackerTopology::tibLayer(), TrackerTopology::tibModule(), TrackerTopology::tibStringInfo(), TrackerTopology::tidModuleInfo(), TrackerTopology::tidRing(), TrackerTopology::tidSide(), TrackerTopology::tidWheel(), TrackerTopology::tobLayer(), TrackerTopology::tobModule(), and TrackerTopology::tobRodInfo().

Referenced by fillTree().

1019  {
1020  switch (subdetlevel) {
1021  case 1: {
1022  identifiers_[0] = tTopo->pxbModule(rawid);
1023  identifiers_[1] = tTopo->pxbLadder(rawid);
1024  identifiers_[2] = tTopo->pxbLayer(rawid);
1025  identifiers_[3] = 999;
1026  identifiers_[4] = 999;
1027  identifiers_[5] = 999;
1028  break;
1029  }
1030  case 2: {
1031  identifiers_[0] = tTopo->pxfModule(rawid);
1032  identifiers_[1] = tTopo->pxfPanel(rawid);
1033  identifiers_[2] = tTopo->pxfBlade(rawid);
1034  identifiers_[3] = tTopo->pxfDisk(rawid);
1035  identifiers_[4] = tTopo->pxfSide(rawid);
1036  identifiers_[5] = 999;
1037  break;
1038  }
1039  case 3: {
1040  identifiers_[0] = tTopo->tibModule(rawid);
1041  identifiers_[1] = tTopo->tibStringInfo(rawid)[0];
1042  identifiers_[2] = tTopo->tibStringInfo(rawid)[1];
1043  identifiers_[3] = tTopo->tibStringInfo(rawid)[2];
1044  identifiers_[4] = tTopo->tibLayer(rawid);
1045  identifiers_[5] = 999;
1046  break;
1047  }
1048  case 4: {
1049  identifiers_[0] = tTopo->tidModuleInfo(rawid)[0];
1050  identifiers_[1] = tTopo->tidModuleInfo(rawid)[1];
1051  identifiers_[2] = tTopo->tidRing(rawid);
1052  identifiers_[3] = tTopo->tidWheel(rawid);
1053  identifiers_[4] = tTopo->tidSide(rawid);
1054  identifiers_[5] = 999;
1055  break;
1056  }
1057  case 5: {
1058  identifiers_[0] = tTopo->tobModule(rawid);
1059  identifiers_[1] = tTopo->tobRodInfo(rawid)[0];
1060  identifiers_[2] = tTopo->tobRodInfo(rawid)[1];
1061  identifiers_[3] = tTopo->tobLayer(rawid);
1062  identifiers_[4] = 999;
1063  identifiers_[5] = 999;
1064  break;
1065  }
1066  case 6: {
1067  identifiers_[0] = tTopo->tecModule(rawid);
1068  identifiers_[1] = tTopo->tecRing(rawid);
1069  identifiers_[2] = tTopo->tecPetalInfo(rawid)[0];
1070  identifiers_[3] = tTopo->tecPetalInfo(rawid)[1];
1071  identifiers_[4] = tTopo->tecWheel(rawid);
1072  identifiers_[5] = tTopo->tecSide(rawid);
1073  break;
1074  }
1075  default: {
1076  edm::LogInfo("TrackerGeometryCompare") << "Error: bad subdetid!!";
1077  break;
1078  }
1079  }
1080 }
unsigned int tobLayer(const DetId &id) const
unsigned int pxbLayer(const DetId &id) const
std::vector< unsigned int > tidModuleInfo(const DetId &id) const
unsigned int pxfBlade(const DetId &id) const
unsigned int tibModule(const DetId &id) const
unsigned int tidSide(const DetId &id) const
unsigned int pxfModule(const DetId &id) const
std::vector< unsigned int > tecPetalInfo(const DetId &id) const
unsigned int tidWheel(const DetId &id) const
unsigned int tecWheel(const DetId &id) const
unsigned int pxbLadder(const DetId &id) const
unsigned int tecRing(const DetId &id) const
ring id
unsigned int tecModule(const DetId &id) const
unsigned int tecSide(const DetId &id) const
unsigned int pxfDisk(const DetId &id) const
unsigned int pxfPanel(const DetId &id) const
Log< level::Info, false > LogInfo
unsigned int pxfSide(const DetId &id) const
std::vector< unsigned int > tibStringInfo(const DetId &id) const
std::vector< unsigned int > tobRodInfo(const DetId &id) const
unsigned int tidRing(const DetId &id) const
unsigned int tibLayer(const DetId &id) const
unsigned int tobModule(const DetId &id) const
unsigned int pxbModule(const DetId &id) const

◆ fillTree()

void TrackerGeometryCompare::fillTree ( Alignable refAli,
const AlgebraicVector diff,
const TrackerTopology tTopo,
const edm::EventSetup iSetup 
)
private

Definition at line 816 of file TrackerGeometryCompare.cc.

References align::AlignableDet, align::AlignableDetUnit, Alignable::alignableObjectId(), alignTree_, alphaVal_, badModuleQuality_, betaVal_, dalphaVal_, daVal_, dbetaVal_, dbVal_, detDim_, detIdFlag_, dgammaVal_, dgVal_, change_name::diff, dphiVal_, drVal_, duVal_, dvVal_, dwVal_, dxVal_, dyVal_, dzVal_, PV3DBase< T, PVType, FrameType >::eta(), etaVal_, fillIdentifiers(), g, gammaVal_, Alignable::geomDetId(), edm::EventSetup::getData(), Alignable::globalPosition(), Alignable::globalRotation(), mps_fire::i, Alignable::id(), id_, inModuleList_, SiStripQuality::IsModuleBad(), SiPixelQuality::IsModuleBad(), AlignableSurface::length(), level_, mid_, mlevel_, moduleList_, Alignable::mother(), passIdCut(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), phiVal_, pixQualityToken_, DetId::rawId(), makeMuonMisalignmentScenario::rot, hcal_runs::rt, rVal_, stripQualityToken_, DetId::subdetId(), sublevel_, Alignable::surface(), surLength_, surRot_, surWidth_, align::toAngles(), useDetId_, AlignableSurface::width(), PV3DBase< T, PVType, FrameType >::x(), xVal_, PV3DBase< T, PVType, FrameType >::y(), yVal_, PV3DBase< T, PVType, FrameType >::z(), and zVal_.

Referenced by compareGeometries(), and core.AutoFillTreeProducer.AutoFillTreeProducer::process().

819  {
820  //Get bad modules
821  const SiPixelQuality* SiPixelModules = &iSetup.getData(pixQualityToken_);
822  const SiStripQuality* SiStripModules = &iSetup.getData(stripQualityToken_);
823 
824  id_ = refAli->id();
825 
826  badModuleQuality_ = 0;
827  //check if module has a bad quality tag
828  if (SiPixelModules->IsModuleBad(id_)) {
829  badModuleQuality_ = 1;
830  }
831  if (SiStripModules->IsModuleBad(id_)) {
832  badModuleQuality_ = 1;
833  }
834 
835  //check if module is in a given list of bad/untouched etc. modules
836  inModuleList_ = 0;
837  for (unsigned int i = 0; i < moduleList_.size(); i++) {
838  if (moduleList_[i] == id_) {
839  inModuleList_ = 1;
840  break;
841  }
842  }
843 
844  level_ = refAli->alignableObjectId();
845  //need if ali has no mother
846  if (refAli->mother()) {
847  mid_ = refAli->mother()->geomDetId().rawId();
848  mlevel_ = refAli->mother()->alignableObjectId();
849  } else {
850  mid_ = -1;
851  mlevel_ = -1;
852  }
853  DetId detid(id_);
854  sublevel_ = detid.subdetId();
855  fillIdentifiers(sublevel_, id_, tTopo);
856  xVal_ = refAli->globalPosition().x();
857  yVal_ = refAli->globalPosition().y();
858  zVal_ = refAli->globalPosition().z();
860  rVal_ = vec.perp();
861  phiVal_ = vec.phi();
862  etaVal_ = vec.eta();
864  align::EulerAngles eulerAngles = align::toAngles(rot);
865  alphaVal_ = eulerAngles[0];
866  betaVal_ = eulerAngles[1];
867  gammaVal_ = eulerAngles[2];
868  // global
869  dxVal_ = diff[0];
870  dyVal_ = diff[1];
871  dzVal_ = diff[2];
872  // local
873  duVal_ = diff[6];
874  dvVal_ = diff[7];
875  dwVal_ = diff[8];
876  //...TODO...
878  //getting dR and dPhi
881  drVal_ = vCur.perp() - vRef.perp();
882  dphiVal_ = vCur.phi() - vRef.phi();
883  // global
884  dalphaVal_ = diff[3];
885  dbetaVal_ = diff[4];
886  dgammaVal_ = diff[5];
887  // local
888  daVal_ = diff[9];
889  dbVal_ = diff[10];
890  dgVal_ = diff[11];
891 
892  //detIdFlag
893  if (refAli->alignableObjectId() == align::AlignableDetUnit) {
894  if (detIdFlag_) {
895  if ((passIdCut(refAli->id())) || (passIdCut(refAli->mother()->id()))) {
896  useDetId_ = 1;
897  } else {
898  useDetId_ = 0;
899  }
900  }
901  }
902  // det module dimension
903  if (refAli->alignableObjectId() == align::AlignableDetUnit) {
904  if (refAli->mother()->alignableObjectId() != align::AlignableDet)
905  detDim_ = 1;
906  else if (refAli->mother()->alignableObjectId() == align::AlignableDet)
907  detDim_ = 2;
908  } else
909  detDim_ = 0;
910 
911  surWidth_ = refAli->surface().width();
912  surLength_ = refAli->surface().length();
914  surRot_[0] = rt.xx();
915  surRot_[1] = rt.xy();
916  surRot_[2] = rt.xz();
917  surRot_[3] = rt.yx();
918  surRot_[4] = rt.yy();
919  surRot_[5] = rt.yz();
920  surRot_[6] = rt.zx();
921  surRot_[7] = rt.zy();
922  surRot_[8] = rt.zz();
923 
924  //Fill
925  alignTree_->Fill();
926 }
Alignable * mother() const
Return pointer to container alignable (if any)
Definition: Alignable.h:91
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
T z() const
Definition: PV3DBase.h:61
bool IsModuleBad(uint32_t detid) const
align::Scalar width() const
bool IsModuleBad(const uint32_t &detid) const
std::vector< int > moduleList_
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
Definition: Activities.doc:4
const edm::ESGetToken< SiStripQuality, SiStripQualityRcd > stripQualityToken_
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:135
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
EulerAngles toAngles(const RotationType &)
Convert rotation matrix to angles about x-, y-, z-axes (frame rotation).
Definition: Utilities.cc:8
Definition: DetId.h:17
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
AlgebraicVector EulerAngles
Definition: Definitions.h:34
const DetId & geomDetId() const
Definition: Alignable.h:177
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
align::Scalar length() const
void fillIdentifiers(int subdetlevel, int rawid, const TrackerTopology *tTopo)
const RotationType & globalRotation() const
Return the global orientation of the object.
Definition: Alignable.h:138
const edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd > pixQualityToken_

◆ passIdCut()

bool TrackerGeometryCompare::passIdCut ( uint32_t  id)
private

Definition at line 1007 of file TrackerGeometryCompare.cc.

References detIdFlagVector_, and mps_fire::i.

Referenced by fillTree().

1007  {
1008  bool pass = false;
1009  int nEntries = detIdFlagVector_.size();
1010 
1011  for (int i = 0; i < nEntries; i++) {
1012  if (detIdFlagVector_[i] == id)
1013  pass = true;
1014  }
1015 
1016  return pass;
1017 }
std::vector< uint32_t > detIdFlagVector_

◆ setCommonTrackerSystem()

void TrackerGeometryCompare::setCommonTrackerSystem ( )
private

Definition at line 737 of file TrackerGeometryCompare.cc.

References commonTrackerLevel_, currentTracker, diffCommonTrackerSystem(), Alignable::globalPosition(), align::moveAlignable(), AlignableTracker::objectIdProvider(), referenceTracker, makeMuonMisalignmentScenario::rot, setCommonTrackerSystem_, AlignableObjectId::stringToId(), align::toMatrix(), TrackerCommonCM_, TrackerCommonR_, TrackerCommonT_, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by analyze().

737  {
738  edm::LogInfo("TrackerGeometryCompare") << "Setting Common Tracker System....";
739 
740  // DM_534??AlignableObjectId dummy;
741  // DM_534??_commonTrackerLevel = dummy.nameToType(_setCommonTrackerSystem);
743 
745 
746  align::EulerAngles dOmega(3);
747  dOmega[0] = TrackerCommonR_.x();
748  dOmega[1] = TrackerCommonR_.y();
749  dOmega[2] = TrackerCommonR_.z();
752 
753  edm::LogInfo("TrackerGeometryCompare") << "what we get from overlaying the pixels..." << theR << ", " << rot;
754 
755  //transform to the Tracker System
757  align::GlobalVector cmDiff(
758  trackerCM.x() - TrackerCommonCM_.x(), trackerCM.y() - TrackerCommonCM_.y(), trackerCM.z() - TrackerCommonCM_.z());
759 
760  edm::LogInfo("TrackerGeometryCompare") << "Pixel CM: " << TrackerCommonCM_ << ", tracker CM: " << trackerCM;
761 
762  //adjust translational difference factoring in different rotational CM
763  //needed because rotateInGlobalFrame is about CM of alignable, not Tracker
764  const align::GlobalVector::BasicVectorType& lpvgf = cmDiff.basicVector();
765  align::GlobalVector moveV(rot.multiplyInverse(lpvgf) - lpvgf);
766  align::GlobalVector theRprime(theR + moveV);
767 
768  AlgebraicVector TrackerCommonTR(6);
769  TrackerCommonTR(1) = theRprime.x();
770  TrackerCommonTR(2) = theRprime.y();
771  TrackerCommonTR(3) = theRprime.z();
772  TrackerCommonTR(4) = TrackerCommonR_.x();
773  TrackerCommonTR(5) = TrackerCommonR_.y();
774  TrackerCommonTR(6) = TrackerCommonR_.z();
775 
776  edm::LogInfo("TrackerGeometryCompare") << "and after the transformation: " << TrackerCommonTR;
777 
778  align::moveAlignable(currentTracker, TrackerCommonTR);
779 }
align::GlobalVector TrackerCommonR_
T z() const
Definition: PV3DBase.h:61
void diffCommonTrackerSystem(Alignable *refAli, Alignable *curAli)
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:135
align::GlobalVector TrackerCommonT_
Log< level::Info, false > LogInfo
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
Definition: Definitions.h:34
AlignableTracker * currentTracker
align::StructureType commonTrackerLevel_
align::StructureType stringToId(const char *) const
AlignableTracker * referenceTracker
align::PositionType TrackerCommonCM_
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
Definition: Utilities.cc:34
const AlignableObjectId & objectIdProvider() const
Return tracker alignable object ID provider derived from the tracker&#39;s geometry.
void moveAlignable(Alignable *ali, AlgebraicVector diff)
Moves the alignable by the AlgebraicVector.
Definition: AlignTools.cc:84

◆ surveyToTracker()

void TrackerGeometryCompare::surveyToTracker ( AlignableTracker ali,
Alignments alignVals,
AlignmentErrorsExtended alignErrors 
)
private

Definition at line 928 of file TrackerGeometryCompare.cc.

References AlCaHLTBitMon_QueryRunRegistry::comp, filterCSVwithJSON::copy, AlignableTracker::endcapGeomDets(), mps_fire::i, AlignableTracker::innerBarrelGeomDets(), dqmiolumiharvest::j, dqmdumpme::k, Alignments::m_align, AlignmentErrorsExtended::m_alignError, AlignableTracker::outerBarrelGeomDets(), AlignableTracker::pixelEndcapGeomDets(), AlignableTracker::pixelHalfBarrelGeomDets(), SurveyDet::position(), makeMuonMisalignmentScenario::rot, SurveyDet::rotation(), jetUpdater_cfi::sort, AlignableTracker::TIDGeomDets(), and HcalDetIdTransform::transform().

930  {
931  //getting the right alignables for the alignment record
932  auto detPB = ali->pixelHalfBarrelGeomDets();
933  auto detPEC = ali->pixelEndcapGeomDets();
934  auto detTIB = ali->innerBarrelGeomDets();
935  auto detTID = ali->TIDGeomDets();
936  auto detTOB = ali->outerBarrelGeomDets();
937  auto detTEC = ali->endcapGeomDets();
938 
939  align::Alignables allGeomDets;
940  std::copy(detPB.begin(), detPB.end(), std::back_inserter(allGeomDets));
941  std::copy(detPEC.begin(), detPEC.end(), std::back_inserter(allGeomDets));
942  std::copy(detTIB.begin(), detTIB.end(), std::back_inserter(allGeomDets));
943  std::copy(detTID.begin(), detTID.end(), std::back_inserter(allGeomDets));
944  std::copy(detTOB.begin(), detTOB.end(), std::back_inserter(allGeomDets));
945  std::copy(detTEC.begin(), detTEC.end(), std::back_inserter(allGeomDets));
946 
947  align::Alignables rcdAlis;
948  for (const auto& i : allGeomDets) {
949  if (i->components().size() == 1) {
950  rcdAlis.push_back(i);
951  } else if (i->components().size() > 1) {
952  rcdAlis.push_back(i);
953  const auto& comp = i->components();
954  for (const auto& j : comp)
955  rcdAlis.push_back(j);
956  }
957  }
958 
959  //turning them into alignments
960  for (const auto& k : rcdAlis) {
961  const SurveyDet* surveyInfo = k->survey();
962  const align::PositionType& pos(surveyInfo->position());
963  align::RotationType rot(surveyInfo->rotation());
964  CLHEP::Hep3Vector clhepVector(pos.x(), pos.y(), pos.z());
965  CLHEP::HepRotation clhepRotation(
966  CLHEP::HepRep3x3(rot.xx(), rot.xy(), rot.xz(), rot.yx(), rot.yy(), rot.yz(), rot.zx(), rot.zy(), rot.zz()));
967  AlignTransform transform(clhepVector, clhepRotation, k->id());
968  AlignTransformErrorExtended transformError(CLHEP::HepSymMatrix(3, 1), k->id());
969  alignVals->m_align.push_back(transform);
970  alignErrors->m_alignError.push_back(transformError);
971  }
972 
973  // to get the right order, sort by rawId
974  std::sort(alignVals->m_align.begin(), alignVals->m_align.end());
975  std::sort(alignErrors->m_alignError.begin(), alignErrors->m_alignError.end());
976 }
Alignables & pixelHalfBarrelGeomDets()
Return pixel barrel GeomDets.
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
const align::RotationType & rotation() const
Definition: SurveyDet.h:60
Alignables & innerBarrelGeomDets()
Return inner barrel GeomDets.
Alignables & TIDGeomDets()
Return TID GeomDets.
const align::PositionType & position() const
Definition: SurveyDet.h:58
Alignables & endcapGeomDets()
Return endcap GeomDets.
Alignables & pixelEndcapGeomDets()
Return pixel endcap GeomDets.
Alignables & outerBarrelGeomDets()
Return outer barrel GeomDets.
std::vector< AlignTransformErrorExtended > m_alignError
std::vector< Alignable * > Alignables
Definition: Utilities.h:31
unsigned transform(const HcalDetId &id, unsigned transformCode)

Member Data Documentation

◆ alignTree_

TTree* TrackerGeometryCompare::alignTree_
private

Definition at line 136 of file TrackerGeometryCompare.h.

Referenced by endJob(), fillTree(), and TrackerGeometryCompare().

◆ alphaVal_

float TrackerGeometryCompare::alphaVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ badModuleQuality_

int TrackerGeometryCompare::badModuleQuality_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ betaVal_

float TrackerGeometryCompare::betaVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ commonTrackerLevel_

align::StructureType TrackerGeometryCompare::commonTrackerLevel_
private

Definition at line 123 of file TrackerGeometryCompare.h.

Referenced by diffCommonTrackerSystem(), and setCommonTrackerSystem().

◆ cpvTokenDD4hep_

const edm::ESGetToken<cms::DDCompactView, IdealGeometryRecord> TrackerGeometryCompare::cpvTokenDD4hep_
private

Definition at line 90 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ cpvTokenDDD_

const edm::ESGetToken<DDCompactView, IdealGeometryRecord> TrackerGeometryCompare::cpvTokenDDD_
private

Definition at line 89 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ currentTracker

AlignableTracker* TrackerGeometryCompare::currentTracker
private

Definition at line 99 of file TrackerGeometryCompare.h.

Referenced by analyze(), createROOTGeometry(), and setCommonTrackerSystem().

◆ dalphaVal_

float TrackerGeometryCompare::dalphaVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ daVal_

float TrackerGeometryCompare::daVal_
private

Definition at line 150 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dbetaVal_

float TrackerGeometryCompare::dbetaVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dbVal_

float TrackerGeometryCompare::dbVal_
private

Definition at line 150 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ detDim_

int TrackerGeometryCompare::detDim_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ detIdFlag_

bool TrackerGeometryCompare::detIdFlag_
private

Definition at line 116 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ detIdFlagFile_

std::string TrackerGeometryCompare::detIdFlagFile_
private

Definition at line 117 of file TrackerGeometryCompare.h.

Referenced by TrackerGeometryCompare().

◆ detIdFlagVector_

std::vector<uint32_t> TrackerGeometryCompare::detIdFlagVector_
private

Definition at line 122 of file TrackerGeometryCompare.h.

Referenced by passIdCut(), and TrackerGeometryCompare().

◆ dgammaVal_

float TrackerGeometryCompare::dgammaVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dgVal_

float TrackerGeometryCompare::dgVal_
private

Definition at line 150 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dphiVal_

float TrackerGeometryCompare::dphiVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ drVal_

float TrackerGeometryCompare::drVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dummyTracker

AlignableTracker* TrackerGeometryCompare::dummyTracker
private

Definition at line 98 of file TrackerGeometryCompare.h.

◆ duVal_

float TrackerGeometryCompare::duVal_
private

Definition at line 150 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dvVal_

float TrackerGeometryCompare::dvVal_
private

Definition at line 150 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dwVal_

float TrackerGeometryCompare::dwVal_
private

Definition at line 150 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dxVal_

float TrackerGeometryCompare::dxVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dyVal_

float TrackerGeometryCompare::dyVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ dzVal_

float TrackerGeometryCompare::dzVal_
private

Definition at line 148 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ etaVal_

float TrackerGeometryCompare::etaVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ filename_

std::string TrackerGeometryCompare::filename_
private

Definition at line 133 of file TrackerGeometryCompare.h.

Referenced by TrackerGeometryCompare().

◆ firstEvent_

bool TrackerGeometryCompare::firstEvent_
private

Definition at line 161 of file TrackerGeometryCompare.h.

Referenced by analyze(), and beginJob().

◆ fromDD4hep_

bool TrackerGeometryCompare::fromDD4hep_
private

Definition at line 112 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ gammaVal_

float TrackerGeometryCompare::gammaVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ geomDetToken_

const edm::ESGetToken<GeometricDet, IdealGeometryRecord> TrackerGeometryCompare::geomDetToken_
private

Definition at line 92 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ id_

int TrackerGeometryCompare::id_
private

\ Tree variables

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ identifiers_

uint32_t TrackerGeometryCompare::identifiers_[6]
private

Definition at line 152 of file TrackerGeometryCompare.h.

Referenced by fillIdentifiers(), and TrackerGeometryCompare().

◆ inModuleList_

int TrackerGeometryCompare::inModuleList_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ inputFilename1_

std::string TrackerGeometryCompare::inputFilename1_
private

◆ inputFilename2_

std::string TrackerGeometryCompare::inputFilename2_
private

◆ inputRootFile1_

TFile* TrackerGeometryCompare::inputRootFile1_
private

Definition at line 137 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and createROOTGeometry().

◆ inputRootFile2_

TFile* TrackerGeometryCompare::inputRootFile2_
private

Definition at line 138 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and createROOTGeometry().

◆ inputTree01_

TTree* TrackerGeometryCompare::inputTree01_
private

Definition at line 139 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ inputTree02_

TTree* TrackerGeometryCompare::inputTree02_
private

Definition at line 140 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ inputTree11_

TTree* TrackerGeometryCompare::inputTree11_
private

Definition at line 141 of file TrackerGeometryCompare.h.

Referenced by analyze(), and createROOTGeometry().

◆ inputTree12_

TTree* TrackerGeometryCompare::inputTree12_
private

Definition at line 142 of file TrackerGeometryCompare.h.

Referenced by analyze(), and createROOTGeometry().

◆ inputTreenameAlign_

std::string TrackerGeometryCompare::inputTreenameAlign_
private

Definition at line 110 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry(), and TrackerGeometryCompare().

◆ inputTreenameDeform_

std::string TrackerGeometryCompare::inputTreenameDeform_
private

◆ level_

int TrackerGeometryCompare::level_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ levelStrings_

const std::vector<std::string> TrackerGeometryCompare::levelStrings_
private

Definition at line 106 of file TrackerGeometryCompare.h.

Referenced by analyze().

◆ m_h1_

std::map<std::string, TH1D*> TrackerGeometryCompare::m_h1_
private

Definition at line 165 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and TrackerGeometryCompare().

◆ m_nBins_

int TrackerGeometryCompare::m_nBins_
private

Definition at line 157 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and TrackerGeometryCompare().

◆ m_rangeHigh_

double TrackerGeometryCompare::m_rangeHigh_
private

Definition at line 159 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and TrackerGeometryCompare().

◆ m_rangeLow_

double TrackerGeometryCompare::m_rangeLow_
private

Definition at line 158 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and TrackerGeometryCompare().

◆ m_theLevels

std::vector<align::StructureType> TrackerGeometryCompare::m_theLevels
private

Definition at line 60 of file TrackerGeometryCompare.h.

Referenced by analyze(), and compareGeometries().

◆ m_vtkmap_

std::vector<TrackerMap> TrackerGeometryCompare::m_vtkmap_
private

◆ mid_

int TrackerGeometryCompare::mid_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ mlevel_

int TrackerGeometryCompare::mlevel_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ moduleInList_

int TrackerGeometryCompare::moduleInList_
private

Definition at line 130 of file TrackerGeometryCompare.h.

◆ moduleList_

std::vector<int> TrackerGeometryCompare::moduleList_
private

Definition at line 129 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry(), and fillTree().

◆ moduleListFile_

std::ifstream TrackerGeometryCompare::moduleListFile_
private

Definition at line 128 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ moduleListName_

std::string TrackerGeometryCompare::moduleListName_
private

Definition at line 107 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry(), and TrackerGeometryCompare().

◆ phiVal_

float TrackerGeometryCompare::phiVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ pixQualityToken_

const edm::ESGetToken<SiPixelQuality, SiPixelQualityRcd> TrackerGeometryCompare::pixQualityToken_
private

Definition at line 94 of file TrackerGeometryCompare.h.

Referenced by fillTree().

◆ ptpToken_

const edm::ESGetToken<PTrackerParameters, PTrackerParametersRcd> TrackerGeometryCompare::ptpToken_
private

Definition at line 93 of file TrackerGeometryCompare.h.

Referenced by createROOTGeometry().

◆ referenceTracker

AlignableTracker* TrackerGeometryCompare::referenceTracker
private

Definition at line 97 of file TrackerGeometryCompare.h.

Referenced by analyze(), createROOTGeometry(), and setCommonTrackerSystem().

◆ rVal_

float TrackerGeometryCompare::rVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ setCommonTrackerSystem_

std::string TrackerGeometryCompare::setCommonTrackerSystem_
private

◆ stripQualityToken_

const edm::ESGetToken<SiStripQuality, SiStripQualityRcd> TrackerGeometryCompare::stripQualityToken_
private

Definition at line 95 of file TrackerGeometryCompare.h.

Referenced by fillTree().

◆ sublevel_

int TrackerGeometryCompare::sublevel_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ surfDeform_

double TrackerGeometryCompare::surfDeform_[13]
private

Definition at line 155 of file TrackerGeometryCompare.h.

Referenced by compareSurfaceDeformations(), and TrackerGeometryCompare().

◆ surfdir_

std::string TrackerGeometryCompare::surfdir_
private

Definition at line 134 of file TrackerGeometryCompare.h.

Referenced by endJob(), and TrackerGeometryCompare().

◆ surLength_

float TrackerGeometryCompare::surLength_
private

Definition at line 151 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ surRot_

double TrackerGeometryCompare::surRot_[9]
private

Definition at line 153 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ surWidth_

float TrackerGeometryCompare::surWidth_
private

Definition at line 151 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ theFile_

TFile* TrackerGeometryCompare::theFile_
private

Definition at line 135 of file TrackerGeometryCompare.h.

Referenced by endJob(), and TrackerGeometryCompare().

◆ theSurveyErrors

const SurveyErrors* TrackerGeometryCompare::theSurveyErrors
private

Definition at line 103 of file TrackerGeometryCompare.h.

Referenced by addSurveyInfo().

◆ theSurveyIndex

unsigned int TrackerGeometryCompare::theSurveyIndex
private

Definition at line 101 of file TrackerGeometryCompare.h.

Referenced by addSurveyInfo().

◆ theSurveyValues

const Alignments* TrackerGeometryCompare::theSurveyValues
private

Definition at line 102 of file TrackerGeometryCompare.h.

Referenced by addSurveyInfo().

◆ topoToken_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> TrackerGeometryCompare::topoToken_
private

Definition at line 91 of file TrackerGeometryCompare.h.

Referenced by analyze(), and createROOTGeometry().

◆ TrackerCommonCM_

align::PositionType TrackerGeometryCompare::TrackerCommonCM_
private

Definition at line 126 of file TrackerGeometryCompare.h.

Referenced by diffCommonTrackerSystem(), and setCommonTrackerSystem().

◆ TrackerCommonR_

align::GlobalVector TrackerGeometryCompare::TrackerCommonR_
private

Definition at line 125 of file TrackerGeometryCompare.h.

Referenced by diffCommonTrackerSystem(), and setCommonTrackerSystem().

◆ TrackerCommonT_

align::GlobalVector TrackerGeometryCompare::TrackerCommonT_
private

Definition at line 124 of file TrackerGeometryCompare.h.

Referenced by diffCommonTrackerSystem(), and setCommonTrackerSystem().

◆ type_

int TrackerGeometryCompare::type_
private

◆ useDetId_

int TrackerGeometryCompare::useDetId_
private

Definition at line 145 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ weightBy_

std::string TrackerGeometryCompare::weightBy_
private

◆ weightById_

bool TrackerGeometryCompare::weightById_
private

◆ weightByIdFile_

std::string TrackerGeometryCompare::weightByIdFile_
private

Definition at line 119 of file TrackerGeometryCompare.h.

Referenced by TrackerGeometryCompare().

◆ weightByIdVector_

std::vector<unsigned int> TrackerGeometryCompare::weightByIdVector_
private

◆ writeToDB_

bool TrackerGeometryCompare::writeToDB_
private

Definition at line 113 of file TrackerGeometryCompare.h.

Referenced by analyze().

◆ xVal_

float TrackerGeometryCompare::xVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ yVal_

float TrackerGeometryCompare::yVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().

◆ zVal_

float TrackerGeometryCompare::zVal_
private

Definition at line 146 of file TrackerGeometryCompare.h.

Referenced by fillTree(), and TrackerGeometryCompare().