88 hErrP_vs_Eta_ = dqm->
book2D(
"ErrP_vs_Eta",
"#Delta(p)/p vs #eta",
90 hErrPt_vs_Eta_ = dqm->
book2D(
"ErrPt_vs_Eta",
"#Delta(p_{T})/p_{T} vs #eta",
92 hErrQPt_vs_Eta_ = dqm->
book2D(
"ErrQPt_vs_Eta",
"#Delta(q/p_{T})/(q/p_{T}) vs #eta",
94 hErrEta_vs_Eta_ = dqm->
book2D(
"ErrEta_vs_Eta",
"#sigma(#eta) vs #eta",
98 hErrP_vs_P_ = dqm->
book2D(
"ErrP_vs_P",
"#Delta(p)/p vs p",
101 hErrPt_vs_Pt_ = dqm->
book2D(
"ErrPt_vs_Pt",
"#Delta(p_{T})/p_{T} vs p_{T}",
103 hErrQPt_vs_Pt_ = dqm->
book2D(
"ErrQPt_vs_Pt",
"#Delta(q/p_{T})/(q/p_{T}) vs p_{T}",
116 hPullPt_vs_Eta_ = dqm->
book2D(
"PullPt_vs_Eta",
"Pull(p_{T}) vs #eta",
118 hPullEta_vs_Eta_ = dqm->
book2D(
"PullEta_vs_Eta",
"Pull(#eta) vs #eta",
120 hPullPhi_vs_Eta_ = dqm->
book2D(
"PullPhi_vs_Eta",
"Pull(#phi) vs #eta",
124 hPullPt_vs_Pt_ = dqm->
book2D(
"PullPt_vs_Pt",
"Pull(p_{T}) vs p_{T}",
126 hPullEta_vs_Pt_ = dqm->
book2D(
"PullEta_vs_Pt",
"Pull(#eta) vs p_{T}",
130 hNTrks_ = dqm->
book1D(
"NTrks",
"Number of reco tracks per event", hDim.
nTrks, 0, hDim.
nTrks);
132 hNTrksPt_ = dqm->
book1D(
"NTrksPt",
"Number of reco tracks vs p_{T}", hDim.
nBinPt, hDim.
minPt, hDim.
maxPt);
138 const int nHits = 80;
139 hNHits_ = dqm->
book1D(
"NHits",
"Number of hits", nHits, 0, nHits);
140 hNHits_vs_Pt_ = dqm->
book2D(
"NHits_vs_Pt",
"Number of hits vs p_{T}",
142 hNHits_vs_Eta_ = dqm->
book2D(
"NHits_vs_Eta",
"Number of hits vs #eta",
145 hNSimHits_ = dqm->
book1D(
"NSimHits",
"Number of simHits", nHits, 0, nHits);
147 const int nLostHits = 5;
148 hNLostHits_ = dqm->
book1D(
"NLostHits",
"Number of Lost hits", nLostHits, 0, nLostHits);
149 hNLostHits_vs_Pt_ = dqm->
book2D(
"NLostHits_vs_Pt",
"Number of lost Hits vs p_{T}",
151 hNLostHits_vs_Eta_ = dqm->
book2D(
"NLostHits_vs_Eta",
"Number of lost Hits vs #eta",
154 const int nTrackerHits = 40;
155 hNTrackerHits_ = dqm->
book1D(
"NTrackerHits",
"Number of valid tracker hits", nTrackerHits, 0, nTrackerHits);
156 hNTrackerHits_vs_Pt_ = dqm->
book2D(
"NTrackerHits_vs_Pt",
"Number of valid traker hits vs p_{T}",
158 hNTrackerHits_vs_Eta_ = dqm->
book2D(
"NTrackerHits_vs_Eta",
"Number of valid tracker hits vs #eta",
161 const int nMuonHits = 40;
162 hNMuonHits_ = dqm->
book1D(
"NMuonHits",
"Number of valid muon hits", nMuonHits, 0, nMuonHits);
163 hNMuonHits_vs_Pt_ = dqm->
book2D(
"NMuonHits_vs_Pt",
"Number of valid muon hits vs p_{T}",
165 hNMuonHits_vs_Eta_ = dqm->
book2D(
"NMuonHits_vs_Eta",
"Number of valid muon hits vs #eta",
168 hNDof_ = dqm->
book1D(
"NDof",
"Number of DoF", hDim.
nDof, 0, hDim.
nDof);
169 hChi2_ = dqm->
book1D(
"Chi2",
"#Chi^{2}", hDim.
nBinErr, 0, 200);
170 hChi2Norm_ = dqm->
book1D(
"Chi2Norm",
"Normalized #Chi^{2}", hDim.
nBinErr, 0, 50);
171 hChi2Prob_ = dqm->
book1D(
"Chi2Prob",
"Prob(#Chi^{2})", hDim.
nBinErr, 0, 1);
173 hNDof_vs_Eta_ = dqm->
book2D(
"NDof_vs_Eta",
"Number of DoF vs #eta",
175 hChi2_vs_Eta_ = dqm->
book2D(
"Chi2_vs_Eta",
"#Chi^{2} vs #eta",
177 hChi2Norm_vs_Eta_ = dqm->
book2D(
"Chi2Norm_vs_Eta",
"Normalized #Chi^{2} vs #eta",
179 hChi2Prob_vs_Eta_ = dqm->
book2D(
"Chi2Prob_vs_Eta",
"Prob(#Chi^{2}) vs #eta",
182 hNSimToReco_ = dqm->
book1D(
"NSimToReco",
"Number of associated reco tracks", hDim.
nAssoc, 0, hDim.
nAssoc);
183 hNRecoToSim_ = dqm->
book1D(
"NRecoToSim",
"Number of associated sim TP's", hDim.
nAssoc, 0, hDim.
nAssoc);
188 const double simP = simRef->
p();
189 const double simPt = simRef->
pt();
190 const double simEta = doAbsEta_ ? fabs(simRef->
eta()) : simRef->
eta();
191 const double simPhi = simRef->
phi();
192 const double simQ = simRef->
charge();
193 const double simQPt = simQ/simPt;
197 const double simDxy = -simVtx.
x()*
sin(simPhi)+simVtx.y()*
cos(simPhi);
198 const double simDz = simVtx.z() - (simVtx.x()*simMom.x()+simVtx.y()*simMom.y())*simMom.z()/simMom.perp2();
207 hNSimHits_->Fill(nSimHits);
213 hNHits_->Fill(nRecoHits);
214 hNHits_vs_Pt_ ->Fill(simPt , nRecoHits);
215 hNHits_vs_Eta_->Fill(simEta, nRecoHits);
217 hNLostHits_->Fill(nLostHits);
218 hNLostHits_vs_Pt_ ->Fill(simPt , nLostHits);
219 hNLostHits_vs_Eta_->Fill(simEta, nLostHits);
221 const double recoNDof = recoRef->
ndof();
222 const double recoChi2 = recoRef->
chi2();
224 const double recoChi2Prob = TMath::Prob(recoRef->
chi2(),
static_cast<int>(recoRef->
ndof()));
226 hNDof_->Fill(recoNDof);
227 hChi2_->Fill(recoChi2);
228 hChi2Norm_->Fill(recoChi2Norm);
229 hChi2Prob_->Fill(recoChi2Prob);
231 hNDof_vs_Eta_->Fill(simEta, recoNDof);
232 hChi2_vs_Eta_->Fill(simEta, recoChi2);
233 hChi2Norm_vs_Eta_->Fill(simEta, recoChi2Norm);
234 hChi2Prob_vs_Eta_->Fill(simEta, recoChi2Prob);
236 const double recoQ = recoRef->
charge();
237 if ( simQ*recoQ < 0 ) {
238 hMisQPt_ ->Fill(simPt );
239 hMisQEta_->Fill(simEta);
243 const double recoPt =
sqrt(recoRef->
momentum().perp2());
244 const double recoEta = recoRef->
momentum().eta();
245 const double recoPhi = recoRef->
momentum().phi();
246 const double recoQPt = recoQ/recoPt;
248 const double recoDxy = recoRef->
dxy();
249 const double recoDz = recoRef->
dz();
251 const double errP = (recoP-simP)/simP;
252 const double errPt = (recoPt-simPt)/simPt;
253 const double errEta = (recoEta-simEta)/simEta;
254 const double errPhi = (recoPhi-simPhi)/simPhi;
255 const double errQPt = (recoQPt-simQPt)/simQPt;
257 const double errDxy = (recoDxy-simDxy)/simDxy;
258 const double errDz = (recoDz-simDz)/simDz;
260 hErrP_ ->Fill(errP );
261 hErrPt_ ->Fill(errPt );
262 hErrEta_->Fill(errEta);
263 hErrPhi_->Fill(errPhi);
264 hErrDxy_->Fill(errDxy);
265 hErrDz_ ->Fill(errDz );
267 if(fabs(simEta) > 0. && fabs(simEta) < 0.8) {
268 hErrPBarrel_->Fill(errP);
269 hErrPtBarrel_->Fill(errPt);
270 }
else if (fabs(simEta) > 0.8 && fabs(simEta) < 1.2) {
271 hErrPOverlap_->Fill(errP);
272 hErrPtOverlap_->Fill(errPt);
273 }
else if (fabs(simEta) > 1.2 ){
274 hErrPEndcap_->Fill(errP);
275 hErrPtEndcap_->Fill(errPt);
278 hErrP_vs_Eta_ ->Fill(simEta, errP );
279 hErrPt_vs_Eta_ ->Fill(simEta, errPt );
280 hErrQPt_vs_Eta_->Fill(simEta, errQPt);
282 hErrP_vs_P_ ->Fill(simP , errP );
283 hErrPt_vs_Pt_ ->Fill(simPt , errPt );
284 hErrQPt_vs_Pt_->Fill(simQPt, errQPt);
286 hErrEta_vs_Eta_->Fill(simEta, errEta);
288 const double pullPt = (recoPt-simPt)/recoRef->
ptError();
289 const double pullQPt = (recoQPt-simQPt)/recoRef->
qoverpError();
290 const double pullEta = (recoEta-simEta)/recoRef->
etaError();
291 const double pullPhi = (recoPhi-simPhi)/recoRef->
phiError();
292 const double pullDxy = (recoDxy-simDxy)/recoRef->
dxyError();
293 const double pullDz = (recoDz-simDz)/recoRef->
dzError();
295 hPullPt_ ->Fill(pullPt );
296 hPullEta_->Fill(pullEta);
297 hPullPhi_->Fill(pullPhi);
298 hPullQPt_->Fill(pullQPt);
299 hPullDxy_->Fill(pullDxy);
300 hPullDz_ ->Fill(pullDz );
302 hPullPt_vs_Eta_->Fill(simEta, pullPt);
303 hPullPt_vs_Pt_ ->Fill(simPt, pullPt);
305 hPullEta_vs_Eta_->Fill(simEta, pullEta);
306 hPullPhi_vs_Eta_->Fill(simEta, pullPhi);
308 hPullEta_vs_Pt_->Fill(simPt, pullEta);
376 hDim.doAbsEta = doAbsEta_;
432 tpset.getParameter<
double>(
"minRapidity"),
433 tpset.getParameter<
double>(
"maxRapidity"),
434 tpset.getParameter<
double>(
"tip"),
435 tpset.getParameter<
double>(
"lip"),
436 tpset.getParameter<
int>(
"minHit"),
437 tpset.getParameter<
bool>(
"signalOnly"),
438 tpset.getParameter<
bool>(
"chargedOnly"),
439 tpset.getParameter<std::vector<int> >(
"pdgId"));
451 LogError(
"RecoMuonValidator") <<
"DQMService not initialized\n";
456 if ( subDir_.empty() ) subDir_ =
"RecoMuonV";
457 if ( subDir_[subDir_.size()-1] ==
'/' ) subDir_.erase(subDir_.size()-1);
462 theDQM->setCurrentFolder(subDir_+
"/Muons");
469 commonME_->hSimP_ = theDQM->book1D(
"SimP" ,
"p of simTracks" , hDim.nBinP , hDim.minP , hDim.maxP );
470 commonME_->hSimPt_ = theDQM->book1D(
"SimPt" ,
"p_{T} of simTracks", hDim.nBinPt , hDim.minPt , hDim.maxPt );
471 commonME_->hSimEta_ = theDQM->book1D(
"SimEta",
"#eta of simTracks" , hDim.nBinEta, hDim.minEta, hDim.maxEta);
472 commonME_->hSimPhi_ = theDQM->book1D(
"SimPhi",
"#phi of simTracks" , hDim.nBinPhi, hDim.minPhi, hDim.maxPhi);
474 commonME_->hNSim_ = theDQM->book1D(
"NSim" ,
"Number of particles per event", hDim.nTrks, 0, hDim.nTrks);
475 commonME_->hNMuon_ = theDQM->book1D(
"NMuon",
"Number of muons per event" , hDim.nTrks, 0, hDim.nTrks);
477 const int nHits = 201;
478 commonME_->
hNSimHits_ = theDQM->book1D(
"NSimHits",
"Number of simHits", nHits, -100.5, 100.5);
480 commonME_->hTrkToGlbDiffNTrackerHits_ = theDQM->book1D(
"TrkGlbDiffNTrackerHits",
"Difference of number of tracker hits (tkMuon - globalMuon)", nHits, -100.5, 100.5);
481 commonME_->hStaToGlbDiffNMuonHits_ = theDQM->book1D(
"StaGlbDiffNMuonHits",
"Difference of number of muon hits (staMuon - globalMuon)", nHits, -100.5, 100.5);
483 commonME_->hTrkToGlbDiffNTrackerHitsEta_ = theDQM->book2D(
"TrkGlbDiffNTrackerHitsEta",
"Difference of number of tracker hits (tkMuon - globalMuon)", hDim.nBinEta, hDim.minEta, hDim.maxEta,nHits, -100.5, 100.5);
484 commonME_->hStaToGlbDiffNMuonHitsEta_ = theDQM->book2D(
"StaGlbDiffNMuonHitsEta",
"Difference of number of muon hits (staMuon - globalMuon)", hDim.nBinEta, hDim.minEta, hDim.maxEta,nHits, -100.5, 100.5);
486 commonME_->hTrkToGlbDiffNTrackerHitsPt_ = theDQM->book2D(
"TrkGlbDiffNTrackerHitsPt",
"Difference of number of tracker hits (tkMuon - globalMuon)", hDim.nBinPt, hDim.minPt, hDim.maxPt,nHits, -100.5, 100.5);
487 commonME_->hStaToGlbDiffNMuonHitsPt_ = theDQM->book2D(
"StaGlbDiffNMuonHitsPt",
"Difference of number of muon hits (staMuon - globalMuon)", hDim.nBinPt, hDim.minPt, hDim.maxPt,nHits, -100.5, 100.5);
490 theDQM->setCurrentFolder(subDir_+
"/Trk");
491 theDQM->bookString(
"TrackLabel", trkMuLabel_.
label()+
"_"+trkMuLabel_.
instance());
492 theDQM->bookString(
"AssocLabel", trkMuAssocLabel_.label());
494 theDQM->setCurrentFolder(subDir_+
"/Sta");
495 theDQM->bookString(
"TrackLabel", staMuLabel_.
label()+
"_"+staMuLabel_.
instance());
496 theDQM->bookString(
"AssocLabel", staMuAssocLabel_.
label());
498 theDQM->setCurrentFolder(subDir_+
"/Glb");
499 theDQM->bookString(
"TrackLabel", glbMuLabel_.
label()+
"_"+glbMuLabel_.
instance());
500 theDQM->bookString(
"AssocLabel", glbMuAssocLabel_.
label());
502 trkMuME_->bookHistograms(theDQM, subDir_+
"/Trk", hDim);
503 staMuME_->bookHistograms(theDQM, subDir_+
"/Sta", hDim);
504 glbMuME_->bookHistograms(theDQM, subDir_+
"/Glb", hDim);
506 if ( verbose_ > 0 ) theDQM->showDirStructure();
512 if ( theMuonService )
delete theMuonService;
517 if ( theMuonService ) theMuonService->update(eventSetup);
519 trkMuAssociator_ = 0;
520 staMuAssociator_ = 0;
521 glbMuAssociator_ = 0;
539 if ( theDQM && ! outputFileName_.empty() ) theDQM->save(outputFileName_);
545 LogError(
"RecoMuonValidator") <<
"DQMService not initialized\n";
551 event.getByLabel(simLabel_, simHandle);
556 event.getByLabel(trkMuLabel_, trkMuHandle);
560 event.getByLabel(staMuLabel_, staMuHandle);
564 event.getByLabel(glbMuLabel_, glbMuHandle);
569 event.getByLabel(muonLabel_, muonHandle);
583 simToTrkMuColl = trkMuAssociator_->associateSimToReco(trkMuHandle, simHandle, &event);
584 simToStaMuColl = staMuAssociator_->associateSimToReco(staMuHandle, simHandle, &event);
585 simToGlbMuColl = glbMuAssociator_->associateSimToReco(glbMuHandle, simHandle, &event);
588 trkMuToSimColl = trkMuAssociator_->associateRecoToSim(trkMuHandle, simHandle, &event);
589 staMuToSimColl = staMuAssociator_->associateRecoToSim(staMuHandle, simHandle, &event);
590 glbMuToSimColl = glbMuAssociator_->associateRecoToSim(glbMuHandle, simHandle, &event);
595 event.getByLabel(trkMuAssocLabel_, simToTrkMuHandle);
596 simToTrkMuColl = *(simToTrkMuHandle.
product());
599 event.getByLabel(staMuAssocLabel_, simToStaMuHandle);
600 simToStaMuColl = *(simToStaMuHandle.
product());
603 event.getByLabel(glbMuAssocLabel_, simToGlbMuHandle);
604 simToGlbMuColl = *(simToGlbMuHandle.
product());
608 event.getByLabel(trkMuAssocLabel_, trkMuToSimHandle);
609 trkMuToSimColl = *(trkMuToSimHandle.
product());
612 event.getByLabel(staMuAssocLabel_, staMuToSimHandle);
613 staMuToSimColl = *(staMuToSimHandle.
product());
616 event.getByLabel(glbMuAssocLabel_, glbMuToSimHandle);
617 glbMuToSimColl = *(glbMuToSimHandle.
product());
621 commonME_->hNSim_->Fill(nSim);
623 commonME_->hNMuon_->Fill(muonColl.
size());
625 trkMuME_->hNTrks_->Fill(trkMuColl.
size());
626 staMuME_->hNTrks_->Fill(staMuColl.
size());
627 glbMuME_->hNTrks_->Fill(glbMuColl.
size());
631 iMuon != muonColl.
end(); ++iMuon) {
632 int trkNTrackerHits = 0, glbNTrackerHits = 0;
633 int staNMuonHits = 0, glbNMuonHits = 0;
635 if ( iMuon->isTrackerMuon() ) {
636 const TrackRef trkTrack = iMuon->track();
638 trkNTrackerHits = countTrackerHits(*trkTrack);
640 trkMuME_->hNTrackerHits_->Fill(trkNTrackerHits);
641 trkMuME_->hNTrackerHits_vs_Pt_->Fill(trkTrack->pt(), trkNTrackerHits);
642 trkMuME_->hNTrackerHits_vs_Eta_->Fill(trkTrack->eta(), trkNTrackerHits);
645 if ( iMuon->isStandAloneMuon() ) {
646 const TrackRef staTrack = iMuon->standAloneMuon();
648 staNMuonHits = countMuonHits(*staTrack);
650 staMuME_->hNMuonHits_->Fill(staNMuonHits);
651 staMuME_->hNMuonHits_vs_Pt_->Fill(staTrack->pt(), staNMuonHits);
652 staMuME_->hNMuonHits_vs_Eta_->Fill(staTrack->eta(), staNMuonHits);
654 staMuME_->hNTrksEta_->Fill(staTrack->eta());
655 staMuME_->hNTrksPt_->Fill(staTrack->pt());
659 if ( iMuon->isGlobalMuon() ) {
660 const TrackRef glbTrack = iMuon->combinedMuon();
662 glbNTrackerHits = countTrackerHits(*glbTrack);
663 glbNMuonHits = countMuonHits(*glbTrack);
665 glbMuME_->hNTrackerHits_->Fill(glbNTrackerHits);
666 glbMuME_->hNTrackerHits_vs_Pt_->Fill(glbTrack->pt(), glbNTrackerHits);
667 glbMuME_->hNTrackerHits_vs_Eta_->Fill(glbTrack->eta(), glbNTrackerHits);
669 glbMuME_->hNMuonHits_->Fill(glbNMuonHits);
670 glbMuME_->hNMuonHits_vs_Pt_->Fill(glbTrack->pt(), glbNMuonHits);
671 glbMuME_->hNMuonHits_vs_Eta_->Fill(glbTrack->eta(), glbNMuonHits);
673 glbMuME_->hNTrksEta_->Fill(glbTrack->eta());
674 glbMuME_->hNTrksPt_->Fill(glbTrack->pt());
676 commonME_->hTrkToGlbDiffNTrackerHitsEta_->Fill(glbTrack->eta(),trkNTrackerHits-glbNTrackerHits);
677 commonME_->hStaToGlbDiffNMuonHitsEta_->Fill(glbTrack->eta(),staNMuonHits-glbNMuonHits);
679 commonME_->hTrkToGlbDiffNTrackerHitsPt_->Fill(glbTrack->pt(),trkNTrackerHits-glbNTrackerHits);
680 commonME_->hStaToGlbDiffNMuonHitsPt_->Fill(glbTrack->pt(),staNMuonHits-glbNMuonHits);
682 commonME_->hTrkToGlbDiffNTrackerHits_->Fill(trkNTrackerHits-glbNTrackerHits);
683 commonME_->hStaToGlbDiffNMuonHits_->Fill(staNMuonHits-glbNMuonHits);
693 if ( ! tpSelector_(*simTP) )
continue;
695 const double simP = simRef->p();
696 const double simPt = simRef->pt();
697 const double simEta = doAbsEta_ ? fabs(simRef->eta()) : simRef->eta();
698 const double simPhi = simRef->phi();
700 const unsigned int nSimHits = simRef->pSimHit_end() - simRef->pSimHit_begin();
702 commonME_->hSimP_ ->Fill(simP );
703 commonME_->hSimPt_ ->Fill(simPt );
704 commonME_->hSimEta_->Fill(simEta);
705 commonME_->hSimPhi_->Fill(simPhi);
707 commonME_->hNSimHits_->Fill(nSimHits);
710 vector<pair<RefToBase<Track>,
double> > trkMuRefV, staMuRefV, glbMuRefV;
711 if ( simToTrkMuColl.
find(simRef) != simToTrkMuColl.
end() ) {
712 trkMuRefV = simToTrkMuColl[simRef];
714 trkMuME_->hNSimToReco_->Fill(trkMuRefV.size());
715 if ( ! trkMuRefV.empty() ) {
716 const Track* trkMuTrack = trkMuRefV.begin()->first.get();
719 trkMuME_->
fill(simTP, trkMuTrack);
723 if ( simToStaMuColl.
find(simRef) != simToStaMuColl.
end() ) {
724 staMuRefV = simToStaMuColl[simRef];
726 staMuME_->hNSimToReco_->Fill(staMuRefV.size());
727 if ( ! staMuRefV.empty() ) {
728 const Track* staMuTrack = staMuRefV.begin()->first.get();
731 staMuME_->
fill(simTP, staMuTrack);
735 if ( simToGlbMuColl.
find(simRef) != simToGlbMuColl.
end() ) {
736 glbMuRefV = simToGlbMuColl[simRef];
738 glbMuME_->hNSimToReco_->Fill(glbMuRefV.size());
739 if ( ! glbMuRefV.empty() ) {
740 const Track* glbMuTrack = glbMuRefV.begin()->first.get();
743 glbMuME_->
fill(simTP, glbMuTrack);
756 if((*hit)->isValid()) {
757 DetId recoid = (*hit)->geographicalId();
771 if((*hit)->isValid()) {
772 DetId recoid = (*hit)->geographicalId();
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
const Vector & momentum() const
track momentum vector
int charge() const
electric charge
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
const_iterator end() const
last iterator over the map (read only)
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
double dxyError() const
error on dxy
void cd(void)
go to top directory (ie. root)
Sin< T >::type sin(const T &t)
const_iterator find(const key_type &k) const
find element with specified reference key
const std::vector< PSimHit >::const_iterator pSimHit_begin() const
double etaError() const
error on eta
const std::vector< PSimHit >::const_iterator pSimHit_end() const
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
double pt() const
transverse momentum
TrajectoryStateOnSurface TSOS
MEP hTrkToGlbDiffNTrackerHitsEta_
virtual int countTrackerHits(const reco::Track &track) const
MEP hTrkToGlbDiffNTrackerHits_
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
double phi() const
momentum azimuthal angle
double p() const
magnitude of momentum vector
virtual void analyze(const edm::Event &event, const edm::EventSetup &eventSetup)
double chi2() const
chi-squared of the fit
double ndof() const
number of degrees of freedom of the fit
Cos< T >::type cos(const T &t)
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
virtual int countMuonHits(const reco::Track &track) const
double phiError() const
error on phi
unsigned short numberOfValidHits() const
number of valid hits found
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
MEP hTrkToGlbDiffNTrackerHitsPt_
virtual void beginRun(const edm::Run &, const edm::EventSetup &eventSetup)
double qoverpError() const
error on signed transverse curvature
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...
double dzError() const
error on dz
std::vector< ConstRecHitPointer > ConstRecHitContainer
T const * product() const
Vector momentum() const
spatial momentum vector
T const * product() const
CovarianceMatrix & fill(CovarianceMatrix &v) const
fill SMatrix
const_iterator begin() const
int charge() const
track electric charge
const_iterator end() const
std::vector< TrackingParticle > TrackingParticleCollection
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
T const * get() const
Returns C++ pointer to the item.
Detector det() const
get the detector field from this detid
const Point & vertex() const
vertex position
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
void fill(const TrackingParticle *simRef, const Track *recoRef)
RecoMuonValidator(const edm::ParameterSet &pset)
void setCurrentFolder(const std::string &fullpath)
void bookHistograms(DQMStore *dqm, const string &dirName, const HistoDimensions &hDim)
double eta() const
momentum pseudorapidity
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.