Definition at line 60 of file RecoMuonValidator.cc.
Definition at line 298 of file RecoMuonValidator.cc.
void RecoMuonValidator::MuonME::bookHistograms | ( | DQMStore * | dqm, | |
const string & | dirName, | |||
const HistoDimensions & | hDim | |||
) | [inline] |
Definition at line 61 of file RecoMuonValidator.cc.
References DQMStore::book1D(), DQMStore::book2D(), DQMStore::cd(), HistoDimensions::doAbsEta, doAbsEta_, hChi2_, hChi2_vs_Eta_, hChi2Norm_, hChi2Norm_vs_Eta_, hChi2Prob_, hChi2Prob_vs_Eta_, hErrDxy_, hErrDz_, hErrEta_, hErrEta_vs_Eta_, hErrP_, hErrP_vs_Eta_, hErrP_vs_P_, hErrPhi_, hErrPt_, hErrPt_vs_Eta_, hErrPt_vs_Pt_, hErrQPt_vs_Eta_, hErrQPt_vs_Pt_, hEta_, hMisQEta_, hMisQPt_, hNDof_, hNDof_vs_Eta_, hNHits_, hNHits_vs_Eta_, hNHits_vs_Pt_, hNLostHits_, hNLostHits_vs_Eta_, hNLostHits_vs_Pt_, hNMuonHits_, hNMuonHits_vs_Eta_, hNMuonHits_vs_Pt_, hNRecoToSim_, hNSimHits_, hNSimToReco_, hNTrackerHits_, hNTrackerHits_vs_Eta_, hNTrackerHits_vs_Pt_, hNTrks_, hNTrksEta_, hNTrksPt_, hP_, hPhi_, hPt_, hPullDxy_, hPullDz_, hPullEta_, hPullEta_vs_Eta_, hPullEta_vs_Pt_, hPullPhi_, hPullPhi_vs_Eta_, hPullPt_, hPullPt_vs_Eta_, hPullPt_vs_Pt_, hPullQPt_, HistoDimensions::maxErrDxy, HistoDimensions::maxErrDz, HistoDimensions::maxErrEta, HistoDimensions::maxErrP, HistoDimensions::maxErrPhi, HistoDimensions::maxErrPt, HistoDimensions::maxErrQPt, HistoDimensions::maxEta, HistoDimensions::maxP, HistoDimensions::maxPhi, HistoDimensions::maxPt, HistoDimensions::minErrDxy, HistoDimensions::minErrDz, HistoDimensions::minErrEta, HistoDimensions::minErrP, HistoDimensions::minErrPhi, HistoDimensions::minErrPt, HistoDimensions::minErrQPt, HistoDimensions::minEta, HistoDimensions::minP, HistoDimensions::minPhi, HistoDimensions::minPt, HistoDimensions::nAssoc, HistoDimensions::nBinErr, HistoDimensions::nBinEta, HistoDimensions::nBinP, HistoDimensions::nBinPhi, HistoDimensions::nBinPt, HistoDimensions::nBinPull, HistoDimensions::nDof, HistoDimensions::nTrks, DQMStore::setCurrentFolder(), and HistoDimensions::wPull.
Referenced by RecoMuonValidator::RecoMuonValidator().
00062 { 00063 dqm->cd(); 00064 dqm->setCurrentFolder(dirName.c_str()); 00065 00066 doAbsEta_ = hDim.doAbsEta; 00067 00068 hP_ = dqm->book1D("P" , "p of recoTracks" , hDim.nBinP , hDim.minP , hDim.maxP ); 00069 hPt_ = dqm->book1D("Pt" , "p_{T} of recoTracks", hDim.nBinPt , hDim.minPt , hDim.maxPt ); 00070 hEta_ = dqm->book1D("Eta", "#eta of recoTracks" , hDim.nBinEta, hDim.minEta, hDim.maxEta); 00071 hPhi_ = dqm->book1D("Phi", "#phi of recoTracks" , hDim.nBinPhi, hDim.minPhi, hDim.maxPhi); 00072 00073 // - Resolutions 00074 hErrP_ = dqm->book1D("ErrP" , "#Delta(p)/p" , hDim.nBinErr, hDim.minErrP , hDim.maxErrP ); 00075 hErrPt_ = dqm->book1D("ErrPt" , "#Delta(p_{T})/p_{T}", hDim.nBinErr, hDim.minErrPt , hDim.maxErrPt ); 00076 hErrEta_ = dqm->book1D("ErrEta", "#sigma(#eta))" , hDim.nBinErr, hDim.minErrEta, hDim.maxErrEta); 00077 hErrPhi_ = dqm->book1D("ErrPhi", "#sigma(#phi)" , hDim.nBinErr, hDim.minErrPhi, hDim.maxErrPhi); 00078 hErrDxy_ = dqm->book1D("ErrDxy", "#sigma(d_{xy})" , hDim.nBinErr, hDim.minErrDxy, hDim.maxErrDxy); 00079 hErrDz_ = dqm->book1D("ErrDz" , "#sigma(d_{z})" , hDim.nBinErr, hDim.minErrDz , hDim.maxErrDz ); 00080 00081 // -- Resolutions vs Eta 00082 hErrP_vs_Eta_ = dqm->book2D("ErrP_vs_Eta", "#Delta(p)/p vs #eta", 00083 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, hDim.minErrP, hDim.maxErrP); 00084 hErrPt_vs_Eta_ = dqm->book2D("ErrPt_vs_Eta", "#Delta(p_{T})/p_{T} vs #eta", 00085 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, hDim.minErrPt, hDim.maxErrPt); 00086 hErrQPt_vs_Eta_ = dqm->book2D("ErrQPt_vs_Eta", "#Delta(q/p_{T})/(q/p_{T}) vs #eta", 00087 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, hDim.minErrQPt, hDim.maxErrQPt); 00088 hErrEta_vs_Eta_ = dqm->book2D("ErrEta_vs_Eta", "#sigma(#eta) vs #eta", 00089 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, hDim.minErrEta, hDim.maxErrEta); 00090 00091 // -- Resolutions vs momentum 00092 hErrP_vs_P_ = dqm->book2D("ErrP_vs_P", "#Delta(p)/p vs p", 00093 hDim.nBinP, hDim.minP, hDim.maxP, hDim.nBinErr, hDim.minErrP, hDim.maxErrP); 00094 00095 hErrPt_vs_Pt_ = dqm->book2D("ErrPt_vs_Pt", "#Delta(p_{T})/p_{T} vs p_{T}", 00096 hDim.nBinPt, hDim.minPt, hDim.maxPt, hDim.nBinErr, hDim.minErrPt, hDim.maxErrPt); 00097 hErrQPt_vs_Pt_ = dqm->book2D("ErrQPt_vs_Pt", "#Delta(q/p_{T})/(q/p_{T}) vs p_{T}", 00098 hDim.nBinPt, hDim.minPt, hDim.maxPt, hDim.nBinErr, hDim.minErrQPt, hDim.maxErrQPt); 00099 00100 00101 // - Pulls 00102 hPullPt_ = dqm->book1D("PullPt" , "Pull(#p_{T})" , hDim.nBinPull, -hDim.wPull, hDim.wPull); 00103 hPullEta_ = dqm->book1D("PullEta", "Pull(#eta)" , hDim.nBinPull, -hDim.wPull, hDim.wPull); 00104 hPullPhi_ = dqm->book1D("PullPhi", "Pull(#phi)" , hDim.nBinPull, -hDim.wPull, hDim.wPull); 00105 hPullQPt_ = dqm->book1D("PullQPt", "Pull(q/p_{T})", hDim.nBinPull, -hDim.wPull, hDim.wPull); 00106 hPullDxy_ = dqm->book1D("PullDxy", "Pull(D_{xy})" , hDim.nBinPull, -hDim.wPull, hDim.wPull); 00107 hPullDz_ = dqm->book1D("PullDz" , "Pull(D_{z})" , hDim.nBinPull, -hDim.wPull, hDim.wPull); 00108 00109 // -- Pulls vs Eta 00110 hPullPt_vs_Eta_ = dqm->book2D("PullPt_vs_Eta", "Pull(p_{T}) vs #eta", 00111 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinPull, -hDim.wPull, hDim.wPull); 00112 hPullEta_vs_Eta_ = dqm->book2D("PullEta_vs_Eta", "Pull(#eta) vs #eta", 00113 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinPull, -hDim.wPull, hDim.wPull); 00114 hPullPhi_vs_Eta_ = dqm->book2D("PullPhi_vs_Eta", "Pull(#phi) vs #eta", 00115 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinPull, -hDim.wPull, hDim.wPull); 00116 00117 // -- Pulls vs Pt 00118 hPullPt_vs_Pt_ = dqm->book2D("PullPt_vs_Pt", "Pull(p_{T}) vs p_{T}", 00119 hDim.nBinPt, hDim.minPt, hDim.maxPt, hDim.nBinPull, -hDim.wPull, hDim.wPull); 00120 hPullEta_vs_Pt_ = dqm->book2D("PullEta_vs_Pt", "Pull(#eta) vs p_{T}", 00121 hDim.nBinPt, hDim.minPt, hDim.maxPt, hDim.nBinPull, -hDim.wPull, hDim.wPull); 00122 00123 // - Misc. variables 00124 hNTrks_ = dqm->book1D("NTrks", "Number of reco tracks per event", hDim.nTrks, 0, hDim.nTrks); 00125 hNTrksEta_ = dqm->book1D("NTrksEta", "Number of reco tracks vs #eta", hDim.nBinEta, hDim.minEta, hDim.maxEta); 00126 hNTrksPt_ = dqm->book1D("NTrksPt", "Number of reco tracks vs p_{T}", hDim.nBinPt, hDim.minPt, hDim.maxPt); 00127 00128 hMisQPt_ = dqm->book1D("MisQPt" , "Charge mis-id vs Pt" , hDim.nBinPt , hDim.minPt , hDim.maxPt ); 00129 hMisQEta_ = dqm->book1D("MisQEta", "Charge mis-id vs Eta", hDim.nBinEta, hDim.minEta, hDim.maxEta); 00130 00131 // -- Number of Hits 00132 const int nHits = 80; 00133 hNHits_ = dqm->book1D("NHits", "Number of hits", nHits, 0, nHits); 00134 hNHits_vs_Pt_ = dqm->book2D("NHits_vs_Pt", "Number of hits vs p_{T}", 00135 hDim.nBinPt, hDim.minPt, hDim.maxPt, nHits/4, 0, nHits); 00136 hNHits_vs_Eta_ = dqm->book2D("NHits_vs_Eta", "Number of hits vs #eta", 00137 hDim.nBinEta, hDim.minEta, hDim.maxEta, nHits/4, 0, nHits); 00138 00139 hNSimHits_ = dqm->book1D("NSimHits", "Number of simHits", nHits, 0, nHits); 00140 00141 const int nLostHits = 5; 00142 hNLostHits_ = dqm->book1D("NLostHits", "Number of Lost hits", nLostHits, 0, nLostHits); 00143 hNLostHits_vs_Pt_ = dqm->book2D("NLostHits_vs_Pt", "Number of lost Hits vs p_{T}", 00144 hDim.nBinPt, hDim.minPt, hDim.maxPt, nLostHits, 0, nLostHits); 00145 hNLostHits_vs_Eta_ = dqm->book2D("NLostHits_vs_Eta", "Number of lost Hits vs #eta", 00146 hDim.nBinEta, hDim.minEta, hDim.maxEta, nLostHits, 0, nLostHits); 00147 00148 const int nTrackerHits = 40; 00149 hNTrackerHits_ = dqm->book1D("NTrackerHits", "Number of valid tracker hits", nTrackerHits, 0, nTrackerHits); 00150 hNTrackerHits_vs_Pt_ = dqm->book2D("NTrackerHits_vs_Pt", "Number of valid traker hits vs p_{T}", 00151 hDim.nBinPt, hDim.minPt, hDim.maxPt, nTrackerHits/4, 0, nTrackerHits); 00152 hNTrackerHits_vs_Eta_ = dqm->book2D("NTrackerHits_vs_Eta", "Number of valid tracker hits vs #eta", 00153 hDim.nBinEta, hDim.minEta, hDim.maxEta, nTrackerHits/4, 0, nTrackerHits); 00154 00155 const int nMuonHits = 40; 00156 hNMuonHits_ = dqm->book1D("NMuonHits", "Number of valid muon hits", nMuonHits, 0, nMuonHits); 00157 hNMuonHits_vs_Pt_ = dqm->book2D("NMuonHits_vs_Pt", "Number of valid muon hits vs p_{T}", 00158 hDim.nBinPt, hDim.minPt, hDim.maxPt, nMuonHits/4, 0, nMuonHits); 00159 hNMuonHits_vs_Eta_ = dqm->book2D("NMuonHits_vs_Eta", "Number of valid muon hits vs #eta", 00160 hDim.nBinEta, hDim.minEta, hDim.maxEta, nMuonHits/4, 0, nMuonHits); 00161 00162 hNDof_ = dqm->book1D("NDof", "Number of DoF", hDim.nDof, 0, hDim.nDof); 00163 hChi2_ = dqm->book1D("Chi2", "#Chi^{2}", hDim.nBinErr, 0, 200); 00164 hChi2Norm_ = dqm->book1D("Chi2Norm", "Normalized #Chi^{2}", hDim.nBinErr, 0, 50); 00165 hChi2Prob_ = dqm->book1D("Chi2Prob", "Prob(#Chi^{2})", hDim.nBinErr, 0, 1); 00166 00167 hNDof_vs_Eta_ = dqm->book2D("NDof_vs_Eta", "Number of DoF vs #eta", 00168 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, 0, hDim.nDof); 00169 hChi2_vs_Eta_ = dqm->book2D("Chi2_vs_Eta", "#Chi^{2} vs #eta", 00170 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, 0, 200); 00171 hChi2Norm_vs_Eta_ = dqm->book2D("Chi2Norm_vs_Eta", "Normalized #Chi^{2} vs #eta", 00172 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, 0, 100); 00173 hChi2Prob_vs_Eta_ = dqm->book2D("Chi2Prob_vs_Eta", "Prob(#Chi^{2}) vs #eta", 00174 hDim.nBinEta, hDim.minEta, hDim.maxEta, hDim.nBinErr, 0, 1); 00175 00176 hNSimToReco_ = dqm->book1D("NSimToReco", "Number of associated reco tracks", hDim.nAssoc, 0, hDim.nAssoc); 00177 hNRecoToSim_ = dqm->book1D("NRecoToSim", "Number of associated sim TP's", hDim.nAssoc, 0, hDim.nAssoc); 00178 };
void RecoMuonValidator::MuonME::fill | ( | const TrackingParticle * | simRef, | |
const Track * | recoRef | |||
) | [inline] |
Definition at line 180 of file RecoMuonValidator.cc.
References reco::Particle::charge(), reco::TrackBase::charge(), reco::TrackBase::chi2(), funct::cos(), doAbsEta_, reco::TrackBase::dxy(), reco::TrackBase::dxyError(), reco::TrackBase::dz(), reco::TrackBase::dzError(), reco::Particle::eta(), reco::TrackBase::etaError(), MonitorElement::Fill(), hChi2_, hChi2_vs_Eta_, hChi2Norm_, hChi2Norm_vs_Eta_, hChi2Prob_, hChi2Prob_vs_Eta_, hErrDxy_, hErrDz_, hErrEta_, hErrEta_vs_Eta_, hErrP_, hErrP_vs_Eta_, hErrP_vs_P_, hErrPhi_, hErrPt_, hErrPt_vs_Eta_, hErrPt_vs_Pt_, hErrQPt_vs_Eta_, hErrQPt_vs_Pt_, hEta_, hMisQEta_, hMisQPt_, hNDof_, hNDof_vs_Eta_, hNHits_, hNHits_vs_Eta_, hNHits_vs_Pt_, hNLostHits_, hNLostHits_vs_Eta_, hNLostHits_vs_Pt_, hNSimHits_, hP_, hPhi_, hPt_, hPullDxy_, hPullDz_, hPullEta_, hPullEta_vs_Eta_, hPullEta_vs_Pt_, hPullPhi_, hPullPhi_vs_Eta_, hPullPt_, hPullPt_vs_Eta_, hPullPt_vs_Pt_, hPullQPt_, reco::TrackBase::momentum(), reco::Particle::momentum(), reco::TrackBase::ndof(), reco::TrackBase::normalizedChi2(), reco::TrackBase::numberOfLostHits(), reco::TrackBase::numberOfValidHits(), reco::Particle::p(), reco::Particle::phi(), reco::TrackBase::phiError(), TrackingParticle::pSimHit_begin(), TrackingParticle::pSimHit_end(), reco::Particle::pt(), reco::TrackBase::ptError(), reco::TrackBase::qoverpError(), funct::sin(), funct::sqrt(), and reco::Particle::vertex().
Referenced by RecoMuonValidator::analyze().
00181 { 00182 const double simP = simRef->p(); 00183 const double simPt = simRef->pt(); 00184 const double simEta = doAbsEta_ ? fabs(simRef->eta()) : simRef->eta(); 00185 const double simPhi = simRef->phi(); 00186 const double simQ = simRef->charge(); 00187 const double simQPt = simQ/simPt; 00188 00189 GlobalPoint simVtx(simRef->vertex().x(), simRef->vertex().y(), simRef->vertex().z()); 00190 GlobalVector simMom(simRef->momentum().x(), simRef->momentum().y(), simRef->momentum().z()); 00191 const double simDxy = -simVtx.x()*sin(simPhi)+simVtx.y()*cos(simPhi); 00192 const double simDz = simVtx.z() - (simVtx.x()*simMom.x()+simVtx.y()*simMom.y())*simMom.z()/simMom.perp2(); 00193 00194 const unsigned int nSimHits = simRef->pSimHit_end() - simRef->pSimHit_begin(); 00195 00196 // Histograms for efficiency plots 00197 hP_ ->Fill(simP ); 00198 hPt_ ->Fill(simPt ); 00199 hEta_->Fill(simEta); 00200 hPhi_->Fill(simPhi); 00201 hNSimHits_->Fill(nSimHits); 00202 00203 // Number of reco-hits 00204 const int nRecoHits = recoRef->numberOfValidHits(); 00205 const int nLostHits = recoRef->numberOfLostHits(); 00206 00207 hNHits_->Fill(nRecoHits); 00208 hNHits_vs_Pt_ ->Fill(simPt , nRecoHits); 00209 hNHits_vs_Eta_->Fill(simEta, nRecoHits); 00210 00211 hNLostHits_->Fill(nLostHits); 00212 hNLostHits_vs_Pt_ ->Fill(simPt , nLostHits); 00213 hNLostHits_vs_Eta_->Fill(simEta, nLostHits); 00214 00215 const double recoNDof = recoRef->ndof(); 00216 const double recoChi2 = recoRef->chi2(); 00217 const double recoChi2Norm = recoRef->normalizedChi2(); 00218 const double recoChi2Prob = TMath::Prob(recoRef->chi2(), static_cast<int>(recoRef->ndof())); 00219 00220 hNDof_->Fill(recoNDof); 00221 hChi2_->Fill(recoChi2); 00222 hChi2Norm_->Fill(recoChi2Norm); 00223 hChi2Prob_->Fill(recoChi2Prob); 00224 00225 hNDof_vs_Eta_->Fill(simEta, recoNDof); 00226 hChi2_vs_Eta_->Fill(simEta, recoChi2); 00227 hChi2Norm_vs_Eta_->Fill(simEta, recoChi2Norm); 00228 hChi2Prob_vs_Eta_->Fill(simEta, recoChi2Prob); 00229 00230 const double recoQ = recoRef->charge(); 00231 if ( simQ*recoQ < 0 ) { 00232 hMisQPt_ ->Fill(simPt ); 00233 hMisQEta_->Fill(simEta); 00234 } 00235 00236 const double recoP = sqrt(recoRef->momentum().mag2()); 00237 const double recoPt = sqrt(recoRef->momentum().perp2()); 00238 const double recoEta = recoRef->momentum().eta(); 00239 const double recoPhi = recoRef->momentum().phi(); 00240 const double recoQPt = recoQ/recoPt; 00241 00242 const double recoDxy = recoRef->dxy(); 00243 const double recoDz = recoRef->dz(); 00244 00245 const double errP = (recoP-simP)/simP; 00246 const double errPt = (recoPt-simPt)/simPt; 00247 const double errEta = (recoEta-simEta)/simEta; 00248 const double errPhi = (recoPhi-simPhi)/simPhi; 00249 const double errQPt = (recoQPt-simQPt)/simQPt; 00250 00251 const double errDxy = (recoDxy-simDxy)/simDxy; 00252 const double errDz = (recoDz-simDz)/simDz; 00253 00254 hErrP_ ->Fill(errP ); 00255 hErrPt_ ->Fill(errPt ); 00256 hErrEta_->Fill(errEta); 00257 hErrPhi_->Fill(errPhi); 00258 hErrDxy_->Fill(errDxy); 00259 hErrDz_ ->Fill(errDz ); 00260 00261 hErrP_vs_Eta_ ->Fill(simEta, errP ); 00262 hErrPt_vs_Eta_ ->Fill(simEta, errPt ); 00263 hErrQPt_vs_Eta_->Fill(simEta, errQPt); 00264 00265 hErrP_vs_P_ ->Fill(simP , errP ); 00266 hErrPt_vs_Pt_ ->Fill(simPt , errPt ); 00267 hErrQPt_vs_Pt_->Fill(simQPt, errQPt); 00268 00269 hErrEta_vs_Eta_->Fill(simEta, errEta); 00270 00271 const double pullPt = (recoPt-simPt)/recoRef->ptError(); 00272 const double pullQPt = (recoQPt-simQPt)/recoRef->qoverpError(); 00273 const double pullEta = (recoEta-simEta)/recoRef->etaError(); 00274 const double pullPhi = (recoPhi-simPhi)/recoRef->phiError(); 00275 const double pullDxy = (recoDxy-simDxy)/recoRef->dxyError(); 00276 const double pullDz = (recoDz-simDz)/recoRef->dzError(); 00277 00278 hPullPt_ ->Fill(pullPt ); 00279 hPullEta_->Fill(pullEta); 00280 hPullPhi_->Fill(pullPhi); 00281 hPullQPt_->Fill(pullQPt); 00282 hPullDxy_->Fill(pullDxy); 00283 hPullDz_ ->Fill(pullDz ); 00284 00285 hPullPt_vs_Eta_->Fill(simEta, pullPt); 00286 hPullPt_vs_Pt_ ->Fill(simPt, pullPt); 00287 00288 hPullEta_vs_Eta_->Fill(simEta, pullEta); 00289 hPullPhi_vs_Eta_->Fill(simEta, pullPhi); 00290 00291 hPullEta_vs_Pt_->Fill(simPt, pullEta); 00292 00293 00294 };
Definition at line 318 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 322 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 322 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 324 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 318 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 321 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 321 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 313 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 313 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().
Definition at line 313 of file RecoMuonValidator.cc.
Referenced by RecoMuonValidator::analyze(), and bookHistograms().