28 theMuonCollectionLabel_ = consumes<edm::View<reco::Muon> > (
parameters.getParameter<
edm::InputTag>(
"MuonCollection"));
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");
63 theFolder =
parameters.getParameter<
string>(
"folder");
77 for(
unsigned int iEtaRegion=0;iEtaRegion<4;iEtaRegion++){
78 if (iEtaRegion==0) EtaName =
"Barrel";
79 if (iEtaRegion==1) EtaName =
"EndCap";
80 if (iEtaRegion==2) EtaName =
"Overlap";
81 if (iEtaRegion==3) EtaName =
"";
89 etaMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_eta_"+EtaName,
"#eta_{Medium} "+EtaName,
etaBin,
etaMin,
etaMax));
91 etaHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_eta_"+EtaName,
"#eta_{HighPt} "+EtaName,
etaBin,
etaMin,
etaMax));
94 phiGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_phi_"+EtaName,
"#phi_{GLB} "+EtaName+
"(rad)",
phiBin,
phiMin,
phiMax));
96 phiStaTrack.push_back(ibooker.
book1D(
"StaMuon_phi_"+EtaName,
"#phi_{STA}"+EtaName+
" (rad)",
phiBin,
phiMin,
phiMax));
99 phiMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_phi_"+EtaName,
"#phi_{Medium}_"+EtaName,
phiBin,
phiMin,
phiMax));
101 phiHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_phi_"+EtaName,
"#phi_{HighPt}_"+EtaName,
phiBin,
phiMin,
phiMax));
104 pGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_p_"+EtaName,
"p_{GLB} "+EtaName, pBin,
pMin,
pMax));
105 pTrack.push_back(ibooker.
book1D(
"TkMuon_p"+EtaName,
"p_{TK} "+EtaName, pBin,
pMin,
pMax));
106 pStaTrack.push_back(ibooker.
book1D(
"StaMuon_p"+EtaName,
"p_{STA} "+EtaName, pBin,
pMin,
pMax));
107 pTightTrack.push_back(ibooker.
book1D(
"TightMuon_p_"+EtaName,
"p_{Tight} "+EtaName, pBin,
pMin,
pMax));
108 pLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_p_"+EtaName,
"p_{Loose} "+EtaName, pBin,
pMin,
pMax));
109 pMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_p_"+EtaName,
"p_{Medium} "+EtaName, pBin,
pMin,
pMax));
110 pSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_p_"+EtaName,
"p_{Soft} "+EtaName, pBin,
pMin,
pMax));
111 pHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_p_"+EtaName,
"p_{HighPt} "+EtaName, pBin,
pMin,
pMax));
114 ptGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_pt_" +EtaName,
"pt_{GLB} "+EtaName,
ptBin,
ptMin,
ptMax));
116 ptStaTrack.push_back(ibooker.
book1D(
"StaMuon_pt_"+EtaName,
"pt_{STA} "+EtaName,
ptBin,
ptMin,
pMax));
117 ptTightTrack.push_back(ibooker.
book1D(
"TightMuon_pt_"+EtaName,
"pt_{Tight} "+EtaName,
ptBin,
ptMin,
ptMax));
118 ptLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_pt_"+EtaName,
"pt_{Loose} "+EtaName,
ptBin,
ptMin,
ptMax));
119 ptMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_pt_"+EtaName,
"pt_{Medium} "+EtaName,
ptBin,
ptMin,
ptMax));
120 ptSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_pt_"+EtaName,
"pt_{Soft} "+EtaName,
ptBin,
ptMin,
ptMax));
121 ptHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_pt_"+EtaName,
"pt_{HighPt} "+EtaName,
ptBin,
ptMin,
ptMax));
124 chi2GlbTrack.push_back(ibooker.
book1D(
"GlbMuon_chi2_"+EtaName,
"#chi^{2}_{GLB} " + EtaName, chiBin, chiMin, chiMax));
125 chi2probGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_chi2prob_"+EtaName,
"#chi^{2}_{GLB} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
126 chi2Track.push_back(ibooker.
book1D(
"TkMuon_chi2_"+EtaName,
"#chi^{2}_{TK} " + EtaName, chiBin, chiMin, chiMax));
127 chi2probTrack.push_back(ibooker.
book1D(
"TkMuon_chi2prob_"+EtaName,
"#chi^{2}_{TK} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
128 chi2StaTrack.push_back(ibooker.
book1D(
"StaMuon_chi2_"+EtaName,
"#chi^{2}_{STA} " + EtaName, chiBin, chiMin, chiMax));
129 chi2probStaTrack.push_back(ibooker.
book1D(
"StaMuon_chi2prob_"+EtaName,
"#chi^{2}_{STA} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
130 chi2TightTrack.push_back(ibooker.
book1D(
"TightMuon_chi2_"+EtaName,
"#chi^{2}_{Tight} " + EtaName, chiBin, chiMin, chiMax));
131 chi2probTightTrack.push_back(ibooker.
book1D(
"TightMuon_chi2prob_"+EtaName,
"#chi^{2}_{Tight} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
132 chi2LooseTrack.push_back(ibooker.
book1D(
"LooseMuon_chi2_"+EtaName,
"#chi^{2}_{Loose} " + EtaName, chiBin, chiMin, chiMax));
133 chi2MediumTrack.push_back(ibooker.
book1D(
"MediumMuon_chi2_"+EtaName,
"#chi^{2}_{Medium} " + EtaName, chiBin, chiMin, chiMax));
134 chi2probLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_chi2prob_"+EtaName,
"#chi^{2}_{Loose} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
135 chi2probMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_chi2prob_"+EtaName,
"#chi^{2}_{Medium} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
136 chi2SoftTrack.push_back(ibooker.
book1D(
"SoftMuon_chi2_"+EtaName,
"#chi^{2}_{Soft} " + EtaName, chiBin, chiMin, chiMax));
137 chi2probSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_chi2prob_"+EtaName,
"#chi^{2}_{Soft} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
138 chi2HighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_chi2_"+EtaName,
"#chi^{2}_{HighPt} " + EtaName, chiBin, chiMin, chiMax));
139 chi2probHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_chi2prob_"+EtaName,
"#chi^{2}_{HighPt} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
144 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] Analyze the mu in different eta regions";
145 theService->update(iSetup);
148 iEvent.
getByToken(theMuonCollectionLabel_,muons);
154 unsigned int theIndexOfThePrimaryVertex = 999.;
159 for (
unsigned int ind=0; ind<vertex->size(); ++ind) {
160 if ( (*vertex)[ind].isValid() && !((*vertex)[ind].isFake()) ) {
161 theIndexOfThePrimaryVertex = ind;
167 if (theIndexOfThePrimaryVertex<100) {
168 posVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
position();
169 errVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
error();
172 LogInfo(
"RecoMuonValidator") <<
"reco::PrimaryVertex not found, use BeamSpot position instead\n";
175 iEvent.
getByToken(theBeamSpotLabel_,recoBeamSpotHandle);
181 errVtx(2,2) = bs.
sigmaZ();
188 cout <<
"[MuonKinVsEtaAnalyzer]: Analyze the mu in different eta regions" << endl;
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;}
200 if(
muon->isGlobalMuon()) {
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->chi2(),recoCombinedGlbTrack->ndof()));
217 if(
muon->isTrackerMuon()) {
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->chi2(),recoTrack->ndof()));
234 if(
muon->isStandAloneMuon()) {
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->chi2(),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->chi2(),recoTightTrack->ndof()));
270 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Loose... Filling the histos" << endl;
272 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Loose - filling the histos";
275 if (
muon->isGlobalMuon()) recoLooseTrack =
muon->combinedMuon();
276 else recoLooseTrack =
muon->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->chi2(),recoLooseTrack->ndof()));
290 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Medium... Filling the histos" << endl;
292 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Medium - filling the histos";
295 if (
muon->isGlobalMuon()) recoMediumTrack =
muon->combinedMuon();
296 else recoMediumTrack =
muon->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->chi2(),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->chi2(),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->chi2(),recoHighPtTrack->ndof()));
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const std::string metname
math::Error< dimension >::type Error
covariance error matrix (3x3)
bool isLooseMuon(const reco::Muon &)
void setCurrentFolder(std::string const &fullpath)
void analyze(const edm::Event &, const edm::EventSetup &) override
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 isSoftMuon(const reco::Muon &, const reco::Vertex &, bool run2016_hip_mitigation=false)
bool isHighPtMuon(const reco::Muon &, const reco::Vertex &)
double sigmaZ() const
sigma z
double BeamWidthY() const
beam width Y
~MuonKinVsEtaAnalyzer() override
Destructor.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
static int position[264][3]
const Point & position() const
position
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
MuonKinVsEtaAnalyzer(const edm::ParameterSet &pSet)
Constructor.