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()) {
328 edm::LogPrint(
"EmDQM") <<
"No number of candidates for filter " << moduleLabel <<
" found. Set to " << paramSet.
getParameter<
int>(
"cutnum") <<
", determined from path name.";
331 edm::LogPrint(
"EmDQM") <<
"Changed required number of candidates from " << paramSet.
getParameter<
int>(
"cutnum") <<
" to " << filterPSet.
getParameter<
int>(
"ncandcut") <<
" for filter " << moduleLabel;
336 filterVPSet.push_back(filterPSet);
344 if (!filterPSet.
empty()) {
353 paramSet.
addParameter<std::vector<edm::ParameterSet> >(
"filters", filterVPSet);
357 edm::LogPrint(
"EmDQM") <<
"Will not include this path in the validation due to errors while generating the parameter set.";
376 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt) {
400 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt) {
411 std::vector<MonitorElement*> etahist;
412 std::vector<MonitorElement*> phihist;
413 std::vector<MonitorElement*> ethist;
414 std::vector<MonitorElement*> etahistmatch;
415 std::vector<MonitorElement*> phihistmatch;
416 std::vector<MonitorElement*> ethistmatch;
417 std::vector<MonitorElement*> histEtOfHltObjMatchToGen;
418 std::vector<MonitorElement*> histEtaOfHltObjMatchToGen;
419 std::vector<MonitorElement*> histPhiOfHltObjMatchToGen;
441 histName=
"total_eff_MC_matched";
442 histTitle=
"total events passing (mc matched)";
459 pdgIdString=
"Electron";
break;
461 pdgIdString=
"Photon";
break;
463 pdgIdString=
"Particle";
467 histTitle=
"E_{T} of " + pdgIdString +
"s" ;
469 histName =
"gen_eta";
470 histTitle=
"#eta of "+ pdgIdString +
"s " ;
472 histName =
"gen_phi";
473 histTitle=
"#phi of "+ pdgIdString +
"s " ;
480 std::vector<std::string> HltHistTitle;
493 histTitle = HltHistTitle[
i]+
" Et (ALL)";
495 ethist.push_back(tmphisto);
499 histTitle = HltHistTitle[
i]+
" #eta (ALL)";
501 etahist.push_back(tmphisto);
506 histTitle = HltHistTitle[
i]+
" #phi (ALL)";
508 phihist.push_back(tmphisto);
514 histTitle = HltHistTitle[
i]+
" Et";
516 histEtOfHltObjMatchToGen.push_back(tmphisto);
520 histTitle = HltHistTitle[
i]+
" eta";
522 histEtaOfHltObjMatchToGen.push_back(tmphisto);
527 histTitle = HltHistTitle[
i]+
" phi";
529 histPhiOfHltObjMatchToGen.push_back(tmphisto);
535 histTitle = HltHistTitle[
i]+
" Et (MC matched)";
537 ethistmatch.push_back(tmphisto);
541 histTitle = HltHistTitle[
i]+
" #eta (MC matched)";
543 etahistmatch.push_back(tmphisto);
548 histTitle = HltHistTitle[
i]+
" #phi (MC matched)";
550 phihistmatch.push_back(tmphisto);
606 std::vector<reco::LeafCandidate> allSortedGenParticles;
613 if ( !(
abs((*currentGenParticle).pdgId())==
pdgGen && (*currentGenParticle).status()==1 && (*currentGenParticle).et() > 2.0) )
continue;
619 allSortedGenParticles.push_back(tmpcand);
625 if (allSortedGenParticles.size() <
gencut_)
635 for (
unsigned int i = 0 ;
i <
gencut_ ;
i++ ) {
636 bool inECALgap = fabs(allSortedGenParticles[
i].
eta()) > 1.4442 && fabs(allSortedGenParticles[
i].
eta()) < 1.556;
637 if ( (fabs(allSortedGenParticles[
i].
eta()) >
genEtaAcc_) || inECALgap ) {
672 if(!referenceParticles.
isValid()) {
678 std::vector<const reco::Candidate *> allSortedReferenceParticles;
681 currentReferenceParticle != referenceParticles->end();
682 currentReferenceParticle++)
684 if ( currentReferenceParticle->et() <= 2.0)
692 if (currentReferenceParticle->et() <
plotEtMin)
696 allSortedReferenceParticles.push_back(&(*currentReferenceParticle));
702 return allSortedReferenceParticles.size() >=
gencut_;
712 unsigned int vPos = 0;
713 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt, ++vPos) {
742 if (cutCounter->size() < (
unsigned int)
gencut_) {
753 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)";
787 std::vector<reco::Particle> sortedGen;
789 reco::Particle tmpcand( genpart->charge(), genpart->p4(), genpart->vertex(),genpart->pdgId(),genpart->status() );
791 sortedGen.push_back(tmpcand);
799 if (sortedGen.size() <
gencut_){
802 sortedGen.erase(sortedGen.begin()+
gencut_,sortedGen.end());
804 for (
unsigned int i = 0 ;
i <
gencut_ ;
i++ ) {
805 etgens.at(vPos)->Fill( sortedGen[
i].et() );
814 bool accepted =
true;
827 std::vector<reco::Particle> sortedGenForFilter(sortedGen);
828 sortedGenForFilter.erase(sortedGenForFilter.begin() +
nCandCuts.at(
n), sortedGenForFilter.end());
852 throw(
cms::Exception(
"Release Validation Error") <<
"HLT output type not implemented: theHLTOutputTypes[n]" );
868 std::vector<edm::Ref<T> > recoecalcands;
884 std::vector<edm::Ref<T> > isocands;
886 if (isocands.size()>0)
888 for (
unsigned int i=0;
i < isocands.size();
i++)
889 recoecalcands.push_back(isocands[
i]);
894 if (recoecalcands.size() < 1){
900 if (recoecalcands.size() >=
dqm->nCandCuts.at(n) && !
dqm->mcMatchedOnly_)
901 dqm->totals.at(vPos)->Fill(n+0.5);
907 for (
unsigned int j=0;
j<recoecalcands.size();
j++){
908 if(!( recoecalcands.at(
j).isAvailable())){
909 if (
dqm->verbosity_ >=
dqm->OUTPUT_ERRORS)
910 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.";
915 if (!
dqm->mcMatchedOnly_) {
921 for (
unsigned int i=0;
i <
dqm->nCandCuts.at(n);
i++) {
924 float closestDeltaR = 0.5;
925 int closestEcalCandIndex = -1;
926 for (
unsigned int j=0;
j<recoecalcands.size();
j++) {
927 float deltaR =
DeltaR(recoecalcands[
j]->momentum(),currentGenParticleMomentum);
929 if (deltaR < closestDeltaR) {
931 closestEcalCandIndex =
j;
937 if ( closestEcalCandIndex >= 0 ) {
938 dqm->histEtOfHltObjMatchToGens.at(vPos).at(n)->Fill( recoecalcands[closestEcalCandIndex]->et() );
939 dqm->histEtaOfHltObjMatchToGens.at(vPos).at(n)->Fill( recoecalcands[closestEcalCandIndex]->
eta() );
940 if (!
dqm->noPhiPlots_)
dqm->histPhiOfHltObjMatchToGens.at(vPos).at(n)->Fill( recoecalcands[closestEcalCandIndex]->
phi() );
951 for (
unsigned int i=0;
i<recoecalcands.size();
i++) {
969 dqm->ethists.at(vPos).at(n) ->Fill(recoecalcands[
i]->et() );
970 dqm->etahists.at(vPos).at(n)->Fill(recoecalcands[
i]->
eta() );
971 if (!
dqm->noPhiPlots_)
dqm->phihists.at(vPos).at(n)->Fill(recoecalcands[
i]->
phi() );
979 unsigned int matchedMcParts = 0;
981 if(n==0) mindist=0.5;
982 for(
unsigned int i =0;
i <
dqm->nCandCuts.at(n); ++
i){
984 bool matchThis=
false;
987 double closestDr = 1000.;
988 for(
unsigned int trigOb = 0 ; trigOb < recoecalcands.size(); ++trigOb){
989 double dr =
DeltaR(recoecalcands[trigOb]->momentum(),candDir);
990 if (dr < closestDr) {
994 if (closestDr > mindist) {
1006 dqm->ethistmatchs.at(vPos).at(n) ->Fill( sortedGen[
i].et() );
1007 if (sortedGen[
i].et() >
dqm->minEtForEtaEffPlot_) {
1008 dqm->etahistmatchs.at(vPos).at(n)->Fill( sortedGen[
i].
eta() );
1009 if (!
dqm->noPhiPlots_)
dqm->phihistmatchs.at(vPos).at(n)->Fill( sortedGen[
i].
phi() );
1014 if (matchedMcParts >=
dqm->nCandCuts.at(n) && accepted ==
true)
1015 dqm->totalmatchs.at(vPos)->Fill(n+0.5);
1022 unsigned int vPos = 0;
1023 for (std::vector<edm::ParameterSet>::iterator psetIt =
paramSets.begin(); psetIt !=
paramSets.end(); ++psetIt, ++vPos) {
1030 std::vector<std::string> labelsNeverFound;
1036 labelsNeverFound.push_back(tag.
encode());
1040 if (labelsNeverFound.empty())
1043 std::sort(labelsNeverFound.begin(), labelsNeverFound.end());
1049 edm::LogWarning(
"EmDQM") <<
"There were some HLTCollectionLabels which were never found:";
1071 if (sub.length() == 0)
return 0;
1073 for (
size_t offset = str.find(sub);
offset != std::string::npos;
1083 std::vector<std::vector<std::string> >
1086 std::vector<std::vector<std::string> > Paths(5);
1093 if (
int(path.find(
"HLT_")) == 0) {
1103 int totEleCount = 2*tripleEleCount + doubleEleCount + eleCount + scCount + 2*doubleSCCount;
1104 int totPhotonCount = doublePhotonCount + photonCount;
1106 if (totEleCount + totPhotonCount < 1)
continue;
1107 switch (totEleCount) {
1122 switch (totPhotonCount) {
1140 std::vector<std::string>
1143 std::vector<std::string>
filters;
1155 if (moduleEDMType ==
"EDFilter" || moduleType.find(
"Filter") != std::string::npos) {
1156 filters.push_back(module);
1170 boost::regex reg(
"^HLT_.*?(Ele|hoton|EG|SC)([[:digit:]]+).*");
1173 if (boost::regex_match(path, what, reg, boost::match_extra))
1175 minEt = boost::lexical_cast<
double>(what[2]);
1192 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1195 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1205 int candCount = 2*tEgCount + dEgCount + egCount;
1207 if (orCount > 0 && candCount > 0) {
1208 if (egCount % (orCount+1) == 0 && dEgCount % (orCount+1) == 0 && tEgCount % (orCount+1) == 0) candCount /= (orCount+1);
1209 else if (egCount-dEgCount-tEgCount > 0) candCount = 1;
1210 else if (dEgCount > 0) candCount = 2;
1211 else if (tEgCount > 0) candCount = 3;
1212 else candCount = -1;
1215 switch (candCount) {
1247 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1250 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1264 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1267 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1281 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1284 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1298 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1301 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1315 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1318 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", std::vector<edm::InputTag>(1,
std::string(
"none")));
1369 std::vector<edm::InputTag> isoCollections;
1370 isoCollections.push_back(isoTag);
1371 if (!nonIsoTag.label().empty())
1372 isoCollections.push_back(nonIsoTag);
1378 if (inputType ==
"EgammaHLTR9Producer" ||
1379 inputType ==
"EgammaHLTR9IDProducer" ||
1380 inputType ==
"EgammaHLTClusterShapeProducer" ||
1381 inputType ==
"EgammaHLTEcalRecIsolationProducer" ||
1382 inputType ==
"EgammaHLTHcalIsolationProducersRegional" ||
1383 inputType ==
"EgammaHLTGsfTrackVarProducer" ||
1384 inputType ==
"EgammaHLTBcHcalIsolationProducersRegional" ||
1385 inputType ==
"EgammaHLTEcalPFClusterIsolationProducer" ||
1386 inputType ==
"EgammaHLTHcalPFClusterIsolationProducer" ||
1387 inputType ==
"EgammaHLTElectronTrackIsolationProducers"
1389 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1392 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", isoCollections);
1399 edm::LogError(
"EmDQM") <<
"Can't determine what the HLTEgammaGenericFilter '" << moduleName <<
"' should do: uses a collection produced by a module of C++ type '" << inputType <<
"'.";
1447 std::vector<edm::InputTag> isoCollections;
1448 isoCollections.push_back(isoTag);
1449 if (!nonIsoTag.label().empty())
1450 isoCollections.push_back(nonIsoTag);
1456 if (inputType ==
"EgammaHLTR9Producer" ||
1457 inputType ==
"EgammaHLTR9IDProducer" ||
1458 inputType ==
"EgammaHLTClusterShapeProducer" ||
1459 inputType ==
"EgammaHLTEcalRecIsolationProducer" ||
1460 inputType ==
"EgammaHLTHcalIsolationProducersRegional" ||
1461 inputType ==
"EgammaHLTBcHcalIsolationProducersRegional" ||
1462 inputType ==
"EgammaHLTEcalPFClusterIsolationProducer" ||
1463 inputType ==
"EgammaHLTHcalPFClusterIsolationProducer" ||
1464 inputType ==
"EgammaHLTPhotonTrackIsolationProducersRegional"
1466 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1469 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", isoCollections);
1476 edm::LogError(
"EmDQM") <<
"Can't determine what the HLTEgammaGenericQuadraticFilter '" << moduleName <<
"' should do: uses a collection produced by a module of C++ type '" << inputType <<
"'.";
1519 std::vector<edm::InputTag> isoCollections;
1520 isoCollections.push_back(isoTag);
1521 if (!nonIsoTag.label().empty())
1522 isoCollections.push_back(nonIsoTag);
1530 if (inputType ==
"EgammaHLTElectronDetaDphiProducer" ||
1531 inputType ==
"EgammaHLTElectronTrackIsolationProducers"
1533 retPSet.
addParameter<std::vector<double> >(
"PlotBounds", std::vector<double>(2, 0.0));
1536 retPSet.
addParameter<std::vector<edm::InputTag> >(
"IsoCollections", isoCollections);
1543 edm::LogError(
"EmDQM") <<
"Can't determine what the HLTElectronGenericFilter '" << moduleName <<
"' should do: uses a collection produced by a module of C++ type '" << inputType <<
"'.";
1553 pathIndex = psetIt->getUntrackedParameter<
unsigned int>(
"pathIndex", 0);
1555 reqNum = psetIt->getParameter<
unsigned int>(
"reqNum");
1556 pdgGen = psetIt->getParameter<
int>(
"pdgGen");
1558 plotEtMin = psetIt->getUntrackedParameter<
double>(
"genEtMin",0.);
1559 plotPtMin = psetIt->getUntrackedParameter<
double>(
"PtMin",0.);
1560 plotPtMax = psetIt->getUntrackedParameter<
double>(
"PtMax",1000.);
1564 gencut_ = psetIt->getParameter<
int>(
"cutnum");
1570 std::vector<edm::ParameterSet>
filters =
1571 psetIt->getParameter<std::vector<edm::ParameterSet> >(
"filters");
1583 for(std::vector<edm::ParameterSet>::iterator filterconf = filters.begin() ; filterconf != filters.end() ; filterconf++)
1587 theHLTOutputTypes.push_back(filterconf->getParameter<
int>(
"theHLTOutputTypes"));
1591 std::vector<double> bounds = filterconf->getParameter<std::vector<double> >(
"PlotBounds");
1593 assert(bounds.size() == 2);
1594 plotBounds.push_back(std::pair<double,double>(bounds[0],bounds[1]));
1595 isoNames.push_back(filterconf->getParameter<std::vector<edm::InputTag> >(
"IsoCollections"));
1621 if (
isoNames.back().at(0).label()==
"none") {
1625 else plotiso.push_back(
false);
1627 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
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 &)
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
Geom::Phi< T > phi() const
static const unsigned TYPE_SINGLE_ELE
double getPrimaryEtCut(const std::string &)
edm::ParameterSet makePSetForL1SeedToSuperClusterMatchFilter(const std::string &)
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
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