CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EgHLTEleHLTFilterMon.cc
Go to the documentation of this file.
7 
9 
11 
12 using namespace egHLT;
13 
15  filterName_(filterName),
16  filterBit_(filterBit)
17 {
18  bool doChargeSep = false;
19  bool monHLTFailedEle = false;
20  bool doFakeRate=false;
21  bool doTagAndProbe=false;
22  bool doN1andSingleEffs=false;
23 
24  eleMonElems_.push_back(new MonElemContainer<OffEle>());
25  //---Morse-------
26  //eleMonElems_.push_back(new MonElemContainer<OffEle>("_cut"," cut, debug hists ",new EgHLTDQMVarCut<OffEle>(~0x0,&OffEle::cutCode)));
27  //-----------------
28  if(doChargeSep){
29  eleMonElems_.push_back(new MonElemContainer<OffEle>("_posCharge"," q=+1 ",new ChargeCut<OffEle>(1)));
30  eleMonElems_.push_back(new MonElemContainer<OffEle>("_negCharge"," q=-1 ",new ChargeCut<OffEle>(-1)));
31  }
32  for(size_t i=0;i<eleMonElems_.size();i++){
33  MonElemFuncs::initStdEleHists(eleMonElems_[i]->monElems(),filterName,filterName_+"_gsfEle_passFilter"+eleMonElems_[i]->name(),bins);
34  }
35 
36  if(monHLTFailedEle){
38  if(doChargeSep) {
39  eleFailMonElems_.push_back(new MonElemContainer<OffEle>("_posCharge"," q=+1 ",new ChargeCut<OffEle>(1)));
40  eleFailMonElems_.push_back(new MonElemContainer<OffEle>("_negCharge"," q=-1 ",new ChargeCut<OffEle>(-1)));
41  }
42  }
43  for(size_t i=0;i<eleFailMonElems_.size();i++){
44  MonElemFuncs::initStdEleHists(eleFailMonElems_[i]->monElems(),filterName,filterName_+"_gsfEle_failFilter"+eleMonElems_[i]->name(),bins);
45  }
46 
47 
48  int effProbeCutCode = masks.probeEle;
49  int effTagCutCode = masks.stdEle;
50  int fakeRateProbeCut = masks.fakeEle;
51  eleEffHists_.push_back(new MonElemContainer<OffEle>());
52  if(doTagAndProbe) eleEffHists_.push_back(new MonElemContainer<OffEle>("_tagProbe"," Tag and Probe ",new EgTagProbeCut<OffEle>(effProbeCutCode,&OffEle::cutCode,effTagCutCode,&OffEle::cutCode)));
53  if(doFakeRate) eleEffHists_.push_back(new MonElemContainer<OffEle>("_fakeRate"," Fake Rate ",new EgJetTagProbeCut<OffEle>(fakeRateProbeCut,&OffEle::looseCutCode)));
54  if(doN1andSingleEffs){
55  for(size_t i=0;i<eleEffHists_.size();i++){
56  MonElemFuncs::initStdEffHists(eleEffHists_[i]->cutMonElems(),filterName,
57  filterName_+"_gsfEle_effVsEt"+eleEffHists_[i]->name(),bins.et,&OffEle::et,masks);
58  MonElemFuncs::initStdEffHists(eleEffHists_[i]->cutMonElems(),filterName,
59  filterName_+"_gsfEle_effVsEta"+eleEffHists_[i]->name(),bins.eta,&OffEle::eta,masks);
60  /* MonElemFuncs::initStdEffHists(eleEffHists_[i]->cutMonElems(),filterName,
61  filterName_+"_gsfEle_effVsPhi"+eleEffHists_[i]->name(),bins.phi,&OffEle::phi,masks); */
62  // MonElemFuncs::initStdEffHists(eleEffHists_[i]->cutMonElems(),filterName,
63  // filterName_+"_gsfEle_effVsCharge"+eleEffHists_[i]->name(),bins.charge,&OffEle::chargeF);
64  }
65  }
66  typedef MonElemManager<ParticlePair<OffEle>,float > DiEleMon;
67  diEleMassBothME_ = new DiEleMon(filterName_+"_diEle_bothPassFilter_mass",
68  filterName_+"_diEle_bothPassFilter Mass;M_{ee} (GeV/c^{2})",
70  diEleMassOnlyOneME_ = new DiEleMon(filterName_+"_diEle_onlyOnePass Filter_mass",
71  filterName_+"_diEle_onlyOnePassFilter Mass;M_{ee} (GeV/c^{2})",
73 
74  diEleMassBothHighME_ = new DiEleMon(filterName_+"_diEle_bothPassFilter_massHigh",
75  filterName_+"_diEle_bothPassFilter Mass;M_{ee} (GeV/c^{2})",
77  diEleMassOnlyOneHighME_ = new DiEleMon(filterName_+"_diEle_onlyOnePassFilter_massHigh",
78  filterName_+"_diEle_onlyOnePassFilter Mass;M_{ee} (GeV/c^{2})",
80 
81 }
82 
84 {
85  for(size_t i=0;i<eleMonElems_.size();i++) delete eleMonElems_[i];
86  for(size_t i=0;i<eleFailMonElems_.size();i++) delete eleFailMonElems_[i];
87  for(size_t i=0;i<eleEffHists_.size();i++) delete eleEffHists_[i];
88  delete diEleMassBothME_;
89  delete diEleMassOnlyOneME_;
90  delete diEleMassBothHighME_;
92 }
93 
94 
95 void EleHLTFilterMon::fill(const OffEvt& evt,float weight)
96 {
97  for(size_t eleNr=0;eleNr<evt.eles().size();eleNr++){
98  const OffEle& ele = evt.eles()[eleNr];
99  if((ele.trigBits()&filterBit_)!=0){ //ele passes
100  for(size_t monElemNr=0;monElemNr<eleMonElems_.size();monElemNr++) eleMonElems_[monElemNr]->fill(ele,evt,weight);
101  for(size_t monElemNr=0;monElemNr<eleEffHists_.size();monElemNr++) eleEffHists_[monElemNr]->fill(ele,evt,weight);
102  }else { //ele didnt pass trigger
103  for(size_t monElemNr=0;monElemNr<eleFailMonElems_.size();monElemNr++) eleFailMonElems_[monElemNr]->fill(ele,evt,weight);
104  }
105  }//end loop over electrons
106 
107  if((evt.evtTrigBits()&filterBit_)!=0){
108  for(size_t ele1Nr=0;ele1Nr<evt.eles().size();ele1Nr++){
109  for(size_t ele2Nr=ele1Nr+1;ele2Nr<evt.eles().size();ele2Nr++){
110  const OffEle& ele1 = evt.eles()[ele1Nr];
111  const OffEle& ele2 = evt.eles()[ele2Nr];
112 
113  if((ele1.trigBits()&ele2.trigBits()&filterBit_)==filterBit_) {
114  diEleMassBothME_->fill(ParticlePair<OffEle>(ele1,ele2),weight);
115  diEleMassBothHighME_->fill(ParticlePair<OffEle>(ele1,ele2),weight);
116  }else if((ele1.trigBits()&filterBit_)==filterBit_ ||
117  (ele2.trigBits()&filterBit_)==filterBit_){
118  diEleMassOnlyOneME_->fill(ParticlePair<OffEle>(ele1,ele2),weight);
119  diEleMassOnlyOneHighME_->fill(ParticlePair<OffEle>(ele1,ele2),weight);
120  }
121 
122 
123  }//end inner ele loop
124  }//end outer ele loop
125  }//end check if filter is present
126 }
127 
128 
129 
130 
int i
Definition: DBlmapReader.cc:9
const TrigCodes::TrigBitSet filterBit_
float eta() const
Definition: EgHLTOffEle.h:120
std::vector< MonElemContainer< OffEle > * > eleMonElems_
int looseCutCode() const
Definition: EgHLTOffEle.h:212
TrigCodes::TrigBitSet trigBits() const
Definition: EgHLTOffEle.h:219
float et() const
Definition: EgHLTOffEle.h:117
MonElemManagerBase< ParticlePair< OffEle > > * diEleMassOnlyOneHighME_
void initStdEleHists(std::vector< MonElemManagerBase< OffEle > * > &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
void initStdEffHists(std::vector< MonElemWithCutBase< OffEle > * > &histVec, const std::string &filterName, const std::string &baseName, int nrBins, double xMin, double xMax, float(OffEle::*vsVarFunc)() const, const CutMasks &masks)
TrigCodes::TrigBitSet evtTrigBits() const
Definition: EgHLTOffEvt.h:50
void fill(const OffEvt &evt, float weight)
MonElemManagerBase< ParticlePair< OffEle > > * diEleMassBothHighME_
std::vector< MonElemContainer< OffEle > * > eleEffHists_
int cutCode() const
Definition: EgHLTOffEle.h:211
std::vector< MonElemContainer< OffEle > * > eleFailMonElems_
MonElemManagerBase< ParticlePair< OffEle > > * diEleMassBothME_
EleHLTFilterMon(const EleHLTFilterMon &)
const std::vector< OffEle > & eles() const
Definition: EgHLTOffEvt.h:46
MonElemManagerBase< ParticlePair< OffEle > > * diEleMassOnlyOneME_
std::bitset< maxNrBits_ > TrigBitSet
static const uint32_t masks[]
Definition: CaloRecHit.cc:12