20 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] Parameters initialization";
24 theMuonCollectionLabel_ = consumes<edm::View<reco::Muon> >(
parameters.getParameter<
edm::InputTag>(
"MuonCollection"));
34 phiBin =
parameters.getParameter<
int>(
"phiBin");
40 pMax =
parameters.getParameter<
double>(
"pMax");
46 chiBin =
parameters.getParameter<
int>(
"chiBin");
47 chiMin =
parameters.getParameter<
double>(
"chiMin");
48 chiMax =
parameters.getParameter<
double>(
"chiMax");
49 chiprobMin =
parameters.getParameter<
double>(
"chiprobMin");
50 chiprobMax =
parameters.getParameter<
double>(
"chiprobMax");
52 etaBMin =
parameters.getParameter<
double>(
"etaBMin");
53 etaBMax =
parameters.getParameter<
double>(
"etaBMax");
54 etaECMin =
parameters.getParameter<
double>(
"etaECMin");
55 etaECMax =
parameters.getParameter<
double>(
"etaECMax");
56 etaOvlpMin =
parameters.getParameter<
double>(
"etaOvlpMin");
57 etaOvlpMax =
parameters.getParameter<
double>(
"etaOvlpMax");
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(
96 ibooker.
book1D(
"GlbMuon_phi_" + EtaName,
"#phi_{GLB} " + EtaName +
"(rad)", phiBin,
phiMin,
phiMax));
98 ibooker.
book1D(
"TkMuon_phi_" + EtaName,
"#phi_{TK}" + EtaName +
"(rad)", phiBin,
phiMin,
phiMax));
99 phiStaTrack.push_back(
100 ibooker.
book1D(
"StaMuon_phi_" + EtaName,
"#phi_{STA}" + EtaName +
" (rad)", phiBin,
phiMin,
phiMax));
101 phiTightTrack.push_back(
102 ibooker.
book1D(
"TightMuon_phi_" + EtaName,
"#phi_{Tight}_" + EtaName, phiBin,
phiMin,
phiMax));
103 phiLooseTrack.push_back(
104 ibooker.
book1D(
"LooseMuon_phi_" + EtaName,
"#phi_{Loose}_" + EtaName, phiBin,
phiMin,
phiMax));
105 phiMediumTrack.push_back(
106 ibooker.
book1D(
"MediumMuon_phi_" + EtaName,
"#phi_{Medium}_" + EtaName, phiBin,
phiMin,
phiMax));
107 phiSoftTrack.push_back(ibooker.
book1D(
"SoftMuon_phi_" + EtaName,
"#phi_{Soft}_" + EtaName, phiBin,
phiMin,
phiMax));
108 phiHighPtTrack.push_back(
109 ibooker.
book1D(
"HighPtMuon_phi_" + EtaName,
"#phi_{HighPt}_" + EtaName, phiBin,
phiMin,
phiMax));
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(
133 ibooker.
book1D(
"GlbMuon_chi2_" + EtaName,
"#chi^{2}_{GLB} " + EtaName, chiBin, chiMin, chiMax));
134 chi2probGlbTrack.push_back(ibooker.
book1D(
135 "GlbMuon_chi2prob_" + EtaName,
"#chi^{2}_{GLB} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
136 chi2Track.push_back(ibooker.
book1D(
"TkMuon_chi2_" + EtaName,
"#chi^{2}_{TK} " + EtaName, chiBin, chiMin, chiMax));
137 chi2probTrack.push_back(
138 ibooker.
book1D(
"TkMuon_chi2prob_" + EtaName,
"#chi^{2}_{TK} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
139 chi2StaTrack.push_back(
140 ibooker.
book1D(
"StaMuon_chi2_" + EtaName,
"#chi^{2}_{STA} " + EtaName, chiBin, chiMin, chiMax));
141 chi2probStaTrack.push_back(ibooker.
book1D(
142 "StaMuon_chi2prob_" + EtaName,
"#chi^{2}_{STA} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
143 chi2TightTrack.push_back(
144 ibooker.
book1D(
"TightMuon_chi2_" + EtaName,
"#chi^{2}_{Tight} " + EtaName, chiBin, chiMin, chiMax));
145 chi2probTightTrack.push_back(ibooker.
book1D(
146 "TightMuon_chi2prob_" + EtaName,
"#chi^{2}_{Tight} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
147 chi2LooseTrack.push_back(
148 ibooker.
book1D(
"LooseMuon_chi2_" + EtaName,
"#chi^{2}_{Loose} " + EtaName, chiBin, chiMin, chiMax));
149 chi2MediumTrack.push_back(
150 ibooker.
book1D(
"MediumMuon_chi2_" + EtaName,
"#chi^{2}_{Medium} " + EtaName, chiBin, chiMin, chiMax));
151 chi2probLooseTrack.push_back(ibooker.
book1D(
152 "LooseMuon_chi2prob_" + EtaName,
"#chi^{2}_{Loose} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
153 chi2probMediumTrack.push_back(ibooker.
book1D(
154 "MediumMuon_chi2prob_" + EtaName,
"#chi^{2}_{Medium} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
155 chi2SoftTrack.push_back(
156 ibooker.
book1D(
"SoftMuon_chi2_" + EtaName,
"#chi^{2}_{Soft} " + EtaName, chiBin, chiMin, chiMax));
157 chi2probSoftTrack.push_back(ibooker.
book1D(
158 "SoftMuon_chi2prob_" + EtaName,
"#chi^{2}_{Soft} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
159 chi2HighPtTrack.push_back(
160 ibooker.
book1D(
"HighPtMuon_chi2_" + EtaName,
"#chi^{2}_{HighPt} " + EtaName, chiBin, chiMin, chiMax));
161 chi2probHighPtTrack.push_back(ibooker.
book1D(
162 "HighPtMuon_chi2prob_" + EtaName,
"#chi^{2}_{HighPt} prob." + EtaName, chiBin, chiprobMin, chiprobMax));
166 LogTrace(
metname) <<
"[MuonKinVsEtaAnalyzer] Analyze the mu in different eta regions";
169 iEvent.
getByToken(theMuonCollectionLabel_, muons);
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);
201 errVtx(2, 2) = bs.
sigmaZ();
208 cout <<
"[MuonKinVsEtaAnalyzer]: Analyze the mu in different eta regions" << endl;
214 for (
unsigned int iEtaRegion = 0; iEtaRegion < 4; iEtaRegion++) {
215 if (iEtaRegion == 0) {
219 if (iEtaRegion == 1) {
220 EtaCutMin = etaECMin;
221 EtaCutMax = etaECMax;
223 if (iEtaRegion == 2) {
224 EtaCutMin = etaOvlpMin;
225 EtaCutMax = etaOvlpMax;
227 if (iEtaRegion == 3) {
229 EtaCutMax = etaECMax;
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)
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
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)
Log< level::Info, false > LogInfo
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 &)
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.
int etaBin(const l1t::HGCalMulticluster *cl)