CMS 3D CMS Logo

ElectronMcSignalPostValidator.cc
Go to the documentation of this file.
1 
5 
8  {
9  // histos bining and limits
10 
11  edm::ParameterSet histosSet = conf.getParameter<edm::ParameterSet>("histosCfg") ;
12 
13  set_EfficiencyFlag=histosSet.getParameter<bool>("EfficiencyFlag");
14  set_StatOverflowFlag=histosSet.getParameter<bool>("StatOverflowFlag");
15  }
16 
18  {}
19 
21  {
22 
23  setBookIndex(-1) ;
24  setBookPrefix("h_ele") ;
27 
28  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "efficiency calculation" ;
29  bookH1andDivide(iBooker,iGetter, "etaEff","mc_Eta_matched","mc_Eta","#eta","Efficiency","");
30  bookH1andDivide(iBooker,iGetter, "zEff","mc_Z_matched","mc_Z","z (cm)","Efficiency","");
31  bookH1andDivide(iBooker,iGetter, "absetaEff","mc_AbsEta_matched","mc_AbsEta","|#eta|","Efficiency","");
32  bookH1andDivide(iBooker,iGetter, "ptEff","mc_Pt_matched","mc_Pt","p_{T} (GeV/c)","Efficiency","");
33  bookH1andDivide(iBooker,iGetter, "phiEff","mc_Phi_matched","mc_Phi","#phi (rad)","Efficiency","");
34  bookH2andDivide(iBooker,iGetter, "ptEtaEff","mc_PtEta_matched","mc_PtEta","#eta","p_{T} (GeV/c)","");
35 
36  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "q-misid calculation" ;
37  bookH1andDivide(iBooker,iGetter, "etaQmisid","mc_Eta_matched_qmisid","mc_Eta","#eta","q misId","");
38  bookH1andDivide(iBooker,iGetter, "zQmisid","mc_Z_matched_qmisid","mc_Z","z (cm)","q misId","");
39  bookH1andDivide(iBooker,iGetter, "absetaQmisid","mc_AbsEta_matched_qmisid","mc_AbsEta","|#eta|","q misId","");
40  bookH1andDivide(iBooker,iGetter, "ptQmisid","mc_Pt_matched_qmisid","mc_Pt","p_{T} (GeV/c)","q misId","");
41 
42  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "all reco electrons" ;
43  bookH1andDivide(iBooker,iGetter, "etaEff_all","vertexEta_all","h_mc_Eta","#eta","N_{rec}/N_{gen}","");
44  bookH1andDivide(iBooker,iGetter, "ptEff_all","vertexPt_all","h_mc_Pt","p_{T} (GeV/c)","N_{rec}/N_{gen}","");
45 
46  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "classes" ;
47  bookH1andDivide(iBooker,iGetter, "eta_goldenFrac","eta_golden","h_ele_eta","|#eta|","Fraction of electrons","fraction of golden electrons vs eta");
48  bookH1andDivide(iBooker,iGetter, "eta_bbremFrac" ,"eta_bbrem","h_ele_eta","|#eta|","Fraction of electrons","fraction of big brem electrons vs eta");
49  bookH1andDivide(iBooker,iGetter, "eta_showerFrac","eta_shower","h_ele_eta","|#eta|","Fraction of electrons","fraction of showering electrons vs eta");
50 
51  // fbrem
52  MonitorElement * p1_ele_fbremVsEta_mean = get(iGetter, "fbremvsEtamean") ;
53  TAxis * etaAxis = p1_ele_fbremVsEta_mean->getTProfile()->GetXaxis() ;
54  MonitorElement * h1_ele_xOverX0VsEta = bookH1withSumw2(iBooker, "xOverx0VsEta","mean X/X_0 vs eta",etaAxis->GetNbins(),etaAxis->GetXmin(),etaAxis->GetXmax());
55  for (int ibin=1;ibin<etaAxis->GetNbins()+1;ibin++) {
56  double xOverX0 = 0.;
57  if (p1_ele_fbremVsEta_mean->getBinContent(ibin)>0.)
58  { xOverX0 = -log(p1_ele_fbremVsEta_mean->getBinContent(ibin)) ; }
59  h1_ele_xOverX0VsEta->setBinContent(ibin,xOverX0) ;
60  }
61 
62  MonitorElement * h1_ele_provenance = get(iGetter, "provenance") ;
63  if (h1_ele_provenance->getBinContent(3)>0)
64  {h1_ele_provenance->getTH1F()->Scale(1./h1_ele_provenance->getBinContent(3));}
65  MonitorElement * h1_ele_provenance_barrel = get(iGetter, "provenance_barrel") ;
66  if (h1_ele_provenance_barrel->getBinContent(3)>0)
67  {h1_ele_provenance_barrel->getTH1F()->Scale(1./h1_ele_provenance_barrel->getBinContent(3));}
68  MonitorElement * h1_ele_provenance_endcaps = get(iGetter, "provenance_endcaps") ;
69  if (h1_ele_provenance_endcaps->getBinContent(3)>0)
70  {h1_ele_provenance_endcaps->getTH1F()->Scale(1./h1_ele_provenance_endcaps->getBinContent(3));}
71 
72  // profiles from 2D histos
73  profileX(iBooker, iGetter, "scl_EoEtrueVsrecOfflineVertices","E/Etrue vs number of primary vertices","N_{primary vertices}","E/E_{true}", 0.8);
74  profileX(iBooker, iGetter, "scl_EoEtrueVsrecOfflineVertices_barrel","E/Etrue vs number of primary vertices , barrel","N_{primary vertices}","E/E_{true}", 0.8);
75  profileX(iBooker, iGetter, "scl_EoEtrueVsrecOfflineVertices_endcaps","E/Etrue vs number of primary vertices , endcaps","N_{primary vertices}","E/E_{true}", 0.8);
76 
77  profileX(iBooker, iGetter, "PoPtrueVsEta","mean ele momentum / gen momentum vs eta","#eta","<P/P_{gen}>");
78  profileX(iBooker, iGetter, "PoPtrueVsPhi","mean ele momentum / gen momentum vs phi","#phi (rad)","<P/P_{gen}>");
79  profileX(iBooker, iGetter, "sigmaIetaIetaVsPt","SigmaIetaIeta vs pt","p_{T} (GeV/c)","SigmaIetaIeta");
80  profileX(iBooker, iGetter, "EoEtruePfVsEg","mean mustache SC/true energy vs final SC/true energy","E_{final SC}/E_{gen}","E_{mustache}/E_{gen}") ;
81  profileY(iBooker, iGetter, "EoEtruePfVsEg","mean mustache SC/true energy vs final SC/true energy","E_{final SC}/E_{gen}","E_{mustache}/E_{gen}") ;
82  profileX(iBooker, iGetter, "EtaMnEtaTrueVsEta","mean ele eta - gen eta vs eta","#eta","<#eta_{rec} - #eta_{gen}>");
83  profileX(iBooker, iGetter, "EtaMnEtaTrueVsPhi","mean ele eta - gen eta vs phi","#phi (rad)","<#eta_{rec} - #eta_{gen}>");
84  profileX(iBooker, iGetter, "PhiMnPhiTrueVsEta","mean ele phi - gen phi vs eta","#eta","<#phi_{rec} - #phi_{gen}> (rad)");
85  profileX(iBooker, iGetter, "PhiMnPhiTrueVsPhi","mean ele phi - gen phi vs phi","#phi (rad)","");
86  profileX(iBooker, iGetter, "vertexPtVsEta","mean ele transverse momentum vs eta","#eta","<p_{T}> (GeV/c)");
87  profileX(iBooker, iGetter, "vertexPtVsPhi","mean ele transverse momentum vs phi","#phi (rad)","<p_{T}> (GeV/c)");
88  profileX(iBooker, iGetter, "EoPVsEta","mean ele E/p vs eta","#eta","<E/P_{vertex}>");
89  profileX(iBooker, iGetter, "EoPVsPhi","mean ele E/p vs phi","#phi (rad)","<E/P_{vertex}>");
90  profileX(iBooker, iGetter, "EoPoutVsEta","mean ele E/pout vs eta","#eta","<E_{seed}/P_{out}>");
91  profileX(iBooker, iGetter, "EoPoutVsPhi","mean ele E/pout vs phi","#phi (rad)","<E_{seed}/P_{out}>");
92  profileX(iBooker, iGetter, "EeleOPoutVsEta","mean ele Eele/pout vs eta","#eta","<E_{ele}/P_{out}>");
93  profileX(iBooker, iGetter, "EeleOPoutVsPhi","mean ele Eele/pout vs phi","#phi (rad)","<E_{ele}/P_{out}>");
94  profileX(iBooker, iGetter, "HoEVsEta","mean ele H/E vs eta","#eta","<H/E>");
95  profileX(iBooker, iGetter, "HoEVsPhi","mean ele H/E vs phi","#phi (rad)","<H/E>");
96  profileX(iBooker, iGetter, "chi2VsEta","mean ele track chi2 vs eta","#eta","<#Chi^{2}>");
97  profileX(iBooker, iGetter, "chi2VsPhi","mean ele track chi2 vs phi","#phi (rad)","<#Chi^{2}>");
98  profileX(iBooker, iGetter, "ambiguousTracksVsEta","mean ele # ambiguous tracks vs eta","#eta","<N_{ambiguous}>");
99  profileX(iBooker, iGetter, "foundHitsVsEta","mean ele track # found hits vs eta","#eta","<N_{hits}>");
100  profileX(iBooker, iGetter, "foundHitsVsEta_mAOD","mean ele track # found hits vs eta","#eta","<N_{hits}>");
101  profileX(iBooker, iGetter, "foundHitsVsPhi","mean ele track # found hits vs phi","#phi (rad)","<N_{hits}>");
102  profileX(iBooker, iGetter, "lostHitsVsEta","mean ele track # lost hits vs eta","#eta","<N_{hits}>");
103  profileX(iBooker, iGetter, "lostHitsVsPhi","mean ele track # lost hits vs phi","#phi (rad)","<N_{hits}>");
104  profileX(iBooker, iGetter, "vertexTIPVsEta","mean tip (wrt gen vtx) vs eta","#eta","<TIP> (cm)");
105  profileX(iBooker, iGetter, "vertexTIPVsPhi","mean tip (wrt gen vtx) vs phi","#phi","<TIP> (cm)");
106  profileX(iBooker, iGetter, "vertexTIPVsPt","mean tip (wrt gen vtx) vs phi","p_{T} (GeV/c)","<TIP> (cm)");
107  profileX(iBooker, iGetter, "seedDphi2_VsEta","mean ele seed dphi 2nd layer vs eta","#eta","<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",-0.004,0.004);
108  profileX(iBooker, iGetter, "seedDphi2_VsPt","mean ele seed dphi 2nd layer vs pt","p_{T} (GeV/c)","<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",-0.004,0.004);
109  profileX(iBooker, iGetter, "seedDrz2_VsEta","mean ele seed dr(dz) 2nd layer vs eta","#eta","<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",-0.15,0.15);
110  profileX(iBooker, iGetter, "seedDrz2_VsPt","mean ele seed dr(dz) 2nd layer vs pt","p_{T} (GeV/c)","<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",-0.15,0.15);
111  profileX(iBooker, iGetter, "seedDphi2Pos_VsEta","mean ele seed dphi 2nd layer positron vs eta","#eta","<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",-0.004,0.004);
112  profileX(iBooker, iGetter, "seedDphi2Pos_VsPt","mean ele seed dphi 2nd layer positron vs pt","p_{T} (GeV/c)","<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",-0.004,0.004);
113  profileX(iBooker, iGetter, "seedDrz2Pos_VsEta","mean ele seed dr(dz) 2nd layer positron vs eta","#eta","<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",-0.15,0.15);
114  profileX(iBooker, iGetter, "seedDrz2Pos_VsPt","mean ele seed dr(dz) 2nd layer positron vs pt","p_{T} (GeV/c)","<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",-0.15,0.15);
115 
116 
117 
118 
119 }
120 
121 
T getParameter(std::string const &) const
void setBinContent(int binx, double content)
set content of bin (1-D)
void setBookPrefix(const std::string &)
ElectronMcSignalPostValidator(const edm::ParameterSet &conf)
MonitorElement * profileX(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
void setBookStatOverflowFlag(const bool &)
void setBookEfficiencyFlag(const bool &)
MonitorElement * bookH1withSumw2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, const std::string &titleX="", const std::string &titleY="Events", Option_t *option="E1 P")
TH1F * getTH1F(void) const
MonitorElement * bookH1andDivide(DQMStore::IBooker &iBooker, DQMStore::IGetter &, const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
double getBinContent(int binx) const
get content of bin (1-D)
TProfile * getTProfile(void) const
virtual void finalize(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter)
MonitorElement * profileY(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
MonitorElement * bookH2andDivide(DQMStore::IBooker &iBooker, DQMStore::IGetter &, const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")