20 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] Parameters initialization";
24 theMuonCollectionLabel_ = consumes<edm::View<reco::Muon> >(
parameters.getParameter<
edm::InputTag>(
"MuonCollection"));
59 theFolder =
parameters.getParameter<
string>(
"folder");
70 for (
unsigned int iEtaRegion = 0; iEtaRegion < 4; iEtaRegion++) {
84 etaTightTrack.push_back(
86 etaLooseTrack.push_back(
88 etaMediumTrack.push_back(
91 etaHighPtTrack.push_back(
95 phiGlbTrack.push_back(
99 phiStaTrack.push_back(
101 phiTightTrack.push_back(
103 phiLooseTrack.push_back(
105 phiMediumTrack.push_back(
107 phiSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_phi_" + EtaName,
"#phi_{Soft}_" + EtaName,
phiBin,
phiMin,
phiMax));
108 phiHighPtTrack.push_back(
112 pGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_p_" + EtaName,
"p_{GLB} " + EtaName,
pBin,
pMin,
pMax));
113 pTrack.push_back(ibooker.
book1D(
"TkMuon_p" + EtaName,
"p_{TK} " + EtaName,
pBin,
pMin,
pMax));
114 pStaTrack.push_back(ibooker.
book1D(
"StaMuon_p" + EtaName,
"p_{STA} " + EtaName,
pBin,
pMin,
pMax));
115 pTightTrack.push_back(ibooker.
book1D(
"TightMuon_p_" + EtaName,
"p_{Tight} " + EtaName,
pBin,
pMin,
pMax));
116 pLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_p_" + EtaName,
"p_{Loose} " + EtaName,
pBin,
pMin,
pMax));
117 pMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_p_" + EtaName,
"p_{Medium} " + EtaName,
pBin,
pMin,
pMax));
118 pSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_p_" + EtaName,
"p_{Soft} " + EtaName,
pBin,
pMin,
pMax));
119 pHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_p_" + EtaName,
"p_{HighPt} " + EtaName,
pBin,
pMin,
pMax));
122 ptGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_pt_" + EtaName,
"pt_{GLB} " + EtaName,
ptBin,
ptMin,
ptMax));
123 ptTrack.push_back(ibooker.
book1D(
"TkMuon_pt_" + EtaName,
"pt_{TK} " + EtaName,
ptBin,
ptMin,
ptMax));
124 ptStaTrack.push_back(ibooker.
book1D(
"StaMuon_pt_" + EtaName,
"pt_{STA} " + EtaName,
ptBin,
ptMin,
pMax));
125 ptTightTrack.push_back(ibooker.
book1D(
"TightMuon_pt_" + EtaName,
"pt_{Tight} " + EtaName,
ptBin,
ptMin,
ptMax));
126 ptLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_pt_" + EtaName,
"pt_{Loose} " + EtaName,
ptBin,
ptMin,
ptMax));
127 ptMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_pt_" + EtaName,
"pt_{Medium} " + EtaName,
ptBin,
ptMin,
ptMax));
128 ptSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_pt_" + EtaName,
"pt_{Soft} " + EtaName,
ptBin,
ptMin,
ptMax));
129 ptHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_pt_" + EtaName,
"pt_{HighPt} " + EtaName,
ptBin,
ptMin,
ptMax));
132 chi2GlbTrack.push_back(
134 chi2probGlbTrack.push_back(ibooker.
book1D(
137 chi2probTrack.push_back(
139 chi2StaTrack.push_back(
141 chi2probStaTrack.push_back(ibooker.
book1D(
143 chi2TightTrack.push_back(
145 chi2probTightTrack.push_back(ibooker.
book1D(
147 chi2LooseTrack.push_back(
149 chi2MediumTrack.push_back(
151 chi2probLooseTrack.push_back(ibooker.
book1D(
153 chi2probMediumTrack.push_back(ibooker.
book1D(
155 chi2SoftTrack.push_back(
157 chi2probSoftTrack.push_back(ibooker.
book1D(
159 chi2HighPtTrack.push_back(
161 chi2probHighPtTrack.push_back(ibooker.
book1D(
166 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] Analyze the mu in different eta regions";
175 unsigned int theIndexOfThePrimaryVertex = 999.;
180 for (
unsigned int ind = 0; ind <
vertex->size(); ++ind) {
181 if ((*
vertex)[ind].isValid() && !((*vertex)[ind].isFake())) {
182 theIndexOfThePrimaryVertex = ind;
188 if (theIndexOfThePrimaryVertex < 100) {
189 posVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
position();
190 errVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
error();
192 LogInfo(
"RecoMuonValidator") <<
"reco::PrimaryVertex not found, use BeamSpot position instead\n";
195 iEvent.getByToken(theBeamSpotLabel_, recoBeamSpotHandle);
198 posVtx =
bs.position();
199 errVtx(0, 0) =
bs.BeamWidthX();
200 errVtx(1, 1) =
bs.BeamWidthY();
201 errVtx(2, 2) =
bs.sigmaZ();
208 cout <<
"[MuonKinVsEtaAnalyzer]: Analyze the mu in different eta regions" << endl;
210 if (!
muons.isValid())
214 for (
unsigned int iEtaRegion = 0; iEtaRegion < 4; iEtaRegion++) {
215 if (iEtaRegion == 0) {
219 if (iEtaRegion == 1) {
223 if (iEtaRegion == 2) {
227 if (iEtaRegion == 3) {
232 if (
muon->isGlobalMuon()) {
234 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is global... Filling the histos" << endl;
236 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is global - filling the histos";
239 if (fabs(recoCombinedGlbTrack->eta()) > EtaCutMin && fabs(recoCombinedGlbTrack->eta()) < EtaCutMax) {
240 etaGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->eta());
241 phiGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->phi());
242 pGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->p());
243 ptGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->pt());
244 chi2GlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->normalizedChi2());
245 chi2probGlbTrack[iEtaRegion]->Fill(TMath::Prob(recoCombinedGlbTrack->chi2(), recoCombinedGlbTrack->ndof()));
249 if (
muon->isTrackerMuon()) {
251 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is tracker... Filling the histos" << endl;
253 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is tracker - filling the histos";
256 if (fabs(recoTrack->eta()) > EtaCutMin && fabs(recoTrack->eta()) < EtaCutMax) {
257 etaTrack[iEtaRegion]->Fill(recoTrack->eta());
258 phiTrack[iEtaRegion]->Fill(recoTrack->phi());
259 pTrack[iEtaRegion]->Fill(recoTrack->p());
260 ptTrack[iEtaRegion]->Fill(recoTrack->pt());
261 chi2Track[iEtaRegion]->Fill(recoTrack->normalizedChi2());
262 chi2probTrack[iEtaRegion]->Fill(TMath::Prob(recoTrack->chi2(), recoTrack->ndof()));
266 if (
muon->isStandAloneMuon()) {
268 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is standlone... Filling the histos" << endl;
270 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is standalone - filling the histos";
273 if (fabs(recoStaTrack->eta()) > EtaCutMin && fabs(recoStaTrack->eta()) < EtaCutMax) {
274 etaStaTrack[iEtaRegion]->Fill(recoStaTrack->eta());
275 phiStaTrack[iEtaRegion]->Fill(recoStaTrack->phi());
276 pStaTrack[iEtaRegion]->Fill(recoStaTrack->p());
277 ptStaTrack[iEtaRegion]->Fill(recoStaTrack->pt());
278 chi2StaTrack[iEtaRegion]->Fill(recoStaTrack->normalizedChi2());
279 chi2probStaTrack[iEtaRegion]->Fill(TMath::Prob(recoStaTrack->chi2(), recoStaTrack->ndof()));
285 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is tight... Filling the histos" << endl;
287 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is Tight - filling the histos";
289 if (fabs(recoTightTrack->eta()) > EtaCutMin && fabs(recoTightTrack->eta()) < EtaCutMax) {
290 etaTightTrack[iEtaRegion]->Fill(recoTightTrack->eta());
291 phiTightTrack[iEtaRegion]->Fill(recoTightTrack->phi());
292 pTightTrack[iEtaRegion]->Fill(recoTightTrack->p());
293 ptTightTrack[iEtaRegion]->Fill(recoTightTrack->pt());
294 chi2TightTrack[iEtaRegion]->Fill(recoTightTrack->normalizedChi2());
295 chi2probTightTrack[iEtaRegion]->Fill(TMath::Prob(recoTightTrack->chi2(), recoTightTrack->ndof()));
301 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Loose... Filling the histos" << endl;
303 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is Loose - filling the histos";
306 if (
muon->isGlobalMuon())
307 recoLooseTrack =
muon->combinedMuon();
309 recoLooseTrack =
muon->track();
311 if (fabs(recoLooseTrack->eta()) > EtaCutMin && fabs(recoLooseTrack->eta()) < EtaCutMax) {
312 etaLooseTrack[iEtaRegion]->Fill(recoLooseTrack->eta());
313 phiLooseTrack[iEtaRegion]->Fill(recoLooseTrack->phi());
314 pLooseTrack[iEtaRegion]->Fill(recoLooseTrack->p());
315 ptLooseTrack[iEtaRegion]->Fill(recoLooseTrack->pt());
316 chi2LooseTrack[iEtaRegion]->Fill(recoLooseTrack->normalizedChi2());
317 chi2probLooseTrack[iEtaRegion]->Fill(TMath::Prob(recoLooseTrack->chi2(), recoLooseTrack->ndof()));
323 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Medium... Filling the histos" << endl;
325 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is Medium - filling the histos";
328 if (
muon->isGlobalMuon())
329 recoMediumTrack =
muon->combinedMuon();
331 recoMediumTrack =
muon->track();
333 if (fabs(recoMediumTrack->eta()) > EtaCutMin && fabs(recoMediumTrack->eta()) < EtaCutMax) {
334 etaMediumTrack[iEtaRegion]->Fill(recoMediumTrack->eta());
335 phiMediumTrack[iEtaRegion]->Fill(recoMediumTrack->phi());
336 pMediumTrack[iEtaRegion]->Fill(recoMediumTrack->p());
337 ptMediumTrack[iEtaRegion]->Fill(recoMediumTrack->pt());
338 chi2MediumTrack[iEtaRegion]->Fill(recoMediumTrack->normalizedChi2());
339 chi2probMediumTrack[iEtaRegion]->Fill(TMath::Prob(recoMediumTrack->chi2(), recoMediumTrack->ndof()));
345 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Soft... Filling the histos" << endl;
347 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is Soft - filling the histos";
349 if (fabs(recoSoftTrack->eta()) > EtaCutMin && fabs(recoSoftTrack->eta()) < EtaCutMax) {
350 etaSoftTrack[iEtaRegion]->Fill(recoSoftTrack->eta());
351 phiSoftTrack[iEtaRegion]->Fill(recoSoftTrack->phi());
352 pSoftTrack[iEtaRegion]->Fill(recoSoftTrack->p());
353 ptSoftTrack[iEtaRegion]->Fill(recoSoftTrack->pt());
354 chi2SoftTrack[iEtaRegion]->Fill(recoSoftTrack->normalizedChi2());
355 chi2probSoftTrack[iEtaRegion]->Fill(TMath::Prob(recoSoftTrack->chi2(), recoSoftTrack->ndof()));
361 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is HighPt... Filling the histos" << endl;
363 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] The mu is HightPt - filling the histos";
365 if (fabs(recoHighPtTrack->eta()) > EtaCutMin && fabs(recoHighPtTrack->eta()) < EtaCutMax) {
366 etaHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->eta());
367 phiHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->phi());
368 pHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->p());
369 ptHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->pt());
370 chi2HighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->normalizedChi2());
371 chi2probHighPtTrack[iEtaRegion]->Fill(TMath::Prob(recoHighPtTrack->chi2(), recoHighPtTrack->ndof()));
virtual void setCurrentFolder(std::string const &fullpath)
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
const std::string metname
math::Error< dimension >::type Error
covariance error matrix (3x3)
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
bool isLooseMuon(const reco::Muon &)
void analyze(const edm::Event &, const edm::EventSetup &) override
math::XYZPoint Point
point in the space
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
bool isSoftMuon(const reco::Muon &, const reco::Vertex &, bool run2016_hip_mitigation=false)
Log< level::Info, false > LogInfo
bool isHighPtMuon(const reco::Muon &, const reco::Vertex &)
~MuonKinVsEtaAnalyzer() override
Destructor.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
static int position[264][3]
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MuonKinVsEtaAnalyzer(const edm::ParameterSet &pSet)
Constructor.