CMS 3D CMS Logo

AlignmentStats.cc
Go to the documentation of this file.
2 
10 
16 
19 
25 
26 using namespace std;
27 
29  : src_(iConfig.getParameter<edm::InputTag>("src")),
30  overlapAM_(iConfig.getParameter<edm::InputTag>("OverlapAssoMap")),
31  keepTrackStats_(iConfig.getParameter<bool>("keepTrackStats")),
32  keepHitPopulation_(iConfig.getParameter<bool>("keepHitStats")),
33  statsTreeName_(iConfig.getParameter<string>("TrkStatsFileName")),
34  hitsTreeName_(iConfig.getParameter<string>("HitStatsFileName")),
35  prescale_(iConfig.getParameter<uint32_t>("TrkStatsPrescale")) {
36  //sanity checks
37 
38  //init
39  outtree_ = nullptr;
40 
41 } //end constructor
42 
44  //
45 }
46 
47 void AlignmentStats::beginJob() { // const edm::EventSetup &iSetup
48 
49  //book track stats tree
50  treefile_ = new TFile(statsTreeName_.c_str(), "RECREATE");
51  treefile_->cd();
52  outtree_ = new TTree("AlignmentTrackStats", "Statistics of Tracks used for Alignment");
53  // int nHitsinPXB[MAXTRKS_], nHitsinPXE[MAXTRKS_], nHitsinTEC[MAXTRKS_], nHitsinTIB[MAXTRKS_],nHitsinTOB[MAXTRKS_],nHitsinTID[MAXTRKS_];
54 
55  outtree_->Branch("Ntracks", &ntracks, "Ntracks/i");
56  outtree_->Branch("Run_", &run_, "Run_Nr/I");
57  outtree_->Branch("Event", &event_, "EventNr/I");
58  outtree_->Branch("Eta", &Eta, "Eta[Ntracks]/F");
59  outtree_->Branch("Phi", &Phi, "Phi[Ntracks]/F");
60  outtree_->Branch("P", &P, "P[Ntracks]/F");
61  outtree_->Branch("Pt", &Pt, "Pt[Ntracks]/F");
62  outtree_->Branch("Chi2n", &Chi2n, "Chi2n[Ntracks]/F");
63  outtree_->Branch("Nhits", &Nhits, "Nhits[Ntracks][7]/I");
64  /*
65  outtree_->Branch("NhitsPXB" , ,);
66  outtree_->Branch("NhitsPXE" , ,);
67  outtree_->Branch("NhitsTIB" , ,);
68  outtree_->Branch("NhitsTID" , ,);
69  outtree_->Branch("NhitsTOB" , ,);
70  outtree_->Branch("NhitsTOB" , ,);
71  */
72 
74 
75  //load the tracker geometry from the EventSetup
76  // iSetup.get<TrackerDigiGeometryRecord>().get(trackerGeometry_);
77 
78 } //end beginJob
79 
81  //load list of detunits needed then in endJob
82 
83  edm::ESHandle<TrackerGeometry> tmpTkGeometry;
84  iSetup.get<TrackerDigiGeometryRecord>().get(tmpTkGeometry);
85  trackerGeometry_ = &(*tmpTkGeometry);
86 
88  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
89  trackerTopology_ = tTopoHandle.product();
90 
91  //take trajectories and tracks to loop on
92  // edm::Handle<TrajTrackAssociationCollection> TrackAssoMap;
94  iEvent.getByLabel(src_, Tracks);
95 
96  //take overlap HitAssomap
98  iEvent.getByLabel(overlapAM_, hMap);
99  const AliClusterValueMap &OverlapMap = *hMap;
100 
101  // Initialise
102  run_ = 1;
103  event_ = 1;
104  ntracks = 0;
105  run_ = iEvent.id().run();
106  event_ = iEvent.id().event();
107  ntracks = Tracks->size();
108  // if(ntracks>1) std::cout<<"~~~~~~~~~~~~\n For this event processing "<<ntracks<<" tracks"<<std::endl;
109 
110  unsigned int trk_cnt = 0;
111 
112  for (int j = 0; j < MAXTRKS_; j++) {
113  Eta[j] = -9999.0;
114  Phi[j] = -8888.0;
115  P[j] = -7777.0;
116  Pt[j] = -6666.0;
117  Chi2n[j] = -2222.0;
118  for (int k = 0; k < 7; k++) {
119  Nhits[j][k] = 0;
120  }
121  }
122 
123  // int npxbhits=0;
124 
125  //loop on tracks
126  for (std::vector<reco::Track>::const_iterator ittrk = Tracks->begin(), edtrk = Tracks->end(); ittrk != edtrk;
127  ++ittrk) {
128  Eta[trk_cnt] = ittrk->eta();
129  Phi[trk_cnt] = ittrk->phi();
130  Chi2n[trk_cnt] = ittrk->normalizedChi2();
131  P[trk_cnt] = ittrk->p();
132  Pt[trk_cnt] = ittrk->pt();
133  Nhits[trk_cnt][0] = ittrk->numberOfValidHits();
134 
135  // if(ntracks>1)std::cout<<"Track #"<<trk_cnt+1<<" params: Eta="<< Eta[trk_cnt]<<" Phi="<< Phi[trk_cnt]<<" P="<<P[trk_cnt]<<" Nhits="<<Nhits[trk_cnt][0]<<std::endl;
136 
137  int nhit = 0;
138  //loop on tracking rechits
139  //std::cout << " loop on hits of track #" << (itt - tracks->begin()) << std::endl;
140  for (auto const &hit : ittrk->recHits()) {
141  if (!hit->isValid())
142  continue;
143  DetId detid = hit->geographicalId();
144  int subDet = detid.subdetId();
145  uint32_t rawId = hit->geographicalId().rawId();
146 
147  // if(subDet==1)npxbhits++;
148 
149  //look if you find this detid in the map
150  DetHitMap::iterator mapiter;
151  mapiter = hitmap_.find(rawId);
152  if (mapiter != hitmap_.end()) { //present, increase its value by one
153  // hitmap_[rawId]=hitmap_[rawId]+1;
154  ++(hitmap_[rawId]);
155  } else { //not present, let's add this key to the map with value=1
156  hitmap_.insert(pair<uint32_t, uint32_t>(rawId, 1));
157  }
158 
159  AlignmentClusterFlag inval;
160 
161  bool hitInPixel = (subDet == PixelSubdetector::PixelBarrel) || (subDet == PixelSubdetector::PixelEndcap);
162  bool hitInStrip = (subDet == SiStripDetId::TIB) || (subDet == SiStripDetId::TID) ||
163  (subDet == SiStripDetId::TOB) || (subDet == SiStripDetId::TEC);
164 
165  if (!(hitInPixel || hitInStrip)) {
166  //skip only this hit, don't stop everything throwing an exception
167  edm::LogError("AlignmentStats") << "Hit not belonging neither to pixels nor to strips! Skipping it. SubDet= "
168  << subDet;
169  continue;
170  }
171 
172  //check also if the hit is an overlap. If yes fill a dedicated hitmap
173  if (hitInStrip) {
174  const std::type_info &type = typeid(*hit);
175 
176  if (type == typeid(SiStripRecHit1D)) {
177  //Notice the difference respect to when one loops on Trajectories: the recHit is a TrackingRecHit and not a TransientTrackingRecHit
178  const SiStripRecHit1D *striphit = dynamic_cast<const SiStripRecHit1D *>(hit);
179  if (striphit != nullptr) {
180  SiStripRecHit1D::ClusterRef stripclust(striphit->cluster());
181  inval = OverlapMap[stripclust];
182  } else {
183  // edm::LogError("AlignmentStats")<<"ERROR in <AlignmentStats::analyze>: Dynamic cast of Strip RecHit1D failed! TypeId of the RecHit: "<<className(*hit);
184  throw cms::Exception("NullPointerError")
185  << "ERROR in <AlignmentStats::analyze>: Dynamic cast of Strip RecHit1D failed! TypeId of the RecHit: "
186  << className(*hit);
187  }
188  } //end if sistriprechit1D
189  if (type == typeid(SiStripRecHit2D)) {
190  const SiStripRecHit2D *striphit = dynamic_cast<const SiStripRecHit2D *>(hit);
191  if (striphit != nullptr) {
192  SiStripRecHit2D::ClusterRef stripclust(striphit->cluster());
193  inval = OverlapMap[stripclust];
194  //cout<<"Taken the Strip Cluster with ProdId "<<stripclust.id() <<"; the Value in the map is "<<inval<<" (DetId is "<<hit->geographicalId().rawId()<<")"<<endl;
195  } else {
196  throw cms::Exception("NullPointerError")
197  << "ERROR in <AlignmentStats::analyze>: Dynamic cast of Strip RecHit2D failed! TypeId of the RecHit: "
198  << className(*hit);
199  // edm::LogError("AlignmentStats")<<"ERROR in <AlignmentStats::analyze>: Dynamic cast of Strip RecHit2D failed! TypeId of the RecHit: "<<className(*hit);
200  }
201  } //end if sistriprechit2D
202 
203  } //end if hit in Strips
204  else {
205  const SiPixelRecHit *pixelhit = dynamic_cast<const SiPixelRecHit *>(hit);
206  if (pixelhit != nullptr) {
207  SiPixelClusterRefNew pixclust(pixelhit->cluster());
208  inval = OverlapMap[pixclust];
209  //cout<<"Taken the Pixel Cluster with ProdId "<<pixclust.id() <<"; the Value in the map is "<<inval<<" (DetId is "<<hit->geographicalId().rawId()<<")"<<endl;
210  } else {
211  edm::LogError("AlignmentStats")
212  << "ERROR in <AlignmentStats::analyze>: Dynamic cast of Pixel RecHit failed! TypeId of the RecHit: "
213  << className(*hit);
214  }
215  } //end else hit is in Pixel
216 
217  bool isOverlapHit(inval.isOverlap());
218 
219  if (isOverlapHit) {
220  //cout<<"This hit is an overlap !"<<endl;
221  DetHitMap::iterator overlapiter;
222  overlapiter = overlapmap_.find(rawId);
223 
224  if (overlapiter !=
225  overlapmap_.end()) { //the det already collected at least an overlap, increase its value by one
226  overlapmap_[rawId] = overlapmap_[rawId] + 1;
227  } else { //first overlap on det unit, let's add it to the map
228  overlapmap_.insert(pair<uint32_t, uint32_t>(rawId, 1));
229  }
230  } //end if the hit is an overlap
231 
232  int subdethit = static_cast<int>(hit->geographicalId().subdetId());
233  // if(ntracks>1)std::cout<<"Hit in SubDet="<<subdethit<<std::endl;
234  Nhits[trk_cnt][subdethit] = Nhits[trk_cnt][subdethit] + 1;
235  nhit++;
236  } //end loop on trackingrechits
237  trk_cnt++;
238 
239  } //end loop on tracks
240 
241  // cout<<"Total number of pixel hits is "<<npxbhits<<endl;
242 
243  tmpPresc_--;
244  if (tmpPresc_ < 1) {
245  outtree_->Fill();
247  }
248  if (trk_cnt != ntracks)
249  edm::LogError("AlignmentStats") << "\nERROR! trk_cnt=" << trk_cnt << " ntracks=" << ntracks;
250 
251  return;
252 }
253 
255  treefile_->cd();
256  edm::LogInfo("AlignmentStats") << "Writing out the TrackStatistics in " << gDirectory->GetPath() << std::endl;
257  outtree_->Write();
258  delete outtree_;
259 
260  //create tree with hit maps (hitstree)
261  //book track stats tree
262  TFile *hitsfile = new TFile(hitsTreeName_.c_str(), "RECREATE");
263  hitsfile->cd();
264  TTree *hitstree = new TTree("AlignmentHitMap", "Maps of Hits used for Alignment");
265 
266  unsigned int id = 0, nhits = 0, noverlaps = 0;
267  float posX(-99999.0), posY(-77777.0), posZ(-88888.0);
268  float posEta(-6666.0), posPhi(-5555.0), posR(-4444.0);
269  int subdet = 0;
270  unsigned int layer = 0;
271  bool is2D = false, isStereo = false;
272  hitstree->Branch("DetId", &id, "DetId/i");
273  hitstree->Branch("Nhits", &nhits, "Nhits/i");
274  hitstree->Branch("Noverlaps", &noverlaps, "Noverlaps/i");
275  hitstree->Branch("SubDet", &subdet, "SubDet/I");
276  hitstree->Branch("Layer", &layer, "Layer/i");
277  hitstree->Branch("is2D", &is2D, "is2D/B");
278  hitstree->Branch("isStereo", &isStereo, "isStereo/B");
279  hitstree->Branch("posX", &posX, "posX/F");
280  hitstree->Branch("posY", &posY, "posY/F");
281  hitstree->Branch("posZ", &posZ, "posZ/F");
282  hitstree->Branch("posR", &posR, "posR/F");
283  hitstree->Branch("posEta", &posEta, "posEta/F");
284  hitstree->Branch("posPhi", &posPhi, "posPhi/F");
285 
286  /*
287  TTree *overlapstree=new TTree("OverlapHitMap","Maps of Overlaps used for Alignment");
288  hitstree->Branch("DetId", &id , "DetId/i");
289  hitstree->Branch("NOverlaps", &nhits , "Nhits/i");
290  hitstree->Branch("SubDet", &subdet, "SubDet/I");
291  hitstree->Branch("Layer", &layer, "Layer/i");
292  hitstree->Branch("is2D" , &is2D, "is2D/B");
293  hitstree->Branch("isStereo",&isStereo,"isStereo/B");
294  hitstree->Branch("posX", &posX, "posX/F");
295  hitstree->Branch("posY", &posY, "posY/F");
296  hitstree->Branch("posZ", &posZ, "posZ/F");
297  hitstree->Branch("posR", &posR, "posR/F");
298  hitstree->Branch("posEta", &posEta, "posEta/F");
299  hitstree->Branch("posPhi", &posPhi, "posPhi/F");
300  */
301 
302  std::unique_ptr<AlignableTracker> theAliTracker =
303  std::make_unique<AlignableTracker>(&(*trackerGeometry_), trackerTopology_);
304  const auto &Detunitslist = theAliTracker->deepComponents();
305  int ndetunits = Detunitslist.size();
306  edm::LogInfo("AlignmentStats") << "Number of DetUnits in the AlignableTracker: " << ndetunits << std::endl;
307 
308  for (int det_cnt = 0; det_cnt < ndetunits; ++det_cnt) {
309  //re-initialize for safety
310  id = 0;
311  nhits = 0;
312  noverlaps = 0;
313  posX = -99999.0;
314  posY = -77777.0;
315  posZ = -88888.0;
316  posEta = -6666.0;
317  posPhi = -5555.0;
318  posR = -4444.0;
319  subdet = 0;
320  layer = 0;
321  is2D = false;
322  isStereo = false;
323 
324  //if detunit in vector is found also in the map, look for how many hits were collected
325  //and save in the tree this number
326  id = static_cast<uint32_t>(Detunitslist[det_cnt]->id());
327  if (hitmap_.find(id) != hitmap_.end()) {
328  nhits = hitmap_[id];
329  }
330  //if not, save nhits=0
331  else {
332  nhits = 0;
333  hitmap_.insert(pair<uint32_t, uint32_t>(id, 0));
334  }
335 
336  if (overlapmap_.find(id) != overlapmap_.end()) {
337  noverlaps = overlapmap_[id];
338  }
339  //if not, save nhits=0
340  else {
341  noverlaps = 0;
342  overlapmap_.insert(pair<uint32_t, uint32_t>(id, 0));
343  }
344 
345  //take other geometrical infos from the det
346  posX = Detunitslist[det_cnt]->globalPosition().x();
347  posY = Detunitslist[det_cnt]->globalPosition().y();
348  posZ = Detunitslist[det_cnt]->globalPosition().z();
349 
350  align::GlobalVector vec(posX, posY, posZ);
351  posR = vec.perp();
352  posPhi = vec.phi();
353  posEta = vec.eta();
354  // posPhi = atan2(posY,posX);
355 
356  DetId detid(id);
357  subdet = detid.subdetId();
358 
359  //get layers, petals, etc...
360  if (subdet == PixelSubdetector::PixelBarrel) { //PXB
361 
363  is2D = true;
364  isStereo = false;
365  } else if (subdet == PixelSubdetector::PixelEndcap) {
367  is2D = true;
368  isStereo = false;
369  } else if (subdet == SiStripDetId::TIB) {
372  isStereo = trackerTopology_->tibIsStereo(id);
373  } else if (subdet == SiStripDetId::TID) {
376  isStereo = trackerTopology_->tidIsStereo(id);
377  } else if (subdet == SiStripDetId::TOB) {
380  isStereo = trackerTopology_->tobIsStereo(id);
381  } else if (subdet == SiStripDetId::TEC) {
384  isStereo = trackerTopology_->tecIsStereo(id);
385  } else {
386  edm::LogError("AlignmentStats") << "Detector not belonging neither to pixels nor to strips! Skipping it. SubDet= "
387  << subdet;
388  }
389 
390  //write in the hitstree
391  hitstree->Fill();
392  } //end loop over detunits
393 
394  //save hitstree
395  hitstree->Write();
396  delete hitstree;
397  //delete Detunitslist;
398  hitmap_.clear();
399  overlapmap_.clear();
400  delete hitsfile;
401 }
402 // ========= MODULE DEF ==============
Vector3DBase< Scalar, GlobalTag >
TrackerTopology::tobIsDoubleSide
bool tobIsDoubleSide(const DetId &id) const
Definition: TrackerTopology.h:245
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
TrajectoryStateOnSurface.h
AlignmentStats::trackerTopology_
const TrackerTopology * trackerTopology_
Definition: AlignmentStats.h:64
SiStripRecHit2D::cluster
ClusterRef cluster() const
Definition: SiStripRecHit2D.h:22
electrons_cff.bool
bool
Definition: electrons_cff.py:366
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
AlignmentStats::hitmap_
DetHitMap hitmap_
Definition: AlignmentStats.h:59
TrackerTopology::tobIsStereo
bool tobIsStereo(const DetId &id) const
Definition: TrackerTopology.h:264
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology::tecIsDoubleSide
bool tecIsDoubleSide(const DetId &id) const
Definition: TrackerTopology.h:246
TrackerTopology::tidIsDoubleSide
bool tidIsDoubleSide(const DetId &id) const
Definition: TrackerTopology.h:250
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
AlignmentStats::prescale_
uint32_t prescale_
Definition: AlignmentStats.h:44
TrackerTopology::tecIsStereo
bool tecIsStereo(const DetId &id) const
Definition: TrackerTopology.h:265
AlignmentStats::Phi
float Phi[MAXTRKS_]
Definition: AlignmentStats.h:54
SiStripDetId.h
SiStripRecHit2D
Definition: SiStripRecHit2D.h:7
AlignmentStats::overlapAM_
edm::InputTag overlapAM_
Definition: AlignmentStats.h:39
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
AlignmentStats::Chi2n
float Chi2n[MAXTRKS_]
Definition: AlignmentStats.h:54
edm::Handle< reco::TrackCollection >
AlignmentStats::hitsTreeName_
std::string hitsTreeName_
Definition: AlignmentStats.h:43
SiPixelRecHit
Our base class.
Definition: SiPixelRecHit.h:23
edm::Ref
Definition: AssociativeIterator.h:58
TSiStripRecHit2DLocalPos.h
TrackerTopology::tidWheel
unsigned int tidWheel(const DetId &id) const
Definition: TrackerTopology.h:201
AlignmentStats::outtree_
TTree * outtree_
Definition: AlignmentStats.h:50
TrackerTopology::pxbLayer
unsigned int pxbLayer(const DetId &id) const
Definition: TrackerTopology.h:144
TrackerTopology::tidIsStereo
bool tidIsStereo(const DetId &id) const
Definition: TrackerTopology.h:267
AlignmentStats.h
AlignmentStats::statsTreeName_
std::string statsTreeName_
Definition: AlignmentStats.h:42
AlignmentStats::MAXTRKS_
static const int MAXTRKS_
Definition: AlignmentStats.h:51
DetId
Definition: DetId.h:17
MakerMacros.h
pixelClusterTagInfos_cfi.pixelhit
pixelhit
Definition: pixelClusterTagInfos_cfi.py:6
AlignmentStats::beginJob
void beginJob() override
Definition: AlignmentStats.cc:47
TrackerTopologyRcd.h
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
AlignmentStats::analyze
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: AlignmentStats.cc:80
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
edm::ESHandle< TrackerGeometry >
TrackerTopology::tibIsStereo
bool tibIsStereo(const DetId &id) const
Definition: TrackerTopology.h:266
RecoTauValidation_cfi.posX
posX
Definition: RecoTauValidation_cfi.py:288
dqmdumpme.k
k
Definition: dqmdumpme.py:60
nhits
Definition: HIMultiTrackSelector.h:42
SiPixelRecHit.h
TrajTrackAssociation.h
SiStripDetId::TEC
static constexpr auto TEC
Definition: SiStripDetId.h:40
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:47
TSiPixelRecHit.h
AlignmentStats::src_
edm::InputTag src_
Definition: AlignmentStats.h:38
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
AlignmentStats::ntracks
unsigned int ntracks
Definition: AlignmentStats.h:53
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
ModuleDef.h
iEvent
int iEvent
Definition: GenABIO.cc:224
gather_cfg.Tracks
Tracks
Definition: gather_cfg.py:251
AlignmentClusterFlag.h
TrackerTopology::pxfDisk
unsigned int pxfDisk(const DetId &id) const
Definition: TrackerTopology.h:446
AlignmentStats::Nhits
int Nhits[MAXTRKS_][7]
Definition: AlignmentStats.h:55
Utilities.h
SiStripDetId::TOB
static constexpr auto TOB
Definition: SiStripDetId.h:39
SiStripRecHit1D::cluster
ClusterRef cluster() const
Definition: SiStripRecHit1D.h:18
AlignmentStats::~AlignmentStats
~AlignmentStats() override
Definition: AlignmentStats.cc:43
edm::EventSetup
Definition: EventSetup.h:58
AlignmentStats::Eta
float Eta[MAXTRKS_]
Definition: AlignmentStats.h:54
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
SiStripRecHit1D
Definition: SiStripRecHit1D.h:8
AlignmentStats::endJob
void endJob() override
Definition: AlignmentStats.cc:254
get
#define get
SiStripRecHit1D.h
SiStripDetId::TID
static constexpr auto TID
Definition: SiStripDetId.h:38
Trajectory.h
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
std
Definition: JetResolutionObject.h:76
TrackerTopology::tibIsDoubleSide
bool tibIsDoubleSide(const DetId &id) const
Definition: TrackerTopology.h:249
AlignmentStats::Pt
float Pt[MAXTRKS_]
Definition: AlignmentStats.h:54
DetId.h
AlignmentStats::tmpPresc_
uint32_t tmpPresc_
Definition: AlignmentStats.h:46
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
AlignmentStats::overlapmap_
DetHitMap overlapmap_
Definition: AlignmentStats.h:60
AlignmentStats::treefile_
TFile * treefile_
Definition: AlignmentStats.h:49
edm::ValueMap
Definition: ValueMap.h:107
Exception
Definition: hltDiff.cc:245
fastTrackerRecHitType::is2D
bool is2D(HitType hitType)
Definition: FastTrackerRecHit.h:36
AlignmentStats::AlignmentStats
AlignmentStats(const edm::ParameterSet &iConfig)
Definition: AlignmentStats.cc:28
ClassName.h
Alignable.h
SiStripDetId::TIB
static constexpr auto TIB
Definition: SiStripDetId.h:37
AlignmentClusterFlag::isOverlap
bool isOverlap() const
Definition: AlignmentClusterFlag.cc:16
AlignmentStats::run_
int run_
Definition: AlignmentStats.h:52
className
std::string className(const T &t)
Definition: ClassName.h:31
AlignmentStats::event_
int event_
Definition: AlignmentStats.h:52
AliClusterValueMap.h
AlignableTracker.h
View.h
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
AlignmentStats
Definition: AlignmentStats.h:28
P
std::pair< OmniClusterRef, TrackingParticleRef > P
Definition: BDHadronTrackMonitoringAnalyzer.cc:202
edm::Event
Definition: Event.h:73
TrackerTopology::tecWheel
unsigned int tecWheel(const DetId &id) const
Definition: TrackerTopology.h:198
SiStripRecHit2D.h
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
AlignmentClusterFlag
Definition: AlignmentClusterFlag.h:15
AlignmentStats::trackerGeometry_
const TrackerGeometry * trackerGeometry_
Definition: AlignmentStats.h:63
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
RecoTauValidation_cfi.posY
posY
Definition: RecoTauValidation_cfi.py:289
hit
Definition: SiStripHitEffFromCalibTree.cc:88
TrackerTopology::tibLayer
unsigned int tibLayer(const DetId &id) const
Definition: TrackerTopology.h:150