8 size_t versionStart = pathName.rfind(
"_v");
9 if(versionStart == std::string::npos)
11 return pathName.substr(0, versionStart);
16 bool doRefAnalysis,
const std::string& dqmBaseFolder,
17 const std::string& hltProcess,
int ptbins,
int etabins,
int phibins,
18 double ptmax,
double highptmax,
19 double l1MatchDr,
double hltMatchDr):
25 highptmax_(highptmax),
26 l1MatchDr_(l1MatchDr),
27 hltMatchDr_(hltMatchDr),
28 doRefAnalysis_(doRefAnalysis),
29 hltPath_(pathName, hltProcess, doRefAnalysis_, HLTCP)
124 int lastMatchedMETFilter = -1;
130 if(
name ==
"tau-met"){
131 this->
hMass_ = iBooker.
book1D(
"ReferenceMass",
"Transverse mass of reference "+
name+
";Reference transverse mass;entries", 100, 0, 500);
133 this->
hMass_ = iBooker.
book1D(
"ReferenceMass",
"Invariant mass of reference "+
name+
";Reference invariant mass;entries", 100, 0, 500);
136 LogDebug(
"HLTTauDQMOffline") <<
"Path " <<
hltPath_.
getPathName() <<
" number of taus " << ntaus <<
" electrons " << neles <<
" muons " << nmus;
156 if(ntaus == 2 && neles == 0 && nmus == 0 && nmet == 0)
create(
"di-tau");
157 if(ntaus == 1 && neles == 1 && nmus == 0 && nmet == 0)
create(
"electron-tau");
158 if(ntaus == 1 && neles == 0 && nmus == 1 && nmet == 0)
create(
"muon-tau");
159 if(ntaus == 1 && neles == 0 && nmus == 0 && nmet == 1)
create(
"tau-met");
167 std::vector<HLTTauDQMPath::Object> triggerObjs;
168 std::vector<HLTTauDQMPath::Object> matchedTriggerObjs;
173 int lastMatchedFilter = -1;
174 int lastMatchedMETFilter = -1;
175 int lastMatchedElectronFilter = -1;
176 int lastMatchedMuonFilter = -1;
177 int lastMatchedTauFilter = -1;
178 int firstMatchedMETFilter = -1;
182 for(
int i=0;
i<=lastPassedFilter; ++
i) {
184 matchedTriggerObjs.clear();
185 matchedOfflineObjs.
clear();
195 lastMatchedFilter =
i;
205 for(
int i=0;
i<=lastPassedFilter; ++
i) {
227 matchedTriggerObjs.clear();
228 matchedOfflineObjs.
clear();
232 for(
const LV&
tau: matchedOfflineObjs.
taus) {
257 matchedTriggerObjs.clear();
258 matchedOfflineObjs.
clear();
262 for(
const LV&
tau: matchedOfflineObjs.
taus) {
286 matchedTriggerObjs.clear();
287 matchedOfflineObjs.
clear();
314 matchedTriggerObjs.clear();
315 matchedOfflineObjs.
clear();
342 matchedTriggerObjs.clear();
343 matchedOfflineObjs.
clear();
370 matchedTriggerObjs.clear();
371 matchedOfflineObjs.
clear();
394 matchedTriggerObjs.clear();
395 matchedOfflineObjs.
clear();
407 matchedTriggerObjs.clear();
408 matchedOfflineObjs.
clear();
436 double taupt = matchedOfflineObjs.
taus[0].Pt();
437 double tauphi = matchedOfflineObjs.
taus[0].Phi();
438 double met = matchedOfflineObjs.
met[0].Pt();
439 double metphi = matchedOfflineObjs.
met[0].Phi();
440 double mT =
sqrt( 2 * taupt * met * (1-
cos(tauphi-metphi)) );
size_t getLastL2TauFilterIndex() const
MonitorElement * hL3TrigTauEtEffDenom_
MonitorElement * hTrigElectronEta_
bool hasL3Electrons() const
MonitorElement * hL3TrigTauPhiEffDenom_
MonitorElement * hL2TrigTauPhiEffDenom_
MonitorElement * hL3TrigMuonPhiEffNum_
MonitorElement * hL3TrigMuonEtaEffDenom_
MonitorElement * hL2TrigTauEtEffDenom_
MonitorElement * hTrigTauEt_
std::vector< LV > electrons
The single EDProduct to be saved for each event (AOD case)
def create(alignables, pedeDump, additionalData, outputFile, config)
size_t getLastL3ElectronFilterIndex() const
HLTTauDQMPathPlotter(const std::string &pathName, const HLTConfigProvider &HLTCP, bool doRefAnalysis, const std::string &dqmBaseFolder, const std::string &hltProcess, int ptbins, int etabins, int phibins, double ptmax, double highptmax, double l1MatchDr, double hltMatchDr)
size_t getLastL3MuonFilterIndex() const
MonitorElement * hTrigElectronPhi_
MonitorElement * hL3TrigTauEtEffNum_
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
int lastPassedFilter(const edm::TriggerResults &triggerResults) const
MonitorElement * hL2TrigMuonEtaEffNum_
const std::string & triggerTag() const
MonitorElement * hL3TrigMuonEtaEffNum_
MonitorElement * hL2TrigTauEtEffNum_
MonitorElement * hAcceptedEvents_
MonitorElement * hL2TrigElectronEtEffNum_
MonitorElement * hL2TrigMuonPhiEffNum_
int getFilterNElectrons(size_t i) const
int getFilterNTaus(size_t i) const
bool isFirstFilterL1Seed() const
MonitorElement * hL2TrigTauPhiEffNum_
size_t getLastFilterBeforeL3TauIndex() const
MonitorElement * hL3TrigMuonEtEffNum_
math::XYZTLorentzVectorD LV
MonitorElement * hL2TrigMuonEtEffDenom_
void getFilterObjects(const trigger::TriggerEvent &triggerEvent, size_t i, std::vector< Object > &retval) const
const std::string & getFilterType(size_t i) const
bool hasL2CaloMET() const
MonitorElement * hL3TrigTauHighEtEffNum_
MonitorElement * hL3TrigElectronEtaEffNum_
MonitorElement * hL2TrigElectronPhiEffDenom_
MonitorElement * hL3TrigTauEtaEffDenom_
int getFilterNMuons(size_t i) const
MonitorElement * hL2TrigMuonEtaEffDenom_
MonitorElement * hL2TrigMETEtEffDenom_
size_t getLastFilterBeforeL3ElectronIndex() const
Cos< T >::type cos(const T &t)
size_t filtersSize() const
size_t getLastFilterBeforeL2MuonIndex() const
MonitorElement * hL3TrigElectronEtEffDenom_
MonitorElement * hL3TrigTauPhiEffNum_
MonitorElement * book1D(Args &&...args)
MonitorElement * hTrigMETEt_
const bool doRefAnalysis_
MonitorElement * hL3TrigTauEtaEffNum_
size_t getLastL2CaloMETFilterIndex() const
void analyze(const edm::TriggerResults &triggerResults, const trigger::TriggerEvent &triggerEvent, const HLTTauDQMOfflineObjects &refCollection)
MonitorElement * hTrigMETPhi_
size_t getLastL2MuonFilterIndex() const
static std::string const triggerResults
MonitorElement * hTrigMuonEt_
MonitorElement * hL2TrigMETEtEffNum_
size_t getLastFilterBeforeL3MuonIndex() const
size_t getLastL3TauFilterIndex() const
MonitorElement * hL2TrigTauHighEtEffNum_
bool offlineMatching(size_t i, const std::vector< Object > &triggerObjects, const HLTTauDQMOfflineObjects &offlineObjects, double dR, std::vector< Object > &matchedTriggerObjects, HLTTauDQMOfflineObjects &matchedOfflineObjects) const
MonitorElement * hL3TrigElectronEtEffNum_
MonitorElement * hL3TrigElectronEtaEffDenom_
void bookHistograms(DQMStore::IBooker &iBooker)
MonitorElement * hL2TrigElectronPhiEffNum_
MonitorElement * hTrigTauPhi_
void setCurrentFolder(const std::string &fullpath)
MonitorElement * hL2TrigElectronEtaEffDenom_
MonitorElement * hTrigElectronEt_
MonitorElement * hL3TrigMuonPhiEffDenom_
const std::string & getFilterName(size_t i) const
bool fired(const edm::TriggerResults &triggerResults) const
size_t getLastL2ElectronFilterIndex() const
MonitorElement * hTrigMuonEta_
size_t getLastFilterBeforeL2TauIndex() const
int getFilterMET(size_t i) const
size_t getLastFilterBeforeL2ElectronIndex() const
const std::string & getPathName() const
MonitorElement * hL2TrigTauEtaEffNum_
MonitorElement * hL2TrigTauHighEtEffDenom_
size_t getFirstFilterBeforeL2CaloMETIndex() const
MonitorElement * hL3TrigElectronPhiEffDenom_
bool hasL2Electrons() const
MonitorElement * hTrigTauEta_
MonitorElement * hL2TrigTauEtaEffDenom_
MonitorElement * hL3TrigMuonEtEffDenom_
MonitorElement * hL2TrigElectronEtEffDenom_
MonitorElement * hL2TrigElectronEtaEffNum_
MonitorElement * hTrigMuonPhi_
MonitorElement * hL3TrigElectronPhiEffNum_
MonitorElement * hL2TrigMuonPhiEffDenom_
MonitorElement * hL3TrigTauHighEtEffDenom_
MonitorElement * hL2TrigMuonEtEffNum_