CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EgHLTPhoHLTFilterMon.cc
Go to the documentation of this file.
2 
7 
9 
11 
12 using namespace egHLT ;
13 
15  filterName_(filterName),
16  filterBit_(filterBit)
17 {
18  bool monHLTFailedPho=false;
19  bool doN1andSingleEffsPho=false;
20 
21  phoMonElems_.push_back(new MonElemContainer<OffPho>());
22  //phoMonElems_.push_back(new MonElemContainer<OffPho>("_cut"," cut, debug hists ",new EgHLTDQMVarCut<OffPho>(~0x0,&OffPho::cutCode)));
23  for(size_t i=0;i<phoMonElems_.size();i++){
24  monElemFuncs.initStdPhoHists(phoMonElems_[i]->monElems(),filterName_,filterName_+"_pho_passFilter"+phoMonElems_[i]->name(),bins);
25  }
26 
27  if(monHLTFailedPho) phoFailMonElems_.push_back(new MonElemContainer<OffPho>());
28  for(size_t i=0;i<phoFailMonElems_.size();i++){
29  monElemFuncs.initStdPhoHists(phoFailMonElems_[i]->monElems(),filterName_,filterName_+"_pho_failFilter"+phoMonElems_[i]->name(),bins);
30  }
31 
32  phoEffHists_.push_back(new MonElemContainer<OffPho>());
33  // phoEffHists_.push_back(new MonElemContainer<OffPho>("_jetTag"," Tag and Probe ",new EgJetB2BCut<OffPho>(-M_PI/12,M_PI/12,0.3)));
34  if(doN1andSingleEffsPho){
35  for(size_t i=0;i<phoEffHists_.size();i++){
36  monElemFuncs.initStdEffHists(phoEffHists_[i]->cutMonElems(),filterName_,
37  filterName_+"_pho_effVsEt"+phoEffHists_[i]->name(),bins.et,&OffPho::et,masks);
38  monElemFuncs.initStdEffHists(phoEffHists_[i]->cutMonElems(),filterName_,
39  filterName_+"_pho_effVsEta"+phoEffHists_[i]->name(),bins.eta,&OffPho::eta,masks);
40  /* monElemFuncs.initStdEffHists(phoEffHists_[i]->cutMonElems(),filterName_,
41  filterName_+"_pho_effVsPhi"+phoEffHists_[i]->name(),bins.phi,&OffPho::phi,masks);*/
42  }
43  }
44  typedef MonElemManager<ParticlePair<OffPho>,float > DiPhoMon;
45  diPhoMassBothME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_bothPassFilter_mass",
46  filterName_+"_diPho_bothPassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
48  diPhoMassOnlyOneME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_onlyOnePassFilter_mass",
49  filterName_+"_diPho_onlyOnePassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
51  diPhoMassBothHighME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_bothPassFilter_massHigh",
52  filterName_+"_diPho_bothPassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
54  diPhoMassOnlyOneHighME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_onlyOnePassFilter_massHigh",
55  filterName_+"_diPho_onlyOnePassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
57 
58 }
59 
61 {
62  for(size_t i=0;i<phoMonElems_.size();i++) delete phoMonElems_[i];
63  for(size_t i=0;i<phoFailMonElems_.size();i++) delete phoFailMonElems_[i];
64  for(size_t i=0;i<phoEffHists_.size();i++) delete phoEffHists_[i];
65  delete diPhoMassBothME_;
66  delete diPhoMassOnlyOneME_;
67  delete diPhoMassBothHighME_;
69 }
70 
71 
72 void PhoHLTFilterMon::fill(const OffEvt& evt,float weight)
73 {
74  for(size_t phoNr=0;phoNr<evt.phos().size();phoNr++){
75  const OffPho& pho = evt.phos()[phoNr];
76  if((pho.trigBits()&filterBit_)!=0){ //pho passes
77  for(size_t monElemNr=0;monElemNr<phoMonElems_.size();monElemNr++) phoMonElems_[monElemNr]->fill(pho,evt,weight);
78  for(size_t monElemNr=0;monElemNr<phoEffHists_.size();monElemNr++) phoEffHists_[monElemNr]->fill(pho,evt,weight);
79  }else { //pho didnt pass trigger
80  for(size_t monElemNr=0;monElemNr<phoFailMonElems_.size();monElemNr++) phoFailMonElems_[monElemNr]->fill(pho,evt,weight);
81  }
82  }//end loop over photons
83 
84 
85 
86  if((evt.evtTrigBits()&filterBit_)!=0){
87  for(size_t pho1Nr=0;pho1Nr<evt.phos().size();pho1Nr++){
88  for(size_t pho2Nr=pho1Nr+1;pho2Nr<evt.phos().size();pho2Nr++){
89  const OffPho& pho1 = evt.phos()[pho1Nr];
90  const OffPho& pho2 = evt.phos()[pho2Nr];
91 
92  if((pho1.trigBits()&pho2.trigBits()&filterBit_)==filterBit_) diPhoMassBothME_->fill(ParticlePair<OffPho>(pho1,pho2),weight);
93  else if((pho1.trigBits()&filterBit_)==filterBit_ ||
94  (pho2.trigBits()&filterBit_)==filterBit_){
95  diPhoMassOnlyOneME_->fill(ParticlePair<OffPho>(pho1,pho2),weight);
96  }
97 
98  }//end inner pho loop
99  }//end outer pho loop
100  }//end check if filter is present
101 }
MonElemManagerBase< ParticlePair< OffPho > > * diPhoMassOnlyOneME_
int i
Definition: DBlmapReader.cc:9
PhoHLTFilterMon(const PhoHLTFilterMon &)
void initStdPhoHists(std::vector< MonElemManagerBase< OffPho > * > &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
MonElemManagerBase< ParticlePair< OffPho > > * diPhoMassBothHighME_
float et() const
Definition: EgHLTOffPho.h:101
std::vector< MonElemContainer< OffPho > * > phoEffHists_
std::vector< MonElemContainer< OffPho > * > phoMonElems_
float eta() const
Definition: EgHLTOffPho.h:104
TrigCodes::TrigBitSet trigBits() const
Definition: EgHLTOffPho.h:155
MonElemManagerBase< ParticlePair< OffPho > > * diPhoMassOnlyOneHighME_
std::vector< MonElemContainer< OffPho > * > phoFailMonElems_
TrigCodes::TrigBitSet evtTrigBits() const
Definition: EgHLTOffEvt.h:50
const std::vector< OffPho > & phos() const
Definition: EgHLTOffEvt.h:48
MonElemManagerBase< ParticlePair< OffPho > > * diPhoMassBothME_
DQMStore::IBooker & getIB()
const TrigCodes::TrigBitSet filterBit_
void fill(const OffEvt &evt, float weight)
std::bitset< maxNrBits_ > TrigBitSet
static const uint32_t masks[]
Definition: CaloRecHit.cc:12
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)