6 using namespace ROOT::Math::VectorUtil ;
87 edm::LogInfo(
"EmDQM") <<
"The following filter types are not analyzed: \n"
88 <<
"\tHLTGlobalSumsMET\n"
89 <<
"\tHLTHtMhtFilter\n"
97 <<
"\tPFTauSelector\n"
99 <<
"\tHLTPFJetCollectionsFilter\n"
100 <<
"\tHLTPFJetCollectionsVBFFilter\n"
102 <<
"\tEtMinCaloJetSelector\n"
103 <<
"\tEtMinPFJetSelector\n"
104 <<
"\tLargestEtCaloJetSelector\n"
105 <<
"\tLargestEtPFJetSelector\n"
106 <<
"\tHLTEgammaTriggerFilterObjectWrapper\n"
107 <<
"\tHLTEgammaDoubleLegCombFilter\n"
108 <<
"\tHLT2ElectronTau\n"
109 <<
"\tHLT2ElectronMET\n"
110 <<
"\tHLT2ElectronPFTau\n"
111 <<
"\tHLTPMMassFilter\n"
112 <<
"\tHLTHcalTowerFilter\n"
115 <<
"\tHLTRHemisphere\n"
116 <<
"\tHLTElectronPFMTFilter\n"
117 <<
"\tPrimaryVertexObjectFilter\n"
118 <<
"\tHLTEgammaAllCombMassFilter\n"
125 std::vector<std::vector<std::string> > egammaPaths =
findEgammaPaths();
132 std::vector<std::string> filterModules;
134 for (
unsigned int j=0;
j < egammaPaths.size() ;
j++) {
138 edm::LogPrint(
"EmDQM") <<
"/////////////////////////////////////////\nSingle electron paths: ";
141 edm::LogPrint(
"EmDQM") <<
"/////////////////////////////////////////\nDouble electron paths: ";
144 edm::LogPrint(
"EmDQM") <<
"/////////////////////////////////////////\nTriple electron paths: ";
147 edm::LogPrint(
"EmDQM") <<
"/////////////////////////////////////////\nSingle photon paths: ";
150 edm::LogPrint(
"EmDQM") <<
"/////////////////////////////////////////\nDouble photon paths: ";
155 for (
unsigned int i=0;
i < egammaPaths.at(
j).size() ;
i++) {
177 edm::LogWarning(
"EmDQM") <<
"Pathname: '" << pathName <<
"': Unable to determine a minimum Et. Will not include this path in the validation.";
185 if (ptMax < (1.2*genEtMin)) {
231 std::vector<edm::ParameterSet> filterVPSet;
236 for (std::vector<std::string>::iterator
filter = filterModules.begin();
filter != filterModules.end(); ++
filter) {
241 if (moduleType ==
"Pythia6GeneratorFilter" ||
242 moduleType ==
"HLTTriggerTypeFilter" ||
243 moduleType ==
"HLTLevel1Activity" ||
244 moduleType ==
"HLTPrescaler" ||
245 moduleType ==
"HLTBool")
249 if (moduleType ==
"HLTLevel1GTSeed") {
252 else if (moduleType ==
"HLTEgammaL1MatchFilterRegional") {
255 else if (moduleType ==
"HLTEgammaEtFilter") {
258 else if (moduleType ==
"HLTElectronOneOEMinusOneOPFilterRegional") {
261 else if (moduleType ==
"HLTElectronPixelMatchFilter") {
264 else if (moduleType ==
"HLTEgammaGenericFilter") {
267 else if (moduleType ==
"HLTEgammaGenericQuadraticFilter") {
270 else if (moduleType ==
"HLTElectronGenericFilter") {
273 else if (moduleType ==
"HLTEgammaDoubleEtDeltaPhiFilter") {
276 else if (moduleType ==
"HLTGlobalSumsMET"
277 || moduleType ==
"HLTHtMhtFilter"
278 || moduleType ==
"HLTMhtFilter"
279 || moduleType ==
"HLTJetTag"
280 || moduleType ==
"HLT1CaloJet"
281 || moduleType ==
"HLT1CaloMET"
282 || moduleType ==
"HLT1CaloBJet"
283 || moduleType ==
"HLT1Tau"
284 || moduleType ==
"HLT1PFTau"
285 || moduleType ==
"PFTauSelector"
286 || moduleType ==
"HLT1PFJet"
287 || moduleType ==
"HLTPFJetCollectionsFilter"
288 || moduleType ==
"HLTPFJetCollectionsVBFFilter"
289 || moduleType ==
"HLTPFJetTag"
290 || moduleType ==
"EtMinCaloJetSelector"
291 || moduleType ==
"EtMinPFJetSelector"
292 || moduleType ==
"LargestEtCaloJetSelector"
293 || moduleType ==
"LargestEtPFJetSelector"
294 || moduleType ==
"HLTEgammaTriggerFilterObjectWrapper"
295 || moduleType ==
"HLTEgammaDoubleLegCombFilter"
296 || moduleType ==
"HLT2ElectronMET"
297 || moduleType ==
"HLT2ElectronTau"
298 || moduleType ==
"HLT2ElectronPFTau"
299 || moduleType ==
"HLTPMMassFilter"
300 || moduleType ==
"HLTHcalTowerFilter"
301 || moduleType ==
"HLT1Photon"
302 || moduleType ==
"HLTRFilter"
303 || moduleType ==
"HLTRHemisphere"
304 || moduleType ==
"HLTElectronPFMTFilter"
305 || moduleType ==
"PrimaryVertexObjectFilter"
306 || moduleType ==
"HLTEgammaAllCombMassFilter"
307 || moduleType.find(
"HLTMuon") != std::string::npos
312 edm::LogWarning(
"EmDQM") <<
"No parameter set for filter '" << moduleLabel <<
"' with filter type '" << moduleType <<
"' added. Module will not be analyzed.";
317 if (!filterPSet.
empty()) {
333 filterVPSet.push_back(filterPSet);
341 if (!filterPSet.
empty()) {
350 paramSet.
addParameter<std::vector<edm::ParameterSet> >(
"filters", filterVPSet);
354 edm::LogPrint(
"EmDQM") <<
"Will not include this path in the validation due to errors while generating the parameter set.";
373 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt) {
397 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt) {
408 std::vector<MonitorElement*> etahist;
409 std::vector<MonitorElement*> phihist;
410 std::vector<MonitorElement*> ethist;
411 std::vector<MonitorElement*> etahistmatch;
412 std::vector<MonitorElement*> phihistmatch;
413 std::vector<MonitorElement*> ethistmatch;
414 std::vector<MonitorElement*> histEtOfHltObjMatchToGen;
415 std::vector<MonitorElement*> histEtaOfHltObjMatchToGen;
416 std::vector<MonitorElement*> histPhiOfHltObjMatchToGen;
438 histName=
"total_eff_MC_matched";
439 histTitle=
"total events passing (mc matched)";
456 pdgIdString=
"Electron";
break;
458 pdgIdString=
"Photon";
break;
460 pdgIdString=
"Particle";
464 histTitle=
"E_{T} of " + pdgIdString +
"s" ;
466 histName =
"gen_eta";
467 histTitle=
"#eta of "+ pdgIdString +
"s " ;
469 histName =
"gen_phi";
470 histTitle=
"#phi of "+ pdgIdString +
"s " ;
477 std::vector<std::string> HltHistTitle;
490 histTitle = HltHistTitle[
i]+
" Et (ALL)";
492 ethist.push_back(tmphisto);
496 histTitle = HltHistTitle[
i]+
" #eta (ALL)";
498 etahist.push_back(tmphisto);
503 histTitle = HltHistTitle[
i]+
" #phi (ALL)";
505 phihist.push_back(tmphisto);
511 histTitle = HltHistTitle[
i]+
" Et";
513 histEtOfHltObjMatchToGen.push_back(tmphisto);
517 histTitle = HltHistTitle[
i]+
" eta";
519 histEtaOfHltObjMatchToGen.push_back(tmphisto);
524 histTitle = HltHistTitle[
i]+
" phi";
526 histPhiOfHltObjMatchToGen.push_back(tmphisto);
532 histTitle = HltHistTitle[
i]+
" Et (MC matched)";
534 ethistmatch.push_back(tmphisto);
538 histTitle = HltHistTitle[
i]+
" #eta (MC matched)";
540 etahistmatch.push_back(tmphisto);
545 histTitle = HltHistTitle[
i]+
" #phi (MC matched)";
547 phihistmatch.push_back(tmphisto);
603 std::vector<reco::LeafCandidate> allSortedGenParticles;
610 if ( !(
abs((*currentGenParticle).pdgId())==
pdgGen && (*currentGenParticle).status()==1 && (*currentGenParticle).et() > 2.0) )
continue;
616 allSortedGenParticles.push_back(tmpcand);
622 if (allSortedGenParticles.size() <
gencut_)
632 for (
unsigned int i = 0 ;
i <
gencut_ ;
i++ ) {
633 bool inECALgap = fabs(allSortedGenParticles[
i].
eta()) > 1.4442 && fabs(allSortedGenParticles[
i].
eta()) < 1.556;
634 if ( (fabs(allSortedGenParticles[
i].
eta()) >
genEtaAcc_) || inECALgap ) {
669 if(!referenceParticles.
isValid()) {
675 std::vector<const reco::Candidate *> allSortedReferenceParticles;
678 currentReferenceParticle != referenceParticles->end();
679 currentReferenceParticle++)
681 if ( currentReferenceParticle->et() <= 2.0)
689 if (currentReferenceParticle->et() <
plotEtMin)
693 allSortedReferenceParticles.push_back(&(*currentReferenceParticle));
699 return allSortedReferenceParticles.size() >=
gencut_;
709 unsigned int vPos = 0;
710 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt, ++vPos) {
739 if (cutCounter->size() < (
unsigned int)
gencut_) {
750 edm::LogWarning(
"EmDQM") <<
"parameter triggerobject (" <<
triggerObject_ <<
") does not corresond to a valid TriggerEventWithRefs product. Please check especially the process name (e.g. when running over reprocessed datasets)";
784 std::vector<reco::Particle> sortedGen;
786 reco::Particle tmpcand( genpart->charge(), genpart->p4(), genpart->vertex(),genpart->pdgId(),genpart->status() );
788 sortedGen.push_back(tmpcand);
796 if (sortedGen.size() <
gencut_){
799 sortedGen.erase(sortedGen.begin()+
gencut_,sortedGen.end());
801 for (
unsigned int i = 0 ;
i <
gencut_ ;
i++ ) {
802 etgens.at(vPos)->Fill( sortedGen[
i].et() );
811 bool accepted =
true;
824 std::vector<reco::Particle> sortedGenForFilter(sortedGen);
825 sortedGenForFilter.erase(sortedGenForFilter.begin() +
nCandCuts.at(
n), sortedGenForFilter.end());
849 throw(
cms::Exception(
"Release Validation Error") <<
"HLT output type not implemented: theHLTOutputTypes[n]" );
865 std::vector<edm::Ref<T> > recoecalcands;
881 std::vector<edm::Ref<T> > isocands;
883 if (isocands.size()>0)
885 for (
unsigned int i=0;
i < isocands.size();
i++)
886 recoecalcands.push_back(isocands[
i]);
891 if (recoecalcands.size() < 1){
897 if (recoecalcands.size() >=
dqm->nCandCuts.at(n) && !
dqm->mcMatchedOnly_)
898 dqm->totals.at(vPos)->Fill(n+0.5);
904 for (
unsigned int j=0;
j<recoecalcands.size();
j++){
905 if(!( recoecalcands.at(
j).isAvailable())){
906 if (
dqm->verbosity_ >=
dqm->OUTPUT_ERRORS)
907 edm::LogError(
"EmDQMInvalidRefs") <<
"Event content inconsistent: TriggerEventWithRefs contains invalid Refs. Invalid refs for: " <<
dqm->
theHLTCollectionLabels[
n].label() <<
". The collection that this module uses may has been dropped in the event.";
912 if (!
dqm->mcMatchedOnly_) {
918 for (
unsigned int i=0;
i <
dqm->nCandCuts.at(n);
i++) {
921 float closestDeltaR = 0.5;
922 int closestEcalCandIndex = -1;
923 for (
unsigned int j=0;
j<recoecalcands.size();
j++) {
924 float deltaR =
DeltaR(recoecalcands[
j]->momentum(),currentGenParticleMomentum);
926 if (deltaR < closestDeltaR) {
928 closestEcalCandIndex =
j;
934 if ( closestEcalCandIndex >= 0 ) {
935 dqm->histEtOfHltObjMatchToGens.at(vPos).at(n)->Fill( recoecalcands[closestEcalCandIndex]->et() );
936 dqm->histEtaOfHltObjMatchToGens.at(vPos).at(n)->Fill( recoecalcands[closestEcalCandIndex]->
eta() );
937 if (!
dqm->noPhiPlots_)
dqm->histPhiOfHltObjMatchToGens.at(vPos).at(n)->Fill( recoecalcands[closestEcalCandIndex]->
phi() );
948 for (
unsigned int i=0;
i<recoecalcands.size();
i++) {
966 dqm->ethists.at(vPos).at(n) ->Fill(recoecalcands[
i]->et() );
967 dqm->etahists.at(vPos).at(n)->Fill(recoecalcands[
i]->
eta() );
968 if (!
dqm->noPhiPlots_)
dqm->phihists.at(vPos).at(n)->Fill(recoecalcands[
i]->
phi() );
976 unsigned int matchedMcParts = 0;
978 if(n==0) mindist=0.5;
979 for(
unsigned int i =0;
i <
dqm->nCandCuts.at(n); ++
i){
981 bool matchThis=
false;
984 double closestDr = 1000.;
985 for(
unsigned int trigOb = 0 ; trigOb < recoecalcands.size(); ++trigOb){
986 double dr =
DeltaR(recoecalcands[trigOb]->momentum(),candDir);
987 if (dr < closestDr) {
991 if (closestDr > mindist) {
1003 dqm->ethistmatchs.at(vPos).at(n) ->Fill( sortedGen[
i].et() );
1004 if (sortedGen[
i].et() >
dqm->minEtForEtaEffPlot_) {
1005 dqm->etahistmatchs.at(vPos).at(n)->Fill( sortedGen[
i].
eta() );
1006 if (!
dqm->noPhiPlots_)
dqm->phihistmatchs.at(vPos).at(n)->Fill( sortedGen[
i].
phi() );
1011 if (matchedMcParts >=
dqm->nCandCuts.at(n) && accepted ==
true)
1012 dqm->totalmatchs.at(vPos)->Fill(n+0.5);
1019 unsigned int vPos = 0;
1020 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt, ++vPos) {
1027 std::vector<std::string> labelsNeverFound;
1033 labelsNeverFound.push_back(tag.
encode());
1037 if (labelsNeverFound.empty())
1040 std::sort(labelsNeverFound.begin(), labelsNeverFound.end());
1046 edm::LogWarning(
"EmDQM") <<
"There were some HLTCollectionLabels which were never found:";
1068 if (sub.length() == 0)
return 0;
1070 for (
size_t offset = str.find(sub);
offset != std::string::npos;
1080 std::vector<std::vector<std::string> >
1083 std::vector<std::vector<std::string> > Paths(5);
1090 if (
int(path.find(
"HLT_")) == 0) {
1099 int totEleCount = 2*tripleEleCount + doubleEleCount + eleCount + scCount;
1100 int totPhotonCount = doublePhotonCount + photonCount;
1102 if (totEleCount + totPhotonCount < 1)
continue;
1103 switch (totEleCount) {
1118 switch (totPhotonCount) {
1136 std::vector<std::string>
1139 std::vector<std::string>
filters;
1151 if (moduleEDMType ==
"EDFilter" || moduleType.find(
"Filter") != std::string::npos) {
1152 filters.push_back(module);
1166 boost::regex reg(
"^HLT_.*?(Ele|Photon|EG|SC)([[:digit:]]+).*");
1169 if (boost::regex_match(path, what, reg, boost::match_extra))
1171 minEt = boost::lexical_cast<
double>(what[2]);
1188 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1191 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1201 int candCount = 2*tEgCount + dEgCount + egCount;
1203 if (orCount > 0 && candCount > 0) {
1204 if (egCount % (orCount+1) == 0 && dEgCount % (orCount+1) == 0 && tEgCount % (orCount+1) == 0) candCount /= (orCount+1);
1205 else candCount = -1;
1208 switch (candCount) {
1240 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1243 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1257 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1260 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1274 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1277 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1291 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1294 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1308 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1311 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1362 std::vector<edm::InputTag> isoCollections;
1363 isoCollections.push_back(isoTag);
1364 if (!nonIsoTag.label().empty())
1365 isoCollections.push_back(nonIsoTag);
1371 if (inputType ==
"EgammaHLTR9Producer" ||
1372 inputType ==
"EgammaHLTR9IDProducer" ||
1373 inputType ==
"EgammaHLTClusterShapeProducer" ||
1374 inputType ==
"EgammaHLTEcalRecIsolationProducer" ||
1375 inputType ==
"EgammaHLTHcalIsolationProducersRegional" ||
1376 inputType ==
"EgammaHLTGsfTrackVarProducer"
1378 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1381 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", isoCollections);
1388 edm::LogError(
"EmDQM") <<
"Can't determine what the HLTEgammaGenericFilter '" << moduleName <<
"' should do: uses a collection produced by a module of C++ type '" << inputType <<
"'.";
1436 std::vector<edm::InputTag> isoCollections;
1437 isoCollections.push_back(isoTag);
1438 if (!nonIsoTag.label().empty())
1439 isoCollections.push_back(nonIsoTag);
1445 if (inputType ==
"EgammaHLTR9Producer" ||
1446 inputType ==
"EgammaHLTR9IDProducer" ||
1447 inputType ==
"EgammaHLTClusterShapeProducer" ||
1448 inputType ==
"EgammaHLTEcalRecIsolationProducer" ||
1449 inputType ==
"EgammaHLTHcalIsolationProducersRegional" ||
1450 inputType ==
"EgammaHLTPhotonTrackIsolationProducersRegional"
1452 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1455 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", isoCollections);
1462 edm::LogError(
"EmDQM") <<
"Can't determine what the HLTEgammaGenericQuadraticFilter '" << moduleName <<
"' should do: uses a collection produced by a module of C++ type '" << inputType <<
"'.";
1505 std::vector<edm::InputTag> isoCollections;
1506 isoCollections.push_back(isoTag);
1507 if (!nonIsoTag.label().empty())
1508 isoCollections.push_back(nonIsoTag);
1516 if (inputType ==
"EgammaHLTElectronDetaDphiProducer" ||
1517 inputType ==
"EgammaHLTElectronTrackIsolationProducers"
1519 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1522 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", isoCollections);
1529 edm::LogError(
"EmDQM") <<
"Can't determine what the HLTElectronGenericFilter '" << moduleName <<
"' should do: uses a collection produced by a module of C++ type '" << inputType <<
"'.";
1539 pathIndex = psetIt->getUntrackedParameter<
unsigned int>(
"pathIndex", 0);
1541 reqNum = psetIt->getParameter<
unsigned int>(
"reqNum");
1542 pdgGen = psetIt->getParameter<
int>(
"pdgGen");
1544 plotEtMin = psetIt->getUntrackedParameter<
double>(
"genEtMin",0.);
1545 plotPtMin = psetIt->getUntrackedParameter<
double>(
"PtMin",0.);
1546 plotPtMax = psetIt->getUntrackedParameter<
double>(
"PtMax",1000.);
1550 gencut_ = psetIt->getParameter<
int>(
"cutnum");
1556 std::vector<edm::ParameterSet>
filters =
1557 psetIt->getParameter<std::vector<edm::ParameterSet> >(
"filters");
1569 for(std::vector<edm::ParameterSet>::iterator filterconf = filters.begin() ; filterconf != filters.end() ; filterconf++)
1573 theHLTOutputTypes.push_back(filterconf->getParameter<
int>(
"theHLTOutputTypes"));
1577 std::vector<double> bounds = filterconf->getParameter<std::vector<double> >(
"PlotBounds");
1579 assert(bounds.size() == 2);
1580 plotBounds.push_back(std::pair<double,double>(bounds[0],bounds[1]));
1581 isoNames.push_back(filterconf->getParameter<std::vector<edm::InputTag> >(
"IsoCollections"));
1607 if (
isoNames.back().at(0).label()==
"none") {
1611 else plotiso.push_back(
false);
1613 nCandCuts.push_back(filterconf->getParameter<
int>(
"ncandcut"));
unsigned int size() const
number of trigger paths in trigger table
edm::ParameterSet makePSetForEgammaGenericFilter(const std::string &)
T getParameter(std::string const &) const
std::vector< MonitorElement * > totals
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet makePSetForEgammaGenericQuadraticFilter(const std::string &)
bool saveTags(const std::string &module) const
Is module an L3 filter (ie, tracked saveTags=true)
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidZee_token
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
void fillHistos(edm::Handle< trigger::TriggerEventWithRefs > &, const edm::Event &, unsigned int, unsigned int, std::vector< reco::Particle > &, bool &)
edm::EDGetTokenT< edm::View< reco::Candidate > > genParticles_token
const std::string moduleType(const std::string &module) const
C++ class name of module.
std::vector< std::vector< MonitorElement * > > histEtOfHltObjMatchToGens
std::vector< std::vector< std::string > > findEgammaPaths()
bool checkRecoParticlesRequirement(const edm::Event &event)
const std::string & triggerName(unsigned int triggerIndex) const
virtual double et() const
transverse energy
unsigned int numOfHLTCollectionLabels
std::vector< std::vector< MonitorElement * > > phihists
std::vector< std::set< std::string > > hltCollectionLabelsMissedPerPath
static const unsigned OUTPUT_ALL
#define DEFINE_FWK_MODULE(type)
std::set< std::string > hltCollectionLabelsFound
std::vector< std::vector< MonitorElement * > > histPhiOfHltObjMatchToGens
std::vector< std::set< std::string > > hltCollectionLabelsFoundPerPath
bool exists(std::string const ¶meterName) const
checks if a parameter exists
HLTConfigProvider hltConfig_
The instance of the HLTConfigProvider as a data member.
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)
const std::string moduleEDMType(const std::string &module) const
C++ base class name of module.
std::vector< int > theHLTOutputTypes
edm::ParameterSet makePSetForOneOEMinusOneOPFilter(const std::string &)
const std::string & tableName() const
HLT ConfDB table name.
static const unsigned TYPE_DOUBLE_PHOTON
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
edm::ParameterSet makePSetForElectronGenericFilter(const std::string &)
HistoFiller< reco::ElectronCollection > * histoFillerEle
std::vector< TPRegexp > filters
bool changed() const
changed?
std::vector< std::vector< MonitorElement * > > etahists
static const unsigned OUTPUT_ERRORS
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidWenu_token
const std::string & moduleLabel(unsigned int trigger, unsigned int module) const
static const std::string removeVersion(const std::string &trigger)
GreaterByPt< reco::GenParticle > pTGenComparator_
bool inited() const
Accessors (const methods)
std::vector< std::vector< edm::InputTag > > isoNames
edm::ParameterSet makePSetForL1SeedFilter(const std::string &)
std::vector< MonitorElement * > etagens
std::vector< std::vector< MonitorElement * > > ethists
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
std::vector< std::string > getFilterModules(const std::string &)
std::vector< edm::InputTag > theHLTCollectionLabels
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1Iso
std::string moduleName(Provenance const &provenance)
unsigned int moduleIndex(unsigned int trigger, const std::string &module) const
slot position of module on trigger path (0 to size-1)
HistoFiller< l1extra::L1EmParticleCollection > * histoFillerL1NonIso
std::vector< std::vector< MonitorElement * > > ethistmatchs
tuple path
else: Piece not in the list, fine.
std::vector< unsigned int > nCandCuts
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerPho
edm::InputTag triggerObject_
void endRun(edm::Run const &, edm::EventSetup const &)
static const unsigned OUTPUT_WARNINGS
void addParameter(std::string const &name, T const &value)
void dqmBeginRun(edm::Run const &, edm::EventSetup const &)
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidGammaJet_token
std::set< std::string > hltCollectionLabelsMissed
std::vector< std::vector< MonitorElement * > > etahistmatchs
MonitorElement * book1D(Args &&...args)
void SetVarsFromPSet(std::vector< edm::ParameterSet >::iterator)
Abs< T >::type abs(const T &t)
const edm::ParameterSet & pset
edm::InputTag gencutCollection_
edm::ParameterSet makePSetForEgammaDoubleEtDeltaPhiFilter(const std::string &)
unsigned int offset(bool)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::vector< std::vector< MonitorElement * > > phihistmatchs
EmDQM(const edm::ParameterSet &pset)
Constructor.
const std::string & processName() const
process name
double deltaR(double eta1, double eta2, double phi1, double phi2)
static const unsigned TYPE_SINGLE_PHOTON
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidDiGamma_token
void setCurrentFolder(const std::string &fullpath)
bool checkGeneratedParticlesRequirement(const edm::Event &event)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
void addUntrackedParameter(std::string const &name, T const &value)
std::vector< edm::ParameterSet > paramSets
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_fidTripleEle_token
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
std::vector< std::vector< MonitorElement * > > histEtaOfHltObjMatchToGens
int countSubstring(const std::string &, const std::string &)
void analyze(const edm::Event &event, const edm::EventSetup &)
std::vector< edm::InputTag > theHLTCollectionLabels
static const unsigned TYPE_SINGLE_ELE
double getPrimaryEtCut(const std::string &)
edm::ParameterSet makePSetForL1SeedToSuperClusterMatchFilter(const std::string &)
bool useHumanReadableHistTitles_
edm::EDGetTokenT< trigger::TriggerEventWithRefs > triggerObject_token
std::vector< MonitorElement * > totalmatchs
static const unsigned TYPE_DOUBLE_ELE
HistoFiller< reco::RecoEcalCandidateCollection > * histoFillerClu
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
static const unsigned TYPE_TRIPLE_ELE
std::vector< std::string > theHLTCollectionHumanNames
edm::EDGetTokenT< edm::View< reco::Candidate > > gencutColl_manualConf_token
GreaterByPt< reco::Particle > pTComparator_
std::vector< MonitorElement * > phigens
std::vector< int > theHLTOutputTypes
edm::ParameterSet makePSetForEtFilter(const std::string &)
edm::ParameterSet makePSetForPixelMatchFilter(const std::string &)
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
unsigned int minEtForEtaEffPlot_
edm::EDGetTokenT< edm::TriggerResults > hltResults_token
std::vector< std::pair< double, double > > plotBounds
std::vector< MonitorElement * > etgens
std::vector< bool > plotiso