29 theMuonCollectionLabel_ = consumes<reco::MuonCollection>(
parameters.getParameter<
InputTag>(
"MuonCollection"));
34 etaBin =
parameters.getParameter<
int>(
"etaBin");
38 phiBin =
parameters.getParameter<
int>(
"phiBin");
39 phiMin =
parameters.getParameter<
double>(
"phiMin");
40 phiMax =
parameters.getParameter<
double>(
"phiMax");
44 pMax =
parameters.getParameter<
double>(
"pMax");
48 ptMax =
parameters.getParameter<
double>(
"ptMax");
50 chiBin =
parameters.getParameter<
int>(
"chiBin");
51 chiMin =
parameters.getParameter<
double>(
"chiMin");
52 chiMax =
parameters.getParameter<
double>(
"chiMax");
53 chiprobMin =
parameters.getParameter<
double>(
"chiprobMin");
54 chiprobMax =
parameters.getParameter<
double>(
"chiprobMax");
56 etaBMin =
parameters.getParameter<
double>(
"etaBMin");
57 etaBMax =
parameters.getParameter<
double>(
"etaBMax");
58 etaECMin =
parameters.getParameter<
double>(
"etaECMin");
59 etaECMax =
parameters.getParameter<
double>(
"etaECMax");
60 etaOvlpMin =
parameters.getParameter<
double>(
"etaOvlpMin");
61 etaOvlpMax =
parameters.getParameter<
double>(
"etaOvlpMax");
76 for(
unsigned int iEtaRegion=0;iEtaRegion<4;iEtaRegion++){
77 if (iEtaRegion==0) EtaName =
"Barrel";
78 if (iEtaRegion==1) EtaName =
"EndCap";
79 if (iEtaRegion==2) EtaName =
"Overlap";
80 if (iEtaRegion==3) EtaName =
"";
83 etaGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_eta_"+EtaName,
"#eta_{GLB} "+EtaName, etaBin,
etaMin,
etaMax));
84 etaTrack.push_back(ibooker.
book1D(
"TkMuon_eta_"+EtaName,
"#eta_{TK} "+EtaName, etaBin,
etaMin,
etaMax));
85 etaStaTrack.push_back(ibooker.
book1D(
"StaMuon_eta_"+EtaName,
"#eta_{STA} "+EtaName, etaBin,
etaMin,
etaMax));
86 etaTightTrack.push_back(ibooker.
book1D(
"TightMuon_eta_"+EtaName,
"#eta_{Tight} "+EtaName, etaBin,
etaMin,
etaMax));
87 etaLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_eta_"+EtaName,
"#eta_{Loose} "+EtaName, etaBin,
etaMin,
etaMax));
88 etaMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_eta_"+EtaName,
"#eta_{Medium} "+EtaName, etaBin,
etaMin,
etaMax));
89 etaSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_eta_"+EtaName,
"#eta_{Soft} "+EtaName, etaBin,
etaMin,
etaMax));
90 etaHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_eta_"+EtaName,
"#eta_{HighPt} "+EtaName, etaBin,
etaMin,
etaMax));
93 phiGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_phi_"+EtaName,
"#phi_{GLB} "+EtaName+
"(rad)", phiBin, phiMin, phiMax));
94 phiTrack.push_back(ibooker.
book1D(
"TkMuon_phi_"+EtaName,
"#phi_{TK}" +EtaName +
"(rad)", phiBin, phiMin, phiMax));
95 phiStaTrack.push_back(ibooker.
book1D(
"StaMuon_phi_"+EtaName,
"#phi_{STA}"+EtaName+
" (rad)", phiBin, phiMin, phiMax));
96 phiTightTrack.push_back(ibooker.
book1D(
"TightMuon_phi_"+EtaName,
"#phi_{Tight}_"+EtaName, phiBin, phiMin, phiMax));
97 phiLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_phi_"+EtaName,
"#phi_{Loose}_"+EtaName, phiBin, phiMin, phiMax));
98 phiMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_phi_"+EtaName,
"#phi_{Medium}_"+EtaName, phiBin, phiMin, phiMax));
99 phiSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_phi_"+EtaName,
"#phi_{Soft}_"+EtaName, phiBin, phiMin, phiMax));
100 phiHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_phi_"+EtaName,
"#phi_{HighPt}_"+EtaName, phiBin, phiMin, phiMax));
103 pGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_p_"+EtaName,
"p_{GLB} "+EtaName, pBin,
pMin, pMax));
104 pTrack.push_back(ibooker.
book1D(
"TkMuon_p"+EtaName,
"p_{TK} "+EtaName, pBin,
pMin, pMax));
105 pStaTrack.push_back(ibooker.
book1D(
"StaMuon_p"+EtaName,
"p_{STA} "+EtaName, pBin,
pMin, pMax));
106 pTightTrack.push_back(ibooker.
book1D(
"TightMuon_p_"+EtaName,
"p_{Tight} "+EtaName, pBin,
pMin, pMax));
107 pLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_p_"+EtaName,
"p_{Loose} "+EtaName, pBin,
pMin, pMax));
108 pMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_p_"+EtaName,
"p_{Medium} "+EtaName, pBin,
pMin, pMax));
109 pSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_p_"+EtaName,
"p_{Soft} "+EtaName, pBin,
pMin, pMax));
110 pHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_p_"+EtaName,
"p_{HighPt} "+EtaName, pBin,
pMin, pMax));
113 ptGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_pt_" +EtaName,
"pt_{GLB} "+EtaName, ptBin,
ptMin, ptMax));
114 ptTrack.push_back(ibooker.
book1D(
"TkMuon_pt_"+EtaName,
"pt_{TK} "+EtaName, ptBin,
ptMin, ptMax));
115 ptStaTrack.push_back(ibooker.
book1D(
"StaMuon_pt_"+EtaName,
"pt_{STA} "+EtaName, ptBin,
ptMin, pMax));
116 ptTightTrack.push_back(ibooker.
book1D(
"TightMuon_pt_"+EtaName,
"pt_{Tight} "+EtaName, ptBin,
ptMin, ptMax));
117 ptLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_pt_"+EtaName,
"pt_{Loose} "+EtaName, ptBin,
ptMin, ptMax));
118 ptMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_pt_"+EtaName,
"pt_{Medium} "+EtaName, ptBin,
ptMin, ptMax));
119 ptSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_pt_"+EtaName,
"pt_{Soft} "+EtaName, ptBin,
ptMin, ptMax));
120 ptHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_pt_"+EtaName,
"pt_{HighPt} "+EtaName, ptBin,
ptMin, ptMax));
123 chi2GlbTrack.push_back(ibooker.
book1D(
"GlbMuon_chi2_"+EtaName,
"#chi^{2}_{GLB} " + EtaName, chiBin, chiMin, chiMax));
124 chi2probGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_chi2prob_"+EtaName,
"#chi^{2}_{GLB} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
125 chi2Track.push_back(ibooker.
book1D(
"TkMuon_chi2_"+EtaName,
"#chi^{2}_{TK} " + EtaName, chiBin, chiMin, chiMax));
126 chi2probTrack.push_back(ibooker.
book1D(
"TkMuon_chi2prob_"+EtaName,
"#chi^{2}_{TK} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
127 chi2StaTrack.push_back(ibooker.
book1D(
"StaMuon_chi2_"+EtaName,
"#chi^{2}_{STA} " + EtaName, chiBin, chiMin, chiMax));
128 chi2probStaTrack.push_back(ibooker.
book1D(
"StaMuon_chi2prob_"+EtaName,
"#chi^{2}_{STA} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
129 chi2TightTrack.push_back(ibooker.
book1D(
"TightMuon_chi2_"+EtaName,
"#chi^{2}_{Tight} " + EtaName, chiBin, chiMin, chiMax));
130 chi2probTightTrack.push_back(ibooker.
book1D(
"TightMuon_chi2prob_"+EtaName,
"#chi^{2}_{Tight} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
131 chi2LooseTrack.push_back(ibooker.
book1D(
"LooseMuon_chi2_"+EtaName,
"#chi^{2}_{Loose} " + EtaName, chiBin, chiMin, chiMax));
132 chi2MediumTrack.push_back(ibooker.
book1D(
"MediumMuon_chi2_"+EtaName,
"#chi^{2}_{Medium} " + EtaName, chiBin, chiMin, chiMax));
133 chi2probLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_chi2prob_"+EtaName,
"#chi^{2}_{Loose} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
134 chi2probMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_chi2prob_"+EtaName,
"#chi^{2}_{Medium} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
135 chi2SoftTrack.push_back(ibooker.
book1D(
"SoftMuon_chi2_"+EtaName,
"#chi^{2}_{Soft} " + EtaName, chiBin, chiMin, chiMax));
136 chi2probSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_chi2prob_"+EtaName,
"#chi^{2}_{Soft} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
137 chi2HighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_chi2_"+EtaName,
"#chi^{2}_{HighPt} " + EtaName, chiBin, chiMin, chiMax));
138 chi2probHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_chi2prob_"+EtaName,
"#chi^{2}_{HighPt} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
143 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] Analyze the mu in different eta regions";
144 theService->update(iSetup);
147 iEvent.
getByToken(theMuonCollectionLabel_,muons);
153 unsigned int theIndexOfThePrimaryVertex = 999.;
158 for (
unsigned int ind=0; ind<vertex->size(); ++ind) {
159 if ( (*vertex)[ind].isValid() && !((*vertex)[ind].isFake()) ) {
160 theIndexOfThePrimaryVertex = ind;
166 if (theIndexOfThePrimaryVertex<100) {
167 posVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
position();
168 errVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
error();
171 LogInfo(
"RecoMuonValidator") <<
"reco::PrimaryVertex not found, use BeamSpot position instead\n";
174 iEvent.
getByToken(theBeamSpotLabel_,recoBeamSpotHandle);
180 errVtx(2,2) = bs.
sigmaZ();
187 cout <<
"[MuonKinVsEtaAnalyzer]: Analyze the mu in different eta regions" << endl;
191 for (reco::MuonCollection::const_iterator muonIt = muons->begin(); muonIt!=muons->end(); ++muonIt){
194 for(
unsigned int iEtaRegion=0;iEtaRegion<4;iEtaRegion++){
195 if (iEtaRegion==0) {EtaCutMin= etaBMin; EtaCutMax=etaBMax;}
196 if (iEtaRegion==1) {EtaCutMin= etaECMin; EtaCutMax=etaECMax;}
197 if (iEtaRegion==2) {EtaCutMin= etaOvlpMin; EtaCutMax=etaOvlpMax;}
198 if (iEtaRegion==3) {EtaCutMin= etaBMin; EtaCutMax=etaECMax;}
202 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is global... Filling the histos" << endl;
204 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is global - filling the histos";
207 if(fabs(recoCombinedGlbTrack->eta())>EtaCutMin && fabs(recoCombinedGlbTrack->eta())<EtaCutMax){
208 etaGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->eta());
209 phiGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->phi());
210 pGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->p());
211 ptGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->pt());
212 chi2GlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->normalizedChi2());
213 chi2probGlbTrack[iEtaRegion]->Fill(TMath::Prob(recoCombinedGlbTrack->normalizedChi2(),recoCombinedGlbTrack->ndof()));
219 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is tracker... Filling the histos" << endl;
221 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is tracker - filling the histos";
224 if(fabs(recoTrack->eta())>EtaCutMin && fabs(recoTrack->eta())<EtaCutMax){
225 etaTrack[iEtaRegion]->Fill(recoTrack->eta());
226 phiTrack[iEtaRegion]->Fill(recoTrack->phi());
227 pTrack[iEtaRegion]->Fill(recoTrack->p());
228 ptTrack[iEtaRegion]->Fill(recoTrack->pt());
229 chi2Track[iEtaRegion]->Fill(recoTrack->normalizedChi2());
230 chi2probTrack[iEtaRegion]->Fill(TMath::Prob(recoTrack->normalizedChi2(),recoTrack->ndof()));
236 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is standlone... Filling the histos" << endl;
238 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is standalone - filling the histos";
241 if(fabs(recoStaTrack->eta())>EtaCutMin && fabs(recoStaTrack->eta())<EtaCutMax){
242 etaStaTrack[iEtaRegion]->Fill(recoStaTrack->eta());
243 phiStaTrack[iEtaRegion]->Fill(recoStaTrack->phi());
244 pStaTrack[iEtaRegion]->Fill(recoStaTrack->p());
245 ptStaTrack[iEtaRegion]->Fill(recoStaTrack->pt());
246 chi2StaTrack[iEtaRegion]->Fill(recoStaTrack->normalizedChi2());
247 chi2probStaTrack[iEtaRegion]->Fill(TMath::Prob(recoStaTrack->normalizedChi2(),recoStaTrack->ndof()));
253 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is tight... Filling the histos" << endl;
255 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Tight - filling the histos";
257 if(fabs(recoTightTrack->eta())>EtaCutMin && fabs(recoTightTrack->eta())<EtaCutMax){
258 etaTightTrack[iEtaRegion]->Fill(recoTightTrack->eta());
259 phiTightTrack[iEtaRegion]->Fill(recoTightTrack->phi());
260 pTightTrack[iEtaRegion]->Fill(recoTightTrack->p());
261 ptTightTrack[iEtaRegion]->Fill(recoTightTrack->pt());
262 chi2TightTrack[iEtaRegion]->Fill(recoTightTrack->normalizedChi2());
263 chi2probTightTrack[iEtaRegion]->Fill(TMath::Prob(recoTightTrack->normalizedChi2(),recoTightTrack->ndof()));
270 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Loose... Filling the histos" << endl;
272 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Loose - filling the histos";
276 else recoLooseTrack = recoMu.
track();
278 if(fabs(recoLooseTrack->eta())>EtaCutMin && fabs(recoLooseTrack->eta())<EtaCutMax){
279 etaLooseTrack[iEtaRegion]->Fill(recoLooseTrack->eta());
280 phiLooseTrack[iEtaRegion]->Fill(recoLooseTrack->phi());
281 pLooseTrack[iEtaRegion]->Fill(recoLooseTrack->p());
282 ptLooseTrack[iEtaRegion]->Fill(recoLooseTrack->pt());
283 chi2LooseTrack[iEtaRegion]->Fill(recoLooseTrack->normalizedChi2());
284 chi2probLooseTrack[iEtaRegion]->Fill(TMath::Prob(recoLooseTrack->normalizedChi2(),recoLooseTrack->ndof()));
290 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Medium... Filling the histos" << endl;
292 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Medium - filling the histos";
296 else recoMediumTrack = recoMu.
track();
298 if(fabs(recoMediumTrack->eta())>EtaCutMin && fabs(recoMediumTrack->eta())<EtaCutMax){
299 etaMediumTrack[iEtaRegion]->Fill(recoMediumTrack->eta());
300 phiMediumTrack[iEtaRegion]->Fill(recoMediumTrack->phi());
301 pMediumTrack[iEtaRegion]->Fill(recoMediumTrack->p());
302 ptMediumTrack[iEtaRegion]->Fill(recoMediumTrack->pt());
303 chi2MediumTrack[iEtaRegion]->Fill(recoMediumTrack->normalizedChi2());
304 chi2probMediumTrack[iEtaRegion]->Fill(TMath::Prob(recoMediumTrack->normalizedChi2(),recoMediumTrack->ndof()));
310 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Soft... Filling the histos" << endl;
312 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Soft - filling the histos";
314 if(fabs(recoSoftTrack->eta())>EtaCutMin && fabs(recoSoftTrack->eta())<EtaCutMax){
315 etaSoftTrack[iEtaRegion]->Fill(recoSoftTrack->eta());
316 phiSoftTrack[iEtaRegion]->Fill(recoSoftTrack->phi());
317 pSoftTrack[iEtaRegion]->Fill(recoSoftTrack->p());
318 ptSoftTrack[iEtaRegion]->Fill(recoSoftTrack->pt());
319 chi2SoftTrack[iEtaRegion]->Fill(recoSoftTrack->normalizedChi2());
320 chi2probSoftTrack[iEtaRegion]->Fill(TMath::Prob(recoSoftTrack->normalizedChi2(),recoSoftTrack->ndof()));
326 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is HighPt... Filling the histos" << endl;
328 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is HightPt - filling the histos";
330 if(fabs(recoHighPtTrack->eta())>EtaCutMin && fabs(recoHighPtTrack->eta())<EtaCutMax){
331 etaHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->eta());
332 phiHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->phi());
333 pHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->p());
334 ptHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->pt());
335 chi2HighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->normalizedChi2());
336 chi2probHighPtTrack[iEtaRegion]->Fill(TMath::Prob(recoHighPtTrack->normalizedChi2(),recoHighPtTrack->ndof()));
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const std::string metname
void analyze(const edm::Event &, const edm::EventSetup &)
bool isTrackerMuon() const
virtual TrackRef track() const
reference to a Track
bool isGlobalMuon() const
math::Error< dimension >::type Error
covariance error matrix (3x3)
bool isStandAloneMuon() const
bool isMediumMuon(const reco::Muon &)
bool isLooseMuon(const reco::Muon &)
bool isSoftMuon(const reco::Muon &, const reco::Vertex &)
MonitorElement * book1D(Args &&...args)
math::XYZPoint Point
point in the space
double BeamWidthX() const
beam width X
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
bool isHighPtMuon(const reco::Muon &, const reco::Vertex &)
virtual TrackRef combinedMuon() const
reference to a stand-alone muon Track
void setCurrentFolder(const std::string &fullpath)
double sigmaZ() const
sigma z
double BeamWidthY() const
beam width Y
static int position[264][3]
const Point & position() const
position
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
MuonKinVsEtaAnalyzer(const edm::ParameterSet &pSet)
Constructor.
~MuonKinVsEtaAnalyzer()
Destructor.
virtual TrackRef standAloneMuon() const
reference to a stand-alone muon Track