00001 #include "DQMOffline/Trigger/interface/EgHLTMonElemFuncs.h"
00002
00003 #include "DQMOffline/Trigger/interface/EgHLTMonElemMgrEBEE.h"
00004 #include "DQMOffline/Trigger/interface/EgHLTEgCutCodes.h"
00005 #include "DQMOffline/Trigger/interface/EgHLTDQMCut.h"
00006 #include "DQMOffline/Trigger/interface/EgHLTCutMasks.h"
00007
00008
00009 using namespace egHLT;
00010
00011 void MonElemFuncs::initStdEleHists(std::vector<MonElemManagerBase<OffEle>*>& histVec,const std::string& baseName,const BinData& bins)
00012 {
00013 addStdHist<OffEle,float>(histVec,baseName+"_et",baseName+" E_{T};E_{T} (GeV)",bins.et,&OffEle::et);
00014 addStdHist<OffEle,float>(histVec,baseName+"_etHigh",baseName+" E_{T};E_{T} (GeV)",bins.etHigh,&OffEle::et);
00015 addStdHist<OffEle,float>(histVec,baseName+"_etSC",baseName+" E^{SC}_{T};E^{SC}_{T} (GeV)",bins.et,&OffEle::etSC);
00016 addStdHist<OffEle,float>(histVec,baseName+"_eta",baseName+" #eta;#eta",bins.eta,&OffEle::detEta);
00017 addStdHist<OffEle,float>(histVec,baseName+"_phi",baseName+" #phi;#phi (rad)",bins.phi,&OffEle::phi);
00018
00019
00020 addStdHist<OffEle,float>(histVec,baseName+"_hOverE",baseName+" H/E; H/E",bins.hOverE,&OffEle::hOverE);
00021
00022 addStdHist<OffEle,float>(histVec,baseName+"_maxr9",baseName+" MAXR9 ; MAXR9",bins.maxr9,&OffEle::r9);
00023
00024 addStdHist<OffEle,float>(histVec,baseName+"_dPhiIn",baseName+" #Delta #phi_{in}; #Delta #phi_{in}",bins.dPhiIn,&OffEle::dPhiIn);
00025 addStdHist<OffEle,float>(histVec,baseName+"_dEtaIn",baseName+" #Delta #eta_{in}; #Delta #eta_{in}",bins.dEtaIn,&OffEle::dEtaIn);
00026 addStdHist<OffEle,float>(histVec,baseName+"_sigmaIEtaIEta",baseName+"#sigma_{i#etai#eta}; #sigma_{i#etai#eta}",bins.sigEtaEta,&OffEle::sigmaIEtaIEta);
00027 addStdHist<OffEle,float>(histVec,baseName+"_epIn",baseName+"E/p_{in}; E/p_{in}",bins.eOverP,&OffEle::epIn);
00028 addStdHist<OffEle,float>(histVec,baseName+"_epOut",baseName+"E/p_{out}; E/p_{out}",bins.eOverP,&OffEle::epOut);
00029 addStdHist<OffEle,float>(histVec,baseName+"_invEInvP",baseName+"1/E -1/p; 1/E - 1/p",bins.invEInvP,&OffEle::invEInvP);
00030
00031 addStdHist<OffEle,float>(histVec,baseName+"_e2x5Over5x5",baseName+"E^{2x5}/E^{5x5}; E^{2x5}/E^{5x5}",bins.e2x5,&OffEle::e2x5MaxOver5x5);
00032 addStdHist<OffEle,float>(histVec,baseName+"_e1x5Over5x5",baseName+"E^{1x5}/E^{5x5}; E^{1x5}/E^{5x5}",bins.e1x5,&OffEle::e1x5Over5x5);
00033
00034
00035
00036 addStdHist<OffEle,float>(histVec,baseName+"_hltIsolTrksEle",baseName+"HLT Ele Isol Trks; HLT Ele Iso Tracks (GeV/c)",bins.isolPtTrks,&OffEle::hltIsolTrksEle);
00037
00038 addStdHist<OffEle,float>(histVec,baseName+"_hltIsolHad",baseName+"HLT Isol Had; HLT Isol Had (GeV)",bins.isolHad,&OffEle::hltIsolHad);
00039 addStdHist<OffEle,float>(histVec,baseName+"_hltIsolEm",baseName+"HLT Isol Em; HLT Isol Em (GeV)",bins.isolEm,&OffEle::hltIsolEm);
00040
00041 histVec.push_back(new MonElemManager2D<OffEle,float,float>(baseName+"_etaVsPhi",
00042 baseName+" #eta vs #phi;#eta;#phi (rad)",
00043 bins.etaVsPhi.nrX,bins.etaVsPhi.xMin,bins.etaVsPhi.xMax,
00044 bins.etaVsPhi.nrY,bins.etaVsPhi.yMin,bins.etaVsPhi.yMax,
00045 &OffEle::detEta,&OffEle::phi));
00046
00047 }
00048
00049 void MonElemFuncs::initStdPhoHists(std::vector<MonElemManagerBase<OffPho>*>& histVec,const std::string& baseName,const BinData& bins)
00050 {
00051 addStdHist<OffPho,float>(histVec,baseName+"_et",baseName+" E_{T};E_{T} (GeV)",bins.et,&OffPho::et);
00052 addStdHist<OffPho,float>(histVec,baseName+"_etHigh",baseName+" E_{T};E_{T} (GeV)",bins.etHigh,&OffPho::et);
00053 addStdHist<OffPho,float>(histVec,baseName+"_etSC",baseName+" E^{SC}_{T};E^{SC}_{T} (GeV)",bins.et,&OffPho::etSC);
00054 addStdHist<OffPho,float>(histVec,baseName+"_eta",baseName+" #eta;#eta",bins.eta,&OffPho::detEta);
00055 addStdHist<OffPho,float>(histVec,baseName+"_phi",baseName+" #phi;#phi (rad)",bins.phi,&OffPho::phi);
00056
00057 addStdHist<OffPho,float>(histVec,baseName+"_hOverE",baseName+" H/E; H/E",bins.hOverE,&OffPho::hOverE);
00058
00059
00060
00061 addStdHist<OffPho,float>(histVec,baseName+"_maxr9",baseName+" MAXR9 ; MAXR9",bins.maxr9,&OffPho::r9);
00062
00063 addStdHist<OffPho,float>(histVec,baseName+"_sigmaIEtaIEta",baseName+"#sigma_{i#etai#eta}; #sigma_{i#etai#eta}",bins.sigEtaEta,&OffPho::sigmaIEtaIEta);
00064 addStdHist<OffPho,float>(histVec,baseName+"_e2x5Over5x5",baseName+"E^{2x5}/E^{5x5}; E^{2x5}/E^{5x5}",bins.e2x5,&OffPho::e2x5MaxOver5x5);
00065 addStdHist<OffPho,float>(histVec,baseName+"_e1x5Over5x5",baseName+"E^{1x5}/E^{5x5}; E^{1x5}/E^{5x5}",bins.e1x5,&OffPho::e1x5Over5x5);
00066 addStdHist<OffPho,float>(histVec,baseName+"_isolEM",baseName+"Isol EM; Isol EM (GeV)",bins.isolEm,&OffPho::isolEm);
00067 addStdHist<OffPho,float>(histVec,baseName+"_isolHad",baseName+"Isol Had; Isol Had (GeV)",bins.isolHad,&OffPho::isolHad);
00068 addStdHist<OffPho,float>(histVec,baseName+"_isolPtTrks",baseName+"Isol Pt Trks; Isol Pt Tracks (GeV/c)",bins.isolPtTrks,&OffPho::isolPtTrks);
00069 addStdHist<OffPho,int>(histVec,baseName+"_isolNrTrks",baseName+"Isol Nr Trks; Isol Nr Tracks",bins.isolNrTrks,&OffPho::isolNrTrks);
00070
00071
00072
00073 histVec.push_back(new MonElemManager2D<OffPho,float,float>(baseName+"_etaVsPhi",
00074 baseName+" #eta vs #phi;#eta;#phi (rad)",
00075 bins.etaVsPhi.nrX,bins.etaVsPhi.xMin,bins.etaVsPhi.xMax,
00076 bins.etaVsPhi.nrY,bins.etaVsPhi.yMin,bins.etaVsPhi.yMax,
00077 &OffPho::detEta,&OffPho::phi));
00078 }
00079
00080 void MonElemFuncs::initStdEffHists(std::vector<MonElemWithCutBase<OffEle>*>& histVec,const std::string& baseName,const BinData::Data1D& bins,float (OffEle::*vsVarFunc)()const,const CutMasks& masks)
00081 {
00082 initStdEffHists(histVec,baseName,bins.nr,bins.min,bins.max,vsVarFunc,masks);
00083 }
00084
00085 void MonElemFuncs::initStdEffHists(std::vector<MonElemWithCutBase<OffPho>*>& histVec,const std::string& baseName,const BinData::Data1D& bins,float (OffPho::*vsVarFunc)()const,const CutMasks& masks)
00086 {
00087 initStdEffHists(histVec,baseName,bins.nr,bins.min,bins.max,vsVarFunc,masks);
00088 }
00089
00090 void MonElemFuncs::initStdEffHists(std::vector<MonElemWithCutBase<OffEle>*>& histVec,const std::string& baseName,int nrBins,double xMin,double xMax,float (OffEle::*vsVarFunc)()const,const CutMasks& masks)
00091 {
00092
00093 typedef EgHLTDQMVarCut<OffEle> VarCut;
00094 typedef MonElemWithCutEBEE<OffEle,float> MonElemFloat;
00095 int stdCutCode = masks.stdEle;
00096
00097
00098 histVec.push_back(new MonElemFloat(baseName+"_noCuts",baseName+" NoCuts",nrBins,xMin,xMax,vsVarFunc));
00099 histVec.push_back(new MonElemFloat(baseName+"_allCuts",baseName+" All Cuts",nrBins,xMin,xMax,vsVarFunc,
00100 new VarCut(stdCutCode,&OffEle::cutCode)));
00101
00102
00103 histVec.push_back(new MonElemFloat(baseName+"_n1_dEtaIn",baseName+" N1 #Delta#eta_{in}",nrBins,xMin,xMax,vsVarFunc,
00104 new VarCut(~EgCutCodes::DETAIN&stdCutCode,&OffEle::cutCode)));
00105 histVec.push_back(new MonElemFloat(baseName+"_n1_dPhiIn",baseName+" N1 #Delta#phi_{in}",nrBins,xMin,xMax,vsVarFunc,
00106 new VarCut(~EgCutCodes::DPHIIN&stdCutCode,&OffEle::cutCode)));
00107 histVec.push_back(new MonElemFloat(baseName+"_n1_sigmaIEtaIEta",baseName+" N1 #sigma_{i#etai#eta}",nrBins,xMin,xMax,vsVarFunc, new VarCut(~EgCutCodes::SIGMAIETAIETA&stdCutCode,&OffEle::cutCode)));
00108 histVec.push_back(new MonElemFloat(baseName+"_n1_hOverE",baseName+" N1 H/E",nrBins,xMin,xMax,vsVarFunc,
00109 new VarCut(~EgCutCodes::HADEM &stdCutCode,&OffEle::cutCode)));
00110
00111
00112
00113
00114
00115
00116 histVec.push_back(new MonElemFloat(baseName+"_n1_hltIsolEm",baseName+" N1 HLT Isol Em",nrBins,xMin,xMax,vsVarFunc,
00117 new VarCut(~EgCutCodes::HLTISOLEM&stdCutCode,&OffEle::cutCode)));
00118 histVec.push_back(new MonElemFloat(baseName+"_n1_hltIsolHad",baseName+" N1 HLT Isol Had",nrBins,xMin,xMax,vsVarFunc,
00119 new VarCut(~EgCutCodes::HLTISOLHAD&stdCutCode,&OffEle::cutCode)));
00120 histVec.push_back(new MonElemFloat(baseName+"_n1_hltIsolTrksEle",baseName+" N1 HLT Isol Tracks Ele ",nrBins,xMin,xMax,vsVarFunc, new VarCut(~EgCutCodes::HLTISOLTRKSELE&stdCutCode,&OffEle::cutCode)));
00121 histVec.push_back(new MonElemFloat(baseName+"_single_dEtaIn",baseName+" Single #Delta#eta_{in}",nrBins,xMin,xMax,vsVarFunc,
00122 new VarCut(EgCutCodes::DETAIN,&OffEle::cutCode)));
00123 histVec.push_back(new MonElemFloat(baseName+"_single_dPhiIn",baseName+" Single #Delta#phi_{in}",nrBins,xMin,xMax,vsVarFunc,
00124 new VarCut(EgCutCodes::DPHIIN,&OffEle::cutCode)));
00125 histVec.push_back(new MonElemFloat(baseName+"_single_sigmaIEtaIEta",baseName+" Single #sigma_{i#etai#eta}",nrBins,xMin,xMax,vsVarFunc,
00126 new VarCut(EgCutCodes::SIGMAIETAIETA,&OffEle::cutCode)));
00127 histVec.push_back(new MonElemFloat(baseName+"_single_hOverE",baseName+" Single H/E",nrBins,xMin,xMax,vsVarFunc,
00128 new VarCut(EgCutCodes::HADEM,&OffEle::cutCode)));
00129
00130
00131
00132
00133
00134
00135 histVec.push_back(new MonElemFloat(baseName+"_single_hltIsolEm",baseName+" Single HLT Isol Em",nrBins,xMin,xMax,vsVarFunc,
00136 new VarCut(EgCutCodes::HLTISOLEM,&OffEle::cutCode)));
00137 histVec.push_back(new MonElemFloat(baseName+"_single_hltIsolHad",baseName+" Single HLT Isol Had",nrBins,xMin,xMax,vsVarFunc,
00138 new VarCut(EgCutCodes::HLTISOLHAD,&OffEle::cutCode)));
00139 histVec.push_back(new MonElemFloat(baseName+"_single_hltIsolTrksEle",baseName+" Single HLT Isol Tracks Ele ",nrBins,xMin,xMax,vsVarFunc,
00140 new VarCut(EgCutCodes::HLTISOLTRKSELE,&OffEle::cutCode)));
00141
00142
00143
00144 }
00145
00146 void MonElemFuncs::initStdEffHists(std::vector<MonElemWithCutBase<OffPho>*>& histVec,const std::string& baseName,int nrBins,double xMin,double xMax,float (OffPho::*vsVarFunc)()const,const CutMasks& masks)
00147 {
00148
00149 typedef EgHLTDQMVarCut<OffPho> VarCut;
00150 typedef MonElemWithCutEBEE<OffPho,float> MonElemFloat;
00151 int stdCutCode = masks.stdPho;
00152
00153 histVec.push_back(new MonElemFloat(baseName+"_noCuts",baseName+" NoCuts",nrBins,xMin,xMax,vsVarFunc));
00154 histVec.push_back(new MonElemFloat(baseName+"_allCuts",baseName+" All Cuts",nrBins,xMin,xMax,vsVarFunc,
00155 new VarCut(stdCutCode,&OffPho::cutCode)));
00156
00157
00158 histVec.push_back(new MonElemFloat(baseName+"_n1_sigmaIEtaIEta",baseName+" N1 #sigma_{i#etai#eta}",nrBins,xMin,xMax,vsVarFunc,
00159 new VarCut(~EgCutCodes::SIGMAIETAIETA&stdCutCode,&OffPho::cutCode)));
00160
00161
00162
00163
00164
00165 histVec.push_back(new MonElemFloat(baseName+"_n1_hOverE",baseName+" N1 H/E",nrBins,xMin,xMax,vsVarFunc,
00166 new VarCut(~EgCutCodes::HADEM&stdCutCode,&OffPho::cutCode)));
00167
00168
00169 histVec.push_back(new MonElemFloat(baseName+"_n1_maxr9",baseName+" N1 MAXR9",nrBins,xMin,xMax,vsVarFunc,
00170 new VarCut(~EgCutCodes::MAXR9&stdCutCode,&OffPho::cutCode)));
00171
00172 histVec.push_back(new MonElemFloat(baseName+"_n1_isolEm",baseName+" N1 Isol Em",nrBins,xMin,xMax,vsVarFunc,
00173 new VarCut(~EgCutCodes::ISOLEM&stdCutCode,&OffPho::cutCode)));
00174 histVec.push_back(new MonElemFloat(baseName+"_n1_isolHad",baseName+" N1 Isol Had",nrBins,xMin,xMax,vsVarFunc,
00175 new VarCut(~EgCutCodes::ISOLHAD&stdCutCode,&OffPho::cutCode)));
00176 histVec.push_back(new MonElemFloat(baseName+"_n1_isolPtTrks",baseName+" N1 Pt Isol Tracks",nrBins,xMin,xMax,vsVarFunc,
00177 new VarCut(~EgCutCodes::ISOLPTTRKS&stdCutCode,&OffPho::cutCode)));
00178 histVec.push_back(new MonElemFloat(baseName+"_n1_isolNrTrks",baseName+" N1 Nr Isol Tracks",nrBins,xMin,xMax,vsVarFunc,
00179 new VarCut(~EgCutCodes::ISOLNRTRKS&stdCutCode,&OffPho::cutCode)));
00180
00181 histVec.push_back(new MonElemFloat(baseName+"_single_hOverE",baseName+" Single H/E",nrBins,xMin,xMax,vsVarFunc,
00182 new VarCut(EgCutCodes::HADEM,&OffPho::cutCode)));
00183 histVec.push_back(new MonElemFloat(baseName+"_single_sigmaIEtaIEta",baseName+" Single #sigma_{i#etai#eta}",nrBins,xMin,xMax,vsVarFunc,
00184 new VarCut(EgCutCodes::SIGMAIETAIETA,&OffPho::cutCode)));
00185 histVec.push_back(new MonElemFloat(baseName+"_single_isolEm",baseName+" Single Isol Em",nrBins,xMin,xMax,vsVarFunc,
00186 new VarCut(~EgCutCodes::ISOLEM,&OffPho::cutCode)));
00187 histVec.push_back(new MonElemFloat(baseName+"_single_isolHad",baseName+" Single Isol Had",nrBins,xMin,xMax,vsVarFunc,
00188 new VarCut(~EgCutCodes::ISOLHAD,&OffPho::cutCode)));
00189 histVec.push_back(new MonElemFloat(baseName+"_single_isolPtTrks",baseName+" Single Pt Isol Tracks",nrBins,xMin,xMax,vsVarFunc,
00190 new VarCut(~EgCutCodes::ISOLPTTRKS,&OffPho::cutCode)));
00191
00192
00193
00194
00195
00196
00197 }
00198
00199
00200
00201
00202 void MonElemFuncs::initStdEleCutHists(std::vector<MonElemWithCutBase<OffEle>*>& histVec,const std::string& baseName,const BinData& bins,EgHLTDQMCut<OffEle>* cut)
00203 {
00204 histVec.push_back(new MonElemWithCutEBEE<OffEle,float>(baseName+"_et",
00205 baseName+" E_{T};E_{T} (GeV)",
00206 bins.et.nr,bins.et.min,bins.et.max,&OffEle::et,cut));
00207 histVec.push_back(new MonElemWithCutEBEE<OffEle,float>(baseName+"_eta",
00208 baseName+" #eta;#eta",
00209 bins.eta.nr,bins.eta.min,bins.eta.max,
00210 &OffEle::detEta,cut ? cut->clone(): NULL));
00211 histVec.push_back(new MonElemWithCutEBEE<OffEle,float>(baseName+"_phi",
00212 baseName+" #phi;#phi (rad)",
00213 bins.phi.nr,bins.phi.min,bins.phi.max,
00214 &OffEle::phi,cut ? cut->clone():NULL));
00215 histVec.push_back(new MonElemWithCutEBEE<OffEle,int>(baseName+"_charge",
00216 baseName+" Charge; charge",
00217 bins.charge.nr,bins.charge.min,bins.charge.max,
00218 &OffEle::charge,cut ? cut->clone():NULL));
00219 }
00220
00221
00222
00223
00224 void MonElemFuncs::initTightLooseTrigHists(std::vector<MonElemContainer<OffEle>*>& eleMonElems,const std::vector<std::string>& tightLooseTrigs,const BinData& bins,EgHLTDQMCut<OffEle>* eleCut)
00225 {
00226 for(size_t trigNr=0;trigNr<tightLooseTrigs.size();trigNr++){
00227 std::vector<std::string> splitString;
00228 boost::split(splitString,tightLooseTrigs[trigNr],boost::is_any_of(std::string(":")));
00229 if(splitString.size()!=2) continue;
00230 const std::string& tightTrig = splitString[0];
00231 const std::string& looseTrig = splitString[1];
00232
00233
00234
00235 if(trigNr!=tightLooseTrigs.size()-2) addTightLooseTrigHist(eleMonElems,tightTrig,looseTrig,eleCut->clone(),"gsfEle",bins);
00236 else addTightLooseTrigHist(eleMonElems,tightTrig,looseTrig,eleCut,"gsfEle",bins);
00237 }
00238 }
00239
00240
00241 void MonElemFuncs::initTightLooseTrigHists(std::vector<MonElemContainer<OffPho>*>& phoMonElems,const std::vector<std::string>& tightLooseTrigs,const BinData& bins,EgHLTDQMCut<OffPho>* phoCut)
00242 {
00243 for(size_t trigNr=0;trigNr<tightLooseTrigs.size();trigNr++){
00244 std::vector<std::string> splitString;
00245 boost::split(splitString,tightLooseTrigs[trigNr],boost::is_any_of(std::string(":")));
00246 if(splitString.size()!=2) continue;
00247 const std::string& tightTrig = splitString[0];
00248 const std::string& looseTrig = splitString[1];
00249
00250
00251
00252
00253 if(trigNr!=tightLooseTrigs.size()-2) addTightLooseTrigHist(phoMonElems,tightTrig,looseTrig,phoCut->clone(),"pho",bins);
00254 else addTightLooseTrigHist(phoMonElems,tightTrig,looseTrig,phoCut,"pho",bins);
00255 }
00256 }
00257
00258
00259
00260
00261
00262 void MonElemFuncs::addTightLooseTrigHist(std::vector<MonElemContainer<OffEle>*>& eleMonElems,
00263 const std::string& tightTrig,const std::string& looseTrig,
00264 EgHLTDQMCut<OffEle>* eleCut,
00265 const std::string& histId,const BinData& bins)
00266 {
00267 MonElemContainer<OffEle>* passMonElem = NULL;
00268 passMonElem = new MonElemContainer<OffEle>(tightTrig+"_"+looseTrig+"_"+histId+"_passTrig","",
00269 &(*(new EgMultiCut<OffEle>) <<
00270 new EgObjTrigCut<OffEle>(TrigCodes::getCode(tightTrig+":"+looseTrig),EgObjTrigCut<OffEle>::AND) <<
00271 eleCut->clone()));
00272
00273
00274 MonElemContainer<OffEle>* failMonElem = NULL;
00275 failMonElem = new MonElemContainer<OffEle>(tightTrig+"_"+looseTrig+"_"+histId+"_failTrig","",
00276 &(*(new EgMultiCut<OffEle>) <<
00277 new EgObjTrigCut<OffEle>(TrigCodes::getCode(looseTrig),EgObjTrigCut<OffEle>::AND,TrigCodes::getCode(tightTrig)) <<
00278 eleCut));
00279
00280 MonElemFuncs::initStdEleHists(passMonElem->monElems(),passMonElem->name(),bins);
00281 MonElemFuncs::initStdEleHists(failMonElem->monElems(),failMonElem->name(),bins);
00282 eleMonElems.push_back(passMonElem);
00283 eleMonElems.push_back(failMonElem);
00284 }
00285
00286
00287
00288 void MonElemFuncs::addTightLooseTrigHist(std::vector<MonElemContainer<OffPho>*>& phoMonElems,
00289 const std::string& tightTrig,const std::string& looseTrig,
00290 EgHLTDQMCut<OffPho>* phoCut,
00291 const std::string& histId,const BinData& bins)
00292 {
00293 MonElemContainer<OffPho>* passMonElem = NULL;
00294 passMonElem = new MonElemContainer<OffPho>(tightTrig+"_"+looseTrig+"_"+histId+"_passTrig","",
00295 &(*(new EgMultiCut<OffPho>) <<
00296 new EgObjTrigCut<OffPho>(TrigCodes::getCode(tightTrig+":"+looseTrig),EgObjTrigCut<OffPho>::AND) <<
00297 phoCut->clone()));
00298
00299
00300 MonElemContainer<OffPho>* failMonElem = NULL;
00301 failMonElem = new MonElemContainer<OffPho>(tightTrig+"_"+looseTrig+"_"+histId+"_failTrig","",
00302 &(*(new EgMultiCut<OffPho>) <<
00303 new EgObjTrigCut<OffPho>(TrigCodes::getCode(looseTrig),EgObjTrigCut<OffPho>::AND,TrigCodes::getCode(tightTrig)) <<
00304 phoCut));
00305
00306 MonElemFuncs::initStdPhoHists(passMonElem->monElems(),passMonElem->name(),bins);
00307 MonElemFuncs::initStdPhoHists(failMonElem->monElems(),failMonElem->name(),bins);
00308 phoMonElems.push_back(passMonElem);
00309 phoMonElems.push_back(failMonElem);
00310 }
00311
00312
00313
00314
00315 void MonElemFuncs::initTightLooseTrigHistsTrigCuts(std::vector<MonElemContainer<OffEle>*>& eleMonElems,const std::vector<std::string>& tightLooseTrigs,const BinData& bins)
00316 {
00317 for(size_t trigNr=0;trigNr<tightLooseTrigs.size();trigNr++){
00318 std::vector<std::string> splitString;
00319 boost::split(splitString,tightLooseTrigs[trigNr],boost::is_any_of(std::string(":")));
00320 if(splitString.size()!=2) continue;
00321 const std::string& tightTrig = splitString[0];
00322 const std::string& looseTrig = splitString[1];
00323 EgHLTDQMCut<OffEle>* eleCut = new EgHLTDQMUserVarCut<OffEle,TrigCodes::TrigBitSet>(&OffEle::trigCutsCutCode,TrigCodes::getCode(tightTrig));
00324 addTightLooseTrigHist(eleMonElems,tightTrig,looseTrig,eleCut,"gsfEle_trigCuts",bins);
00325 }
00326 }
00327
00328
00329 void MonElemFuncs::initTightLooseTrigHistsTrigCuts(std::vector<MonElemContainer<OffPho>*>& phoMonElems,const std::vector<std::string>& tightLooseTrigs,const BinData& bins)
00330 {
00331 for(size_t trigNr=0;trigNr<tightLooseTrigs.size();trigNr++){
00332 std::vector<std::string> splitString;
00333 boost::split(splitString,tightLooseTrigs[trigNr],boost::is_any_of(std::string(":")));
00334 if(splitString.size()!=2) continue;
00335 const std::string& tightTrig = splitString[0];
00336 const std::string& looseTrig = splitString[1];
00337 EgHLTDQMCut<OffPho>* phoCut = new EgHLTDQMUserVarCut<OffPho,TrigCodes::TrigBitSet>(&OffPho::trigCutsCutCode,TrigCodes::getCode(tightTrig));
00338 addTightLooseTrigHist(phoMonElems,tightTrig,looseTrig,phoCut,"pho_trigCuts",bins);
00339 }
00340 }
00341
00342
00343
00344 void MonElemFuncs::initTightLooseDiObjTrigHistsTrigCuts(std::vector<MonElemContainer<OffEle>*>& eleMonElems,const std::vector<std::string>& tightLooseTrigs,const BinData& bins)
00345 {
00346 for(size_t trigNr=0;trigNr<tightLooseTrigs.size();trigNr++){
00347 std::vector<std::string> splitString;
00348 boost::split(splitString,tightLooseTrigs[trigNr],boost::is_any_of(std::string(":")));
00349 if(splitString.size()!=2) continue;
00350 const std::string& tightTrig = splitString[0];
00351 const std::string& looseTrig = splitString[1];
00352 EgHLTDQMCut<OffEle>* eleCut = new EgDiEleUserCut<TrigCodes::TrigBitSet>(&OffEle::trigCutsCutCode,TrigCodes::getCode(tightTrig));
00353 addTightLooseTrigHist(eleMonElems,tightTrig,looseTrig,eleCut,"gsfEle_trigCuts",bins);
00354 }
00355 }
00356
00357
00358
00359 void MonElemFuncs::initTightLooseDiObjTrigHistsTrigCuts(std::vector<MonElemContainer<OffPho>*>& phoMonElems,const std::vector<std::string>& tightLooseTrigs,const BinData& bins)
00360 {
00361 for(size_t trigNr=0;trigNr<tightLooseTrigs.size();trigNr++){
00362 std::vector<std::string> splitString;
00363 boost::split(splitString,tightLooseTrigs[trigNr],boost::is_any_of(std::string(":")));
00364 if(splitString.size()!=2) continue;
00365 const std::string& tightTrig = splitString[0];
00366 const std::string& looseTrig = splitString[1];
00367 EgHLTDQMCut<OffPho>* phoCut = new EgDiPhoUserCut<TrigCodes::TrigBitSet>(&OffPho::trigCutsCutCode,TrigCodes::getCode(tightTrig));
00368 addTightLooseTrigHist(phoMonElems,tightTrig,looseTrig,phoCut,"pho_trigCuts",bins);
00369 }
00370 }
00371
00372
00373
00374
00375
00376
00377 void MonElemFuncs::initTrigTagProbeHists(std::vector<MonElemContainer<OffEle>*>& eleMonElems,const std::vector<std::string> filterNames,int cutMask,const BinData& bins)
00378 {
00379 for(size_t filterNr=0;filterNr<filterNames.size();filterNr++){
00380
00381 std::string trigName(filterNames[filterNr]);
00382 float etCutValue = trigTools::getEtThresFromName(trigName);
00383 MonElemContainer<OffEle>* monElemCont = new MonElemContainer<OffEle>("trigTagProbe","Trigger Tag and Probe",new EgTrigTagProbeCut(TrigCodes::getCode(trigName),cutMask,&OffEle::cutCode));
00384 MonElemFuncs::initStdEleCutHists(monElemCont->cutMonElems(),trigName+"_"+monElemCont->name()+"_gsfEle_all",bins,new EgGreaterCut<OffEle,float>(etCutValue,&OffEle::etSC));
00385 MonElemFuncs::initStdEleCutHists(monElemCont->cutMonElems(),trigName+"_"+monElemCont->name()+"_gsfEle_pass",bins,&(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle,float>(etCutValue,&OffEle::etSC) << new EgObjTrigCut<OffEle>(TrigCodes::getCode(trigName),EgObjTrigCut<OffEle>::AND)));
00386
00387 monElemCont->monElems().push_back(new MonElemMgrEBEE<OffEle,float>(trigName+"_"+monElemCont->name()+"_gsfEle_all_etUnCut",monElemCont->name()+"_gsfEle_all E_{T} (Uncut);E_{T} (GeV)",
00388 bins.et.nr,bins.et.min,bins.et.max,&OffEle::et));
00389 monElemCont->cutMonElems().push_back(new MonElemWithCutEBEE<OffEle,float>(trigName+"_"+monElemCont->name()+"_gsfEle_pass_etUnCut",monElemCont->name()+"_gsfEle_pass E_{T} (Uncut);E_{T} (GeV)",
00390 bins.et.nr,bins.et.min,bins.et.max,&OffEle::et,new EgObjTrigCut<OffEle>(TrigCodes::getCode(trigName),EgObjTrigCut<OffEle>::AND)));
00391 eleMonElems.push_back(monElemCont);
00392 }
00393 }
00394
00395 void MonElemFuncs::initTrigTagProbeHist(std::vector<MonElemContainer<OffEle>*>& eleMonElems,const std::string filterName,int cutMask,const BinData& bins)
00396 {
00397 float etCutValue = trigTools::getEtThresFromName(filterName);
00398
00399 MonElemContainer<OffEle>* monElemCont = new MonElemContainer<OffEle>("trigTagProbe","Trigger Tag and Probe",new EgTrigTagProbeCut(TrigCodes::getCode(filterName),cutMask,&OffEle::cutCode));
00400 MonElemFuncs::initStdEleCutHists(monElemCont->cutMonElems(),filterName+"_"+monElemCont->name()+"_gsfEle_all",bins,new EgGreaterCut<OffEle,float>(etCutValue,&OffEle::etSC));
00401 MonElemFuncs::initStdEleCutHists(monElemCont->cutMonElems(),filterName+"_"+monElemCont->name()+"_gsfEle_pass",bins,&(*(new EgMultiCut<OffEle>) << new EgGreaterCut<OffEle,float>(etCutValue,&OffEle::etSC) << new EgObjTrigCut<OffEle>(TrigCodes::getCode(filterName),EgObjTrigCut<OffEle>::AND)));
00402
00403
00404
00405
00406
00407 eleMonElems.push_back(monElemCont);
00408 }
00409
00410