CMS 3D CMS Logo

EgHLTPhoHLTFilterMon.cc
Go to the documentation of this file.
1 #include <utility>
2 
4 
9 
11 
13 
14 using namespace egHLT ;
15 
17  filterName_(std::move(filterName)),
18  filterBit_(filterBit),
19  doHEP_(doHEP)
20 {
21  bool monHLTFailedPho=false;
22  bool doN1andSingleEffsPho=false;
23  std::string histname="egamma";
24 
25  phoMonElems_.push_back(new MonElemContainer<OffPho>());
26  //phoMonElems_.push_back(new MonElemContainer<OffPho>("_cut"," cut, debug hists ",new EgHLTDQMVarCut<OffPho>(~0x0,&OffPho::cutCode)));
27  for(auto & phoMonElem : phoMonElems_){
28  if(doHEP_){
29  monElemFuncs.initStdPhoHistsHEP(phoMonElem->monElems(),filterName_,histname+"_passFilter"+phoMonElem->name(),bins);
30  }else{
31  monElemFuncs.initStdPhoHists(phoMonElem->monElems(),filterName_,filterName_+"_pho_passFilter"+phoMonElem->name(),bins);
32  }
33  }
34 
35  if(monHLTFailedPho) phoFailMonElems_.push_back(new MonElemContainer<OffPho>());
36 
37  for(size_t i=0;i<phoFailMonElems_.size();i++){
38  if(doHEP_){
39  monElemFuncs.initStdPhoHistsHEP(phoFailMonElems_[i]->monElems(),filterName_,histname+"_failFilter"+phoMonElems_[i]->name(),bins);
40  }else{
41  monElemFuncs.initStdPhoHists(phoFailMonElems_[i]->monElems(),filterName_,filterName_+"_pho_failFilter"+phoMonElems_[i]->name(),bins);
42  }
43  }
44  phoEffHists_.push_back(new MonElemContainer<OffPho>());
45  // phoEffHists_.push_back(new MonElemContainer<OffPho>("_jetTag"," Tag and Probe ",new EgJetB2BCut<OffPho>(-M_PI/12,M_PI/12,0.3)));
46  if(doN1andSingleEffsPho){
47  for(auto & phoEffHist : phoEffHists_){
48  monElemFuncs.initStdEffHists(phoEffHist->cutMonElems(),filterName_,
49  filterName_+"_pho_effVsEt"+phoEffHist->name(),bins.et,&OffPho::et,masks);
50  monElemFuncs.initStdEffHists(phoEffHist->cutMonElems(),filterName_,
51  filterName_+"_pho_effVsEta"+phoEffHist->name(),bins.eta,&OffPho::eta,masks);
52  /* monElemFuncs.initStdEffHists(phoEffHists_[i]->cutMonElems(),filterName_,
53  filterName_+"_pho_effVsPhi"+phoEffHists_[i]->name(),bins.phi,&OffPho::phi,masks);*/
54  }
55  }
56  if(!doHEP_)
57  {
58  typedef MonElemManager<ParticlePair<OffPho>,float > DiPhoMon;
59  diPhoMassBothME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_bothPassFilter_mass",
60  filterName_+"_diPho_bothPassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
62  diPhoMassOnlyOneME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_onlyOnePassFilter_mass",
63  filterName_+"_diPho_onlyOnePassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
65  diPhoMassBothHighME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_bothPassFilter_massHigh",
66  filterName_+"_diPho_bothPassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
68  diPhoMassOnlyOneHighME_ = new DiPhoMon(monElemFuncs.getIB(), filterName_+"_diPho_onlyOnePassFilter_massHigh",
69  filterName_+"_diPho_onlyOnePassFilter Mass;M_{#gamma#gamma} (GeV/c^{2})",
71 
72  }
73 }
74 
76 {
77  for(auto & phoMonElem : phoMonElems_) delete phoMonElem;
78  for(auto & phoFailMonElem : phoFailMonElems_) delete phoFailMonElem;
79  for(auto & phoEffHist : phoEffHists_) delete phoEffHist;
80  if(!doHEP_)
81  {
82  delete diPhoMassBothME_;
83  delete diPhoMassOnlyOneME_;
84  delete diPhoMassBothHighME_;
86  }
87 }
88 
89 void PhoHLTFilterMon::fill(const OffEvt& evt,float weight)
90 {
91  for(size_t phoNr=0;phoNr<evt.phos().size();phoNr++){
92  const OffPho& pho = evt.phos()[phoNr];
93  if((pho.trigBits()&filterBit_)!=0){ //pho passes
94  for(auto & phoMonElem : phoMonElems_) phoMonElem->fill(pho,evt,weight);
95  for(auto & phoEffHist : phoEffHists_) phoEffHist->fill(pho,evt,weight);
96  }else { //pho didnt pass trigger
97  for(auto & phoFailMonElem : phoFailMonElems_) phoFailMonElem->fill(pho,evt,weight);
98  }
99  }//end loop over photons
100 
101 
102 
103  if((evt.evtTrigBits()&filterBit_)!=0){
104  for(size_t pho1Nr=0;pho1Nr<evt.phos().size();pho1Nr++){
105  for(size_t pho2Nr=pho1Nr+1;pho2Nr<evt.phos().size();pho2Nr++){
106  const OffPho& pho1 = evt.phos()[pho1Nr];
107  const OffPho& pho2 = evt.phos()[pho2Nr];
108  if(!doHEP_)
109  {
110  if((pho1.trigBits()&pho2.trigBits()&filterBit_)==filterBit_) diPhoMassBothME_->fill(ParticlePair<OffPho>(pho1,pho2),weight);
111  else if((pho1.trigBits()&filterBit_)==filterBit_ ||
112  (pho2.trigBits()&filterBit_)==filterBit_){
113  diPhoMassOnlyOneME_->fill(ParticlePair<OffPho>(pho1,pho2),weight);
114  }
115  }
116  }//end inner pho loop
117  }//end outer pho loop
118  }//end check if filter is present
119 }
MonElemManagerBase< ParticlePair< OffPho > > * diPhoMassOnlyOneME_
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_
Definition: weight.py:1
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:52
const std::vector< OffPho > & phos() const
Definition: EgHLTOffEvt.h:50
MonElemManagerBase< ParticlePair< OffPho > > * diPhoMassBothME_
void initStdPhoHistsHEP(std::vector< MonElemManagerBase< OffPho > * > &histVec, const std::string &filterName, const std::string &baseName, const BinData &bins)
DQMStore::IBooker & getIB()
std::bitset< maxNrBits_ > TrigBitSet
const TrigCodes::TrigBitSet filterBit_
def move(src, dest)
Definition: eostools.py:511
void fill(const OffEvt &evt, float weight)
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)