CMS 3D CMS Logo

SiStripLAProfileBooker.cc
Go to the documentation of this file.
1 /* VI Janurary 2012
2  * This file need to be migrated to the new interface of matched hit as the mono/stero are not there anymore
3  * what is returned are hits w/o localpoistion, just cluster and id
4  */
5 #include <string>
6 #include <iostream>
7 #include <fstream>
8 
10 
15 
19 
27 
32 
37 
38 #include <TProfile.h>
39 #include <TStyle.h>
40 #include <TF1.h>
41 
42 #include <list>
43 
44 class DetIdLess {
45 public:
46  DetIdLess() {}
47 
48  bool operator()(const SiStripRecHit2D* a, const SiStripRecHit2D* b) const {
49  return *(a->cluster()) < *(b->cluster());
50  }
51 };
52 
53 //Constructor
54 
56  : conf_(conf),
57  tTopoToken_(esConsumes<edm::Transition::BeginRun>()),
58  tkGeomToken_(esConsumes<edm::Transition::BeginRun>()),
59  magFieldToken_(esConsumes<edm::Transition::BeginRun>()),
60  detCablingToken_(conf_.getParameter<bool>("UseStripCablingDB")
61  ? decltype(detCablingToken_){esConsumes<edm::Transition::BeginRun>()}
62  : decltype(detCablingToken_){}) {}
63 
64 //BeginRun
65 
67  const TrackerTopology* const tTopo = &c.getData(tTopoToken_);
68  tkGeom_ = &c.getData(tkGeomToken_);
69  const auto& magField = c.getData(magFieldToken_);
70 
71  std::vector<uint32_t> activeDets;
72  if (conf_.getParameter<bool>("UseStripCablingDB")) {
73  activeDets.clear();
74  c.getData(detCablingToken_).addActiveDetectorsRawIds(activeDets);
75  } else {
77  TrackerGeometry::DetIdContainer::const_iterator Iditer;
78  activeDets.clear();
79  for (Iditer = Id.begin(); Iditer != Id.end(); Iditer++) {
80  activeDets.push_back(Iditer->rawId());
81  }
82  }
83 
84  edm::InputTag TkTag = conf_.getParameter<edm::InputTag>("Tracks");
85  //Get Ids;
86  double ModuleRangeMin = conf_.getParameter<double>("ModuleXMin");
87  double ModuleRangeMax = conf_.getParameter<double>("ModuleXMax");
88  double TIBRangeMin = conf_.getParameter<double>("TIBXMin");
89  double TIBRangeMax = conf_.getParameter<double>("TIBXMax");
90  double TOBRangeMin = conf_.getParameter<double>("TOBXMin");
91  double TOBRangeMax = conf_.getParameter<double>("TOBXMax");
92  int TIB_bin = conf_.getParameter<int>("TIB_bin");
93  int TOB_bin = conf_.getParameter<int>("TOB_bin");
94  int SUM_bin = conf_.getParameter<int>("SUM_bin");
95 
96  hFile = new TFile(conf_.getUntrackedParameter<std::string>("treeName").c_str(), "RECREATE");
97 
98  Hit_Tree = hFile->mkdir("Hit_Tree");
99  Track_Tree = hFile->mkdir("Track_Tree");
100  Event_Tree = hFile->mkdir("Event_Tree");
101 
102  HitsTree = new TTree("HitsTree", "HitsTree");
103 
104  HitsTree->Branch("RunNumber", &RunNumber, "RunNumber/I");
105  HitsTree->Branch("EventNumber", &EventNumber, "EventNumber/I");
106  HitsTree->Branch("TanTrackAngle", &TanTrackAngle, "TanTrackAngle/F");
107  HitsTree->Branch("TanTrackAngleParallel", &TanTrackAngleParallel, "TanTrackAngleParallel/F");
108  HitsTree->Branch("ClSize", &ClSize, "ClSize/I");
109  HitsTree->Branch("HitCharge", &HitCharge, "HitCharge/I");
110  HitsTree->Branch("Hit_Std_Dev", &hit_std_dev, "hit_std_dev/F");
111  HitsTree->Branch("Type", &Type, "Type/I");
112  HitsTree->Branch("Layer", &Layer, "Layer/I");
113  HitsTree->Branch("Wheel", &Wheel, "Wheel/I");
114  HitsTree->Branch("bw_fw", &bw_fw, "bw_fw/I");
115  HitsTree->Branch("Ext_Int", &Ext_Int, "Ext_Int/I");
116  HitsTree->Branch("MonoStereo", &MonoStereo, "MonoStereo/I");
117  HitsTree->Branch("MagField", &MagField, "MagField/F");
118  HitsTree->Branch("SignCorrection", &SignCorrection, "SignCorrection/F");
119  HitsTree->Branch("XGlobal", &XGlobal, "XGlobal/F");
120  HitsTree->Branch("YGlobal", &YGlobal, "YGlobal/F");
121  HitsTree->Branch("ZGlobal", &ZGlobal, "ZGlobal/F");
122  HitsTree->Branch("ParticleCharge", &ParticleCharge, "ParticleCharge/I");
123  HitsTree->Branch("Momentum", &Momentum, "Momentum/F");
124  HitsTree->Branch("pt", &pt, "pt/F");
125  HitsTree->Branch("chi2norm", &chi2norm, "chi2norm/F");
126  HitsTree->Branch("EtaTrack", &EtaTrack, "EtaTrack/F");
127  HitsTree->Branch("PhiTrack", &PhiTrack, "PhiTrack/F");
128  HitsTree->Branch("TrajSize", &trajsize, "trajsize/I");
129  HitsTree->Branch("HitNr", &HitNr, "HitNr/I");
130  HitsTree->Branch("HitPerTrack", &HitPerTrack, "HitPerTrack/I");
131  HitsTree->Branch("id_detector", &id_detector, "id_detector/I");
132  HitsTree->Branch("thick_detector", &thick_detector, "thick_detector/F");
133  HitsTree->Branch("pitch_detector", &pitch_detector, "pitch_detector/F");
134  HitsTree->Branch("Amplitudes", Amplitudes, "Amplitudes[ClSize]/I");
135 
136  HitsTree->SetDirectory(Hit_Tree);
137 
138  TrackTree = new TTree("TrackTree", "TrackTree");
139 
140  TrackTree->Branch("TrackCounter", &TrackCounter, "TrackCounter/I");
141 
142  TrackTree->SetDirectory(Track_Tree);
143 
144  EventTree = new TTree("EventTree", "EventTree");
145 
146  EventTree->Branch("EventCounter", &EventCounter, "EventCounter/I");
147 
148  EventTree->SetDirectory(Event_Tree);
149 
150  // use SistripHistoId for producing histogram id (and title)
151  SiStripHistoId hidmanager;
152 
153  // create SiStripFolderOrganizer
154  SiStripFolderOrganizer folder_organizer;
155 
156  dbe_ = edm::Service<DQMStore>().operator->();
157 
158  //get all detids
159 
160  for (std::vector<uint32_t>::const_iterator Id = activeDets.begin(); Id != activeDets.end(); Id++) {
161  // for(Iditer=Id.begin();Iditer!=Id.end();Iditer++){ //loop on detids
162  DetId Iditero = DetId(*Id);
163  DetId* Iditer = &Iditero;
164  if ((Iditer->subdetId() == int(StripSubdetector::TIB)) ||
165  (Iditer->subdetId() == int(StripSubdetector::TOB))) { //include only barrel
166 
167  int module_bin = 0;
168  if (Iditer->subdetId() == int(StripSubdetector::TIB)) {
169  module_bin = TIB_bin;
170  } else {
171  module_bin = TOB_bin;
172  }
173 
174  // create a TProfile for each module
175  StripSubdetector subid(*Iditer);
176  std::string hid;
177  //Mono single sided detectors
178  LocalPoint p;
179  auto stripdet = tkGeom_->idToDet(subid);
180  if (!stripdet->isLeaf())
181  continue;
182  const StripTopology& topol = (const StripTopology&)stripdet->topology();
183  float thickness = stripdet->specificSurface().bounds().thickness();
184 
185  folder_organizer.setDetectorFolder(Iditer->rawId(), tTopo);
186  hid = hidmanager.createHistoId(TkTag.label(), "det", Iditer->rawId());
187  MonitorElement* profile = dbe_->bookProfile(hid, hid, module_bin, ModuleRangeMin, ModuleRangeMax, 20, 0, 5, "");
188  detparameters* param = new detparameters;
189  histos[Iditer->rawId()] = profile;
190  detmap[Iditer->rawId()] = param;
191  param->thickness = thickness * 10000;
192  param->pitch = topol.localPitch(p) * 10000;
193 
194  const GlobalPoint globalp = (stripdet->surface()).toGlobal(p);
195  GlobalVector globalmagdir = magField.inTesla(globalp);
196  param->magfield = (stripdet->surface()).toLocal(globalmagdir);
197 
198  profile->setAxisTitle("tan(#theta_{t})", 1);
199  profile->setAxisTitle("Cluster size", 2);
200 
201  // create a summary histo if it does not exist already
203  unsigned int layerid;
204  getlayer(subid, tTopo, name, layerid);
205  name += TkTag.label();
206  if (summaryhisto.find(layerid) == (summaryhisto.end())) {
207  folder_organizer.setSiStripFolder();
208  MonitorElement* summaryprofile = nullptr;
209  if (subid.subdetId() == int(StripSubdetector::TIB) || subid.subdetId() == int(StripSubdetector::TID))
210  summaryprofile = dbe_->bookProfile(name, name, SUM_bin, TIBRangeMin, TIBRangeMax, 20, 0, 5, "");
211  else if (subid.subdetId() == int(StripSubdetector::TOB) || subid.subdetId() == int(StripSubdetector::TEC))
212  summaryprofile = dbe_->bookProfile(name, name, SUM_bin, TOBRangeMin, TOBRangeMax, 20, 0, 5, "");
213  if (summaryprofile) {
214  detparameters* summaryparam = new detparameters;
215  summaryhisto[layerid] = summaryprofile;
216  summarydetmap[layerid] = summaryparam;
217  summaryparam->thickness = thickness * 10000;
218  summaryparam->pitch = topol.localPitch(p) * 10000;
219  summaryprofile->setAxisTitle("tan(#theta_{t})", 1);
220  summaryprofile->setAxisTitle("Cluster size", 2);
221  }
222  }
223  }
224  }
225 
226  trackcollsize = 0;
227  trajsize = 0;
228  RunNumber = 0;
229  EventNumber = 0;
230  hitcounter = 0;
231  hitcounter_2ndloop = 0;
232  worse_double_hit = 0;
233  better_double_hit = 0;
234  eventcounter = 0;
235 
236  EventCounter = 1;
237  TrackCounter = 1;
238 }
239 
241  detparmap::iterator detpariter;
242  for (detpariter = detmap.begin(); detpariter != detmap.end(); ++detpariter)
243  delete detpariter->second;
244  for (detpariter = summarydetmap.begin(); detpariter != summarydetmap.end(); ++detpariter)
245  delete detpariter->second;
246  delete hFile;
247 }
248 
249 // Analyzer: Functions that gets called by framework every event
250 
252  const TrackerTopology* const tTopo = &es.getData(tTopoToken_);
253 
254  RunNumber = e.id().run();
255  EventNumber = e.id().event();
256 
257  eventcounter++;
258 
259  EventTree->Fill();
260 
261  //Analysis of Trajectory-RecHits
262 
263  edm::InputTag TkTag = conf_.getParameter<edm::InputTag>("Tracks");
264 
266  e.getByLabel(TkTag, trackCollection);
267 
269  e.getByLabel(TkTag, TrajectoryCollection);
270 
272  e.getByLabel(TkTag, TrajTrackMap);
273 
274  const reco::TrackCollection* tracks = trackCollection.product();
275 
276  // FIXME this has to be changed to use pointers to clusters...
277  std::map<const SiStripRecHit2D*, std::pair<float, float>, DetIdLess> hitangleassociation;
278  std::list<SiStripRecHit2D> cache; // ugly, inefficient, effective in making the above working
279 
280  trackcollsize = tracks->size();
281  trajsize = TrajectoryCollection->size();
282 
283  edm::LogInfo("SiStripLAProfileBooker::analyze") << " Number of tracks in event = " << trackcollsize << "\n";
284  edm::LogInfo("SiStripLAProfileBooker::analyze") << " Number of trajectories in event = " << trajsize << "\n";
285 
287 
288  for (TrajTrackIter = TrajTrackMap->begin(); TrajTrackIter != TrajTrackMap->end();
289  TrajTrackIter++) { //loop on trajectories
290 
291  if (TrajTrackIter->key->foundHits() >= 5) {
292  TrackTree->Fill();
293 
294  ParticleCharge = -99;
295  Momentum = -99;
296  pt = -99;
297  chi2norm = -99;
298  HitPerTrack = -99;
299  EtaTrack = -99;
300  PhiTrack = -99;
301 
302  ParticleCharge = TrajTrackIter->val->charge();
303  pt = TrajTrackIter->val->pt();
304  Momentum = TrajTrackIter->val->p();
305  chi2norm = TrajTrackIter->val->normalizedChi2();
306  EtaTrack = TrajTrackIter->val->eta();
307  PhiTrack = TrajTrackIter->val->phi();
308  HitPerTrack = TrajTrackIter->key->foundHits();
309 
310  std::vector<TrajectoryMeasurement> TMeas = TrajTrackIter->key->measurements();
311  std::vector<TrajectoryMeasurement>::iterator itm;
312 
313  for (itm = TMeas.begin(); itm != TMeas.end(); itm++) { //loop on hits
314 
315  int i;
316  for (i = 0; i < 100; i++) {
317  Amplitudes[i] = 0;
318  }
319 
320  TanTrackAngle = -99;
321  TanTrackAngleParallel = -99;
322  ClSize = -99;
323  HitCharge = 0;
324  Type = -99;
325  Layer = -99;
326  Wheel = -99;
327  bw_fw = -99;
328  Ext_Int = -99;
329  MonoStereo = -99;
330  MagField = -99;
331  SignCorrection = -99;
332  XGlobal = -99;
333  YGlobal = -99;
334  ZGlobal = -99;
335  barycenter = -99;
336  hit_std_dev = -99;
337  sumx = 0;
338  id_detector = -1;
339  thick_detector = -1;
340  pitch_detector = -1;
341  HitNr = 1;
342 
343  SiStripRecHit2D lhit;
344  TrajectoryStateOnSurface tsos = itm->updatedState();
345  const TransientTrackingRecHit::ConstRecHitPointer thit = itm->recHit();
346  if ((thit->geographicalId().subdetId() == int(StripSubdetector::TIB)) ||
347  thit->geographicalId().subdetId() == int(StripSubdetector::TOB)) { //include only barrel
348  const SiStripMatchedRecHit2D* matchedhit = dynamic_cast<const SiStripMatchedRecHit2D*>((*thit).hit());
349  const ProjectedSiStripRecHit2D* phit = dynamic_cast<const ProjectedSiStripRecHit2D*>((*thit).hit());
350  const SiStripRecHit2D* hit = dynamic_cast<const SiStripRecHit2D*>((*thit).hit());
351  if (phit) {
352  lhit = phit->originalHit();
353  hit = &lhit;
354  }
355 
356  LocalVector trackdirection = tsos.localDirection();
357 
358  if (matchedhit) { //if matched hit...
359 
360  GluedGeomDet* gdet = (GluedGeomDet*)tkGeom_->idToDet(matchedhit->geographicalId());
361 
362  GlobalVector gtrkdir = gdet->toGlobal(trackdirection);
363 
364  // THIS THE POINTER TO THE MONO HIT OF A MATCHED HIT
365 
366  // top be migrated to the more direct interface of matchedhit
367  cache.push_back(matchedhit->monoHit());
368  const SiStripRecHit2D* monohit = &cache.back();
369  const SiStripRecHit2D::ClusterRef& monocluster = monohit->cluster();
370  const GeomDetUnit* monodet = gdet->monoDet();
371  // this does not exists anymore! either project the matched or use CPE
372  const LocalPoint monoposition = monohit->localPosition();
373 
375  id_detector = detid.rawId();
377  const StripTopology& mtopol = (StripTopology&)monodet->topology();
378  pitch_detector = mtopol.localPitch(monoposition);
379  const GlobalPoint monogposition = (monodet->surface()).toGlobal(monoposition);
380  ClSize = (monocluster->amplitudes()).size();
381 
382  const auto& amplitudes = monocluster->amplitudes();
383 
384  barycenter = monocluster->barycenter() - 0.5;
385  uint16_t FirstStrip = monocluster->firstStrip();
386  auto begin = amplitudes.begin();
387  nstrip = 0;
388  for (auto idigi = begin; idigi != amplitudes.end(); idigi++) {
389  Amplitudes[nstrip] = *idigi;
390  sumx += pow(((FirstStrip + idigi - begin) - barycenter), 2) * (*idigi);
391  HitCharge += *idigi;
392  }
394 
395  XGlobal = monogposition.x();
396  YGlobal = monogposition.y();
397  ZGlobal = monogposition.z();
398 
399  Type = detid.subdetId();
400  MonoStereo = detid.stereo();
401 
402  if (detid.subdetId() == int(StripSubdetector::TIB)) {
403  Layer = tTopo->tibLayer(detid);
404  bw_fw = tTopo->tibStringInfo(detid)[0];
405  Ext_Int = tTopo->tibStringInfo(detid)[1];
406  }
407  if (detid.subdetId() == int(StripSubdetector::TOB)) {
408  Layer = tTopo->tobLayer(detid);
409  bw_fw = tTopo->tobRodInfo(detid)[0];
410  }
411  if (detid.subdetId() == int(StripSubdetector::TID)) {
412  Wheel = tTopo->tidWheel(detid);
413  bw_fw = tTopo->tidModuleInfo(detid)[0];
414  }
415  if (detid.subdetId() == int(StripSubdetector::TEC)) {
416  Wheel = tTopo->tecWheel(detid);
417  bw_fw = tTopo->tecPetalInfo(detid)[0];
418  }
419 
420  LocalVector monotkdir = monodet->toLocal(gtrkdir);
421 
422  if (monotkdir.z() != 0) {
423  // THE LOCAL ANGLE (MONO)
424  float tanangle = monotkdir.x() / monotkdir.z();
425  TanTrackAngleParallel = monotkdir.y() / monotkdir.z();
426  TanTrackAngle = tanangle;
427  detparmap::iterator TheDet = detmap.find(detid.rawId());
428  LocalVector localmagdir;
429  if (TheDet != detmap.end())
430  localmagdir = TheDet->second->magfield;
431  MagField = localmagdir.mag();
432  if (MagField != 0.) {
433  LocalVector monoylocal(0, 1, 0);
434  float signcorrection = (localmagdir * monoylocal) / (MagField);
435  if (signcorrection != 0)
436  SignCorrection = 1 / signcorrection;
437  }
438 
439  std::map<const SiStripRecHit2D*, std::pair<float, float>, DetIdLess>::iterator alreadystored =
440  hitangleassociation.find(monohit);
441 
442  if (alreadystored != hitangleassociation.end()) { //decide which hit take
443  if (itm->estimate() > alreadystored->second.first) {
445  }
446  if (itm->estimate() < alreadystored->second.first) {
448  hitangleassociation.insert(std::make_pair(monohit, std::make_pair(itm->estimate(), tanangle)));
449  }
450  } else {
451  hitangleassociation.insert(make_pair(monohit, std::make_pair(itm->estimate(), tanangle)));
452  HitsTree->Fill();
453  hitcounter++;
454  }
455 
456  // THIS THE POINTER TO THE STEREO HIT OF A MATCHED HIT
457 
458  // top be migrated to the more direct interface of matchedhit
459  cache.push_back(matchedhit->stereoHit());
460  const SiStripRecHit2D* stereohit = &cache.back();
461  const SiStripRecHit2D::ClusterRef& stereocluster = stereohit->cluster();
462  const GeomDetUnit* stereodet = gdet->stereoDet();
463  // this does not exists anymore! either project the matched or use CPE
464  const LocalPoint stereoposition = stereohit->localPosition();
465  StripSubdetector detid = (StripSubdetector)stereohit->geographicalId();
466  id_detector = detid.rawId();
467  thick_detector = stereodet->specificSurface().bounds().thickness();
468  const StripTopology& stopol = (StripTopology&)stereodet->topology();
469  pitch_detector = stopol.localPitch(stereoposition);
470  const GlobalPoint stereogposition = (stereodet->surface()).toGlobal(stereoposition);
471 
472  ClSize = (stereocluster->amplitudes()).size();
473 
474  const auto& amplitudes = stereocluster->amplitudes();
475 
476  barycenter = stereocluster->barycenter() - 0.5;
477  uint16_t FirstStrip = stereocluster->firstStrip();
478  auto begin = amplitudes.begin();
479  nstrip = 0;
480  for (auto idigi = begin; idigi != amplitudes.end(); idigi++) {
481  Amplitudes[nstrip] = *idigi;
482  sumx += pow(((FirstStrip + idigi - begin) - barycenter), 2) * (*idigi);
483  HitCharge += *idigi;
484  }
486 
487  XGlobal = stereogposition.x();
488  YGlobal = stereogposition.y();
489  ZGlobal = stereogposition.z();
490 
491  Type = detid.subdetId();
492  MonoStereo = detid.stereo();
493 
494  if (detid.subdetId() == int(StripSubdetector::TIB)) {
495  Layer = tTopo->tibLayer(detid);
496  bw_fw = tTopo->tibStringInfo(detid)[0];
497  Ext_Int = tTopo->tibStringInfo(detid)[1];
498  }
499  if (detid.subdetId() == int(StripSubdetector::TOB)) {
500  Layer = tTopo->tobLayer(detid);
501  bw_fw = tTopo->tobRodInfo(detid)[0];
502  }
503  if (detid.subdetId() == int(StripSubdetector::TID)) {
504  Wheel = tTopo->tidWheel(detid);
505  bw_fw = tTopo->tidModuleInfo(detid)[0];
506  }
507  if (detid.subdetId() == int(StripSubdetector::TEC)) {
508  Wheel = tTopo->tecWheel(detid);
509  bw_fw = tTopo->tecPetalInfo(detid)[0];
510  }
511 
512  LocalVector stereotkdir = stereodet->toLocal(gtrkdir);
513 
514  if (stereotkdir.z() != 0) {
515  // THE LOCAL ANGLE (STEREO)
516  float tanangle = stereotkdir.x() / stereotkdir.z();
517  TanTrackAngleParallel = stereotkdir.y() / stereotkdir.z();
518  TanTrackAngle = tanangle;
519  detparmap::iterator TheDet = detmap.find(detid.rawId());
520  LocalVector localmagdir;
521  if (TheDet != detmap.end())
522  localmagdir = TheDet->second->magfield;
523  MagField = localmagdir.mag();
524  LocalVector stereoylocal(0, 1, 0);
525  if (MagField != 0.) {
526  float signcorrection = (localmagdir * stereoylocal) / (MagField);
527  if (signcorrection != 0)
528  SignCorrection = 1 / signcorrection;
529  }
530 
531  std::map<const SiStripRecHit2D*, std::pair<float, float>, DetIdLess>::iterator alreadystored =
532  hitangleassociation.find(stereohit);
533 
534  if (alreadystored != hitangleassociation.end()) { //decide which hit take
535  if (itm->estimate() > alreadystored->second.first) {
537  }
538  if (itm->estimate() < alreadystored->second.first) {
540  hitangleassociation.insert(std::make_pair(stereohit, std::make_pair(itm->estimate(), tanangle)));
541  }
542  } else {
543  hitangleassociation.insert(std::make_pair(stereohit, std::make_pair(itm->estimate(), tanangle)));
544  HitsTree->Fill();
545  hitcounter++;
546  }
547  }
548  }
549  } else if (hit) {
550  // hit= POINTER TO THE RECHIT
551 
552  const SiStripRecHit2D::ClusterRef& cluster = hit->cluster();
553 
554  GeomDetUnit* gdet = (GeomDetUnit*)tkGeom_->idToDet(hit->geographicalId());
555  const LocalPoint position = hit->localPosition();
556  StripSubdetector detid = (StripSubdetector)hit->geographicalId();
557  id_detector = detid.rawId();
559  const StripTopology& topol = (StripTopology&)gdet->topology();
561  const GlobalPoint gposition = (gdet->surface()).toGlobal(position);
562 
563  ClSize = (cluster->amplitudes()).size();
564 
565  const auto& amplitudes = cluster->amplitudes();
566 
567  barycenter = cluster->barycenter() - 0.5;
568  uint16_t FirstStrip = cluster->firstStrip();
569  nstrip = 0;
570  auto begin = amplitudes.begin();
571  for (auto idigi = amplitudes.begin(); idigi != amplitudes.end(); idigi++) {
572  Amplitudes[nstrip] = *idigi;
573  sumx += pow(((FirstStrip + idigi - begin) - barycenter), 2) * (*idigi);
574  HitCharge += *idigi;
575  }
577 
578  XGlobal = gposition.x();
579  YGlobal = gposition.y();
580  ZGlobal = gposition.z();
581 
582  Type = detid.subdetId();
583  MonoStereo = detid.stereo();
584 
585  if (detid.subdetId() == int(StripSubdetector::TIB)) {
586  Layer = tTopo->tibLayer(detid);
587  bw_fw = tTopo->tibStringInfo(detid)[0];
588  Ext_Int = tTopo->tibStringInfo(detid)[1];
589  }
590  if (detid.subdetId() == int(StripSubdetector::TOB)) {
591  Layer = tTopo->tobLayer(detid);
592  bw_fw = tTopo->tobRodInfo(detid)[0];
593  }
594  if (detid.subdetId() == int(StripSubdetector::TID)) {
595  Wheel = tTopo->tidWheel(detid);
596  bw_fw = tTopo->tidModuleInfo(detid)[0];
597  }
598  if (detid.subdetId() == int(StripSubdetector::TEC)) {
599  Wheel = tTopo->tecWheel(detid);
600  bw_fw = tTopo->tecPetalInfo(detid)[0];
601  }
602 
603  if (trackdirection.z() != 0) {
604  // THE LOCAL ANGLE
605  float tanangle = trackdirection.x() / trackdirection.z();
606  TanTrackAngleParallel = trackdirection.y() / trackdirection.z();
607  TanTrackAngle = tanangle;
608  detparmap::iterator TheDet = detmap.find(detid.rawId());
609  LocalVector localmagdir;
610  if (TheDet != detmap.end())
611  localmagdir = TheDet->second->magfield;
612  MagField = localmagdir.mag();
613  if (MagField != 0.) {
614  LocalVector ylocal(0, 1, 0);
615  float signcorrection = (localmagdir * ylocal) / (MagField);
616  if (signcorrection != 0)
617  SignCorrection = 1 / signcorrection;
618  }
619 
620  std::map<const SiStripRecHit2D*, std::pair<float, float>, DetIdLess>::iterator alreadystored =
621  hitangleassociation.find(hit);
622 
623  if (alreadystored != hitangleassociation.end()) { //decide which hit take
624  if (itm->estimate() > alreadystored->second.first) {
626  }
627  if (itm->estimate() < alreadystored->second.first) {
629  hitangleassociation.insert(std::make_pair(hit, std::make_pair(itm->estimate(), tanangle)));
630  }
631  } else {
632  hitangleassociation.insert(std::make_pair(hit, std::make_pair(itm->estimate(), tanangle)));
633  HitsTree->Fill();
634  hitcounter++;
635  }
636  }
637  }
638  }
639  }
640  }
641  }
642  std::map<const SiStripRecHit2D*, std::pair<float, float>, DetIdLess>::iterator hitsiter;
643 
644  for (hitsiter = hitangleassociation.begin(); hitsiter != hitangleassociation.end(); hitsiter++) {
646 
647  const SiStripRecHit2D* hit = hitsiter->first;
648  const SiStripRecHit2D::ClusterRef& cluster = hit->cluster();
649 
650  size = (cluster->amplitudes()).size();
651 
652  StripSubdetector detid = (StripSubdetector)hit->geographicalId();
653 
654  float tangent = hitsiter->second.second;
655 
656  //Sign and XZ plane projection correction applied in TrackLocalAngle (TIB|TOB layers)
657 
658  detparmap::iterator thedet = detmap.find(detid.rawId());
659  LocalVector localmagdir;
660  if (thedet != detmap.end())
661  localmagdir = thedet->second->magfield;
662  float localmagfield = localmagdir.mag();
663 
664  if (localmagfield != 0.) {
665  LocalVector ylocal(0, 1, 0);
666 
667  float normprojection = (localmagdir * ylocal) / (localmagfield);
668 
669  if (normprojection == 0.)
670  LogDebug("SiStripLAProfileBooker::analyze") << "Error: YBprojection = 0";
671 
672  else {
673  float signprojcorrection = 1 / normprojection;
674  tangent *= signprojcorrection;
675  }
676  }
677 
678  //Filling histograms
679 
680  histomap::iterator thehisto = histos.find(detid.rawId());
681 
682  if (thehisto == histos.end())
683  edm::LogError("SiStripLAProfileBooker::analyze")
684  << "Error: the profile associated to" << detid.rawId() << "does not exist! ";
685  else
686  thehisto->second->Fill(tangent, size);
687 
688  //Summary histograms
690  unsigned int layerid;
691  getlayer(detid, tTopo, name, layerid);
692  histomap::iterator thesummaryhisto = summaryhisto.find(layerid);
693  if (thesummaryhisto == summaryhisto.end())
694  edm::LogError("SiStripLAProfileBooker::analyze")
695  << "Error: the profile associated to subdet " << name << "does not exist! ";
696  else
697  thesummaryhisto->second->Fill(tangent, size);
698  }
699 }
700 
701 //Makename function
702 
704  const TrackerTopology* tTopo,
705  std::string& name,
706  unsigned int& layerid) {
707  int layer = 0;
708  std::stringstream layernum;
709 
710  if (detid.subdetId() == int(StripSubdetector::TIB)) {
711  name += "TIB_Layer_";
712  layer = tTopo->tibLayer(detid);
713  }
714 
715  else if (detid.subdetId() == int(StripSubdetector::TID)) {
716  name += "TID_Ring_";
717  layer = tTopo->tidRing(detid);
718  }
719 
720  else if (detid.subdetId() == int(StripSubdetector::TOB)) {
721  name += "TOB_Layer_";
722  layer = tTopo->tobLayer(detid);
723 
724  }
725 
726  else if (detid.subdetId() == int(StripSubdetector::TEC)) {
727  name += "TEC_Ring_";
728  layer = tTopo->tecRing(detid);
729  }
730  layernum << layer;
731  name += layernum.str();
732  layerid = detid.subdetId() * 10 + layer;
733 }
734 
736  std::string outputFile_ = conf_.getUntrackedParameter<std::string>("fileName", "LorentzAngle.root");
737  dbe_->save(outputFile_);
738 
739  hFile->Write();
740  hFile->Close();
741 }
Vector3DBase
Definition: Vector3DBase.h:8
SiStripLAProfileBooker::Track_Tree
TDirectory * Track_Tree
Definition: SiStripLAProfileBooker.h:71
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
SiStripLAProfileBooker::analyze
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Definition: SiStripLAProfileBooker.cc:251
SiStripLAProfileBooker::MagField
float MagField
Definition: SiStripLAProfileBooker.h:60
Handle.h
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
SiStripRecHit2D::cluster
ClusterRef cluster() const
Definition: SiStripRecHit2D.h:22
SiStripLAProfileBooker::ZGlobal
float ZGlobal
Definition: SiStripLAProfileBooker.h:60
electrons_cff.bool
bool
Definition: electrons_cff.py:393
mps_fire.i
i
Definition: mps_fire.py:428
SiStripLAProfileBooker::trajsize
int trajsize
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::YGlobal
float YGlobal
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::HitNr
int HitNr
Definition: SiStripLAProfileBooker.h:62
SiStripLAProfileBooker::SiStripLAProfileBooker
SiStripLAProfileBooker(const edm::ParameterSet &conf)
Definition: SiStripLAProfileBooker.cc:55
MessageLogger.h
SiStripFolderOrganizer.h
SiStripLAProfileBooker::hitcounter
int hitcounter
Definition: SiStripLAProfileBooker.h:62
SiStripHistoId.h
GeomDet
Definition: GeomDet.h:27
SiStripLAProfileBooker::EtaTrack
float EtaTrack
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::HitCharge
int HitCharge
Definition: SiStripLAProfileBooker.h:58
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
SiStripLAProfileBooker::SignCorrection
float SignCorrection
Definition: SiStripLAProfileBooker.h:60
edm::Run
Definition: Run.h:45
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
DetIdLess::DetIdLess
DetIdLess()
Definition: SiStripLAProfileBooker.cc:46
StripSubdetector::stereo
unsigned int stereo() const
stereo
Definition: StripSubdetector.h:46
StripSubdetector
Definition: StripSubdetector.h:12
SiStripLAProfileBooker::chi2norm
float chi2norm
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::pt
float pt
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::tkGeom_
const TrackerGeometry * tkGeom_
Definition: SiStripLAProfileBooker.h:83
GluedGeomDet::monoDet
const GeomDetUnit * monoDet() const
Definition: GluedGeomDet.h:19
GluedGeomDet.h
DQMStore.h
GeomDet::topology
virtual const Topology & topology() const
Definition: GeomDet.cc:67
SiStripLAProfileBooker::magFieldToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
Definition: SiStripLAProfileBooker.h:86
SiStripRecHit2D
Definition: SiStripRecHit2D.h:7
ExtractTObject.h
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
TransientTrackingRecHit.h
SiStripLAProfileBooker::detmap
detparmap detmap
Definition: SiStripLAProfileBooker.h:78
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
StripTopology.h
edm::Handle< reco::TrackCollection >
SiStripLAProfileBooker::TrackCounter
int TrackCounter
Definition: SiStripLAProfileBooker.h:64
StripTopology::localPitch
virtual float localPitch(const LocalPoint &) const =0
TrackingRecHit::geographicalId
DetId geographicalId() const
Definition: TrackingRecHit.h:120
SiStripLAProfileBooker::detCablingToken_
edm::ESGetToken< SiStripDetCabling, SiStripDetCablingRcd > detCablingToken_
Definition: SiStripLAProfileBooker.h:87
ProjectedSiStripRecHit2D
Definition: ProjectedSiStripRecHit2D.h:8
TrackerTopology::tidRing
unsigned int tidRing(const DetId &id) const
Definition: TrackerTopology.h:218
edm::Ref
Definition: AssociativeIterator.h:58
TrackerTopology::tidWheel
unsigned int tidWheel(const DetId &id) const
Definition: TrackerTopology.h:201
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
SiStripLAProfileBooker::beginRun
void beginRun(edm::Run const &, const edm::EventSetup &c) override
Definition: SiStripLAProfileBooker.cc:66
edm::InputTag::label
std::string const & label() const
Definition: InputTag.h:36
DetId
Definition: DetId.h:17
TrackerTopology::tobRodInfo
std::vector< unsigned int > tobRodInfo(const DetId &id) const
Definition: TrackerTopology.h:226
edm::AssociationMap::end
const_iterator end() const
last iterator over the map (read only)
Definition: AssociationMap.h:171
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
SiStripLAProfileBooker::size
int size
Definition: SiStripLAProfileBooker.h:62
TrackerTopology::tibStringInfo
std::vector< unsigned int > tibStringInfo(const DetId &id) const
Definition: TrackerTopology.h:421
SiStripLAProfileBooker::TanTrackAngleParallel
float TanTrackAngleParallel
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::dbe_
DQMStore * dbe_
Definition: SiStripLAProfileBooker.h:76
SiStripLAProfileBooker::PhiTrack
float PhiTrack
Definition: SiStripLAProfileBooker.h:60
TrackerTopology::tidModuleInfo
std::vector< unsigned int > tidModuleInfo(const DetId &id) const
Definition: TrackerTopology.h:434
Track.h
SiStripLAProfileBooker::MonoStereo
int MonoStereo
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::EventTree
TTree * EventTree
Definition: SiStripLAProfileBooker.h:68
TrajectoryStateOnSurface::localDirection
LocalVector localDirection() const
Definition: TrajectoryStateOnSurface.h:76
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:114
Service.h
SiStripLAProfileBooker::TanTrackAngle
float TanTrackAngle
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::tTopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: SiStripLAProfileBooker.h:84
SiStripLAProfileBooker::Momentum
float Momentum
Definition: SiStripLAProfileBooker.h:60
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
dqm::implementation::IBooker::bookProfile
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
SiStripMatchedRecHit2D::stereoHit
SiStripRecHit2D stereoHit() const
Definition: SiStripMatchedRecHit2D.h:25
SiStripLAProfileBooker::HitPerTrack
int HitPerTrack
Definition: SiStripLAProfileBooker.h:62
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
SiStripLAProfileBooker::sumx
float sumx
Definition: SiStripLAProfileBooker.h:60
Point3DBase< float, LocalTag >
GeomDet::toLocal
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:58
dqm::implementation::DQMStore::save
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
Definition: DQMStore.cc:761
SiStripLAProfileBooker::Hit_Tree
TDirectory * Hit_Tree
Definition: SiStripLAProfileBooker.h:71
b
double b
Definition: hdecay.h:118
TrajTrackAssociation.h
SiStripLAProfileBooker::EventCounter
int EventCounter
Definition: SiStripLAProfileBooker.h:64
GluedGeomDet
Definition: GluedGeomDet.h:7
utilities.cache
def cache(function)
Definition: utilities.py:3
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
SiStripLAProfileBooker::thick_detector
float thick_detector
Definition: SiStripLAProfileBooker.h:65
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PostProcessor_cff.profile
profile
Definition: PostProcessor_cff.py:38
SiStripLAProfileBooker.h
SiStripLAProfileBooker::HitsTree
TTree * HitsTree
Definition: SiStripLAProfileBooker.h:68
TrackingGeometry::DetIdContainer
std::vector< DetId > DetIdContainer
Definition: TrackingGeometry.h:30
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator
friend struct const_iterator
Definition: AssociationMap.h:274
SiStripLAProfileBooker::RunNumber
int RunNumber
Definition: SiStripLAProfileBooker.h:58
Bounds::thickness
virtual float thickness() const =0
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
edm::ParameterSet
Definition: ParameterSet.h:47
edm::Transition
Transition
Definition: Transition.h:12
a
double a
Definition: hdecay.h:119
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
Event.h
SiStripLAProfileBooker::detparameters
Definition: SiStripLAProfileBooker.h:50
SiStripLAProfileBooker::trackcollsize
int trackcollsize
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::bw_fw
int bw_fw
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::~SiStripLAProfileBooker
~SiStripLAProfileBooker() override
Definition: SiStripLAProfileBooker.cc:240
SiStripLAProfileBooker::Wheel
int Wheel
Definition: SiStripLAProfileBooker.h:58
SiStripMatchedRecHit2D::monoHit
SiStripRecHit2D monoHit() const
Definition: SiStripMatchedRecHit2D.h:26
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
TrackingRecHit::ConstRecHitPointer
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
Definition: TrackingRecHit.h:25
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
SiStripLAProfileBooker::id_detector
int id_detector
Definition: SiStripLAProfileBooker.h:64
SiStripLAProfileBooker::ParticleCharge
int ParticleCharge
Definition: SiStripLAProfileBooker.h:58
TrackerTopology::tecRing
unsigned int tecRing(const DetId &id) const
ring id
Definition: TrackerTopology.h:217
SiStripLAProfileBooker::TrackTree
TTree * TrackTree
Definition: SiStripLAProfileBooker.h:68
SiStripLAProfileBooker::worse_double_hit
int worse_double_hit
Definition: SiStripLAProfileBooker.h:62
SiStripFolderOrganizer::setSiStripFolder
void setSiStripFolder()
Definition: SiStripFolderOrganizer.cc:45
ProjectedSiStripRecHit2D.h
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:57
GeomDet::specificSurface
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
Definition: GeomDet.h:40
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
SiStripLAProfileBooker::tkGeomToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken_
Definition: SiStripLAProfileBooker.h:85
SiStripLAProfileBooker::barycenter
float barycenter
Definition: SiStripLAProfileBooker.h:60
SiStripHistoId::createHistoId
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
Definition: SiStripHistoId.cc:26
cms::cuda::for
for(int i=first, nt=offsets[nh];i< nt;i+=gridDim.x *blockDim.x)
Definition: HistoContainer.h:27
SiStripLAProfileBooker::Type
int Type
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::Ext_Int
int Ext_Int
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::hit_std_dev
float hit_std_dev
Definition: SiStripLAProfileBooker.h:60
SiStripLAProfileBooker::summarydetmap
detparmap summarydetmap
Definition: SiStripLAProfileBooker.h:79
SiStripFolderOrganizer::setDetectorFolder
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
Definition: SiStripFolderOrganizer.cc:202
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:120
SiStripLAProfileBooker::hFile
TFile * hFile
Definition: SiStripLAProfileBooker.h:69
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
GluedGeomDet::stereoDet
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:20
Trajectory.h
SiStripHistoId
Definition: SiStripHistoId.h:25
GeomDet.h
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
SiStripLAProfileBooker::hitcounter_2ndloop
int hitcounter_2ndloop
Definition: SiStripLAProfileBooker.h:62
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
BaseTrackerRecHit::localPosition
LocalPoint localPosition() const override
Definition: BaseTrackerRecHit.h:56
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
DetIdLess::operator()
bool operator()(const SiStripRecHit2D *a, const SiStripRecHit2D *b) const
Definition: SiStripLAProfileBooker.cc:48
SiStripMatchedRecHit2D
Definition: SiStripMatchedRecHit2D.h:8
SiStripLAProfileBooker::Event_Tree
TDirectory * Event_Tree
Definition: SiStripLAProfileBooker.h:71
SiStripLAProfileBooker::Layer
int Layer
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::ClSize
int ClSize
Definition: SiStripLAProfileBooker.h:58
edm::AssociationMap::begin
const_iterator begin() const
first iterator over the map (read only)
Definition: AssociationMap.h:169
SiStripFolderOrganizer
Definition: SiStripFolderOrganizer.h:27
toLocal
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
Definition: ConversionProducer.h:199
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
SiStripLAProfileBooker::Amplitudes
uint8_t Amplitudes[100]
Definition: SiStripLAProfileBooker.h:66
GlobalVector.h
SiStripLAProfileBooker::summaryhisto
histomap summaryhisto
Definition: SiStripLAProfileBooker.h:74
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
SiStripLAProfileBooker::pitch_detector
float pitch_detector
Definition: SiStripLAProfileBooker.h:65
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TrackerGeometry::detIds
const DetIdContainer & detIds() const override
Returm a vector of all GeomDet DetIds (including those of GeomDetUnits)
Definition: TrackerGeometry.h:64
SiStripLAProfileBooker::XGlobal
float XGlobal
Definition: SiStripLAProfileBooker.h:60
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
TrackerTopology::tecPetalInfo
std::vector< unsigned int > tecPetalInfo(const DetId &id) const
Definition: TrackerTopology.h:407
SiStripLAProfileBooker::conf_
edm::ParameterSet conf_
Definition: SiStripLAProfileBooker.h:80
SiStripLAProfileBooker::nstrip
int nstrip
Definition: SiStripLAProfileBooker.h:62
SiStripLAProfileBooker::histos
histomap histos
Definition: SiStripLAProfileBooker.h:73
SiStripMatchedRecHit2D.h
SiStripLAProfileBooker::getlayer
void getlayer(const DetId &detid, const TrackerTopology *tTopo, std::string &name, unsigned int &layerid)
Definition: SiStripLAProfileBooker.cc:703
SiStripLAProfileBooker::endJob
void endJob() override
Definition: SiStripLAProfileBooker.cc:735
SiStripLAProfileBooker::detparameters::magfield
LocalVector magfield
Definition: SiStripLAProfileBooker.h:53
edm::Event
Definition: Event.h:73
TrajectoryCollection
std::vector< Trajectory > TrajectoryCollection
Definition: TrajectoryToSeedMap.h:17
TrackerTopology::tecWheel
unsigned int tecWheel(const DetId &id) const
Definition: TrackerTopology.h:198
edm::Log
Definition: MessageLogger.h:70
SiStripLAProfileBooker::detparameters::thickness
float thickness
Definition: SiStripLAProfileBooker.h:51
StripTopology
Definition: StripTopology.h:11
GlobalPoint.h
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
StripSubdetector.h
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
SiStripLAProfileBooker::eventcounter
int eventcounter
Definition: SiStripLAProfileBooker.h:62
SiStripLAProfileBooker::better_double_hit
int better_double_hit
Definition: SiStripLAProfileBooker.h:62
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SiStripLAProfileBooker::EventNumber
int EventNumber
Definition: SiStripLAProfileBooker.h:58
SiStripLAProfileBooker::detparameters::pitch
float pitch
Definition: SiStripLAProfileBooker.h:52
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
TrackerTopology::tibLayer
unsigned int tibLayer(const DetId &id) const
Definition: TrackerTopology.h:150