29 theMuonCollectionLabel_ = consumes<edm::View<reco::Muon> > (
parameters.getParameter<
edm::InputTag>(
"MuonCollection"));
51 chiBin =
parameters.getParameter<
int>(
"chiBin");
52 chiMin =
parameters.getParameter<
double>(
"chiMin");
53 chiMax =
parameters.getParameter<
double>(
"chiMax");
54 chiprobMin =
parameters.getParameter<
double>(
"chiprobMin");
55 chiprobMax =
parameters.getParameter<
double>(
"chiprobMax");
57 etaBMin =
parameters.getParameter<
double>(
"etaBMin");
58 etaBMax =
parameters.getParameter<
double>(
"etaBMax");
59 etaECMin =
parameters.getParameter<
double>(
"etaECMin");
60 etaECMax =
parameters.getParameter<
double>(
"etaECMax");
61 etaOvlpMin =
parameters.getParameter<
double>(
"etaOvlpMin");
62 etaOvlpMax =
parameters.getParameter<
double>(
"etaOvlpMax");
64 theFolder =
parameters.getParameter<
string>(
"folder");
78 for(
unsigned int iEtaRegion=0;iEtaRegion<4;iEtaRegion++){
79 if (iEtaRegion==0) EtaName =
"Barrel";
80 if (iEtaRegion==1) EtaName =
"EndCap";
81 if (iEtaRegion==2) EtaName =
"Overlap";
82 if (iEtaRegion==3) EtaName =
"";
90 etaMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_eta_"+EtaName,
"#eta_{Medium} "+EtaName,
etaBin,
etaMin,
etaMax));
92 etaHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_eta_"+EtaName,
"#eta_{HighPt} "+EtaName,
etaBin,
etaMin,
etaMax));
95 phiGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_phi_"+EtaName,
"#phi_{GLB} "+EtaName+
"(rad)",
phiBin,
phiMin,
phiMax));
97 phiStaTrack.push_back(ibooker.
book1D(
"StaMuon_phi_"+EtaName,
"#phi_{STA}"+EtaName+
" (rad)",
phiBin,
phiMin,
phiMax));
100 phiMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_phi_"+EtaName,
"#phi_{Medium}_"+EtaName,
phiBin,
phiMin,
phiMax));
102 phiHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_phi_"+EtaName,
"#phi_{HighPt}_"+EtaName,
phiBin,
phiMin,
phiMax));
105 pGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_p_"+EtaName,
"p_{GLB} "+EtaName, pBin,
pMin,
pMax));
106 pTrack.push_back(ibooker.
book1D(
"TkMuon_p"+EtaName,
"p_{TK} "+EtaName, pBin,
pMin,
pMax));
107 pStaTrack.push_back(ibooker.
book1D(
"StaMuon_p"+EtaName,
"p_{STA} "+EtaName, pBin,
pMin,
pMax));
108 pTightTrack.push_back(ibooker.
book1D(
"TightMuon_p_"+EtaName,
"p_{Tight} "+EtaName, pBin,
pMin,
pMax));
109 pLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_p_"+EtaName,
"p_{Loose} "+EtaName, pBin,
pMin,
pMax));
110 pMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_p_"+EtaName,
"p_{Medium} "+EtaName, pBin,
pMin,
pMax));
111 pSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_p_"+EtaName,
"p_{Soft} "+EtaName, pBin,
pMin,
pMax));
112 pHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_p_"+EtaName,
"p_{HighPt} "+EtaName, pBin,
pMin,
pMax));
115 ptGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_pt_" +EtaName,
"pt_{GLB} "+EtaName,
ptBin,
ptMin,
ptMax));
117 ptStaTrack.push_back(ibooker.
book1D(
"StaMuon_pt_"+EtaName,
"pt_{STA} "+EtaName,
ptBin,
ptMin,
pMax));
118 ptTightTrack.push_back(ibooker.
book1D(
"TightMuon_pt_"+EtaName,
"pt_{Tight} "+EtaName,
ptBin,
ptMin,
ptMax));
119 ptLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_pt_"+EtaName,
"pt_{Loose} "+EtaName,
ptBin,
ptMin,
ptMax));
120 ptMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_pt_"+EtaName,
"pt_{Medium} "+EtaName,
ptBin,
ptMin,
ptMax));
121 ptSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_pt_"+EtaName,
"pt_{Soft} "+EtaName,
ptBin,
ptMin,
ptMax));
122 ptHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_pt_"+EtaName,
"pt_{HighPt} "+EtaName,
ptBin,
ptMin,
ptMax));
125 chi2GlbTrack.push_back(ibooker.
book1D(
"GlbMuon_chi2_"+EtaName,
"#chi^{2}_{GLB} " + EtaName, chiBin, chiMin, chiMax));
126 chi2probGlbTrack.push_back(ibooker.
book1D(
"GlbMuon_chi2prob_"+EtaName,
"#chi^{2}_{GLB} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
127 chi2Track.push_back(ibooker.
book1D(
"TkMuon_chi2_"+EtaName,
"#chi^{2}_{TK} " + EtaName, chiBin, chiMin, chiMax));
128 chi2probTrack.push_back(ibooker.
book1D(
"TkMuon_chi2prob_"+EtaName,
"#chi^{2}_{TK} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
129 chi2StaTrack.push_back(ibooker.
book1D(
"StaMuon_chi2_"+EtaName,
"#chi^{2}_{STA} " + EtaName, chiBin, chiMin, chiMax));
130 chi2probStaTrack.push_back(ibooker.
book1D(
"StaMuon_chi2prob_"+EtaName,
"#chi^{2}_{STA} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
131 chi2TightTrack.push_back(ibooker.
book1D(
"TightMuon_chi2_"+EtaName,
"#chi^{2}_{Tight} " + EtaName, chiBin, chiMin, chiMax));
132 chi2probTightTrack.push_back(ibooker.
book1D(
"TightMuon_chi2prob_"+EtaName,
"#chi^{2}_{Tight} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
133 chi2LooseTrack.push_back(ibooker.
book1D(
"LooseMuon_chi2_"+EtaName,
"#chi^{2}_{Loose} " + EtaName, chiBin, chiMin, chiMax));
134 chi2MediumTrack.push_back(ibooker.
book1D(
"MediumMuon_chi2_"+EtaName,
"#chi^{2}_{Medium} " + EtaName, chiBin, chiMin, chiMax));
135 chi2probLooseTrack.push_back(ibooker.
book1D(
"LooseMuon_chi2prob_"+EtaName,
"#chi^{2}_{Loose} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
136 chi2probMediumTrack.push_back(ibooker.
book1D(
"MediumMuon_chi2prob_"+EtaName,
"#chi^{2}_{Medium} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
137 chi2SoftTrack.push_back(ibooker.
book1D(
"SoftMuon_chi2_"+EtaName,
"#chi^{2}_{Soft} " + EtaName, chiBin, chiMin, chiMax));
138 chi2probSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_chi2prob_"+EtaName,
"#chi^{2}_{Soft} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
139 chi2HighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_chi2_"+EtaName,
"#chi^{2}_{HighPt} " + EtaName, chiBin, chiMin, chiMax));
140 chi2probHighPtTrack.push_back(ibooker.
book1D(
"HighPtMuon_chi2prob_"+EtaName,
"#chi^{2}_{HighPt} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
145 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] Analyze the mu in different eta regions";
146 theService->update(iSetup);
149 iEvent.
getByToken(theMuonCollectionLabel_,muons);
155 unsigned int theIndexOfThePrimaryVertex = 999.;
160 for (
unsigned int ind=0; ind<vertex->size(); ++ind) {
161 if ( (*vertex)[ind].isValid() && !((*vertex)[ind].isFake()) ) {
162 theIndexOfThePrimaryVertex = ind;
168 if (theIndexOfThePrimaryVertex<100) {
169 posVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
position();
170 errVtx = ((*vertex)[theIndexOfThePrimaryVertex]).
error();
173 LogInfo(
"RecoMuonValidator") <<
"reco::PrimaryVertex not found, use BeamSpot position instead\n";
176 iEvent.
getByToken(theBeamSpotLabel_,recoBeamSpotHandle);
182 errVtx(2,2) = bs.
sigmaZ();
189 cout <<
"[MuonKinVsEtaAnalyzer]: Analyze the mu in different eta regions" << endl;
195 for(
unsigned int iEtaRegion=0;iEtaRegion<4;iEtaRegion++){
196 if (iEtaRegion==0) {EtaCutMin= etaBMin; EtaCutMax=etaBMax;}
197 if (iEtaRegion==1) {EtaCutMin= etaECMin; EtaCutMax=etaECMax;}
198 if (iEtaRegion==2) {EtaCutMin= etaOvlpMin; EtaCutMax=etaOvlpMax;}
199 if (iEtaRegion==3) {EtaCutMin= etaBMin; EtaCutMax=etaECMax;}
201 if(
muon->isGlobalMuon()) {
203 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is global... Filling the histos" << endl;
205 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is global - filling the histos";
208 if(fabs(recoCombinedGlbTrack->eta())>EtaCutMin && fabs(recoCombinedGlbTrack->eta())<EtaCutMax){
209 etaGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->eta());
210 phiGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->phi());
211 pGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->p());
212 ptGlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->pt());
213 chi2GlbTrack[iEtaRegion]->Fill(recoCombinedGlbTrack->normalizedChi2());
214 chi2probGlbTrack[iEtaRegion]->Fill(TMath::Prob(recoCombinedGlbTrack->chi2(),recoCombinedGlbTrack->ndof()));
218 if(
muon->isTrackerMuon()) {
220 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is tracker... Filling the histos" << endl;
222 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is tracker - filling the histos";
225 if(fabs(recoTrack->eta())>EtaCutMin && fabs(recoTrack->eta())<EtaCutMax){
226 etaTrack[iEtaRegion]->Fill(recoTrack->eta());
227 phiTrack[iEtaRegion]->Fill(recoTrack->phi());
228 pTrack[iEtaRegion]->Fill(recoTrack->p());
229 ptTrack[iEtaRegion]->Fill(recoTrack->pt());
230 chi2Track[iEtaRegion]->Fill(recoTrack->normalizedChi2());
231 chi2probTrack[iEtaRegion]->Fill(TMath::Prob(recoTrack->chi2(),recoTrack->ndof()));
235 if(
muon->isStandAloneMuon()) {
237 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is standlone... Filling the histos" << endl;
239 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is standalone - filling the histos";
242 if(fabs(recoStaTrack->eta())>EtaCutMin && fabs(recoStaTrack->eta())<EtaCutMax){
243 etaStaTrack[iEtaRegion]->Fill(recoStaTrack->eta());
244 phiStaTrack[iEtaRegion]->Fill(recoStaTrack->phi());
245 pStaTrack[iEtaRegion]->Fill(recoStaTrack->p());
246 ptStaTrack[iEtaRegion]->Fill(recoStaTrack->pt());
247 chi2StaTrack[iEtaRegion]->Fill(recoStaTrack->normalizedChi2());
248 chi2probStaTrack[iEtaRegion]->Fill(TMath::Prob(recoStaTrack->chi2(),recoStaTrack->ndof()));
254 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is tight... Filling the histos" << endl;
256 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Tight - filling the histos";
258 if(fabs(recoTightTrack->eta())>EtaCutMin && fabs(recoTightTrack->eta())<EtaCutMax){
259 etaTightTrack[iEtaRegion]->Fill(recoTightTrack->eta());
260 phiTightTrack[iEtaRegion]->Fill(recoTightTrack->phi());
261 pTightTrack[iEtaRegion]->Fill(recoTightTrack->p());
262 ptTightTrack[iEtaRegion]->Fill(recoTightTrack->pt());
263 chi2TightTrack[iEtaRegion]->Fill(recoTightTrack->normalizedChi2());
264 chi2probTightTrack[iEtaRegion]->Fill(TMath::Prob(recoTightTrack->chi2(),recoTightTrack->ndof()));
271 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Loose... Filling the histos" << endl;
273 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Loose - filling the histos";
276 if (
muon->isGlobalMuon()) recoLooseTrack =
muon->combinedMuon();
277 else recoLooseTrack =
muon->track();
279 if(fabs(recoLooseTrack->eta())>EtaCutMin && fabs(recoLooseTrack->eta())<EtaCutMax){
280 etaLooseTrack[iEtaRegion]->Fill(recoLooseTrack->eta());
281 phiLooseTrack[iEtaRegion]->Fill(recoLooseTrack->phi());
282 pLooseTrack[iEtaRegion]->Fill(recoLooseTrack->p());
283 ptLooseTrack[iEtaRegion]->Fill(recoLooseTrack->pt());
284 chi2LooseTrack[iEtaRegion]->Fill(recoLooseTrack->normalizedChi2());
285 chi2probLooseTrack[iEtaRegion]->Fill(TMath::Prob(recoLooseTrack->chi2(),recoLooseTrack->ndof()));
291 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Medium... Filling the histos" << endl;
293 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Medium - filling the histos";
296 if (
muon->isGlobalMuon()) recoMediumTrack =
muon->combinedMuon();
297 else recoMediumTrack =
muon->track();
299 if(fabs(recoMediumTrack->eta())>EtaCutMin && fabs(recoMediumTrack->eta())<EtaCutMax){
300 etaMediumTrack[iEtaRegion]->Fill(recoMediumTrack->eta());
301 phiMediumTrack[iEtaRegion]->Fill(recoMediumTrack->phi());
302 pMediumTrack[iEtaRegion]->Fill(recoMediumTrack->p());
303 ptMediumTrack[iEtaRegion]->Fill(recoMediumTrack->pt());
304 chi2MediumTrack[iEtaRegion]->Fill(recoMediumTrack->normalizedChi2());
305 chi2probMediumTrack[iEtaRegion]->Fill(TMath::Prob(recoMediumTrack->chi2(),recoMediumTrack->ndof()));
311 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is Soft... Filling the histos" << endl;
313 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is Soft - filling the histos";
315 if(fabs(recoSoftTrack->eta())>EtaCutMin && fabs(recoSoftTrack->eta())<EtaCutMax){
316 etaSoftTrack[iEtaRegion]->Fill(recoSoftTrack->eta());
317 phiSoftTrack[iEtaRegion]->Fill(recoSoftTrack->phi());
318 pSoftTrack[iEtaRegion]->Fill(recoSoftTrack->p());
319 ptSoftTrack[iEtaRegion]->Fill(recoSoftTrack->pt());
320 chi2SoftTrack[iEtaRegion]->Fill(recoSoftTrack->normalizedChi2());
321 chi2probSoftTrack[iEtaRegion]->Fill(TMath::Prob(recoSoftTrack->chi2(),recoSoftTrack->ndof()));
327 cout <<
"[MuonKinVsEtaAnalyzer]: The mu is HighPt... Filling the histos" << endl;
329 LogTrace(
metname)<<
"[MuonKinVsEtaAnalyzer] The mu is HightPt - filling the histos";
331 if(fabs(recoHighPtTrack->eta())>EtaCutMin && fabs(recoHighPtTrack->eta())<EtaCutMax){
332 etaHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->eta());
333 phiHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->phi());
334 pHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->p());
335 ptHighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->pt());
336 chi2HighPtTrack[iEtaRegion]->Fill(recoHighPtTrack->normalizedChi2());
337 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 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 &)
void setCurrentFolder(const std::string &fullpath)
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.