CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
ElectronMcSignalPostValidator Class Reference

#include <ElectronMcSignalPostValidator.h>

Inheritance diagram for ElectronMcSignalPostValidator:
ElectronDqmAnalyzerBase edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

virtual void book ()
 
 ElectronMcSignalPostValidator (const edm::ParameterSet &conf)
 
virtual void finalize ()
 
virtual ~ElectronMcSignalPostValidator ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from ElectronDqmAnalyzerBase
virtual void analyze (const edm::Event &e, const edm::EventSetup &c)
 
void beginJob ()
 
MonitorElementbookH1 (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")
 
MonitorElementbookH1andDivide (const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
 
MonitorElementbookH1andDivide (const std::string &name, const std::string &num, const std::string &denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
 
MonitorElementbookH1withSumw2 (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")
 
MonitorElementbookH2 (const std::string &name, const std::string &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="COLZ")
 
MonitorElementbookH2andDivide (const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
 
MonitorElementbookH2andDivide (const std::string &name, const std::string &num, const std::string &denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
 
MonitorElementbookH2withSumw2 (const std::string &name, const std::string &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="COLZ")
 
MonitorElementbookP1 (const std::string &name, const std::string &title, int nchX, double lowX, double highX, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="E1 P")
 
MonitorElementcloneH1 (const std::string &name, MonitorElement *original, const std::string &title="")
 
MonitorElementcloneH1 (const std::string &name, const std::string &original, const std::string &title="")
 
 ElectronDqmAnalyzerBase (const edm::ParameterSet &conf)
 
virtual void endJob ()
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void endRun (edm::Run const &, edm::EventSetup const &)
 
bool finalStepDone ()
 
MonitorElementget (const std::string &name)
 
MonitorElementprofileX (MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
 
MonitorElementprofileX (const std::string &me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
 
MonitorElementprofileY (MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
 
MonitorElementprofileY (const std::string &me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
 
void remove (const std::string &name)
 
void remove_other_dirs ()
 
void setBookIndex (short)
 
void setBookPrefix (const std::string &)
 
int verbosity ()
 
virtual ~ElectronDqmAnalyzerBase ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 7 of file ElectronMcSignalPostValidator.h.

Constructor & Destructor Documentation

ElectronMcSignalPostValidator::ElectronMcSignalPostValidator ( const edm::ParameterSet conf)
explicit

Definition at line 6 of file ElectronMcSignalPostValidator.cc.

8  {}
ElectronDqmAnalyzerBase(const edm::ParameterSet &conf)
ElectronMcSignalPostValidator::~ElectronMcSignalPostValidator ( )
virtual

Definition at line 10 of file ElectronMcSignalPostValidator.cc.

11  {}

Member Function Documentation

void ElectronMcSignalPostValidator::book ( )
virtual

Reimplemented from ElectronDqmAnalyzerBase.

Definition at line 13 of file ElectronMcSignalPostValidator.cc.

References ElectronDqmAnalyzerBase::setBookIndex().

14  { setBookIndex(-1) ; }
void ElectronMcSignalPostValidator::finalize ( void  )
virtual

Reimplemented from ElectronDqmAnalyzerBase.

Definition at line 16 of file ElectronMcSignalPostValidator.cc.

References ElectronDqmAnalyzerBase::bookH1andDivide(), ElectronDqmAnalyzerBase::bookH1withSumw2(), ElectronDqmAnalyzerBase::bookH2andDivide(), MonitorElement::getBinContent(), MonitorElement::getTProfile(), log, ElectronDqmAnalyzerBase::profileX(), ElectronDqmAnalyzerBase::profileY(), MonitorElement::setBinContent(), and ElectronDqmAnalyzerBase::setBookPrefix().

17  {
18  setBookPrefix("h_ele") ;
19 
20  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "efficiency calculation" ;
21  bookH1andDivide("etaEff","mc_Eta_matched","mc_Eta","#eta","Efficiency","");
22  bookH1andDivide("zEff","mc_Z_matched","mc_Z","z (cm)","Efficiency","");
23  bookH1andDivide("absetaEff","mc_AbsEta_matched","mc_AbsEta","|#eta|","Efficiency");
24  bookH1andDivide("ptEff","mc_Pt_matched","mc_Pt","p_{T} (GeV/c)","Efficiency");
25  bookH1andDivide("phiEff","mc_Phi_matched","mc_Phi","#phi (rad)","Efficiency");
26  bookH2andDivide("ptEtaEff","mc_PtEta_matched","mc_PtEta","#eta","p_{T} (GeV/c)");
27 
28  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "q-misid calculation" ;
29  bookH1andDivide("etaQmisid","mc_Eta_matched_qmisid","mc_Eta","#eta","q misId","");
30  bookH1andDivide("zQmisid","mc_Z_matched_qmisid","mc_Z","z (cm)","q misId","");
31  bookH1andDivide("absetaQmisid","mc_AbsEta_matched_qmisid","mc_AbsEta","|#eta|","q misId");
32  bookH1andDivide("ptQmisid","mc_Pt_matched_qmisid","mc_Pt","p_{T} (GeV/c)","q misId");
33 
34  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "all reco electrons" ;
35  bookH1andDivide("etaEff_all","vertexEta_all","h_mc_Eta","#eta","N_{rec}/N_{gen}","");
36  bookH1andDivide("ptEff_all","vertexPt_all","h_mc_Pt","p_{T} (GeV/c)","N_{rec}/N_{gen}","");
37 
38  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "classes" ;
39  bookH1andDivide("eta_goldenFrac","eta_golden","h_ele_eta","|#eta|","Fraction of electrons","fraction of golden electrons vs eta");
40  bookH1andDivide("eta_bbremFrac" ,"eta_bbrem","h_ele_eta","|#eta|","Fraction of electrons","fraction of big brem electrons vs eta");
41  bookH1andDivide("eta_showerFrac","eta_shower","h_ele_eta","|#eta|","Fraction of electrons","fraction of showering electrons vs eta");
42 
43  // fbrem
44  MonitorElement * p1_ele_fbremVsEta_mean = get("fbremvsEtamean") ;
45  TAxis * etaAxis = p1_ele_fbremVsEta_mean->getTProfile()->GetXaxis() ;
46  MonitorElement * h1_ele_xOverX0VsEta = bookH1withSumw2("xOverx0VsEta","mean X/X_0 vs eta",etaAxis->GetNbins(),etaAxis->GetXmin(),etaAxis->GetXmax());
47  for (int ibin=1;ibin<etaAxis->GetNbins()+1;ibin++) {
48  double xOverX0 = 0.;
49  if (p1_ele_fbremVsEta_mean->getBinContent(ibin)>0.)
50  { xOverX0 = -log(p1_ele_fbremVsEta_mean->getBinContent(ibin)) ; }
51  h1_ele_xOverX0VsEta->setBinContent(ibin,xOverX0) ;
52  }
53 
54  // profiles from 2D histos
55  profileX("PoPtrueVsEta","mean ele momentum / gen momentum vs eta","#eta","<P/P_{gen}>");
56  profileX("PoPtrueVsPhi","mean ele momentum / gen momentum vs phi","#phi (rad)","<P/P_{gen}>");
57  profileX("EoEtruePfVsEg","mean pflow sc energy / true energy vs e/g sc energy","E/E_{gen} (e/g)","<E/E_{gen}> (pflow)") ;
58  profileY("EoEtruePfVsEg","mean e/g sc energy / true energy vs pflow sc energy","E/E_{gen} (pflow)","<E/E_{gen}> (eg)") ;
59  profileX("EtaMnEtaTrueVsEta","mean ele eta - gen eta vs eta","#eta","<#eta_{rec} - #eta_{gen}>");
60  profileX("EtaMnEtaTrueVsPhi","mean ele eta - gen eta vs phi","#phi (rad)","<#eta_{rec} - #eta_{gen}>");
61  profileX("PhiMnPhiTrueVsEta","mean ele phi - gen phi vs eta","#eta","<#phi_{rec} - #phi_{gen}> (rad)");
62  profileX("PhiMnPhiTrueVsPhi","mean ele phi - gen phi vs phi","#phi (rad)","");
63  profileX("vertexPtVsEta","mean ele transverse momentum vs eta","#eta","<p_{T}> (GeV/c)");
64  profileX("vertexPtVsPhi","mean ele transverse momentum vs phi","#phi (rad)","<p_{T}> (GeV/c)");
65  profileX("EoPVsEta","mean ele E/p vs eta","#eta","<E/P_{vertex}>");
66  profileX("EoPVsPhi","mean ele E/p vs phi","#phi (rad)","<E/P_{vertex}>");
67  profileX("EoPoutVsEta","mean ele E/pout vs eta","#eta","<E_{seed}/P_{out}>");
68  profileX("EoPoutVsPhi","mean ele E/pout vs phi","#phi (rad)","<E_{seed}/P_{out}>");
69  profileX("EeleOPoutVsEta","mean ele Eele/pout vs eta","#eta","<E_{ele}/P_{out}>");
70  profileX("EeleOPoutVsPhi","mean ele Eele/pout vs phi","#phi (rad)","<E_{ele}/P_{out}>");
71  profileX("HoEVsEta","mean ele H/E vs eta","#eta","<H/E>");
72  profileX("HoEVsPhi","mean ele H/E vs phi","#phi (rad)","<H/E>");
73  profileX("chi2VsEta","mean ele track chi2 vs eta","#eta","<#Chi^{2}>");
74  profileX("chi2VsPhi","mean ele track chi2 vs phi","#phi (rad)","<#Chi^{2}>");
75  profileX("ambiguousTracksVsEta","mean ele # ambiguous tracks vs eta","#eta","<N_{ambiguous}>");
76  profileX("foundHitsVsEta","mean ele track # found hits vs eta","#eta","<N_{hits}>");
77  profileX("foundHitsVsPhi","mean ele track # found hits vs phi","#phi (rad)","<N_{hits}>");
78  profileX("lostHitsVsEta","mean ele track # lost hits vs eta","#eta","<N_{hits}>");
79  profileX("lostHitsVsPhi","mean ele track # lost hits vs phi","#phi (rad)","<N_{hits}>");
80  profileX("vertexTIPVsEta","mean tip (wrt gen vtx) vs eta","#eta","<TIP> (cm)");
81  profileX("vertexTIPVsPhi","mean tip (wrt gen vtx) vs phi","#phi","<TIP> (cm)");
82  profileX("vertexTIPVsPt","mean tip (wrt gen vtx) vs phi","p_{T} (GeV/c)","<TIP> (cm)");
83  profileX("seedDphi2_VsEta","mean ele seed dphi 2nd layer vs eta","#eta","<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",-0.004,0.004);
84  profileX("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);
85  profileX("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);
86  profileX("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);
87  profileX("seedDphi2Pos_VsEta","mean ele seed dphi 2nd layer positron vs eta","#eta","<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",-0.004,0.004);
88  profileX("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);
89  profileX("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);
90  profileX("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);
91 
92 // // investigation
93 // TH2F * h2 = get("PoPtrueVsEta")->getTH2F() ;
94 // std::cout<<"H2 entries : "<<h2->GetEntries()<<std::endl ;
95 // std::cout<<"H2 effective entries : "<<h2->GetEffectiveEntries()<<std::endl ;
96 // Int_t ix, nx = h2->GetNbinsX(), iy, ny = h2->GetNbinsY(), is, nu = 0, no = 0, nb = 0 ;
97 // for ( iy = 0 ; iy<=(ny+1) ; ++iy )
98 // for ( ix = 0 ; ix<=(nx+1) ; ++ix )
99 // {
100 // is = iy*(nx+2) + ix ;
101 // if (h2->IsBinUnderflow(is)) ++nu ;
102 // if (h2->IsBinOverflow(is)) ++no ;
103 // }
104 // ix = 0 ;
105 // for ( iy = 0 ; iy<=(ny+1) ; ++iy )
106 // {
107 // is = iy*(nx+2) + ix ;
108 // nb += (*h2->GetSumw2())[is] ;
109 // }
110 // ix = nx+1 ;
111 // for ( iy = 0 ; iy<=(ny+1) ; ++iy )
112 // {
113 // is = iy*(nx+2) + ix ;
114 // nb += (*h2->GetSumw2())[is] ;
115 // }
116 // for ( ix = 1 ; ix<=nx ; ++ix )
117 // {
118 // iy = 0 ;
119 // is = iy*(nx+2) + ix ;
120 // nb += (*h2->GetSumw2())[is] ;
121 // iy = ny+1 ;
122 // is = iy*(nx+2) + ix ;
123 // nb += (*h2->GetSumw2())[is] ;
124 // }
125 // std::cout<<"H2 nx : "<<nx<<std::endl ;
126 // std::cout<<"H2 ny : "<<ny<<std::endl ;
127 // std::cout<<"H2 nsumw2 : "<<(*h2->GetSumw2()).fN<<std::endl ;
128 // std::cout<<"H2 nu : "<<nu<<std::endl ;
129 // std::cout<<"H2 no : "<<no<<std::endl ;
130 // std::cout<<"H2 outside : "<<nb<<std::endl ;
131 // std::cout<<"PFX entries : "<<h2->ProfileX()->GetEntries()<<std::endl ;
132 // std::cout<<"PFX effective entries : "<<h2->ProfileX()->GetEffectiveEntries()<<std::endl ;
133 }
void setBinContent(int binx, double content)
set content of bin (1-D)
static std::vector< std::string > checklist log
MonitorElement * profileY(MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
MonitorElement * bookH1withSumw2(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")
MonitorElement * profileX(MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
void setBookPrefix(const std::string &)
MonitorElement * bookH2andDivide(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
MonitorElement * bookH1andDivide(const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")