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)
127 int lastMatchedMETFilter = -1;
133 if(
name ==
"tau-met"){
134 this->
hMass_ = iBooker.
book1D(
"ReferenceMass",
"Transverse mass of reference "+
name+
";Reference transverse mass;entries", 100, 0, 500);
136 this->
hMass_ = iBooker.
book1D(
"ReferenceMass",
"Invariant mass of reference "+
name+
";Reference invariant mass;entries", 100, 0, 500);
139 LogDebug(
"HLTTauDQMOffline") <<
"Path " <<
hltPath_.
getPathName() <<
" number of taus " << ntaus <<
" electrons " << neles <<
" muons " << nmus;
159 if(ntaus == 2 && neles == 0 && nmus == 0 && nmet == 0)
create(
"di-tau");
160 if(ntaus == 1 && neles == 1 && nmus == 0 && nmet == 0)
create(
"electron-tau");
161 if(ntaus == 1 && neles == 0 && nmus == 1 && nmet == 0)
create(
"muon-tau");
162 if(ntaus == 1 && neles == 0 && nmus == 0 && nmet == 1)
create(
"tau-met");
170 std::vector<HLTTauDQMPath::Object> triggerObjs;
171 std::vector<HLTTauDQMPath::Object> matchedTriggerObjs;
176 int lastMatchedFilter = -1;
177 int lastMatchedMETFilter = -1;
178 int lastMatchedElectronFilter = -1;
179 int lastMatchedMuonFilter = -1;
180 int lastMatchedTauFilter = -1;
181 int firstMatchedMETFilter = -1;
185 for(
int i=0;
i<=lastPassedFilter; ++
i) {
187 matchedTriggerObjs.clear();
188 matchedOfflineObjs.
clear();
198 lastMatchedFilter =
i;
210 for(
int i=0;
i<=lastPassedFilter; ++
i) {
232 matchedTriggerObjs.clear();
233 matchedOfflineObjs.
clear();
237 for(
const LV&
tau: matchedOfflineObjs.
taus) {
263 matchedTriggerObjs.clear();
264 matchedOfflineObjs.
clear();
268 for(
const LV&
tau: matchedOfflineObjs.
taus) {
293 matchedTriggerObjs.clear();
294 matchedOfflineObjs.
clear();
321 matchedTriggerObjs.clear();
322 matchedOfflineObjs.
clear();
349 matchedTriggerObjs.clear();
350 matchedOfflineObjs.
clear();
377 matchedTriggerObjs.clear();
378 matchedOfflineObjs.
clear();
401 matchedTriggerObjs.clear();
402 matchedOfflineObjs.
clear();
414 matchedTriggerObjs.clear();
415 matchedOfflineObjs.
clear();
443 double taupt = matchedOfflineObjs.
taus[0].Pt();
444 double tauphi = matchedOfflineObjs.
taus[0].Phi();
445 double met = matchedOfflineObjs.
met[0].Pt();
446 double metphi = matchedOfflineObjs.
met[0].Phi();
447 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)
math::XYZTLorentzVectorD LV
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_
MonitorElement * hL3TrigTauEtaPhiEffDenom_
size_t getLastFilterBeforeL3TauIndex() const
MonitorElement * hL3TrigMuonEtEffNum_
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
void setCurrentFolder(std::string const &fullpath)
MonitorElement * hL3TrigTauEtaPhiEffNum_
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_
MonitorElement * book2D(Args &&...args)
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_