CMS 3D CMS Logo

TrackSplittingMonitor.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * \author Suchandra Dutta , Giorgia Mila
5  */
6 
15 
19 //#include "DQM/TrackingMonitor/interface/TrackAnalyzer.h"
21 
24 
30 #include <string>
31 
33  : dqmStore_(edm::Service<DQMStore>().operator->()), conf_(iConfig) {
34  splitTracks_ = conf_.getParameter<edm::InputTag>("splitTrackCollection");
35  splitMuons_ = conf_.getParameter<edm::InputTag>("splitMuonCollection");
36  splitTracksToken_ = consumes<std::vector<reco::Track> >(splitTracks_);
37  splitMuonsToken_ = mayConsume<std::vector<reco::Muon> >(splitMuons_);
38 
39  plotMuons_ = conf_.getParameter<bool>("ifPlotMuons");
40 
41  // cuts
42  pixelHitsPerLeg_ = conf_.getParameter<int>("pixelHitsPerLeg");
43  totalHitsPerLeg_ = conf_.getParameter<int>("totalHitsPerLeg");
44  d0Cut_ = conf_.getParameter<double>("d0Cut");
45  dzCut_ = conf_.getParameter<double>("dzCut");
46  ptCut_ = conf_.getParameter<double>("ptCut");
47  norchiCut_ = conf_.getParameter<double>("norchiCut");
48 }
49 
51 
53  edm::Run const& /* iRun */,
54  edm::EventSetup const& /* iSetup */)
55 
56 {
57  std::string MEFolderName = conf_.getParameter<std::string>("FolderName");
58  ibooker.setCurrentFolder(MEFolderName);
59 
60  // bin declarations
61  int ddxyBin = conf_.getParameter<int>("ddxyBin");
62  double ddxyMin = conf_.getParameter<double>("ddxyMin");
63  double ddxyMax = conf_.getParameter<double>("ddxyMax");
64 
65  int ddzBin = conf_.getParameter<int>("ddzBin");
66  double ddzMin = conf_.getParameter<double>("ddzMin");
67  double ddzMax = conf_.getParameter<double>("ddzMax");
68 
69  int dphiBin = conf_.getParameter<int>("dphiBin");
70  double dphiMin = conf_.getParameter<double>("dphiMin");
71  double dphiMax = conf_.getParameter<double>("dphiMax");
72 
73  int dthetaBin = conf_.getParameter<int>("dthetaBin");
74  double dthetaMin = conf_.getParameter<double>("dthetaMin");
75  double dthetaMax = conf_.getParameter<double>("dthetaMax");
76 
77  int dptBin = conf_.getParameter<int>("dptBin");
78  double dptMin = conf_.getParameter<double>("dptMin");
79  double dptMax = conf_.getParameter<double>("dptMax");
80 
81  int dcurvBin = conf_.getParameter<int>("dcurvBin");
82  double dcurvMin = conf_.getParameter<double>("dcurvMin");
83  double dcurvMax = conf_.getParameter<double>("dcurvMax");
84 
85  int normBin = conf_.getParameter<int>("normBin");
86  double normMin = conf_.getParameter<double>("normMin");
87  double normMax = conf_.getParameter<double>("normMax");
88 
89  // declare histogram
91  ibooker.book1D("ddxyAbsoluteResiduals_tracker", "ddxyAbsoluteResiduals_tracker", ddxyBin, ddxyMin, ddxyMax);
93  ibooker.book1D("ddzAbsoluteResiduals_tracker", "ddzAbsoluteResiduals_tracker", ddzBin, ddzMin, ddzMax);
95  ibooker.book1D("dphiAbsoluteResiduals_tracker", "dphiAbsoluteResiduals_tracker", dphiBin, dphiMin, dphiMax);
97  "dthetaAbsoluteResiduals_tracker", "dthetaAbsoluteResiduals_tracker", dthetaBin, dthetaMin, dthetaMax);
99  ibooker.book1D("dptAbsoluteResiduals_tracker", "dptAbsoluteResiduals_tracker", dptBin, dptMin, dptMax);
101  ibooker.book1D("dcurvAbsoluteResiduals_tracker", "dcurvAbsoluteResiduals_tracker", dcurvBin, dcurvMin, dcurvMax);
102 
104  ibooker.book1D("ddxyNormalizedResiduals_tracker", "ddxyNormalizedResiduals_tracker", normBin, normMin, normMax);
106  ibooker.book1D("ddzNormalizedResiduals_tracker", "ddzNormalizedResiduals_tracker", normBin, normMin, normMax);
108  ibooker.book1D("dphiNormalizedResiduals_tracker", "dphiNormalizedResiduals_tracker", normBin, normMin, normMax);
110  "dthetaNormalizedResiduals_tracker", "dthetaNormalizedResiduals_tracker", normBin, normMin, normMax);
112  ibooker.book1D("dptNormalizedResiduals_tracker", "dptNormalizedResiduals_tracker", normBin, normMin, normMax);
114  ibooker.book1D("dcurvNormalizedResiduals_tracker", "dcurvNormalizedResiduals_tracker", normBin, normMin, normMax);
115 
116  if (plotMuons_) {
118  ibooker.book1D("ddxyAbsoluteResiduals_global", "ddxyAbsoluteResiduals_global", ddxyBin, ddxyMin, ddxyMax);
120  ibooker.book1D("ddzAbsoluteResiduals_global", "ddzAbsoluteResiduals_global", ddzBin, ddzMin, ddzMax);
122  ibooker.book1D("dphiAbsoluteResiduals_global", "dphiAbsoluteResiduals_global", dphiBin, dphiMin, dphiMax);
124  "dthetaAbsoluteResiduals_global", "dthetaAbsoluteResiduals_global", dthetaBin, dthetaMin, dthetaMax);
126  ibooker.book1D("dptAbsoluteResiduals_global", "dptAbsoluteResiduals_global", dptBin, dptMin, dptMax);
128  ibooker.book1D("dcurvAbsoluteResiduals_global", "dcurvAbsoluteResiduals_global", dcurvBin, dcurvMin, dcurvMax);
129 
131  ibooker.book1D("ddxyNormalizedResiduals_global", "ddxyNormalizedResiduals_global", normBin, normMin, normMax);
133  ibooker.book1D("ddzNormalizedResiduals_global", "ddzNormalizedResiduals_global", normBin, normMin, normMax);
135  ibooker.book1D("dphiNormalizedResiduals_global", "dphiNormalizedResiduals_global", normBin, normMin, normMax);
137  "dthetaNormalizedResiduals_global", "dthetaNormalizedResiduals_global", normBin, normMin, normMax);
139  ibooker.book1D("dptNormalizedResiduals_global", "dptNormalizedResiduals_global", normBin, normMin, normMax);
141  ibooker.book1D("dcurvNormalizedResiduals_global", "dcurvNormalizedResiduals_global", normBin, normMin, normMax);
142  }
143 
144  ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta d_{xy})/#sqrt{2} [#mum]");
145  ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]");
146  ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]");
147  ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]");
148  ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]");
149  ddxyAbsoluteResiduals_tracker_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]");
150 
151  ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy}");
152  ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta d_{z}/#sigma(d_{z})");
153  ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta #phi/#sigma(d_{#phi})");
154  ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta #theta/#sigma(d_{#theta})");
155  ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta p_{T}/#sigma(p_{T})");
156  ddxyNormalizedResiduals_tracker_->setAxisTitle("#delta 1/p_{T}/#sigma(1/p_{T})");
157 
158  if (plotMuons_) {
159  ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta d_{xy})/#sqrt{2} [#mum]");
160  ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta d_{z})/#sqrt{2} [#mum]");
161  ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta #phi)/#sqrt{2} [mrad]");
162  ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta #theta)/#sqrt{2} [mrad]");
163  ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta pT)/#sqrt{2} [GeV]");
164  ddxyAbsoluteResiduals_global_->setAxisTitle("(#delta (1/pT))/#sqrt{2} [GeV^{-1}]");
165 
166  ddxyNormalizedResiduals_global_->setAxisTitle("#delta d_{xy}/#sigma(d_{xy}");
167  ddxyNormalizedResiduals_global_->setAxisTitle("#delta d_{z}/#sigma(d_{z})");
168  ddxyNormalizedResiduals_global_->setAxisTitle("#delta #phi/#sigma(d_{#phi})");
169  ddxyNormalizedResiduals_global_->setAxisTitle("#delta #theta/#sigma(d_{#theta})");
170  ddxyNormalizedResiduals_global_->setAxisTitle("#delta p_{T}/#sigma(p_{T})");
171  ddxyNormalizedResiduals_global_->setAxisTitle("#delta 1/p_{T}/#sigma(1/p_{T})");
172  }
173 }
174 
175 //
176 // -- Analyse
177 //
184 
186  iEvent.getByToken(splitTracksToken_, splitTracks);
187  if (!splitTracks.isValid())
188  return;
189 
191  if (plotMuons_) {
192  iEvent.getByToken(splitMuonsToken_, splitMuons);
193  }
194 
195  if (splitTracks->size() == 2) {
196  // check that there are 2 tracks in split track collection
197  edm::LogInfo("TrackSplittingMonitor") << "Split Track size: " << splitTracks->size();
198 
199  // split tracks calculations
200  reco::Track track1 = splitTracks->at(0);
201  reco::Track track2 = splitTracks->at(1);
202 
203  // -------------------------- basic selection ---------------------------
204 
205  // hit counting
206  // looping through the hits for track 1
207  double nRechits1 = 0;
208  double nRechitinBPIX1 = 0;
209  for (trackingRecHit_iterator iHit = track1.recHitsBegin(); iHit != track1.recHitsEnd(); ++iHit) {
210  if ((*iHit)->isValid()) {
211  nRechits1++;
212  int type = (*iHit)->geographicalId().subdetId();
213  if (type == int(PixelSubdetector::PixelBarrel)) {
214  ++nRechitinBPIX1;
215  }
216  }
217  }
218  // looping through the hits for track 2
219  double nRechits2 = 0;
220  double nRechitinBPIX2 = 0;
221  for (trackingRecHit_iterator iHit = track2.recHitsBegin(); iHit != track2.recHitsEnd(); ++iHit) {
222  if ((*iHit)->isValid()) {
223  nRechits2++;
224  int type = (*iHit)->geographicalId().subdetId();
225  if (type == int(PixelSubdetector::PixelBarrel)) {
226  ++nRechitinBPIX2;
227  }
228  }
229  }
230 
231  // DCA of each track
232  double d01 = track1.d0();
233  double dz1 = track1.dz();
234  double d02 = track2.d0();
235  double dz2 = track2.dz();
236 
237  // pT of each track
238  double pt1 = track1.pt();
239  double pt2 = track2.pt();
240 
241  // chi2 of each track
242  double norchi1 = track1.normalizedChi2();
243  double norchi2 = track2.normalizedChi2();
244 
245  // basic selection
246  // pixel hits and total hits
247  if ((nRechitinBPIX1 >= pixelHitsPerLeg_) && (nRechitinBPIX1 >= pixelHitsPerLeg_) &&
248  (nRechits1 >= totalHitsPerLeg_) && (nRechits2 >= totalHitsPerLeg_)) {
249  // dca cut
250  if (((fabs(d01) < d0Cut_)) && (fabs(d02) < d0Cut_) && (fabs(dz2) < dzCut_) && (fabs(dz2) < dzCut_)) {
251  // pt cut
252  if ((pt1 + pt2) / 2 < ptCut_) {
253  // chi2 cut
254  if ((norchi1 < norchiCut_) && (norchi2 < norchiCut_)) {
255  // passed all cuts...
256  edm::LogInfo("TrackSplittingMonitor") << " Setected after all cuts ?";
257 
258  double ddxyVal = d01 - d02;
259  double ddzVal = dz1 - dz2;
260  double dphiVal = track1.phi() - track2.phi();
261  double dthetaVal = track1.theta() - track2.theta();
262  double dptVal = pt1 - pt2;
263  double dcurvVal = (1 / pt1) - (1 / pt2);
264 
265  double d01ErrVal = track1.d0Error();
266  double d02ErrVal = track2.d0Error();
267  double dz1ErrVal = track1.dzError();
268  double dz2ErrVal = track2.dzError();
269  double phi1ErrVal = track1.phiError();
270  double phi2ErrVal = track2.phiError();
271  double theta1ErrVal = track1.thetaError();
272  double theta2ErrVal = track2.thetaError();
273  double pt1ErrVal = track1.ptError();
274  double pt2ErrVal = track2.ptError();
275 
276  ddxyAbsoluteResiduals_tracker_->Fill(10000.0 * ddxyVal / sqrt(2.0));
277  ddxyAbsoluteResiduals_tracker_->Fill(10000.0 * ddzVal / sqrt(2.0));
278  ddxyAbsoluteResiduals_tracker_->Fill(1000.0 * dphiVal / sqrt(2.0));
279  ddxyAbsoluteResiduals_tracker_->Fill(1000.0 * dthetaVal / sqrt(2.0));
280  ddxyAbsoluteResiduals_tracker_->Fill(dptVal / sqrt(2.0));
281  ddxyAbsoluteResiduals_tracker_->Fill(dcurvVal / sqrt(2.0));
282 
283  ddxyNormalizedResiduals_tracker_->Fill(ddxyVal / sqrt(d01ErrVal * d01ErrVal + d02ErrVal * d02ErrVal));
284  ddxyNormalizedResiduals_tracker_->Fill(ddzVal / sqrt(dz1ErrVal * dz1ErrVal + dz2ErrVal * dz2ErrVal));
285  ddxyNormalizedResiduals_tracker_->Fill(dphiVal / sqrt(phi1ErrVal * phi1ErrVal + phi2ErrVal * phi2ErrVal));
287  sqrt(theta1ErrVal * theta1ErrVal + theta2ErrVal * theta2ErrVal));
288  ddxyNormalizedResiduals_tracker_->Fill(dptVal / sqrt(pt1ErrVal * pt1ErrVal + pt2ErrVal * pt2ErrVal));
290  dcurvVal / sqrt(pow(pt1ErrVal, 2) / pow(pt1, 4) + pow(pt2ErrVal, 2) / pow(pt2, 4)));
291 
292  // if do the same for split muons
293  if (plotMuons_ && splitMuons.isValid()) {
294  int gmCtr = 0;
295  bool topGlobalMuonFlag = false;
296  bool bottomGlobalMuonFlag = false;
297  int topGlobalMuon = -1;
298  int bottomGlobalMuon = -1;
299  double topGlobalMuonNorchi2 = 1e10;
300  double bottomGlobalMuonNorchi2 = 1e10;
301 
302  // check if usable split global muons
303  for (std::vector<reco::Muon>::const_iterator gmI = splitMuons->begin(); gmI != splitMuons->end(); gmI++) {
304  if (gmI->isTrackerMuon() && gmI->isStandAloneMuon() && gmI->isGlobalMuon()) {
305  reco::TrackRef trackerTrackRef1(splitTracks, 0);
306  reco::TrackRef trackerTrackRef2(splitTracks, 1);
307 
308  if (gmI->innerTrack() == trackerTrackRef1) {
309  if (gmI->globalTrack()->normalizedChi2() < topGlobalMuonNorchi2) {
310  topGlobalMuonFlag = true;
311  topGlobalMuonNorchi2 = gmI->globalTrack()->normalizedChi2();
312  topGlobalMuon = gmCtr;
313  }
314  }
315  if (gmI->innerTrack() == trackerTrackRef2) {
316  if (gmI->globalTrack()->normalizedChi2() < bottomGlobalMuonNorchi2) {
317  bottomGlobalMuonFlag = true;
318  bottomGlobalMuonNorchi2 = gmI->globalTrack()->normalizedChi2();
319  bottomGlobalMuon = gmCtr;
320  }
321  }
322  }
323  gmCtr++;
324  }
325 
326  if (bottomGlobalMuonFlag && topGlobalMuonFlag) {
327  reco::Muon muonTop = splitMuons->at(topGlobalMuon);
328  reco::Muon muonBottom = splitMuons->at(bottomGlobalMuon);
329 
330  reco::TrackRef glb1 = muonTop.globalTrack();
331  reco::TrackRef glb2 = muonBottom.globalTrack();
332 
333  double ddxyValGlb = glb1->d0() - glb2->d0();
334  double ddzValGlb = glb1->dz() - glb2->dz();
335  double dphiValGlb = glb1->phi() - glb2->phi();
336  double dthetaValGlb = glb1->theta() - glb2->theta();
337  double dptValGlb = glb1->pt() - glb2->pt();
338  double dcurvValGlb = (1 / glb1->pt()) - (1 / glb2->pt());
339 
340  double d01ErrValGlb = glb1->d0Error();
341  double d02ErrValGlb = glb2->d0Error();
342  double dz1ErrValGlb = glb1->dzError();
343  double dz2ErrValGlb = glb2->dzError();
344  double phi1ErrValGlb = glb1->phiError();
345  double phi2ErrValGlb = glb2->phiError();
346  double theta1ErrValGlb = glb1->thetaError();
347  double theta2ErrValGlb = glb2->thetaError();
348  double pt1ErrValGlb = glb1->ptError();
349  double pt2ErrValGlb = glb2->ptError();
350 
351  ddxyAbsoluteResiduals_global_->Fill(10000.0 * ddxyValGlb / sqrt(2.0));
352  ddxyAbsoluteResiduals_global_->Fill(10000.0 * ddzValGlb / sqrt(2.0));
353  ddxyAbsoluteResiduals_global_->Fill(1000.0 * dphiValGlb / sqrt(2.0));
354  ddxyAbsoluteResiduals_global_->Fill(1000.0 * dthetaValGlb / sqrt(2.0));
355  ddxyAbsoluteResiduals_global_->Fill(dptValGlb / sqrt(2.0));
356  ddxyAbsoluteResiduals_global_->Fill(dcurvValGlb / sqrt(2.0));
357 
359  sqrt(d01ErrValGlb * d01ErrValGlb + d02ErrValGlb * d02ErrValGlb));
361  sqrt(dz1ErrValGlb * dz1ErrValGlb + dz2ErrValGlb * dz2ErrValGlb));
363  dphiValGlb / sqrt(phi1ErrValGlb * phi1ErrValGlb + phi2ErrValGlb * phi2ErrValGlb));
365  dthetaValGlb / sqrt(theta1ErrValGlb * theta1ErrValGlb + theta2ErrValGlb * theta2ErrValGlb));
367  sqrt(pt1ErrValGlb * pt1ErrValGlb + pt2ErrValGlb * pt2ErrValGlb));
369  dcurvValGlb / sqrt(pow(pt1ErrValGlb, 2) / pow(pt1, 4) + pow(pt2ErrValGlb, 2) / pow(pt2, 4)));
370  }
371 
372  } // end of split muons loop
373  }
374  }
375  }
376  }
377  }
378 }
379 
TSCBLBuilderNoMaterial.h
TrackSplittingMonitor_cfi.dphiMax
dphiMax
Definition: TrackSplittingMonitor_cfi.py:34
TrackSplittingMonitor::dthetaNormalizedResiduals_global_
MonitorElement * dthetaNormalizedResiduals_global_
Definition: TrackSplittingMonitor.h:105
TrackSplittingMonitor::dcurvAbsoluteResiduals_global_
MonitorElement * dcurvAbsoluteResiduals_global_
Definition: TrackSplittingMonitor.h:100
HLT_2018_cff.pt2
pt2
Definition: HLT_2018_cff.py:8552
reco::TrackBase::ptError
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:702
MessageLogger.h
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
TrackSplittingMonitor::dphiAbsoluteResiduals_tracker_
MonitorElement * dphiAbsoluteResiduals_tracker_
Definition: TrackSplittingMonitor.h:83
TrackCandidateCollection.h
TrackSplittingMonitor::ptCut_
double ptCut_
Definition: TrackSplittingMonitor.h:77
TrackSplittingMonitor::d0Cut_
double d0Cut_
Definition: TrackSplittingMonitor.h:75
ESHandle.h
reco::Track::recHitsBegin
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:88
TrackSplittingMonitor_cfi.ddzMin
ddzMin
Definition: TrackSplittingMonitor_cfi.py:29
TrackSplittingMonitor_cfi.normMax
normMax
Definition: TrackSplittingMonitor_cfi.py:50
TrackSplittingMonitor_cfi.ddzMax
ddzMax
Definition: TrackSplittingMonitor_cfi.py:30
TrackSplittingMonitor_cfi.dcurvBin
dcurvBin
Definition: TrackSplittingMonitor_cfi.py:44
edm::Run
Definition: Run.h:45
TrackSplittingMonitor::dptAbsoluteResiduals_tracker_
MonitorElement * dptAbsoluteResiduals_tracker_
Definition: TrackSplittingMonitor.h:85
TrackSplittingMonitor::TrackSplittingMonitor
TrackSplittingMonitor(const edm::ParameterSet &)
Definition: TrackSplittingMonitor.cc:32
TrackSplittingMonitor::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: TrackSplittingMonitor.cc:178
edm
HLT enums.
Definition: AlignableModifier.h:19
TransientRecHitRecord.h
reco::TrackBase::thetaError
double thetaError() const
error on theta
Definition: TrackBase.h:710
edm::LogInfo
Definition: MessageLogger.h:254
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
TrackSplittingMonitor_cfi.dthetaMin
dthetaMin
Definition: TrackSplittingMonitor_cfi.py:37
HLT_2018_cff.pt1
pt1
Definition: HLT_2018_cff.py:8550
TrackSplittingMonitor::dphiNormalizedResiduals_global_
MonitorElement * dphiNormalizedResiduals_global_
Definition: TrackSplittingMonitor.h:104
DQMStore.h
TrackSplittingMonitor::ddzNormalizedResiduals_tracker_
MonitorElement * ddzNormalizedResiduals_tracker_
Definition: TrackSplittingMonitor.h:89
TrackSplittingMonitor::dptAbsoluteResiduals_global_
MonitorElement * dptAbsoluteResiduals_global_
Definition: TrackSplittingMonitor.h:99
TransientTrack.h
edm::Handle
Definition: AssociativeIterator.h:50
TrackSplittingMonitor_cfi.dcurvMin
dcurvMin
Definition: TrackSplittingMonitor_cfi.py:45
TrackSplittingMonitor_cfi.dcurvMax
dcurvMax
Definition: TrackSplittingMonitor_cfi.py:46
reco::Muon
Definition: Muon.h:27
edm::Ref< TrackCollection >
Utilities.operator
operator
Definition: Utilities.py:24
reco::TrackBase::pt
double pt() const
track transverse momentum
Definition: TrackBase.h:608
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
TrackSplittingMonitor::dphiNormalizedResiduals_tracker_
MonitorElement * dphiNormalizedResiduals_tracker_
Definition: TrackSplittingMonitor.h:90
TrackSplittingMonitor::theMagField
edm::ESHandle< MagneticField > theMagField
Definition: TrackSplittingMonitor.h:62
TrackSplittingMonitor::dcurvAbsoluteResiduals_tracker_
MonitorElement * dcurvAbsoluteResiduals_tracker_
Definition: TrackSplittingMonitor.h:86
TrackSplittingMonitor::conf_
edm::ParameterSet conf_
Definition: TrackSplittingMonitor.h:59
Track.h
TrackSplittingMonitor::ddxyAbsoluteResiduals_global_
MonitorElement * ddxyAbsoluteResiduals_global_
Definition: TrackSplittingMonitor.h:95
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
TrackFwd.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
dqm::legacy::DQMStore
Definition: DQMStore.h:727
BeamSpot.h
TrackSplittingMonitor::splitTracksToken_
edm::EDGetTokenT< std::vector< reco::Track > > splitTracksToken_
Definition: TrackSplittingMonitor.h:69
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
TrackSplittingMonitor.h
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
reco::Track::recHitsEnd
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:91
TrackSplittingMonitor::rpcGeometry
edm::ESHandle< RPCGeometry > rpcGeometry
Definition: TrackSplittingMonitor.h:65
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
TrackSplittingMonitor::dptNormalizedResiduals_tracker_
MonitorElement * dptNormalizedResiduals_tracker_
Definition: TrackSplittingMonitor.h:92
Service
reco::TrackBase::dz
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:602
TrackSplittingMonitor::dthetaAbsoluteResiduals_global_
MonitorElement * dthetaAbsoluteResiduals_global_
Definition: TrackSplittingMonitor.h:98
TrackSplittingMonitor_cfi.ddxyMin
ddxyMin
Definition: TrackSplittingMonitor_cfi.py:25
TrackSplittingMonitor::totalHitsPerLeg_
int totalHitsPerLeg_
Definition: TrackSplittingMonitor.h:74
TrackSplittingMonitor::cscGeometry
edm::ESHandle< CSCGeometry > cscGeometry
Definition: TrackSplittingMonitor.h:64
reco::TrackBase::phi
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:620
edm::OwnVector::const_iterator
Definition: OwnVector.h:41
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TrackSplittingMonitor::ddzAbsoluteResiduals_global_
MonitorElement * ddzAbsoluteResiduals_global_
Definition: TrackSplittingMonitor.h:96
TrackSplittingMonitor::~TrackSplittingMonitor
~TrackSplittingMonitor() override
Definition: TrackSplittingMonitor.cc:50
TrackSplittingMonitor::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: TrackSplittingMonitor.cc:52
TrackSplittingMonitor::ddxyAbsoluteResiduals_tracker_
MonitorElement * ddxyAbsoluteResiduals_tracker_
Definition: TrackSplittingMonitor.h:81
TransientTrackBuilder.h
edm::ParameterSet
Definition: ParameterSet.h:36
TrackSplittingMonitor_cfi.dthetaMax
dthetaMax
Definition: TrackSplittingMonitor_cfi.py:38
reco::Muon::globalTrack
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
Definition: Muon.h:51
TrackSplittingMonitor::theGeometry
edm::ESHandle< TrackerGeometry > theGeometry
Definition: TrackSplittingMonitor.h:61
TrackSplittingMonitor::dphiAbsoluteResiduals_global_
MonitorElement * dphiAbsoluteResiduals_global_
Definition: TrackSplittingMonitor.h:97
TrackSplittingMonitor::pixelHitsPerLeg_
int pixelHitsPerLeg_
Definition: TrackSplittingMonitor.h:73
TrackSplittingMonitor
Definition: TrackSplittingMonitor.h:40
TrackSplittingMonitor::splitMuonsToken_
edm::EDGetTokenT< std::vector< reco::Muon > > splitMuonsToken_
Definition: TrackSplittingMonitor.h:70
reco::TrackBase::dzError
double dzError() const
error on dz
Definition: TrackBase.h:731
iEvent
int iEvent
Definition: GenABIO.cc:224
reco::TrackBase::d0
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:596
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:57
TrackSplittingMonitor_cfi.ddzBin
ddzBin
Definition: TrackSplittingMonitor_cfi.py:28
reco::TrackBase::normalizedChi2
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:578
TrackSplittingMonitor_cfi.normMin
normMin
Definition: TrackSplittingMonitor_cfi.py:49
TransientTrackRecord.h
TSCPBuilderNoMaterial.h
get
#define get
TrajectorySeedCollection.h
TrackSplittingMonitor::plotMuons_
bool plotMuons_
Definition: TrackSplittingMonitor.h:72
InputTag.h
TrackSplittingMonitor::dcurvNormalizedResiduals_tracker_
MonitorElement * dcurvNormalizedResiduals_tracker_
Definition: TrackSplittingMonitor.h:93
TrackSplittingMonitor_cfi.normBin
normBin
Definition: TrackSplittingMonitor_cfi.py:48
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
TrackSplittingMonitor::dthetaAbsoluteResiduals_tracker_
MonitorElement * dthetaAbsoluteResiduals_tracker_
Definition: TrackSplittingMonitor.h:84
TrackSplittingMonitor_cfi.ddxyMax
ddxyMax
Definition: TrackSplittingMonitor_cfi.py:26
TrackSplittingMonitor::ddzAbsoluteResiduals_tracker_
MonitorElement * ddzAbsoluteResiduals_tracker_
Definition: TrackSplittingMonitor.h:82
TrackSplittingMonitor::ddzNormalizedResiduals_global_
MonitorElement * ddzNormalizedResiduals_global_
Definition: TrackSplittingMonitor.h:103
TrackSplittingMonitor::ddxyNormalizedResiduals_global_
MonitorElement * ddxyNormalizedResiduals_global_
Definition: TrackSplittingMonitor.h:102
type
type
Definition: HCALResponse.h:21
reco::TrackBase::d0Error
double d0Error() const
error on d0
Definition: TrackBase.h:725
TrackSplittingMonitor_cfi.dthetaBin
dthetaBin
Definition: TrackSplittingMonitor_cfi.py:36
TrackSplittingMonitor_cfi.dphiBin
dphiBin
Definition: TrackSplittingMonitor_cfi.py:32
TrackSplittingMonitor::splitMuons_
edm::InputTag splitMuons_
Definition: TrackSplittingMonitor.h:68
TrackSplittingMonitor::dtGeometry
edm::ESHandle< DTGeometry > dtGeometry
Definition: TrackSplittingMonitor.h:63
TrackSplittingMonitor::splitTracks_
edm::InputTag splitTracks_
Definition: TrackSplittingMonitor.h:67
RecoMuonCosmics_cff.splitMuons
splitMuons
Definition: RecoMuonCosmics_cff.py:258
TrackSplittingMonitor::dcurvNormalizedResiduals_global_
MonitorElement * dcurvNormalizedResiduals_global_
Definition: TrackSplittingMonitor.h:107
TrackSplittingMonitor::dptNormalizedResiduals_global_
MonitorElement * dptNormalizedResiduals_global_
Definition: TrackSplittingMonitor.h:106
TrajectoryStateTransform.h
TrackSplittingMonitor_cfi.dphiMin
dphiMin
Definition: TrackSplittingMonitor_cfi.py:33
dqm::implementation::IBooker
Definition: DQMStore.h:43
reco::TrackBase::phiError
double phiError() const
error on phi
Definition: TrackBase.h:719
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
TrackSplittingMonitor_cfi.ddxyBin
ddxyBin
Definition: TrackSplittingMonitor_cfi.py:24
TrackSplittingMonitor_cfi.dptMax
dptMax
Definition: TrackSplittingMonitor_cfi.py:42
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::Event
Definition: Event.h:73
reco::TrackBase::theta
double theta() const
polar angle
Definition: TrackBase.h:587
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
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
edm::InputTag
Definition: InputTag.h:15
TrackSplittingMonitor::norchiCut_
double norchiCut_
Definition: TrackSplittingMonitor.h:78
TrackSplittingMonitor::ddxyNormalizedResiduals_tracker_
MonitorElement * ddxyNormalizedResiduals_tracker_
Definition: TrackSplittingMonitor.h:88
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
TrackSplittingMonitor_cfi.dptBin
dptBin
Definition: TrackSplittingMonitor_cfi.py:40
TrackSplittingMonitor_cfi.dptMin
dptMin
Definition: TrackSplittingMonitor_cfi.py:41
TrackSplittingMonitor::dzCut_
double dzCut_
Definition: TrackSplittingMonitor.h:76
TrackSplittingMonitor::dthetaNormalizedResiduals_tracker_
MonitorElement * dthetaNormalizedResiduals_tracker_
Definition: TrackSplittingMonitor.h:91