33 _analysisname(analysisname),
37 _hltProcessName(pset.getParameter<std::
string>(
"hltProcessName")),
38 _histDirectory(pset.getParameter<std::
string>(
"histDirectory")),
42 pset.getUntrackedParameter<std::
string>(
"recoHtJetLabel",
"ak4PFJetsCHS"))),
43 _parametersEta(pset.getParameter<std::
vector<double>>(
"parametersEta")),
44 _parametersPhi(pset.getParameter<std::
vector<double>>(
"parametersPhi")),
45 _parametersPu(pset.getParameter<std::
vector<double>>(
"parametersPu")),
47 _parametersTurnOn(pset.getParameter<std::
vector<double>>(
"parametersTurnOn")),
48 _trigResultsTag(iC.consumes<edm::TriggerResults>(edm::
InputTag(
"TriggerResults",
"", _hltProcessName))),
49 _genJetSelector(nullptr),
50 _recMuonSelector(nullptr),
51 _recElecSelector(nullptr),
52 _recCaloMETSelector(nullptr),
53 _recPFMETSelector(nullptr),
54 _recPFTauSelector(nullptr),
55 _recPhotonSelector(nullptr),
56 _recPFJetSelector(nullptr),
57 _recTrackSelector(nullptr),
59 _useNminOneCuts(
false) {
64 if (anpset.
exists(
"parametersTurnOn")) {
70 for (std::map<unsigned int, std::string>::const_iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
78 for (std::map<unsigned int, std::string>::const_iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
86 if (anpset.
existsAs<
double>(objStr +
"_cutMinPt",
false)) {
89 if (anpset.
existsAs<
double>(objStr +
"_cutMaxEta",
false)) {
96 std::vector<double> default_parametersHt;
97 default_parametersHt.push_back(100);
98 default_parametersHt.push_back(0);
99 default_parametersHt.push_back(1000);
105 if (_HtJetPtMin > 0 && _HtJetEtaMax > 0)
110 if (pset.
exists(
"pileUpInfoLabel")) {
114 if (anpset.
existsAs<std::vector<double>>(
"NminOneCuts",
false)) {
117 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, "
118 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '"
120 <<
_NminOneCuts.size() <<
", while it needs to be at least of size "
125 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, "
126 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '"
128 <<
"' has a vector NminOneCuts with a dEtaqq of mqq cut on the least b-tagged "
129 "jets of the first 4 jets while only requiring "
130 << _minCandidates <<
" jets.";
134 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, "
135 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '"
137 <<
"' has a vector NminOneCuts with a CSV3 cut while only requiring "
138 << _minCandidates <<
" jets.";
142 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, "
143 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '"
145 <<
"' has a vector NminOneCuts with a dPhibb or CSV2 cut using the second most "
146 "b-tagged jet while only requiring "
147 << _minCandidates <<
" jet.";
166 it->second =
nullptr;
194 edm::LogError(
"HiggsValidations") <<
"HLTHiggsSubAnalysis::beginRun: "
195 <<
"Initializtion of HLTConfigProvider failed!!";
206 if (TString(thetriggername).Contains(pattern)) {
220 for (std::set<std::string>::iterator iPath =
_hltPaths.begin(); iPath !=
_hltPaths.end(); ++iPath) {
225 if (path.rfind(
"_v") < path.length()) {
226 shortpath = path.substr(0, path.rfind(
"_v"));
231 const std::vector<unsigned int> objsNeedHLT = this->
getObjectsType(shortpath);
234 std::vector<unsigned int> userInstantiate;
235 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
236 userInstantiate.push_back(it->first);
238 for (std::vector<unsigned int>::const_iterator it = objsNeedHLT.begin(); it != objsNeedHLT.end(); ++it) {
239 if (
std::find(userInstantiate.begin(), userInstantiate.end(), *it) == userInstantiate.end()) {
240 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::beginRun, "
241 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '"
242 <<
_analysisname <<
"' has been asked to evaluate the trigger path '"
243 << shortpath <<
"' (found it in 'hltPathsToCheck') BUT this path"
245 <<
"' which has not been instantiate ('recVariableLabels'"
250 LogTrace(
"HiggsValidation") <<
" --- " << shortpath;
263 std::vector<std::string> sources(2);
267 for (std::map<unsigned int, std::string>::const_iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
271 for (
size_t i = 0;
i < sources.size();
i++) {
279 bookHist(source, objStr,
"dEtaqq", ibooker);
281 bookHist(source, objStr,
"mqq", ibooker);
283 bookHist(source, objStr,
"dPhibb", ibooker);
286 bookHist(source, objStr,
"maxCSV", ibooker);
288 bookHist(source, objStr,
"CSV1", ibooker);
291 bookHist(source, objStr,
"CSV2", ibooker);
293 bookHist(source, objStr,
"CSV3", ibooker);
297 bookHist(source, objStr,
"Eta", ibooker);
298 bookHist(source, objStr,
"Phi", ibooker);
302 bookHist(source, objStr, maxPt.Data(), ibooker);
308 for (std::vector<HLTHiggsPlotter>::iterator it =
_analyzers.begin(); it !=
_analyzers.end(); ++it) {
312 for (
size_t i = 0;
i < sources.size();
i++) {
313 std::string nameGlobalEfficiency =
"SummaryPaths_" + _analysisname +
"_" + sources[
i];
318 std::string nameGlobalEfficiencyPassing = nameGlobalEfficiency +
"_passingHLT";
319 _elements[nameGlobalEfficiencyPassing] = ibooker.
book1D(nameGlobalEfficiencyPassing.c_str(),
320 nameGlobalEfficiencyPassing.c_str(),
325 std::string titlePu =
"nb of interations in the event";
326 std::string nameVtxPlot =
"trueVtxDist_" + _analysisname +
"_" + sources[
i];
328 int nBinsPu = (int)paramsPu[0];
329 double minPu = paramsPu[1];
330 double maxPu = paramsPu[2];
332 std::string titleHt =
"sum of jet pT in the event";
333 std::string nameHtPlot =
"HtDist_" + _analysisname +
"_" + sources[
i];
335 int nBinsHt = (int)paramsHt[0];
336 double minHt = paramsHt[1];
337 double maxHt = paramsHt[2];
340 _elements[nameVtxPlot] = ibooker.
book1D(nameVtxPlot.c_str(), titlePu.c_str(), nBinsPu, minPu, maxPu);
342 _elements[nameHtPlot] = ibooker.
book1D(nameHtPlot.c_str(), titleHt.c_str(), nBinsHt,
minHt, maxHt);
347 if (path.rfind(
"_v") < path.length()) {
348 shortpath = path.substr(0, path.rfind(
"_v"));
350 std::string titlePassingPu =
"nb of interations in the event passing path " + shortpath;
352 _elements[nameVtxPlot +
"_" + shortpath] =
353 ibooker.
book1D(nameVtxPlot +
"_" + shortpath, titlePassingPu.c_str(), nBinsPu, minPu, maxPu);
355 std::string titlePassingHt =
"sum of jet pT in the event passing path " + shortpath;
357 _elements[nameHtPlot +
"_" + shortpath] =
358 ibooker.
book1D(nameHtPlot +
"_" + shortpath, titlePassingHt.c_str(), nBinsHt,
minHt, maxHt);
361 _elements[nameGlobalEfficiency]->setBinLabel(
j + 1, shortpath);
362 _elements[nameGlobalEfficiencyPassing]->setBinLabel(
j + 1, shortpath);
371 std::map<unsigned int, std::string> u2str;
375 std::map<unsigned int, double> Htmap;
383 std::vector<PileupSummaryInfo>::const_iterator PVI;
384 for (PVI = puInfo->begin(); PVI != puInfo->end(); ++PVI) {
385 if (PVI->getBunchCrossing() == 0) {
386 nbMCvtx = PVI->getPU_NumInteractions();
396 std::vector<MatchStruct>* matches =
new std::vector<MatchStruct>;
398 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
407 for (
size_t i = 0;
i < cols->
genJets->size(); ++
i) {
441 std::map<unsigned int, std::vector<MatchStruct>> sourceMatchMap;
443 sourceMatchMap[
GEN] = *matches;
450 std::map<std::string, bool> nMinOne;
451 std::map<std::string, bool> jetCutResult;
458 bool passAllCuts =
false;
471 this->
passJetCuts(matches, jetCutResult, dEtaqq, mqq, dPhibb, CSV1, CSV2, CSV3);
475 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
491 for (std::map<std::string, bool>::const_iterator it = jetCutResult.begin(); it != jetCutResult.end(); ++it) {
492 nMinOne[it->first] =
true;
493 for (std::map<std::string, bool>::const_iterator it2 = jetCutResult.begin(); it2 != jetCutResult.end(); ++it2) {
495 if (it->first ==
"CSV1" && it2->first ==
"CSV3")
497 if (it->first ==
"CSV1" && it2->first ==
"CSV2")
501 if (it->first ==
"CSV2" && it2->first ==
"CSV3")
504 if (it->first != it2->first && !(it2->second)) {
505 nMinOne[it->first] =
false;
511 for (std::map<std::string, bool>::const_iterator it = nMinOne.begin(); it != nMinOne.end(); ++it) {
512 if (temp && it->second) {
522 sourceMatchMap[
RECO] = *matches;
533 for (reco::PFJetCollection::const_iterator iJet = recoJet->begin(); iJet != recoJet->end(); iJet++) {
534 double pt = iJet->pt();
535 double eta = iJet->eta();
545 for (reco::GenJetCollection::const_iterator iJet = genJet->begin(); iJet != genJet->end(); iJet++) {
546 double pt = iJet->pt();
547 double eta = iJet->eta();
557 for (std::map<
unsigned int, std::vector<MatchStruct>>::iterator it = sourceMatchMap.begin();
558 it != sourceMatchMap.end();
568 std::map<unsigned int, int>* countobjects =
new std::map<unsigned int, int>;
572 countobjects->insert(std::pair<unsigned int, int>(
co->first, 0));
575 const int totalobjectssize2 =
NptPlots * countobjects->size();
576 for (
size_t j = 0;
j < it->second.size(); ++
j) {
577 const unsigned int objType = it->second[
j].objType;
580 float pt = (it->second)[
j].pt;
581 float eta = (it->second)[
j].eta;
582 float phi = (it->second)[
j].phi;
590 if ((
unsigned)(*countobjects)[objType] <
NptPlots) {
592 maxPt += (*countobjects)[objType] + 1;
594 if (nMinOne[maxPt.Data()]) {
595 this->
fillHist(u2str[it->first], objTypeStr, maxPt.Data(),
pt);
598 this->
fillHist(u2str[it->first], objTypeStr, maxPt.Data(),
pt);
601 ++((*countobjects)[objType]);
605 ++((*countobjects)[objType]);
614 this->
fillHist(u2str[it->first], objTypeStr,
"Eta", eta);
615 this->
fillHist(u2str[it->first], objTypeStr,
"Phi", phi);
618 this->
fillHist(u2str[it->first], objTypeStr,
"Eta", eta);
619 this->
fillHist(u2str[it->first], objTypeStr,
"Phi", phi);
623 if (counttotal == totalobjectssize2) {
642 nameCSVplot =
"maxCSV";
643 if (nMinOne[nameCSVplot])
662 _elements[nameHtPlot]->Fill(Htmap[it->first]);
667 for (std::vector<HLTHiggsPlotter>::iterator an =
_analyzers.begin(); an !=
_analyzers.end(); ++an) {
669 const std::string fillShortPath = an->gethltpath();
673 an->analyze(ispassTrigger, source, it->second, nMinOne, dEtaqq, mqq, dPhibb, CSV1, CSV2, CSV3, passAllCuts);
678 int refOfThePath = -1;
684 _elements[SummaryName]->Fill(refOfThePath);
686 _elements[SummaryName +
"_passingHLT"]->Fill(refOfThePath, 1);
688 _elements[nameVtxPlot +
"_" + fillShortPath]->Fill(nbMCvtx);
690 _elements[nameHtPlot +
"_" + fillShortPath]->Fill(Htmap[it->first]);
692 _elements[SummaryName +
"_passingHLT"]->Fill(refOfThePath, 0);
700 static const unsigned int objSize = 7;
710 std::set<unsigned int> objsType;
712 for (
unsigned int i = 0;
i < objSize; ++
i) {
715 if (!TString(hltPath).Contains(objTypeStr)) {
717 TString(hltPath).Contains(
"WHbbBoost")) ||
721 objsType.insert(objtriggernames[i]);
726 (TString(hltPath).Contains(
"PFMET") || TString(hltPath).Contains(
"MHT"))) ||
728 !TString(hltPath).Contains(TRegexp(
"Jet[^I]"))) ||
734 objsType.insert(objtriggernames[i]);
737 return std::vector<unsigned int>(objsType.begin(), objsType.end());
742 if (anpset.
exists(
"recMuonLabel")) {
747 if (anpset.
exists(
"recElecLabel")) {
752 if (anpset.
exists(
"recPhotonLabel")) {
757 if (anpset.
exists(
"recCaloMETLabel")) {
762 if (anpset.
exists(
"recPFMETLabel")) {
767 if (anpset.
exists(
"recPFTauLabel")) {
772 if (anpset.
exists(
"recJetLabel")) {
775 if (anpset.
exists(
"jetTagLabel"))
786 edm::LogError(
"HiggsValidation") <<
"HLTHiggsSubAnalysis::bookobjects, "
787 <<
"Not included any object (recMuonLabel, recElecLabel, ...) "
815 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
852 edm::LogError(
"HiggsValidation") <<
"HLTHiggsSubAnalysis::initobjects "
853 <<
" NOT IMPLEMENTED (yet) ERROR: '" << it->second <<
"'";
864 sourceUpper[0] = std::toupper(sourceUpper[0]);
868 if (variable.find(
"MaxPt") != std::string::npos) {
870 if (variable ==
"MaxPt1")
872 else if (variable ==
"MaxPt2")
873 desc =
"Next-to-Leading";
875 desc = variable.substr(5, 6) +
"th Leading";
878 size_t nBins = nBinsStandard;
879 float* edges =
new float[nBinsStandard + 1];
880 for (
size_t i = 0;
i < nBinsStandard + 1;
i++) {
885 if (objType == jetObj) {
886 const size_t nBinsJets = 25;
889 edges =
new float[nBinsJets + 1];
890 for (
size_t i = 0;
i < nBinsJets + 1;
i++) {
895 const size_t nBinsJets = 30;
898 edges =
new float[nBinsJets + 1];
899 for (
size_t i = 0;
i < nBinsJets + 1;
i++) {
903 h =
new TH1F(name.c_str(), title.c_str(), nBins, edges);
905 }
else if (variable ==
"dEtaqq") {
910 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
911 }
else if (variable ==
"mqq") {
916 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
917 }
else if (variable ==
"dPhibb") {
922 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
923 }
else if (variable ==
"CSV1") {
928 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
929 }
else if (variable ==
"CSV2") {
934 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
935 }
else if (variable ==
"CSV3") {
940 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
941 }
else if (variable ==
"maxCSV") {
946 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
948 std::string symbol = (variable ==
"Eta") ?
"#eta" :
"#phi";
952 int nBins = (int)params[0];
953 double min = params[1];
954 double max = params[2];
955 h =
new TH1F(name.c_str(), title.c_str(), nBins,
min,
max);
965 const float&
value) {
967 sourceUpper[0] = toupper(sourceUpper[0]);
1002 std::vector<MatchStruct>* matches) {
1012 for (reco::PFJetCollection::const_iterator it = PFJetHandle->begin(); it != PFJetHandle->end(); ++it) {
1018 float bTag = (*(JetTagHandle.
product()))[jetBaseRef];
1028 std::vector<MatchStruct>* matches,
1029 std::map<std::string, bool>& jetCutResult,
1044 jetCutResult[maxPt.Data()] =
true;
1046 jetCutResult[maxPt.Data()] =
false;
1050 if (matches->size() < NbTag)
1051 NbTag = matches->size();
1056 jetCutResult[
"dEtaqq"] =
false;
1057 if (matches->size() > 2) {
1058 dEtaqq = fabs((*matches)[2].
eta - (*matches)[3].
eta);
1060 jetCutResult[
"dEtaqq"] =
true;
1065 jetCutResult[
"mqq"] =
false;
1066 if (matches->size() > 2) {
1067 mqq = ((*matches)[2].lorentzVector + (*matches)[3].lorentzVector).M();
1069 jetCutResult[
"mqq"] =
true;
1074 jetCutResult[
"dPhibb"] =
false;
1075 if (matches->size() > 1) {
1076 dPhibb = fmod(fabs((*matches)[0].
phi - (*matches)[1].
phi), 3.1416);
1078 jetCutResult[
"dPhibb"] =
true;
1084 jetCutResult[nameCSV2plot] =
false;
1085 if (matches->size() > 1) {
1086 CSV2 = (*matches)[1].bTag;
1088 jetCutResult[nameCSV2plot] =
true;
1094 jetCutResult[nameCSV3plot] =
false;
1095 if (matches->size() > 2) {
1096 CSV3 = (*matches)[2].bTag;
1098 jetCutResult[nameCSV3plot] =
true;
1103 CSV1 = (*matches)[0].bTag;
1106 nameCSVplot =
"maxCSV";
1109 jetCutResult[nameCSVplot] =
true;
1111 jetCutResult[nameCSVplot] =
false;
1116 CSV1 = (*matches)[0].bTag;
1119 Njets = matches->size();
1120 for (
unsigned int i = 1;
i < (
unsigned int)Njets; ++
i) {
1121 if ((*matches)[
i].bTag > CSV1 && (*matches)[
i].pt >
_NminOneCuts[7])
1122 CSV1 = (*matches)[
i].bTag;
1129 std::map<std::string, bool>& jetCutResult) {
1131 jetCutResult[
"PFMET"] =
false;
1132 for (std::vector<MatchStruct>::const_iterator it = matches.begin(); it != matches.end(); ++it) {
1135 jetCutResult[
"PFMET"] =
true;
1144 std::vector<MatchStruct>* matches) {
1146 for (
size_t i = 0;
i < cols->
muons->size();
i++) {
1158 for (
size_t i = 0;
i < cols->
photons->size();
i++) {
1164 for (
size_t i = 0;
i < cols->
caloMETs->size();
i++) {
1170 for (
size_t i = 0;
i < cols->
pfMETs->size();
i++) {
1176 for (
size_t i = 0;
i < cols->
pfTaus->size();
i++) {
const std::vector< reco::Muon > * muons
std::vector< double > _parametersTurnOn
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
T getUntrackedParameter(std::string const &, T const &) const
void InitSelector(const unsigned int &objtype)
std::map< std::string, std::string > _shortpath2long
Relation between the short version of a path.
StringCutObjectSelector< reco::CaloMET > * _recCaloMETSelector
std::vector< PFTau > PFTauCollection
collection of PFTau objects
edm::EDGetTokenT< reco::PFMETCollection > _recLabelsPFMET
edm::EDGetTokenT< reco::PFJetCollection > _recLabelsPFJet
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
edm::EDGetTokenT< reco::GenParticleCollection > _genParticleLabel
void passJetCuts(std::vector< MatchStruct > *matches, std::map< std::string, bool > &jetCutResult, float &dEtaqq, float &mqq, float &dPhibb, float &CSV1, float &CSV2, float &CSV3)
void initobjects(const edm::Event &iEvent, EVTColContainer *col)
edm::EDGetTokenT< reco::PFJetCollection > _recoHtJetLabel
virtual void setCurrentFolder(std::string const &fullpath)
const std::vector< reco::CaloMET > * caloMETs
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< reco::PFTauCollection > _recLabelsPFTau
unsigned int _minCandidates
The minimum number of reco/gen candidates needed by the analysis.
std::map< std::string, MonitorElement * > _elements
std::vector< double > _NminOneCuts
bool accept() const
Has at least one path accepted the event?
std::vector< GenJet > GenJetCollection
collection of GenJet objects
const std::vector< std::string > & triggerNames() const
names of trigger paths
bool exists(std::string const ¶meterName) const
checks if a parameter exists
unsigned int triggerIndex(std::string_view name) const
std::set< std::string > _hltPaths
the hlt paths found in the hltConfig
const reco::GenParticleCollection * genParticles
container with all the objects needed
StringCutObjectSelector< reco::PFMET > * _recPFMETSelector
Log< level::Error, false > LogError
edm::EDGetTokenT< reco::GenJetCollection > _genJetLabel
std::map< unsigned int, StringCutObjectSelector< reco::GenParticle > * > _genSelectorMap
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
HLTConfigProvider _hltConfig
__host__ __device__ VT * co
edm::EDGetTokenT< reco::JetTagCollection > _recTagPFJet
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
const std::vector< reco::PFTau > * pfTaus
std::vector< Muon > MuonCollection
collection of Muon objects
void bookHistograms(DQMStore::IBooker &)
std::map< unsigned int, std::string > _recCut
std::vector< double > _parametersPu
edm::EDGetTokenT< reco::PhotonCollection > _recLabelsPhoton
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
edm::EDGetTokenT< reco::CaloMETCollection > _recLabelsCaloMET
StringCutObjectSelector< reco::Track > * _recTrackSelector
void passOtherCuts(const std::vector< MatchStruct > &matches, std::map< std::string, bool > &jetCutResult)
void set(const reco::MuonCollection *v)
Setter: multiple overloaded function.
const reco::GenJetCollection * genJets
std::string _hltProcessName
StringCutObjectSelector< reco::GenJet > * _genJetSelector
std::map< unsigned int, std::string > _genCut
gen/rec objects cuts
void initAndInsertJets(const edm::Event &iEvent, EVTColContainer *cols, std::vector< MatchStruct > *matches)
edm::EDGetTokenT< std::vector< PileupSummaryInfo > > _puSummaryInfo
void addParameter(std::string const &name, T const &value)
std::vector< HLTHiggsPlotter > _analyzers
std::map< unsigned int, double > _cutMaxEta
const std::vector< reco::Photon > * photons
void analyze(const edm::Event &iEvent, const edm::EventSetup &iEventSetup, EVTColContainer *cols)
StringCutObjectSelector< reco::PFTau > * _recPFTauSelector
std::map< unsigned int, double > _cutMinPt
void beginRun(const edm::Run &iRun, const edm::EventSetup &iEventSetup)
edm::EDGetTokenT< edm::TriggerResults > _trigResultsTag
static const char *const trigNames[]
void bookHist(const std::string &source, const std::string &objType, const std::string &variable, DQMStore::IBooker &)
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
std::vector< double > _parametersHt
edm::EDGetTokenT< reco::GsfElectronCollection > _recLabelsElec
HLTHiggsSubAnalysis(const edm::ParameterSet &pset, const std::string &analysisname, edm::ConsumesCollector &&iC)
T const * product() const
StringCutObjectSelector< reco::Muon > * _recMuonSelector
std::string _histDirectory
void fillHist(const std::string &source, const std::string &objType, const std::string &variable, const float &value)
std::vector< Photon > PhotonCollection
collectin of Photon objects
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
T getParameter(std::string const &) const
const std::vector< reco::GsfElectron > * electrons
Helper structure to order MatchStruct.
const std::vector< unsigned int > getObjectsType(const std::string &hltpath) const
Extract what objects need this analysis.
void insertcandidates(const unsigned int &objtype, const EVTColContainer *col, std::vector< MatchStruct > *matches)
std::vector< PFJet > PFJetCollection
collection of PFJet objects
edm::EDGetTokenT< reco::MuonCollection > _recLabelsMuon
std::vector< double > _parametersPhi
std::string _analysisname
std::vector< std::string > _hltPathsToCheck
the hlt paths with regular expressions
std::vector< reco::PFMET > PFMETCollection
collection of PFMET objects
std::vector< double > _parametersEta
Some kinematical parameters.
void bookobjects(const edm::ParameterSet &anpset, edm::ConsumesCollector &iC)
StringCutObjectSelector< reco::Photon > * _recPhotonSelector
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
std::map< unsigned int, std::string > _recLabels
const std::vector< reco::PFMET > * pfMETs
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
static const std::string getTypeString(const unsigned int &objtype)
Tranform types into strings.
const edm::TriggerResults * triggerResults
static std::string const source
StringCutObjectSelector< reco::GsfElectron > * _recElecSelector