CMS 3D CMS Logo

SiStripRecHitsValid.cc
Go to the documentation of this file.
2 
3 //needed for the geometry:
15 
16 //--- for RecHit
21 
23 
24 using namespace std;
25 using namespace edm;
26 
27 //Constructor
29  : conf_(ps),
30  trackerHitAssociatorConfig_(ps, consumesCollector()),
31  m_cacheID_(0)
32 // matchedRecHits_( ps.getParameter<edm::InputTag>("matchedRecHits") ),
33 // rphiRecHits_( ps.getParameter<edm::InputTag>("rphiRecHits") ),
34 // stereoRecHits_( ps.getParameter<edm::InputTag>("stereoRecHits") )
35 {
36  matchedRecHitsToken_ = consumes<SiStripMatchedRecHit2DCollection>(ps.getParameter<edm::InputTag>("matchedRecHits"));
37 
38  rphiRecHitsToken_ = consumes<SiStripRecHit2DCollection>(ps.getParameter<edm::InputTag>("rphiRecHits"));
39 
40  stereoRecHitsToken_ = consumes<SiStripRecHit2DCollection>(ps.getParameter<edm::InputTag>("stereoRecHits"));
41 
42  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
43 
44  SubDetList_ = conf_.getParameter<std::vector<std::string> >("SubDetList");
45 
46  edm::ParameterSet ParametersNumTotrphi = conf_.getParameter<edm::ParameterSet>("TH1NumTotrphi");
47  switchNumTotrphi = ParametersNumTotrphi.getParameter<bool>("switchon");
48 
49  edm::ParameterSet ParametersNumTotStereo = conf_.getParameter<edm::ParameterSet>("TH1NumTotStereo");
50  switchNumTotStereo = ParametersNumTotStereo.getParameter<bool>("switchon");
51 
52  edm::ParameterSet ParametersNumTotMatched = conf_.getParameter<edm::ParameterSet>("TH1NumTotMatched");
53  switchNumTotMatched = ParametersNumTotMatched.getParameter<bool>("switchon");
54 
55  edm::ParameterSet ParametersNumrphi = conf_.getParameter<edm::ParameterSet>("TH1Numrphi");
56  switchNumrphi = ParametersNumrphi.getParameter<bool>("switchon");
57 
58  edm::ParameterSet ParametersBunchrphi = conf_.getParameter<edm::ParameterSet>("TH1Bunchrphi");
59  switchBunchrphi = ParametersBunchrphi.getParameter<bool>("switchon");
60 
61  edm::ParameterSet ParametersEventrphi = conf_.getParameter<edm::ParameterSet>("TH1Eventrphi");
62  switchEventrphi = ParametersEventrphi.getParameter<bool>("switchon");
63 
64  edm::ParameterSet ParametersNumStereo = conf_.getParameter<edm::ParameterSet>("TH1NumStereo");
65  switchNumStereo = ParametersNumStereo.getParameter<bool>("switchon");
66 
67  edm::ParameterSet ParametersBunchStereo = conf_.getParameter<edm::ParameterSet>("TH1BunchStereo");
68  switchBunchStereo = ParametersBunchStereo.getParameter<bool>("switchon");
69 
70  edm::ParameterSet ParametersEventStereo = conf_.getParameter<edm::ParameterSet>("TH1EventStereo");
71  switchEventStereo = ParametersEventStereo.getParameter<bool>("switchon");
72 
73  edm::ParameterSet ParametersNumMatched = conf_.getParameter<edm::ParameterSet>("TH1NumMatched");
74  switchNumMatched = ParametersNumMatched.getParameter<bool>("switchon");
75 
76  edm::ParameterSet ParametersBunchMatched = conf_.getParameter<edm::ParameterSet>("TH1BunchMatched");
77  switchBunchMatched = ParametersBunchMatched.getParameter<bool>("switchon");
78 
79  edm::ParameterSet ParametersEventMatched = conf_.getParameter<edm::ParameterSet>("TH1EventMatched");
80  switchEventMatched = ParametersEventMatched.getParameter<bool>("switchon");
81 
82  edm::ParameterSet ParametersWclusrphi = conf_.getParameter<edm::ParameterSet>("TH1Wclusrphi");
83  switchWclusrphi = ParametersWclusrphi.getParameter<bool>("switchon");
84 
85  edm::ParameterSet ParametersAdcrphi = conf_.getParameter<edm::ParameterSet>("TH1Adcrphi");
86  switchAdcrphi = ParametersAdcrphi.getParameter<bool>("switchon");
87 
88  edm::ParameterSet ParametersPosxrphi = conf_.getParameter<edm::ParameterSet>("TH1Posxrphi");
89  switchPosxrphi = ParametersPosxrphi.getParameter<bool>("switchon");
90 
91  edm::ParameterSet ParametersResolxrphi = conf_.getParameter<edm::ParameterSet>("TH1Resolxrphi");
92  switchResolxrphi = ParametersResolxrphi.getParameter<bool>("switchon");
93 
94  edm::ParameterSet ParametersResrphi = conf_.getParameter<edm::ParameterSet>("TH1Resrphi");
95  switchResrphi = ParametersResrphi.getParameter<bool>("switchon");
96 
97  edm::ParameterSet ParametersPullLFrphi = conf_.getParameter<edm::ParameterSet>("TH1PullLFrphi");
98  switchPullLFrphi = ParametersPullLFrphi.getParameter<bool>("switchon");
99 
100  edm::ParameterSet ParametersPullMFrphi = conf_.getParameter<edm::ParameterSet>("TH1PullMFrphi");
101  switchPullMFrphi = ParametersPullMFrphi.getParameter<bool>("switchon");
102 
103  edm::ParameterSet ParametersChi2rphi = conf_.getParameter<edm::ParameterSet>("TH1Chi2rphi");
104  switchChi2rphi = ParametersChi2rphi.getParameter<bool>("switchon");
105 
106  edm::ParameterSet ParametersNsimHitrphi = conf_.getParameter<edm::ParameterSet>("TH1NsimHitrphi");
107  switchNsimHitrphi = ParametersNsimHitrphi.getParameter<bool>("switchon");
108 
109  edm::ParameterSet ParametersWclusStereo = conf_.getParameter<edm::ParameterSet>("TH1WclusStereo");
110  switchWclusStereo = ParametersWclusStereo.getParameter<bool>("switchon");
111 
112  edm::ParameterSet ParametersAdcStereo = conf_.getParameter<edm::ParameterSet>("TH1AdcStereo");
113  switchAdcStereo = ParametersAdcStereo.getParameter<bool>("switchon");
114 
115  edm::ParameterSet ParametersPosxStereo = conf_.getParameter<edm::ParameterSet>("TH1PosxStereo");
116  switchPosxStereo = ParametersPosxStereo.getParameter<bool>("switchon");
117 
118  edm::ParameterSet ParametersResolxStereo = conf_.getParameter<edm::ParameterSet>("TH1ResolxStereo");
119  switchResolxStereo = ParametersResolxStereo.getParameter<bool>("switchon");
120 
121  edm::ParameterSet ParametersResStereo = conf_.getParameter<edm::ParameterSet>("TH1ResStereo");
122  switchResStereo = ParametersResStereo.getParameter<bool>("switchon");
123 
124  edm::ParameterSet ParametersPullLFStereo = conf_.getParameter<edm::ParameterSet>("TH1PullLFStereo");
125  switchPullLFStereo = ParametersPullLFStereo.getParameter<bool>("switchon");
126 
127  edm::ParameterSet ParametersPullMFStereo = conf_.getParameter<edm::ParameterSet>("TH1PullMFStereo");
128  switchPullMFStereo = ParametersPullMFStereo.getParameter<bool>("switchon");
129 
130  edm::ParameterSet ParametersChi2Stereo = conf_.getParameter<edm::ParameterSet>("TH1Chi2Stereo");
131  switchChi2Stereo = ParametersChi2Stereo.getParameter<bool>("switchon");
132 
133  edm::ParameterSet ParametersNsimHitStereo = conf_.getParameter<edm::ParameterSet>("TH1NsimHitStereo");
134  switchNsimHitStereo = ParametersNsimHitStereo.getParameter<bool>("switchon");
135 
136  edm::ParameterSet ParametersPosxMatched = conf_.getParameter<edm::ParameterSet>("TH1PosxMatched");
137  switchPosxMatched = ParametersPosxMatched.getParameter<bool>("switchon");
138 
139  edm::ParameterSet ParametersPosyMatched = conf_.getParameter<edm::ParameterSet>("TH1PosyMatched");
140  switchPosyMatched = ParametersPosyMatched.getParameter<bool>("switchon");
141 
142  edm::ParameterSet ParametersResolxMatched = conf_.getParameter<edm::ParameterSet>("TH1ResolxMatched");
143  switchResolxMatched = ParametersResolxMatched.getParameter<bool>("switchon");
144 
145  edm::ParameterSet ParametersResolyMatched = conf_.getParameter<edm::ParameterSet>("TH1ResolyMatched");
146  switchResolyMatched = ParametersResolyMatched.getParameter<bool>("switchon");
147 
148  edm::ParameterSet ParametersResxMatched = conf_.getParameter<edm::ParameterSet>("TH1ResxMatched");
149  switchResxMatched = ParametersResxMatched.getParameter<bool>("switchon");
150 
151  edm::ParameterSet ParametersResyMatched = conf_.getParameter<edm::ParameterSet>("TH1ResyMatched");
152  switchResyMatched = ParametersResyMatched.getParameter<bool>("switchon");
153 
154  edm::ParameterSet ParametersChi2Matched = conf_.getParameter<edm::ParameterSet>("TH1Chi2Matched");
155  switchChi2Matched = ParametersChi2Matched.getParameter<bool>("switchon");
156 
157  edm::ParameterSet ParametersNsimHitMatched = conf_.getParameter<edm::ParameterSet>("TH1NsimHitMatched");
158  switchNsimHitMatched = ParametersNsimHitMatched.getParameter<bool>("switchon");
159 }
160 
162 
163 //--------------------------------------------------------------------------------------------
165  unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier();
166  if (m_cacheID_ != cacheID) {
167  m_cacheID_ = cacheID;
168  edm::LogInfo("SiStripRecHitsValid") << "SiStripRecHitsValid::beginRun: "
169  << " Creating MEs for new Cabling ";
170 
171  createMEs(ibooker, es);
172  }
173 }
174 
176  LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
177 
178  //Retrieve tracker topology from geometry
179  edm::ESHandle<TrackerTopology> tTopoHandle;
180  es.get<TrackerTopologyRcd>().get(tTopoHandle);
181  const TrackerTopology* const tTopo = tTopoHandle.product();
182 
183  // Step A: Get Inputs
187  e.getByToken(matchedRecHitsToken_, rechitsmatched);
188  e.getByToken(rphiRecHitsToken_, rechitsrphi);
189  e.getByToken(stereoRecHitsToken_, rechitsstereo);
190 
191  //Variables in order to count total num of rechitrphi,rechitstereo, rechitmatched in subdetectors
192  std::map<std::string, int> totnumrechitrphi;
193  std::map<std::string, int> totnumrechitstereo;
194  std::map<std::string, int> totnumrechitmatched;
195  int totrechitrphi = 0;
196  int totrechitstereo = 0;
197  int totrechitmatched = 0;
198 
200 
202  es.get<TrackerDigiGeometryRecord>().get(pDD);
203  const TrackerGeometry& tracker(*pDD);
204 
205  SiStripHistoId hidmanager;
206  SiStripFolderOrganizer fold_organ;
207  for (auto const& theDetSet : *rechitsrphi) {
208  DetId detid = theDetSet.detId();
209  uint32_t myid = detid.rawId();
210  totrechitrphi += theDetSet.size();
211 
212  std::string label = hidmanager.getSubdetid(myid, tTopo, true);
213  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(label);
214  std::pair<std::string, int32_t> det_lay_pair = fold_organ.GetSubDetAndLayer(myid, tTopo, true);
215 
216  totnumrechitrphi[det_lay_pair.first] = totnumrechitrphi[det_lay_pair.first] + theDetSet.size();
217  //loop over rechits-rphi in the same subdetector
218  if (iLayerME != LayerMEsMap.end()) {
219  for (auto const& rechit : theDetSet) {
220  const GeomDetUnit* det = tracker.idToDetUnit(detid);
221  const StripTopology& topol = static_cast<const StripGeomDetUnit*>(det)->specificTopology();
222  //analyze RecHits
223  rechitanalysis(rechit, topol, associate);
224  // fill the result in a histogram
225  fillME(iLayerME->second.meWclusrphi, rechitpro.clusiz);
226  fillME(iLayerME->second.meAdcrphi, rechitpro.cluchg);
227  fillME(iLayerME->second.mePosxrphi, rechitpro.x);
228  fillME(iLayerME->second.meResolxrphi, rechitpro.resolxx);
229  fillME(iLayerME->second.meNsimHitrphi, rechitpro.NsimHit);
230  if (rechitpro.NsimHit > 0) {
231  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find(det_lay_pair.first);
232  fillME(iSubDetME->second.meBunchrphi, rechitpro.bunch);
233  if (rechitpro.bunch == 0)
234  fillME(iSubDetME->second.meEventrphi, rechitpro.event);
235  }
236  if (rechitpro.resx != -999999. || rechitpro.pullMF != -999999. || rechitpro.chi2 != -999999.) {
237  fillME(iLayerME->second.meResrphi, rechitpro.resx);
238  fillME(iLayerME->second.mePullLFrphi, rechitpro.resx / sqrt(rechitpro.resolxx));
239  fillME(iLayerME->second.mePullMFrphi, rechitpro.pullMF);
240  fillME(iLayerME->second.meChi2rphi, rechitpro.chi2);
241  }
242  }
243  }
244  }
245 
246  // start loops over detectors with detected rechitsstereo
247  for (auto const& theDetSet : *rechitsstereo) {
248  DetId detid = theDetSet.detId();
249  uint32_t myid = detid.rawId();
250  totrechitstereo += theDetSet.size();
251 
252  std::string label = hidmanager.getSubdetid(myid, tTopo, true);
253  std::map<std::string, StereoAndMatchedMEs>::iterator iStereoAndMatchedME = StereoAndMatchedMEsMap.find(label);
254  std::pair<std::string, int32_t> det_lay_pair = fold_organ.GetSubDetAndLayer(myid, tTopo, true);
255 
256  totnumrechitstereo[det_lay_pair.first] = totnumrechitstereo[det_lay_pair.first] + theDetSet.size();
257  //loop over rechits-stereo in the same subdetector
258  if (iStereoAndMatchedME != StereoAndMatchedMEsMap.end()) {
259  for (auto const& rechit : theDetSet) {
260  const GeomDetUnit* det = tracker.idToDetUnit(detid);
261  const StripTopology& topol = static_cast<const StripGeomDetUnit*>(det)->specificTopology();
262  //analyze RecHits
263  rechitanalysis(rechit, topol, associate);
264  // fill the result in a histogram
265  fillME(iStereoAndMatchedME->second.meWclusStereo, rechitpro.clusiz);
266  fillME(iStereoAndMatchedME->second.meAdcStereo, rechitpro.cluchg);
267  fillME(iStereoAndMatchedME->second.mePosxStereo, rechitpro.x);
268  fillME(iStereoAndMatchedME->second.meResolxStereo, sqrt(rechitpro.resolxx));
269  fillME(iStereoAndMatchedME->second.meNsimHitStereo, rechitpro.NsimHit);
270  if (rechitpro.NsimHit > 0) {
271  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find(det_lay_pair.first);
272  fillME(iSubDetME->second.meBunchStereo, rechitpro.bunch);
273  if (rechitpro.bunch == 0)
274  fillME(iSubDetME->second.meEventStereo, rechitpro.event);
275  }
276  if (rechitpro.resx != -999999. || rechitpro.pullMF != -999999. || rechitpro.chi2 != -999999.) {
277  fillME(iStereoAndMatchedME->second.meResStereo, rechitpro.resx);
278  fillME(iStereoAndMatchedME->second.mePullLFStereo, rechitpro.resx / sqrt(rechitpro.resolxx));
279  fillME(iStereoAndMatchedME->second.mePullMFStereo, rechitpro.pullMF);
280  fillME(iStereoAndMatchedME->second.meChi2Stereo, rechitpro.chi2);
281  }
282  }
283  }
284  }
285 
286  // start loops over detectors with detected rechitmatched
287  for (auto const& theDetSet : *rechitsmatched) {
288  DetId detid = theDetSet.detId();
289  uint32_t myid = detid.rawId();
290  totrechitmatched += theDetSet.size();
291 
292  std::string label = hidmanager.getSubdetid(myid, tTopo, true);
293  std::map<std::string, StereoAndMatchedMEs>::iterator iStereoAndMatchedME = StereoAndMatchedMEsMap.find(label);
294  std::pair<std::string, int32_t> det_lay_pair = fold_organ.GetSubDetAndLayer(myid, tTopo, true);
295 
296  totnumrechitmatched[det_lay_pair.first] = totnumrechitmatched[det_lay_pair.first] + theDetSet.size();
297  //loop over rechits-matched in the same subdetector
298  if (iStereoAndMatchedME != StereoAndMatchedMEsMap.end()) {
299  for (auto const& rechit : theDetSet) {
300  const GluedGeomDet* gluedDet = static_cast<const GluedGeomDet*>(tracker.idToDet(rechit.geographicalId()));
301  //analyze RecHits
302  rechitanalysis_matched(rechit, gluedDet, associate);
303  // fill the result in a histogram
304  fillME(iStereoAndMatchedME->second.mePosxMatched, rechitpro.x);
305  fillME(iStereoAndMatchedME->second.mePosyMatched, rechitpro.y);
306  fillME(iStereoAndMatchedME->second.meResolxMatched, sqrt(rechitpro.resolxx));
307  fillME(iStereoAndMatchedME->second.meResolyMatched, sqrt(rechitpro.resolyy));
308  fillME(iStereoAndMatchedME->second.meNsimHitMatched, rechitpro.NsimHit);
309  if (rechitpro.NsimHit > 0) {
310  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find(det_lay_pair.first);
311  fillME(iSubDetME->second.meBunchMatched, rechitpro.bunch);
312  if (rechitpro.bunch == 0)
313  fillME(iSubDetME->second.meEventMatched, rechitpro.event);
314  }
315  if (rechitpro.resx != -999999. || rechitpro.resy != -999999. || rechitpro.chi2 != -999999.) {
316  fillME(iStereoAndMatchedME->second.meResxMatched, rechitpro.resx);
317  fillME(iStereoAndMatchedME->second.meResyMatched, rechitpro.resy);
318  fillME(iStereoAndMatchedME->second.meChi2Matched, rechitpro.chi2);
319  }
320  }
321  }
322  } //End of loops over detectors
323 
324  //now fill the cumulative histograms of the hits
325  for (std::vector<std::string>::iterator iSubdet = SubDetList_.begin(); iSubdet != SubDetList_.end(); ++iSubdet) {
326  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find((*iSubdet));
327  fillME(iSubDetME->second.meNumrphi, totnumrechitrphi[(*iSubdet)]);
328  fillME(iSubDetME->second.meNumStereo, totnumrechitstereo[(*iSubdet)]);
329  fillME(iSubDetME->second.meNumMatched, totnumrechitmatched[(*iSubdet)]);
330  }
331 
332  fillME(totalMEs.meNumTotrphi, totrechitrphi);
333  fillME(totalMEs.meNumTotStereo, totrechitstereo);
334  fillME(totalMEs.meNumTotMatched, totrechitmatched);
335 }
336 
337 //needed by to do the residual for matched hits
338 std::pair<LocalPoint, LocalVector> SiStripRecHitsValid::projectHit(const PSimHit& hit,
339  const StripGeomDetUnit* stripDet,
340  const BoundPlane& plane) {
341  // const StripGeomDetUnit* stripDet = dynamic_cast<const StripGeomDetUnit*>(hit.det());
342  //if (stripDet == nullptr) throw MeasurementDetException("HitMatcher hit is not on StripGeomDetUnit");
343 
344  const StripTopology& topol = stripDet->specificTopology();
345  GlobalPoint globalpos = stripDet->surface().toGlobal(hit.localPosition());
346  LocalPoint localHit = plane.toLocal(globalpos);
347  //track direction
348  LocalVector locdir = hit.localDirection();
349  //rotate track in new frame
350 
351  GlobalVector globaldir = stripDet->surface().toGlobal(locdir);
352  LocalVector dir = plane.toLocal(globaldir);
353  double scale = -localHit.z() / dir.z();
354 
355  LocalPoint projectedPos = localHit + scale * dir;
356 
357  double selfAngle = topol.stripAngle(topol.strip(hit.localPosition()));
358 
359  LocalVector stripDir(sin(selfAngle), cos(selfAngle), 0); // vector along strip in hit frame
360 
361  LocalVector localStripDir(plane.toLocal(stripDet->surface().toGlobal(stripDir)));
362 
363  return std::pair<LocalPoint, LocalVector>(projectedPos, localStripDir);
364 }
365 //--------------------------------------------------------------------------------------------
367  const StripTopology& topol,
368  TrackerHitAssociator& associate) {
369  rechitpro.resx = -999999.;
370  rechitpro.resy = -999999.;
371  rechitpro.pullMF = -999999.;
372  rechitpro.chi2 = -999999.;
373  rechitpro.bunch = -999999.;
374  rechitpro.event = -999999.;
375 
376  LocalPoint position = rechit.localPosition();
378  MeasurementPoint Mposition = topol.measurementPosition(position);
380  const auto& amplitudes = (rechit.cluster())->amplitudes();
381  int totcharge = 0;
382  for (auto ia : amplitudes) {
383  totcharge += ia;
384  }
385  rechitpro.x = position.x();
386  rechitpro.y = position.y();
387  //rechitpro.z = position.z();
388  rechitpro.resolxx = error.xx();
389  //rechitpro.resolxy = error.xy();
390  rechitpro.resolyy = error.yy();
391  rechitpro.clusiz = amplitudes.size();
392  rechitpro.cluchg = totcharge;
393 
394  auto const& matched = associate.associateHit(rechit);
395  rechitpro.NsimHit = matched.size();
396 
397  if (!matched.empty()) {
398  float mindist = std::numeric_limits<float>::max();
399  float dist = std::numeric_limits<float>::max();
400  PSimHit const* closest = nullptr;
401 
402  for (auto const& m : matched) {
403  dist = fabs(rechitpro.x - m.localPosition().x());
404  if (dist < mindist) {
405  mindist = dist;
406  closest = &m;
407  }
408  }
409  rechitpro.bunch = closest->eventId().bunchCrossing();
410  rechitpro.event = closest->eventId().event();
411  rechitpro.resx = rechitpro.x - closest->localPosition().x();
412  rechitpro.pullMF = (Mposition.x() - (topol.measurementPosition(closest->localPosition())).x()) / sqrt(Merror.uu());
413 
414  //chi2test compare rechit errors with the simhit position ( using null matrix for the simhit).
415  //Can spot problems in the geometry better than a simple residual. (thanks to BorisM)
416  AlgebraicVector rhparameters(2); //= rechit.parameters();
417  rhparameters[0] = position.x();
418  rhparameters[1] = position.y();
419  AlgebraicVector shparameters(2);
420  shparameters[0] = closest->localPosition().x();
421  shparameters[1] = closest->localPosition().y();
422  AlgebraicVector r(rhparameters - shparameters);
423  AlgebraicSymMatrix R(2); // = rechit.parametersError();
424  R[0][0] = error.xx();
425  R[0][1] = error.xy();
426  R[1][1] = error.yy();
427  int ierr;
428  R.invert(ierr); // if (ierr != 0) throw exception;
429  float est = R.similarity(r);
430  rechitpro.chi2 = est;
431  }
432 }
433 
434 //--------------------------------------------------------------------------------------------
436  const GluedGeomDet* gluedDet,
437  TrackerHitAssociator& associate) {
438  rechitpro.resx = -999999.;
439  rechitpro.resy = -999999.;
440  rechitpro.pullMF = -999999.;
441  rechitpro.chi2 = -999999.;
442  rechitpro.bunch = -999999.;
443  rechitpro.event = -999999.;
444  rechitpro.clusiz = -999999.;
445  rechitpro.cluchg = -999999.;
446 
447  LocalPoint position = rechit.localPosition();
449 
450  rechitpro.x = position.x();
451  rechitpro.y = position.y();
452  //rechitpro.z = position.z();
453  rechitpro.resolxx = error.xx();
454  //rechitpro.resolxy = error.xy();
455  rechitpro.resolyy = error.yy();
456 
457  auto const& matched = associate.associateHit(rechit);
458  rechitpro.NsimHit = matched.size();
459 
460  if (matched.empty())
461  return;
462  float mindist = std::numeric_limits<float>::max();
463  float dist = std::numeric_limits<float>::max();
464  float dist2 = std::numeric_limits<float>::max();
465  float distx = std::numeric_limits<float>::max();
466  float disty = std::numeric_limits<float>::max();
467  PSimHit const* closest = nullptr;
468  std::pair<LocalPoint, LocalVector> closestPair;
469 
470  const StripGeomDetUnit* partnerstripdet = static_cast<const StripGeomDetUnit*>(gluedDet->stereoDet());
471  std::pair<LocalPoint, LocalVector> hitPair;
472 
473  for (auto const& m : matched) {
474  SiStripDetId hitDetId(m.detUnitId());
475  if (hitDetId.stereo()) { // project from the stereo sensor
476  //project simhit;
477  hitPair = projectHit(m, partnerstripdet, gluedDet->surface());
478  distx = rechitpro.x - hitPair.first.x();
479  disty = rechitpro.y - hitPair.first.y();
480  dist2 = distx * distx + disty * disty;
481  dist = sqrt(dist2);
482  if (dist < mindist) {
483  mindist = dist;
484  closestPair = hitPair;
485  closest = &m;
486  }
487  }
488  }
489  if (!closest)
490  return;
491  rechitpro.bunch = closest->eventId().bunchCrossing();
492  rechitpro.event = closest->eventId().event();
493  rechitpro.resx = rechitpro.x - closestPair.first.x();
494  rechitpro.resy = rechitpro.y - closestPair.first.y();
495 
496  //chi2test compare rechit errors with the simhit position ( using null matrix for the simhit).
497  //Can spot problems in the geometry better than a simple residual. (thanks to BorisM)
498  AlgebraicVector rhparameters(2); //= rechit.parameters();
499  rhparameters[0] = position.x();
500  rhparameters[1] = position.y();
501  LocalPoint sh = closestPair.first;
502  AlgebraicVector shparameters(2);
503  shparameters[0] = sh.x();
504  shparameters[1] = sh.y();
505  AlgebraicVector r(rhparameters - shparameters);
506  AlgebraicSymMatrix R(2); // = rechit.parametersError();
507  R[0][0] = error.xx();
508  R[0][1] = error.xy();
509  R[1][1] = error.yy();
510  int ierr;
511  R.invert(ierr); // if (ierr != 0) throw exception;
512  float est = R.similarity(r);
513  rechitpro.chi2 = est;
514 }
515 
516 //--------------------------------------------------------------------------------------------
518  //Retrieve tracker topology from geometry
519  edm::ESHandle<TrackerTopology> tTopoHandle;
520  es.get<TrackerTopologyRcd>().get(tTopoHandle);
521  const TrackerTopology* const tTopo = tTopoHandle.product();
522 
523  // take from eventSetup the SiStripDetCabling object - here will use SiStripDetControl later on
525 
526  // get list of active detectors from SiStripDetCabling
527  std::vector<uint32_t> activeDets;
529 
530  SiStripFolderOrganizer folder_organizer;
531  // folder_organizer.setSiStripFolderName(topFolderName_);
532  std::string curfold = topFolderName_;
533  folder_organizer.setSiStripFolderName(curfold);
534  folder_organizer.setSiStripFolder();
535 
536  createTotalMEs(ibooker);
537  // loop over detectors and book MEs
538  edm::LogInfo("SiStripTkRecHits|SiStripRecHitsValid") << "nr. of activeDets: " << activeDets.size();
539  const std::string &tec = "TEC", tid = "TID", tob = "TOB", tib = "TIB";
540  for (auto detid_iterator = activeDets.begin(), detid_end = activeDets.end(); detid_iterator != detid_end;
541  ++detid_iterator) {
542  uint32_t detid = (*detid_iterator);
543  // remove any eventual zero elements - there should be none, but just in case
544  if (detid == 0) {
545  activeDets.erase(detid_iterator);
546  continue;
547  }
548 
549  // Create Layer Level MEs
550  std::pair<std::string, int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid, tTopo, true);
551  SiStripHistoId hidmanager;
552  std::string label = hidmanager.getSubdetid(detid, tTopo, true);
553 
554  if (LayerMEsMap.find(label) == LayerMEsMap.end()) {
555  // get detids for the layer
556  // Keep in mind that when we are on the TID or TEC we deal with rings not wheel
557  int32_t lnumber = det_layer_pair.second;
558  const std::string& lname = det_layer_pair.first;
559  std::vector<uint32_t> layerDetIds;
560  if (lname == tec) {
561  if (lnumber > 0) {
562  SiStripSubStructure::getTECDetectors(activeDets, layerDetIds, tTopo, 2, 0, 0, 0, abs(lnumber), 0);
563  } else if (lnumber < 0) {
564  SiStripSubStructure::getTECDetectors(activeDets, layerDetIds, tTopo, 1, 0, 0, 0, abs(lnumber), 0);
565  }
566  } else if (lname == tid) {
567  if (lnumber > 0) {
568  SiStripSubStructure::getTIDDetectors(activeDets, layerDetIds, tTopo, 2, 0, abs(lnumber), 0);
569  } else if (lnumber < 0) {
570  SiStripSubStructure::getTIDDetectors(activeDets, layerDetIds, tTopo, 1, 0, abs(lnumber), 0);
571  }
572  } else if (lname == tob) {
573  SiStripSubStructure::getTOBDetectors(activeDets, layerDetIds, tTopo, lnumber, 0, 0);
574  } else if (lname == tib) {
575  SiStripSubStructure::getTIBDetectors(activeDets, layerDetIds, tTopo, lnumber, 0, 0, 0);
576  }
577  LayerDetMap[label] = layerDetIds;
578 
579  // book Layer MEs
580  folder_organizer.setLayerFolder(detid, tTopo, det_layer_pair.second, true);
581  createLayerMEs(ibooker, label);
582  }
583  // book sub-detector plots
584  if (SubDetMEsMap.find(det_layer_pair.first) == SubDetMEsMap.end()) {
585  auto sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
586  ibooker.setCurrentFolder(sdet_pair.first);
587  createSubDetMEs(ibooker, det_layer_pair.first);
588  }
589  //Create StereoAndMatchedMEs
591  // get detids for the stereo and matched layer. We are going to need a bool for these layers
592  bool isStereo = false;
593  // Keep in mind that when we are on the TID or TEC we deal with rings not wheel
594  std::vector<uint32_t> stereoandmatchedDetIds;
595  int32_t stereolnumber = det_layer_pair.second;
596  const std::string& stereolname = det_layer_pair.first;
597  if (stereolname == tec && (tTopo->tecIsStereo(detid))) {
598  if (stereolnumber > 0) {
600  activeDets, stereoandmatchedDetIds, tTopo, 2, 0, 0, 0, abs(stereolnumber), 1);
601  isStereo = true;
602  } else if (stereolnumber < 0) {
604  activeDets, stereoandmatchedDetIds, tTopo, 1, 0, 0, 0, abs(stereolnumber), 1);
605  isStereo = true;
606  }
607  } else if (stereolname == tid && (tTopo->tidIsStereo(detid))) {
608  if (stereolnumber > 0) {
609  SiStripSubStructure::getTIDDetectors(activeDets, stereoandmatchedDetIds, tTopo, 2, 0, abs(stereolnumber), 1);
610  isStereo = true;
611  } else if (stereolnumber < 0) {
612  SiStripSubStructure::getTIDDetectors(activeDets, stereoandmatchedDetIds, tTopo, 1, 0, abs(stereolnumber), 1);
613  isStereo = true;
614  }
615  } else if (stereolname == tob && (tTopo->tobIsStereo(detid))) {
616  SiStripSubStructure::getTOBDetectors(activeDets, stereoandmatchedDetIds, tTopo, stereolnumber, 0, 0);
617  isStereo = true;
618  } else if (stereolname == tib && (tTopo->tibIsStereo(detid))) {
619  SiStripSubStructure::getTIBDetectors(activeDets, stereoandmatchedDetIds, tTopo, stereolnumber, 0, 0, 0);
620  isStereo = true;
621  }
622 
623  StereoAndMatchedDetMap[label] = stereoandmatchedDetIds;
624 
625  if (isStereo) {
626  //book StereoAndMatched MEs
627  folder_organizer.setLayerFolder(detid, tTopo, det_layer_pair.second, true);
628  //Create the Monitor Elements only when we have a stereo module
630  }
631  }
632  } //end of loop over detectors
633 }
634 //------------------------------------------------------------------------------------------
636  totalMEs.meNumTotrphi = nullptr;
637  totalMEs.meNumTotStereo = nullptr;
638  totalMEs.meNumTotMatched = nullptr;
639 
640  //NumTotrphi
641  if (switchNumTotrphi) {
642  totalMEs.meNumTotrphi = bookME1D(ibooker, "TH1NumTotrphi", "TH1NumTotrphi", "Num of RecHits rphi");
643  totalMEs.meNumTotrphi->setAxisTitle("Total number of RecHits");
644  }
645  //NumTotStereo
646  if (switchNumTotStereo) {
647  totalMEs.meNumTotStereo = bookME1D(ibooker, "TH1NumTotStereo", "TH1NumTotStereo", "Num of RecHits stereo");
648  totalMEs.meNumTotStereo->setAxisTitle("Total number of RecHits (stereo)");
649  }
650  //NumTotMatched
651  if (switchNumTotMatched) {
652  totalMEs.meNumTotMatched = bookME1D(ibooker, "TH1NumTotMatched", "TH1NumTotMatched", "Num of RecHits matched");
653  totalMEs.meNumTotMatched->setAxisTitle("Total number of matched RecHits");
654  }
655 }
656 //------------------------------------------------------------------------------------------
658  SiStripHistoId hidmanager;
659  LayerMEs layerMEs;
660 
661  layerMEs.meWclusrphi = nullptr;
662  layerMEs.meAdcrphi = nullptr;
663  layerMEs.mePosxrphi = nullptr;
664  layerMEs.meResolxrphi = nullptr;
665  layerMEs.meResrphi = nullptr;
666  layerMEs.mePullLFrphi = nullptr;
667  layerMEs.mePullMFrphi = nullptr;
668  layerMEs.meChi2rphi = nullptr;
669  layerMEs.meNsimHitrphi = nullptr;
670 
671  //Wclusrphi
672  if (switchWclusrphi) {
673  layerMEs.meWclusrphi = bookME1D(ibooker,
674  "TH1Wclusrphi",
675  hidmanager.createHistoLayer("Wclus_rphi", "layer", label, "").c_str(),
676  "Cluster Width - Number of strips that belong to the RecHit cluster");
677  layerMEs.meWclusrphi->setAxisTitle("Cluster Width [nr strips] in " + label);
678  }
679  //Adcrphi
680  if (switchAdcrphi) {
681  layerMEs.meAdcrphi = bookME1D(ibooker,
682  "TH1Adcrphi",
683  hidmanager.createHistoLayer("Adc_rphi", "layer", label, "").c_str(),
684  "RecHit Cluster Charge");
685  layerMEs.meAdcrphi->setAxisTitle("cluster charge [ADC] in " + label);
686  }
687  //Posxrphi
688  if (switchPosxrphi) {
689  layerMEs.mePosxrphi = bookME1D(ibooker,
690  "TH1Posxrphi",
691  hidmanager.createHistoLayer("Posx_rphi", "layer", label, "").c_str(),
692  "RecHit x coord.");
693  layerMEs.mePosxrphi->setAxisTitle("x RecHit coord. (local frame) in " + label);
694  }
695  //Resolxrphi
696  if (switchResolxrphi) {
697  layerMEs.meResolxrphi = bookME1D(ibooker,
698  "TH1Resolxrphi",
699  hidmanager.createHistoLayer("Resolx_rphi", "layer", label, "").c_str(),
700  "RecHit resol(x) coord."); //<resolor>~20micron
701  layerMEs.meResolxrphi->setAxisTitle("resol(x) RecHit coord. (local frame) in " + label);
702  }
703  //Resrphi
704  if (switchResrphi) {
705  layerMEs.meResrphi = bookME1D(ibooker,
706  "TH1Resrphi",
707  hidmanager.createHistoLayer("Res_rphi", "layer", label, "").c_str(),
708  "Residuals of the hit x coordinate");
709  layerMEs.meResrphi->setAxisTitle("RecHit Res(x) in " + label);
710  }
711  //PullLFrphi
712  if (switchPullLFrphi) {
713  layerMEs.mePullLFrphi = bookME1D(ibooker,
714  "TH1PullLFrphi",
715  hidmanager.createHistoLayer("Pull_LF_rphi", "layer", label, "").c_str(),
716  "Pull distribution");
717  layerMEs.mePullLFrphi->setAxisTitle("Pull distribution (local frame) in " + label);
718  }
719  //PullMFrphi
720  if (switchPullMFrphi) {
721  layerMEs.mePullMFrphi = bookME1D(ibooker,
722  "TH1PullMFrphi",
723  hidmanager.createHistoLayer("Pull_MF_rphi", "layer", label, "").c_str(),
724  "Pull distribution");
725  layerMEs.mePullMFrphi->setAxisTitle("Pull distribution (measurement frame) in " + label);
726  }
727  //Chi2rphi
728  if (switchChi2rphi) {
729  layerMEs.meChi2rphi = bookME1D(ibooker,
730  "TH1Chi2rphi",
731  hidmanager.createHistoLayer("Chi2_rphi", "layer", label, "").c_str(),
732  "RecHit Chi2 test");
733  layerMEs.meChi2rphi->setAxisTitle("RecHit Chi2 test in " + label);
734  }
735  //NsimHitrphi
736  if (switchNsimHitrphi) {
737  layerMEs.meNsimHitrphi = bookME1D(ibooker,
738  "TH1NsimHitrphi",
739  hidmanager.createHistoLayer("NsimHit_rphi", "layer", label, "").c_str(),
740  "No. of assoc. simHits");
741  layerMEs.meNsimHitrphi->setAxisTitle("Number of assoc. simHits in " + label);
742  }
743 
744  LayerMEsMap[label] = layerMEs;
745 }
746 //------------------------------------------------------------------------------------------
748  SiStripHistoId hidmanager;
749  StereoAndMatchedMEs stereoandmatchedMEs;
750 
751  stereoandmatchedMEs.meWclusStereo = nullptr;
752  stereoandmatchedMEs.meAdcStereo = nullptr;
753  stereoandmatchedMEs.mePosxStereo = nullptr;
754  stereoandmatchedMEs.meResolxStereo = nullptr;
755  stereoandmatchedMEs.meResStereo = nullptr;
756  stereoandmatchedMEs.mePullLFStereo = nullptr;
757  stereoandmatchedMEs.mePullMFStereo = nullptr;
758  stereoandmatchedMEs.meChi2Stereo = nullptr;
759  stereoandmatchedMEs.meNsimHitStereo = nullptr;
760  stereoandmatchedMEs.mePosxMatched = nullptr;
761  stereoandmatchedMEs.mePosyMatched = nullptr;
762  stereoandmatchedMEs.meResolxMatched = nullptr;
763  stereoandmatchedMEs.meResolyMatched = nullptr;
764  stereoandmatchedMEs.meResxMatched = nullptr;
765  stereoandmatchedMEs.meResyMatched = nullptr;
766  stereoandmatchedMEs.meChi2Matched = nullptr;
767  stereoandmatchedMEs.meNsimHitMatched = nullptr;
768 
769  //WclusStereo
770  if (switchWclusStereo) {
771  stereoandmatchedMEs.meWclusStereo =
772  bookME1D(ibooker,
773  "TH1WclusStereo",
774  hidmanager.createHistoLayer("Wclus_stereo", "layer", label, "").c_str(),
775  "Cluster Width - Number of strips that belong to the RecHit cluster");
776  stereoandmatchedMEs.meWclusStereo->setAxisTitle("Cluster Width [nr strips] in stereo modules in " + label);
777  }
778  //AdcStereo
779  if (switchAdcStereo) {
780  stereoandmatchedMEs.meAdcStereo = bookME1D(ibooker,
781  "TH1AdcStereo",
782  hidmanager.createHistoLayer("Adc_stereo", "layer", label, "").c_str(),
783  "RecHit Cluster Charge");
784  stereoandmatchedMEs.meAdcStereo->setAxisTitle("cluster charge [ADC] in stereo modules in " + label);
785  }
786  //PosxStereo
787  if (switchPosxStereo) {
788  stereoandmatchedMEs.mePosxStereo = bookME1D(ibooker,
789  "TH1PosxStereo",
790  hidmanager.createHistoLayer("Posx_stereo", "layer", label, "").c_str(),
791  "RecHit x coord.");
792  stereoandmatchedMEs.mePosxStereo->setAxisTitle("x RecHit coord. (local frame) in stereo modules in " + label);
793  }
794  //ResolxStereo
795  if (switchResolxStereo) {
796  stereoandmatchedMEs.meResolxStereo =
797  bookME1D(ibooker,
798  "TH1ResolxStereo",
799  hidmanager.createHistoLayer("Resolx_stereo", "layer", label, "").c_str(),
800  "RecHit resol(x) coord.");
801  stereoandmatchedMEs.meResolxStereo->setAxisTitle("resol(x) RecHit coord. (local frame) in stereo modules in " +
802  label);
803  }
804  //ResStereo
805  if (switchResStereo) {
806  stereoandmatchedMEs.meResStereo = bookME1D(ibooker,
807  "TH1ResStereo",
808  hidmanager.createHistoLayer("Res_stereo", "layer", label, "").c_str(),
809  "Residuals of the hit x coordinate");
810  stereoandmatchedMEs.meResStereo->setAxisTitle("RecHit Res(x) in stereo modules in " + label);
811  }
812  //PullLFStereo
813  if (switchPullLFStereo) {
814  stereoandmatchedMEs.mePullLFStereo =
815  bookME1D(ibooker,
816  "TH1PullLFStereo",
817  hidmanager.createHistoLayer("Pull_LF_stereo", "layer", label, "").c_str(),
818  "Pull distribution");
819  stereoandmatchedMEs.mePullLFStereo->setAxisTitle("Pull distribution (local frame) in stereo modules in " + label);
820  }
821  //PullMFStereo
822  if (switchPullMFStereo) {
823  stereoandmatchedMEs.mePullMFStereo =
824  bookME1D(ibooker,
825  "TH1PullMFStereo",
826  hidmanager.createHistoLayer("Pull_MF_stereo", "layer", label, "").c_str(),
827  "Pull distribution");
828  stereoandmatchedMEs.mePullMFStereo->setAxisTitle("Pull distribution (measurement frame) in stereo modules in " +
829  label);
830  }
831  //Chi2Stereo
832  if (switchChi2Stereo) {
833  stereoandmatchedMEs.meChi2Stereo = bookME1D(ibooker,
834  "TH1Chi2Stereo",
835  hidmanager.createHistoLayer("Chi2_stereo", "layer", label, "").c_str(),
836  "RecHit Chi2 test");
837  stereoandmatchedMEs.meChi2Stereo->setAxisTitle("RecHit Chi2 test in stereo modules in " + label);
838  }
839  //NsimHitStereo
840  if (switchNsimHitStereo) {
841  stereoandmatchedMEs.meNsimHitStereo =
842  bookME1D(ibooker,
843  "TH1NsimHitStereo",
844  hidmanager.createHistoLayer("NsimHit_stereo", "layer", label, "").c_str(),
845  "No. of assoc. simHits");
846  stereoandmatchedMEs.meNsimHitStereo->setAxisTitle("Number of assoc. simHits in stereo modules in " + label);
847  }
848  //PosxMatched
849  if (switchPosxMatched) {
850  stereoandmatchedMEs.mePosxMatched =
851  bookME1D(ibooker,
852  "TH1PosxMatched",
853  hidmanager.createHistoLayer("Posx_matched", "layer", label, "").c_str(),
854  "RecHit x coord.");
855  stereoandmatchedMEs.mePosxMatched->setAxisTitle("x coord. matched RecHit (local frame) in " + label);
856  }
857  //PosyMatched
858  if (switchPosyMatched) {
859  stereoandmatchedMEs.mePosyMatched =
860  bookME1D(ibooker,
861  "TH1PosyMatched",
862  hidmanager.createHistoLayer("Posy_matched", "layer", label, "").c_str(),
863  "RecHit y coord.");
864  stereoandmatchedMEs.mePosyMatched->setAxisTitle("y coord. matched RecHit (local frame) in " + label);
865  }
866  //ResolxMatched
867  if (switchResolxMatched) {
868  stereoandmatchedMEs.meResolxMatched =
869  bookME1D(ibooker,
870  "TH1ResolxMatched",
871  hidmanager.createHistoLayer("Resolx_matched", "layer", label, "").c_str(),
872  "RecHit resol(x) coord.");
873  stereoandmatchedMEs.meResolxMatched->setAxisTitle("resol(x) coord. matched RecHit (local frame) in " + label);
874  }
875  //ResolyMatched
876  if (switchResolyMatched) {
877  stereoandmatchedMEs.meResolyMatched =
878  bookME1D(ibooker,
879  "TH1ResolyMatched",
880  hidmanager.createHistoLayer("Resoly_matched", "layer", label, "").c_str(),
881  "RecHit resol(y) coord.");
882  stereoandmatchedMEs.meResolyMatched->setAxisTitle("resol(y) coord. matched RecHit (local frame) in " + label);
883  }
884  //ResxMatched
885  if (switchResxMatched) {
886  stereoandmatchedMEs.meResxMatched =
887  bookME1D(ibooker,
888  "TH1ResxMatched",
889  hidmanager.createHistoLayer("Resx_matched", "layer", label, "").c_str(),
890  "Residuals of the hit x coord.");
891  stereoandmatchedMEs.meResxMatched->setAxisTitle("Res(x) in matched RecHit in " + label);
892  }
893  //ResyMatched
894  if (switchResyMatched) {
895  stereoandmatchedMEs.meResyMatched =
896  bookME1D(ibooker,
897  "TH1ResyMatched",
898  hidmanager.createHistoLayer("Resy_matched", "layer", label, "").c_str(),
899  "Residuals of the hit y coord.");
900  stereoandmatchedMEs.meResyMatched->setAxisTitle("Res(y) in matched RecHit in " + label);
901  }
902  //Chi2Matched
903  if (switchChi2Matched) {
904  stereoandmatchedMEs.meChi2Matched =
905  bookME1D(ibooker,
906  "TH1Chi2Matched",
907  hidmanager.createHistoLayer("Chi2_matched", "layer", label, "").c_str(),
908  "RecHit Chi2 test");
909  stereoandmatchedMEs.meChi2Matched->setAxisTitle("Matched RecHit Chi2 test in " + label);
910  }
911  //NsimHitMatched
912  if (switchNsimHitMatched) {
913  stereoandmatchedMEs.meNsimHitMatched =
914  bookME1D(ibooker,
915  "TH1NsimHitMatched",
916  hidmanager.createHistoLayer("NsimHit_matched", "layer", label, "").c_str(),
917  "No. of assoc. simHits");
918  stereoandmatchedMEs.meNsimHitMatched->setAxisTitle("Number of assoc. simHits in " + label);
919  }
920 
921  StereoAndMatchedMEsMap[label] = stereoandmatchedMEs;
922 }
923 //------------------------------------------------------------------------------------------
925  SubDetMEs subdetMEs;
926  subdetMEs.meNumrphi = nullptr;
927  subdetMEs.meBunchrphi = nullptr;
928  subdetMEs.meEventrphi = nullptr;
929  subdetMEs.meNumStereo = nullptr;
930  subdetMEs.meBunchStereo = nullptr;
931  subdetMEs.meEventStereo = nullptr;
932  subdetMEs.meNumMatched = nullptr;
933  subdetMEs.meBunchMatched = nullptr;
934  subdetMEs.meEventMatched = nullptr;
935 
937  //Numrphi
938  if (switchNumrphi) {
939  HistoName = "TH1Numrphi__" + label;
940  subdetMEs.meNumrphi = bookME1D(ibooker, "TH1Numrphi", HistoName.c_str(), "Num of RecHits");
941  subdetMEs.meNumrphi->setAxisTitle("Total number of RecHits in " + label);
942  }
943  //Bunchrphi
944  if (switchBunchrphi) {
945  HistoName = "TH1Bunchrphi__" + label;
946  subdetMEs.meBunchrphi = bookME1D(ibooker, "TH1Bunchrphi", HistoName.c_str(), "Bunch Crossing");
947  subdetMEs.meBunchrphi->setAxisTitle("Bunch crossing in " + label);
948  }
949  //Eventrphi
950  if (switchEventrphi) {
951  HistoName = "TH1Eventrphi__" + label;
952  subdetMEs.meEventrphi = bookME1D(ibooker, "TH1Eventrphi", HistoName.c_str(), "Event (in-time bunch)");
953  subdetMEs.meEventrphi->setAxisTitle("Event (in-time bunch) in " + label);
954  }
955  //NumStereo
956  if (switchNumStereo) {
957  HistoName = "TH1NumStereo__" + label;
958  subdetMEs.meNumStereo = bookME1D(ibooker, "TH1NumStereo", HistoName.c_str(), "Num of RecHits in stereo modules");
959  subdetMEs.meNumStereo->setAxisTitle("Total number of RecHits, stereo modules in " + label);
960  }
961  //BunchStereo
962  if (switchBunchStereo) {
963  HistoName = "TH1BunchStereo__" + label;
964  subdetMEs.meBunchStereo = bookME1D(ibooker, "TH1BunchStereo", HistoName.c_str(), "Bunch Crossing");
965  subdetMEs.meBunchStereo->setAxisTitle("Bunch crossing, stereo modules in " + label);
966  }
967  //EventStereo
968  if (switchEventStereo) {
969  HistoName = "TH1EventStereo__" + label;
970  subdetMEs.meEventStereo = bookME1D(ibooker, "TH1EventStereo", HistoName.c_str(), "Event (in-time bunch)");
971  subdetMEs.meEventStereo->setAxisTitle("Event (in-time bunch), stereo modules in " + label);
972  }
973  //NumMatched
974  if (switchNumMatched) {
975  HistoName = "TH1NumMatched__" + label;
976  subdetMEs.meNumMatched = bookME1D(ibooker, "TH1NumMatched", HistoName.c_str(), "Num of matched RecHits");
977  subdetMEs.meNumMatched->setAxisTitle("Total number of matched RecHits in " + label);
978  }
979  //BunchMatched
980  if (switchBunchMatched) {
981  HistoName = "TH1BunchMatched__" + label;
982  subdetMEs.meBunchMatched = bookME1D(ibooker, "TH1BunchMatched", HistoName.c_str(), "Bunch Crossing");
983  subdetMEs.meBunchMatched->setAxisTitle("Bunch crossing, matched RecHits in " + label);
984  }
985  //EventMatched
986  if (switchEventMatched) {
987  HistoName = "TH1EventMatched__" + label;
988  subdetMEs.meEventMatched = bookME1D(ibooker, "TH1EventMatched", HistoName.c_str(), "Event (in-time bunch)");
989  subdetMEs.meEventMatched->setAxisTitle("Event (in-time bunch), matched RecHits in " + label);
990  }
991 
992  SubDetMEsMap[label] = subdetMEs;
993 }
994 //------------------------------------------------------------------------------------------
996  const char* ParameterSetLabel,
997  const char* HistoName,
998  const char* HistoTitle) {
1000  return ibooker.book1D(HistoName,
1001  HistoTitle,
1002  parameters.getParameter<int32_t>("Nbinx"),
1003  parameters.getParameter<double>("xmin"),
1004  parameters.getParameter<double>("xmax"));
1005 }
1006 
1007 //define this as a plug-in
Vector3DBase< float, LocalTag >
muonTagProbeFilters_cff.matched
matched
Definition: muonTagProbeFilters_cff.py:62
SiStripRecHitsValid::TotalMEs::meNumTotMatched
MonitorElement * meNumTotMatched
Definition: SiStripRecHitsValid.h:56
SiStripHistoId::createHistoLayer
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
Definition: SiStripHistoId.cc:51
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
Point2DBase
Definition: Point2DBase.h:9
SiStripRecHitsValid::SubDetMEs::meBunchMatched
MonitorElement * meBunchMatched
Definition: SiStripRecHitsValid.h:67
SiStripDetCabling::addActiveDetectorsRawIds
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
Definition: SiStripDetCabling.cc:134
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
SiStripRecHitsValid::LayerMEs::meWclusrphi
MonitorElement * meWclusrphi
Definition: SiStripRecHitsValid.h:72
SiStripRecHitsValid::switchPullMFrphi
bool switchPullMFrphi
Definition: SiStripRecHitsValid.h:148
SiStripRecHitsValid::switchEventrphi
bool switchEventrphi
Definition: SiStripRecHitsValid.h:134
BeamSpotPI::parameters
parameters
Definition: BeamSpotPayloadInspectorHelper.h:29
SiStripRecHit2D::cluster
ClusterRef cluster() const
Definition: SiStripRecHit2D.h:22
SiStripRecHitsValid::createSubDetMEs
void createSubDetMEs(DQMStore::IBooker &ibooker, std::string label)
Definition: SiStripRecHitsValid.cc:924
SiStripRecHitsValid::LayerMEs::mePosxrphi
MonitorElement * mePosxrphi
Definition: SiStripRecHitsValid.h:74
SiStripFolderOrganizer.h
SiStripRecHitsValid::StereoAndMatchedMEs::meChi2Matched
MonitorElement * meChi2Matched
Definition: SiStripRecHitsValid.h:99
SiStripRecHitsValid::projectHit
std::pair< LocalPoint, LocalVector > projectHit(const PSimHit &hit, const StripGeomDetUnit *stripDet, const BoundPlane &plane)
Definition: SiStripRecHitsValid.cc:338
SiStripRecHitsValid::switchBunchStereo
bool switchBunchStereo
Definition: SiStripRecHitsValid.h:136
SiStripHistoId.h
SiStripRecHitsValid::switchNsimHitMatched
bool switchNsimHitMatched
Definition: SiStripRecHitsValid.h:167
GeomDet
Definition: GeomDet.h:27
SiStripRecHitsValid::rphiRecHitsToken_
edm::EDGetTokenT< SiStripRecHit2DCollection > rphiRecHitsToken_
Definition: SiStripRecHitsValid.h:229
SiStripRecHitsValid::switchPullMFStereo
bool switchPullMFStereo
Definition: SiStripRecHitsValid.h:157
SiStripSubStructure::getTIDDetectors
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, const TrackerTopology *trackerTopology, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0)
SiStripRecHitsValid::SubDetList_
std::vector< std::string > SubDetList_
Definition: SiStripRecHitsValid.h:170
SiStripRecHitsValid::createTotalMEs
void createTotalMEs(DQMStore::IBooker &ibooker)
Definition: SiStripRecHitsValid.cc:635
SiStripSubStructure::getTIBDetectors
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, const TrackerTopology *trackerTopology, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0)
SiStripRecHitsValid::matchedRecHitsToken_
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > matchedRecHitsToken_
Definition: SiStripRecHitsValid.h:228
TrackerTopology::tobIsStereo
bool tobIsStereo(const DetId &id) const
Definition: TrackerTopology.h:264
SiStripRecHitsValid::SubDetMEs::meEventMatched
MonitorElement * meEventMatched
Definition: SiStripRecHitsValid.h:68
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
edm::Run
Definition: Run.h:45
HLT_FULL_cff.scale
scale
Definition: HLT_FULL_cff.py:6634
edm
HLT enums.
Definition: AlignableModifier.h:19
SiStripRecHitsValid::LayerMEsMap
std::map< std::string, LayerMEs > LayerMEsMap
Definition: SiStripRecHitsValid.h:172
SiStripRecHitsValid::StereoAndMatchedMEs
Definition: SiStripRecHitsValid.h:83
SiStripRecHitsValid::switchChi2Stereo
bool switchChi2Stereo
Definition: SiStripRecHitsValid.h:158
TrackerTopology
Definition: TrackerTopology.h:16
SiStripRecHitsValid::StereoAndMatchedMEs::meResyMatched
MonitorElement * meResyMatched
Definition: SiStripRecHitsValid.h:98
SiStripRecHitsValid::RecHitProperties::resx
float resx
Definition: SiStripRecHitsValid.h:110
SiStripRecHitsValid::switchResStereo
bool switchResStereo
Definition: SiStripRecHitsValid.h:155
SiStripRecHitsValid::TotalMEs::meNumTotrphi
MonitorElement * meNumTotrphi
Definition: SiStripRecHitsValid.h:54
SiStripRecHitsValid::SubDetMEs::meNumMatched
MonitorElement * meNumMatched
Definition: SiStripRecHitsValid.h:66
SiStripRecHitsValid::SubDetMEs::meBunchrphi
MonitorElement * meBunchrphi
Definition: SiStripRecHitsValid.h:61
TrackerHitAssociator::associateHit
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
Definition: TrackerHitAssociator.cc:212
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
SiStripRecHitsValid::switchPosxStereo
bool switchPosxStereo
Definition: SiStripRecHitsValid.h:153
TrackerTopology::tecIsStereo
bool tecIsStereo(const DetId &id) const
Definition: TrackerTopology.h:265
SiStripRecHitsValid::LayerMEs
Definition: SiStripRecHitsValid.h:71
SiStripRecHitsValid::m_cacheID_
unsigned long long m_cacheID_
Definition: SiStripRecHitsValid.h:213
DQMStore.h
SiStripRecHit2D
Definition: SiStripRecHit2D.h:7
SiStripRecHitsValid::SubDetMEs::meBunchStereo
MonitorElement * meBunchStereo
Definition: SiStripRecHitsValid.h:64
SiStripRecHitsValid::switchChi2Matched
bool switchChi2Matched
Definition: SiStripRecHitsValid.h:166
SiStripRecHitsValid::RecHitProperties::cluchg
float cluchg
Definition: SiStripRecHitsValid.h:114
SiStripRecHitsValid::RecHitProperties::resolxx
float resolxx
Definition: SiStripRecHitsValid.h:107
SiStripRecHitsValid::LayerMEs::meNsimHitrphi
MonitorElement * meNsimHitrphi
Definition: SiStripRecHitsValid.h:80
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiStripRecHitsValid::SubDetMEsMap
std::map< std::string, SubDetMEs > SubDetMEsMap
Definition: SiStripRecHitsValid.h:174
SiStripRecHitsValid::StereoAndMatchedMEs::meNsimHitMatched
MonitorElement * meNsimHitMatched
Definition: SiStripRecHitsValid.h:100
SiStripRecHitsValid::LayerMEs::mePullMFrphi
MonitorElement * mePullMFrphi
Definition: SiStripRecHitsValid.h:78
edm::Handle
Definition: AssociativeIterator.h:50
relativeConstraints.error
error
Definition: relativeConstraints.py:53
SiStripRecHitsValid::switchNsimHitrphi
bool switchNsimHitrphi
Definition: SiStripRecHitsValid.h:150
SiStripRecHitsValid::switchResolxStereo
bool switchResolxStereo
Definition: SiStripRecHitsValid.h:154
SiStripRecHitsValid::LayerMEs::meResrphi
MonitorElement * meResrphi
Definition: SiStripRecHitsValid.h:76
SiStripRecHitsValid::LayerMEs::meAdcrphi
MonitorElement * meAdcrphi
Definition: SiStripRecHitsValid.h:73
SiStripRecHitsValid::switchResolyMatched
bool switchResolyMatched
Definition: SiStripRecHitsValid.h:163
PSimHit::eventId
EncodedEventId eventId() const
Definition: PSimHit.h:108
SiStripRecHitsValid::switchNumTotrphi
bool switchNumTotrphi
Definition: SiStripRecHitsValid.h:128
SiStripRecHitsValid::switchBunchrphi
bool switchBunchrphi
Definition: SiStripRecHitsValid.h:133
SiStripFolderOrganizer::GetSubDetAndLayer
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=false)
Definition: SiStripFolderOrganizer.cc:106
TrackerTopology::tidIsStereo
bool tidIsStereo(const DetId &id) const
Definition: TrackerTopology.h:267
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
SiStripRecHitsValid::SiStripDetCabling_
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
Definition: SiStripRecHitsValid.h:178
SiStripRecHitsValid::StereoAndMatchedMEs::mePosxStereo
MonitorElement * mePosxStereo
Definition: SiStripRecHitsValid.h:86
SiStripRecHitsValid::fillME
void fillME(MonitorElement *ME, float value1)
Definition: SiStripRecHitsValid.h:194
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrackerTopology.h
SiStripRecHitsValid
Definition: SiStripRecHitsValid.h:47
SiStripRecHitsValid::switchPosxrphi
bool switchPosxrphi
Definition: SiStripRecHitsValid.h:144
SiStripDetCabling.h
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
TrackerTopologyRcd.h
SiStripRecHitsValid::StereoAndMatchedMEs::mePullMFStereo
MonitorElement * mePullMFStereo
Definition: SiStripRecHitsValid.h:90
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
SiStripRecHitsValid::switchPullLFrphi
bool switchPullLFrphi
Definition: SiStripRecHitsValid.h:147
SiStripRecHitsValid::rechitanalysis_matched
void rechitanalysis_matched(SiStripMatchedRecHit2D const rechit, const GluedGeomDet *gluedDet, TrackerHitAssociator &associate)
Definition: SiStripRecHitsValid.cc:435
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
SiStripRecHitsValid::RecHitProperties::event
int event
Definition: SiStripRecHitsValid.h:118
AlgebraicVector
CLHEP::HepVector AlgebraicVector
Definition: AlgebraicObjects.h:13
SiStripRecHitsValid::LayerMEs::meResolxrphi
MonitorElement * meResolxrphi
Definition: SiStripRecHitsValid.h:75
SiStripRecHitsValid::StereoAndMatchedMEs::meResxMatched
MonitorElement * meResxMatched
Definition: SiStripRecHitsValid.h:97
SiStripRecHitsValid::topFolderName_
std::string topFolderName_
Definition: SiStripRecHitsValid.h:169
GenericTriggerEventFlag.h
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
SiStripRecHitsValid::switchNumrphi
bool switchNumrphi
Definition: SiStripRecHitsValid.h:132
MeasurementError
Definition: MeasurementError.h:8
SiStripRecHitsValid::SubDetMEs::meEventrphi
MonitorElement * meEventrphi
Definition: SiStripRecHitsValid.h:62
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
SiStripRecHitsValid::switchBunchMatched
bool switchBunchMatched
Definition: SiStripRecHitsValid.h:139
SiStripRecHitsValid::bookHistograms
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &run, const edm::EventSetup &es) override
Definition: SiStripRecHitsValid.cc:164
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
SiStripRecHitsValid::switchPosxMatched
bool switchPosxMatched
Definition: SiStripRecHitsValid.h:160
SiStripRecHitsValid::StereoAndMatchedMEs::meAdcStereo
MonitorElement * meAdcStereo
Definition: SiStripRecHitsValid.h:85
edm::ESHandle< TrackerTopology >
PSimHit::localPosition
Local3DPoint localPosition() const
Definition: PSimHit.h:52
SiStripSubStructure::getTECDetectors
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, const TrackerTopology *trackerTopology, uint32_t side=0, uint32_t wheel=0, uint32_t petal_bkw_frw=0, uint32_t petal=0, uint32_t ring=0, uint32_t ster=0)
SiStripRecHitsValid::switchWclusStereo
bool switchWclusStereo
Definition: SiStripRecHitsValid.h:151
TrackerTopology::tibIsStereo
bool tibIsStereo(const DetId &id) const
Definition: TrackerTopology.h:266
Topology::measurementError
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
SiStripDetCablingRcd
Definition: SiStripDependentRecords.h:19
SiStripRecHitsValid::switchNumTotMatched
bool switchNumTotMatched
Definition: SiStripRecHitsValid.h:130
SiStripFolderOrganizer::getSubDetFolderAndTag
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
Definition: SiStripFolderOrganizer.cc:475
SiStripRecHitsValid::analyze
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Definition: SiStripRecHitsValid.cc:175
Point3DBase< float, GlobalTag >
StripTopology::strip
virtual float strip(const LocalPoint &) const =0
SiStripRecHitsValid::rechitanalysis
void rechitanalysis(SiStripRecHit2D const rechit, const StripTopology &topol, TrackerHitAssociator &associate)
Definition: SiStripRecHitsValid.cc:366
SiStripRecHitsValid::conf_
edm::ParameterSet conf_
Definition: SiStripRecHitsValid.h:211
SiStripRecHitsValid::~SiStripRecHitsValid
~SiStripRecHitsValid() override
Definition: SiStripRecHitsValid.cc:161
GluedGeomDet
Definition: GluedGeomDet.h:7
BaseTrackerRecHit::localPositionError
LocalError localPositionError() const override
Definition: BaseTrackerRecHit.h:61
SiStripRecHitsValid::rechitpro
RecHitProperties rechitpro
Definition: SiStripRecHitsValid.h:221
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiStripRecHitsValid::LayerMEs::mePullLFrphi
MonitorElement * mePullLFrphi
Definition: SiStripRecHitsValid.h:77
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
SiStripRecHitsValid::StereoAndMatchedMEsMap
std::map< std::string, StereoAndMatchedMEs > StereoAndMatchedMEsMap
Definition: SiStripRecHitsValid.h:173
SiStripRecHitsValid::switchPosyMatched
bool switchPosyMatched
Definition: SiStripRecHitsValid.h:161
SiStripRecHitsValid::LayerMEs::meChi2rphi
MonitorElement * meChi2rphi
Definition: SiStripRecHitsValid.h:79
SiStripRecHitsValid::RecHitProperties::resolyy
float resolyy
Definition: SiStripRecHitsValid.h:109
SiStripRecHitsValid::switchEventMatched
bool switchEventMatched
Definition: SiStripRecHitsValid.h:140
edm::ParameterSet
Definition: ParameterSet.h:47
SiStripCluster.h
SiStripRecHitsValid::switchChi2rphi
bool switchChi2rphi
Definition: SiStripRecHitsValid.h:149
SiStripRecHitsValid::RecHitProperties::NsimHit
int NsimHit
Definition: SiStripRecHitsValid.h:116
SiStripRecHitsValid::RecHitProperties::chi2
float chi2
Definition: SiStripRecHitsValid.h:115
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
LocalError
Definition: LocalError.h:12
SiStripRecHitsValid::switchNumTotStereo
bool switchNumTotStereo
Definition: SiStripRecHitsValid.h:129
SiStripRecHitsValid::RecHitProperties::bunch
int bunch
Definition: SiStripRecHitsValid.h:117
PV2DBase::x
T x() const
Definition: PV2DBase.h:43
SiStripRecHitsValid::createStereoAndMatchedMEs
void createStereoAndMatchedMEs(DQMStore::IBooker &ibooker, std::string label)
Definition: SiStripRecHitsValid.cc:747
SiStripRecHitsValid::switchResolxMatched
bool switchResolxMatched
Definition: SiStripRecHitsValid.h:162
SiStripRecHitsValid.h
EncodedEventId::event
int event() const
get the contents of the subdetector field (should be protected?)
Definition: EncodedEventId.h:30
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
SiStripRecHitsValid::SubDetMEs::meNumrphi
MonitorElement * meNumrphi
Definition: SiStripRecHitsValid.h:60
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
SiStripRecHitsValid::createMEs
void createMEs(DQMStore::IBooker &ibooker, const edm::EventSetup &es)
Definition: SiStripRecHitsValid.cc:517
StripTopology::stripAngle
virtual float stripAngle(float strip) const =0
SiStripRecHitsValid::StereoAndMatchedMEs::meChi2Stereo
MonitorElement * meChi2Stereo
Definition: SiStripRecHitsValid.h:91
SiStripRecHitsValid::StereoAndMatchedMEs::meNsimHitStereo
MonitorElement * meNsimHitStereo
Definition: SiStripRecHitsValid.h:92
SiStripFolderOrganizer::setSiStripFolderName
void setSiStripFolderName(std::string name)
Definition: SiStripFolderOrganizer.cc:41
SiStripRecHitsValid::switchResyMatched
bool switchResyMatched
Definition: SiStripRecHitsValid.h:165
SiStripRecHitsValid::switchNsimHitStereo
bool switchNsimHitStereo
Definition: SiStripRecHitsValid.h:159
SiStripRecHitsValid::switchWclusrphi
bool switchWclusrphi
Definition: SiStripRecHitsValid.h:142
cscdqm::HistoName
std::string HistoName
Definition: CSCDQM_HistoDef.h:32
SiStripFolderOrganizer::setSiStripFolder
void setSiStripFolder()
Definition: SiStripFolderOrganizer.cc:45
AlgebraicSymMatrix
CLHEP::HepSymMatrix AlgebraicSymMatrix
Definition: AlgebraicObjects.h:15
edm::EventSetup
Definition: EventSetup.h:57
Topology::measurementPosition
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
get
#define get
SiStripRecHitsValid::switchEventStereo
bool switchEventStereo
Definition: SiStripRecHitsValid.h:137
SiStripRecHitsValid::RecHitProperties::pullMF
float pullMF
Definition: SiStripRecHitsValid.h:112
SiStripRecHitsValid::StereoAndMatchedMEs::meWclusStereo
MonitorElement * meWclusStereo
Definition: SiStripRecHitsValid.h:84
alignCSCRings.r
r
Definition: alignCSCRings.py:93
SiStripRecHitsValid::switchAdcrphi
bool switchAdcrphi
Definition: SiStripRecHitsValid.h:143
SiStripRecHitsValid::switchResxMatched
bool switchResxMatched
Definition: SiStripRecHitsValid.h:164
GluedGeomDet::stereoDet
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:20
TrackerHitAssociator
Definition: TrackerHitAssociator.h:55
SiStripHistoId
Definition: SiStripHistoId.h:25
SiStripRecHitsValid::totalMEs
TotalMEs totalMEs
Definition: SiStripRecHitsValid.h:126
SiStripRecHitsValid::StereoAndMatchedMEs::mePosyMatched
MonitorElement * mePosyMatched
Definition: SiStripRecHitsValid.h:94
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
writedatasetfile.run
run
Definition: writedatasetfile.py:27
BaseTrackerRecHit::localPosition
LocalPoint localPosition() const override
Definition: BaseTrackerRecHit.h:56
SiStripRecHitsValid::TotalMEs::meNumTotStereo
MonitorElement * meNumTotStereo
Definition: SiStripRecHitsValid.h:55
SiStripRecHitsValid::LayerDetMap
std::map< std::string, std::vector< uint32_t > > LayerDetMap
Definition: SiStripRecHitsValid.h:175
SiStripSubStructure::getTOBDetectors
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, const TrackerTopology *trackerTopology, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0)
SiStripRecHitsValid::switchResrphi
bool switchResrphi
Definition: SiStripRecHitsValid.h:146
SiStripRecHitsValid::createLayerMEs
void createLayerMEs(DQMStore::IBooker &ibooker, std::string label)
Definition: SiStripRecHitsValid.cc:657
SiStripMatchedRecHit2D
Definition: SiStripMatchedRecHit2D.h:8
DetId.h
LocalPoint.h
SiStripFolderOrganizer::setLayerFolder
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=false)
Definition: SiStripFolderOrganizer.cc:304
SiStripRecHitsValid::StereoAndMatchedMEs::mePullLFStereo
MonitorElement * mePullLFStereo
Definition: SiStripRecHitsValid.h:89
SiStripRecHitsValid::StereoAndMatchedMEs::meResolyMatched
MonitorElement * meResolyMatched
Definition: SiStripRecHitsValid.h:96
SiStripFolderOrganizer
Definition: SiStripFolderOrganizer.h:27
BoundPlane
SiStripRecHitsValid::StereoAndMatchedMEs::meResStereo
MonitorElement * meResStereo
Definition: SiStripRecHitsValid.h:88
SiStripHistoId::getSubdetid
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
Definition: SiStripHistoId.cc:82
SiStripRecHitsValid::switchNumMatched
bool switchNumMatched
Definition: SiStripRecHitsValid.h:138
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
SiStripRecHitsValid::SubDetMEs
Definition: SiStripRecHitsValid.h:59
SiStripRecHitsValid::SubDetMEs::meEventStereo
MonitorElement * meEventStereo
Definition: SiStripRecHitsValid.h:65
dqm::implementation::IBooker
Definition: DQMStore.h:43
SiStripRecHitsValid::stereoRecHitsToken_
edm::EDGetTokenT< SiStripRecHit2DCollection > stereoRecHitsToken_
Definition: SiStripRecHitsValid.h:230
SiStripRecHitsValid::switchPullLFStereo
bool switchPullLFStereo
Definition: SiStripRecHitsValid.h:156
SiStripRecHitsValid::trackerHitAssociatorConfig_
TrackerHitAssociator::Config trackerHitAssociatorConfig_
Definition: SiStripRecHitsValid.h:212
StripGeomDetUnit::specificTopology
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
Definition: StripGeomDetUnit.cc:17
SiStripRecHitsValid::SubDetMEs::meNumStereo
MonitorElement * meNumStereo
Definition: SiStripRecHitsValid.h:63
SiStripRecHitsValid::RecHitProperties::y
float y
Definition: SiStripRecHitsValid.h:105
SiStripRecHitsValid::switchAdcStereo
bool switchAdcStereo
Definition: SiStripRecHitsValid.h:152
SiStripDetCablingRcd.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MeasurementError::uu
float uu() const
Definition: MeasurementError.h:14
SiStripRecHitsValid::RecHitProperties::x
float x
Definition: SiStripRecHitsValid.h:104
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
SiStripDetId
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:18
PSimHit
Definition: PSimHit.h:15
OwnVector.h
SiStripRecHitsValid::StereoAndMatchedMEs::meResolxMatched
MonitorElement * meResolxMatched
Definition: SiStripRecHitsValid.h:95
SiStripRecHitsValid::switchNumStereo
bool switchNumStereo
Definition: SiStripRecHitsValid.h:135
SiStripRecHitsValid::RecHitProperties::clusiz
int clusiz
Definition: SiStripRecHitsValid.h:113
SiStripClusterCollection.h
SiStripRecHitsValid::bookME1D
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
Definition: SiStripRecHitsValid.cc:995
edm::Event
Definition: Event.h:73
SiStripRecHitsValid::switchResolxrphi
bool switchResolxrphi
Definition: SiStripRecHitsValid.h:145
dttmaxenums::R
Definition: DTTMax.h:29
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
SiStripSubStructure.h
edm::InputTag
Definition: InputTag.h:15
label
const char * label
Definition: PFTauDecayModeTools.cc:11
SiStripRecHitsValid::RecHitProperties::resy
float resy
Definition: SiStripRecHitsValid.h:111
SiStripRecHitsValid::SiStripRecHitsValid
SiStripRecHitsValid(const edm::ParameterSet &conf)
Definition: SiStripRecHitsValid.cc:28
EncodedEventId::bunchCrossing
int bunchCrossing() const
get the detector field from this detid
Definition: EncodedEventId.h:25
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SiStripRecHitsValid::StereoAndMatchedMEs::mePosxMatched
MonitorElement * mePosxMatched
Definition: SiStripRecHitsValid.h:93
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
SiStripRecHitsValid::StereoAndMatchedMEs::meResolxStereo
MonitorElement * meResolxStereo
Definition: SiStripRecHitsValid.h:87
StripGeomDetUnit
Definition: StripGeomDetUnit.h:15
TrackerGeometry
Definition: TrackerGeometry.h:14
SiStripRecHitsValid::StereoAndMatchedDetMap
std::map< std::string, std::vector< uint32_t > > StereoAndMatchedDetMap
Definition: SiStripRecHitsValid.h:176