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