36 _analysisname(analysisname),
40 _hltProcessName(pset.getParameter<
std::
string>(
"hltProcessName")),
41 _histDirectory(pset.getParameter<
std::
string>(
"histDirectory")),
45 pset.getUntrackedParameter<
std::
string>(
"recoHtJetLabel",
"ak4PFJetsCHS"))),
46 _parametersEta(pset.getParameter<
std::vector<double>>(
"parametersEta")),
47 _parametersPhi(pset.getParameter<
std::vector<double>>(
"parametersPhi")),
48 _parametersPu(pset.getParameter<
std::vector<double>>(
"parametersPu")),
50 _parametersTurnOn(pset.getParameter<
std::vector<double>>(
"parametersTurnOn")),
62 _useNminOneCuts(
false) {
67 if (anpset.
exists(
"parametersTurnOn")) {
73 for (std::map<unsigned int, std::string>::const_iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
81 for (std::map<unsigned int, std::string>::const_iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
89 if (anpset.
existsAs<
double>(objStr +
"_cutMinPt",
false)) {
92 if (anpset.
existsAs<
double>(objStr +
"_cutMaxEta",
false)) {
99 std::vector<double> default_parametersHt;
100 default_parametersHt.push_back(100);
101 default_parametersHt.push_back(0);
102 default_parametersHt.push_back(1000);
108 if (_HtJetPtMin > 0 && _HtJetEtaMax > 0)
113 if (pset.
exists(
"pileUpInfoLabel")) {
117 if (anpset.
existsAs<std::vector<double>>(
"NminOneCuts",
false)) {
120 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, " 121 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '" 123 <<
_NminOneCuts.size() <<
", while it needs to be at least of size " 128 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, " 129 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '" 131 <<
"' has a vector NminOneCuts with a dEtaqq of mqq cut on the least b-tagged " 132 "jets of the first 4 jets while only requiring " 133 << _minCandidates <<
" jets.";
137 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, " 138 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '" 140 <<
"' has a vector NminOneCuts with a CSV3 cut while only requiring " 141 << _minCandidates <<
" jets.";
145 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::HLTHiggsSubAnalysis, " 146 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '" 148 <<
"' has a vector NminOneCuts with a dPhibb or CSV2 cut using the second most " 149 "b-tagged jet while only requiring " 150 << _minCandidates <<
" jet.";
169 it->second =
nullptr;
197 edm::LogError(
"HiggsValidations") <<
"HLTHiggsSubAnalysis::beginRun: " 198 <<
"Initializtion of HLTConfigProvider failed!!";
209 if (TString(thetriggername).Contains(pattern)) {
223 for (std::set<std::string>::iterator iPath =
_hltPaths.begin(); iPath !=
_hltPaths.end(); ++iPath) {
228 if (path.rfind(
"_v") < path.length()) {
229 shortpath = path.substr(0, path.rfind(
"_v"));
234 const std::vector<unsigned int> objsNeedHLT = this->
getObjectsType(shortpath);
237 std::vector<unsigned int> userInstantiate;
238 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
239 userInstantiate.push_back(it->first);
241 for (std::vector<unsigned int>::const_iterator it = objsNeedHLT.begin(); it != objsNeedHLT.end(); ++it) {
242 if (
std::find(userInstantiate.begin(), userInstantiate.end(), *it) == userInstantiate.end()) {
243 edm::LogError(
"HiggsValidation") <<
"In HLTHiggsSubAnalysis::beginRun, " 244 <<
"Incoherence found in the python configuration file!!\nThe SubAnalysis '" 245 <<
_analysisname <<
"' has been asked to evaluate the trigger path '" 246 << shortpath <<
"' (found it in 'hltPathsToCheck') BUT this path" 248 <<
"' which has not been instantiate ('recVariableLabels'" 253 LogTrace(
"HiggsValidation") <<
" --- " << shortpath;
266 std::vector<std::string>
sources(2);
270 for (std::map<unsigned int, std::string>::const_iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
274 for (
size_t i = 0;
i < sources.size();
i++) {
282 bookHist(source, objStr,
"dEtaqq", ibooker);
284 bookHist(source, objStr,
"mqq", ibooker);
286 bookHist(source, objStr,
"dPhibb", ibooker);
289 bookHist(source, objStr,
"maxCSV", ibooker);
291 bookHist(source, objStr,
"CSV1", ibooker);
294 bookHist(source, objStr,
"CSV2", ibooker);
296 bookHist(source, objStr,
"CSV3", ibooker);
300 bookHist(source, objStr,
"Eta", ibooker);
301 bookHist(source, objStr,
"Phi", ibooker);
305 bookHist(source, objStr, maxPt.Data(), ibooker);
311 for (std::vector<HLTHiggsPlotter>::iterator it =
_analyzers.begin(); it !=
_analyzers.end(); ++it) {
315 for (
size_t i = 0;
i < sources.size();
i++) {
316 std::string nameGlobalEfficiency =
"SummaryPaths_" + _analysisname +
"_" + sources[
i];
321 std::string nameGlobalEfficiencyPassing = nameGlobalEfficiency +
"_passingHLT";
322 _elements[nameGlobalEfficiencyPassing] = ibooker.
book1D(nameGlobalEfficiencyPassing.c_str(),
323 nameGlobalEfficiencyPassing.c_str(),
328 std::string titlePu =
"nb of interations in the event";
329 std::string nameVtxPlot =
"trueVtxDist_" + _analysisname +
"_" + sources[
i];
331 int nBinsPu = (
int)paramsPu[0];
332 double minPu = paramsPu[1];
333 double maxPu = paramsPu[2];
335 std::string titleHt =
"sum of jet pT in the event";
336 std::string nameHtPlot =
"HtDist_" + _analysisname +
"_" + sources[
i];
338 int nBinsHt = (
int)paramsHt[0];
339 double minHt = paramsHt[1];
340 double maxHt = paramsHt[2];
345 _elements[nameHtPlot] = ibooker.
book1D(nameHtPlot.c_str(), titleHt.c_str(), nBinsHt,
minHt, maxHt);
350 if (path.rfind(
"_v") < path.length()) {
351 shortpath = path.substr(0, path.rfind(
"_v"));
353 std::string titlePassingPu =
"nb of interations in the event passing path " + shortpath;
355 _elements[nameVtxPlot +
"_" + shortpath] =
356 ibooker.
book1D(nameVtxPlot +
"_" + shortpath, titlePassingPu.c_str(), nBinsPu,
minPu,
maxPu);
358 std::string titlePassingHt =
"sum of jet pT in the event passing path " + shortpath;
360 _elements[nameHtPlot +
"_" + shortpath] =
361 ibooker.
book1D(nameHtPlot +
"_" + shortpath, titlePassingHt.c_str(), nBinsHt,
minHt, maxHt);
364 _elements[nameGlobalEfficiency]->setBinLabel(
j + 1, shortpath);
365 _elements[nameGlobalEfficiencyPassing]->setBinLabel(
j + 1, shortpath);
374 std::map<unsigned int, std::string> u2str;
378 std::map<unsigned int, double> Htmap;
386 std::vector<PileupSummaryInfo>::const_iterator PVI;
387 for (PVI = puInfo->begin(); PVI != puInfo->end(); ++PVI) {
388 if (PVI->getBunchCrossing() == 0) {
389 nbMCvtx = PVI->getPU_NumInteractions();
399 std::vector<MatchStruct>*
matches =
new std::vector<MatchStruct>;
401 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
410 for (
size_t i = 0;
i < cols->
genJets->size(); ++
i) {
444 std::map<unsigned int, std::vector<MatchStruct>> sourceMatchMap;
453 std::map<std::string, bool> nMinOne;
454 std::map<std::string, bool> jetCutResult;
461 bool passAllCuts =
false;
474 this->
passJetCuts(matches, jetCutResult, dEtaqq, mqq, dPhibb, CSV1, CSV2, CSV3);
478 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
494 for (std::map<std::string, bool>::const_iterator it = jetCutResult.begin(); it != jetCutResult.end(); ++it) {
495 nMinOne[it->first] =
true;
496 for (std::map<std::string, bool>::const_iterator it2 = jetCutResult.begin(); it2 != jetCutResult.end(); ++it2) {
498 if (it->first ==
"CSV1" && it2->first ==
"CSV3")
500 if (it->first ==
"CSV1" && it2->first ==
"CSV2")
504 if (it->first ==
"CSV2" && it2->first ==
"CSV3")
507 if (it->first != it2->first && !(it2->second)) {
508 nMinOne[it->first] =
false;
514 for (std::map<std::string, bool>::const_iterator it = nMinOne.begin(); it != nMinOne.end(); ++it) {
515 if (temp && it->second) {
536 for (reco::PFJetCollection::const_iterator iJet = recoJet->begin(); iJet != recoJet->end(); iJet++) {
537 double pt = iJet->pt();
538 double eta = iJet->eta();
548 for (reco::GenJetCollection::const_iterator iJet = genJet->begin(); iJet != genJet->end(); iJet++) {
549 double pt = iJet->pt();
550 double eta = iJet->eta();
560 for (
std::map<
unsigned int, std::vector<MatchStruct>>::iterator it = sourceMatchMap.begin();
561 it != sourceMatchMap.end();
571 std::map<unsigned int, int>* countobjects =
new std::map<unsigned int, int>;
573 for (std::map<unsigned int, std::string>::iterator co =
_recLabels.begin(); co !=
_recLabels.end(); ++co) {
575 countobjects->insert(std::pair<unsigned int, int>(co->first, 0));
578 const int totalobjectssize2 =
NptPlots * countobjects->size();
579 for (
size_t j = 0;
j < it->second.size(); ++
j) {
580 const unsigned int objType = it->second[
j].objType;
583 float pt = (it->second)[
j].pt;
584 float eta = (it->second)[
j].eta;
585 float phi = (it->second)[
j].phi;
595 maxPt += (*countobjects)[
objType] + 1;
597 if (nMinOne[maxPt.Data()]) {
598 this->
fillHist(u2str[it->first], objTypeStr, maxPt.Data(),
pt);
601 this->
fillHist(u2str[it->first], objTypeStr, maxPt.Data(),
pt);
617 this->
fillHist(u2str[it->first], objTypeStr,
"Eta", eta);
618 this->
fillHist(u2str[it->first], objTypeStr,
"Phi", phi);
621 this->
fillHist(u2str[it->first], objTypeStr,
"Eta", eta);
622 this->
fillHist(u2str[it->first], objTypeStr,
"Phi", phi);
626 if (counttotal == totalobjectssize2) {
645 nameCSVplot =
"maxCSV";
646 if (nMinOne[nameCSVplot])
665 _elements[nameHtPlot]->Fill(Htmap[it->first]);
670 for (std::vector<HLTHiggsPlotter>::iterator an =
_analyzers.begin(); an !=
_analyzers.end(); ++an) {
672 const std::string fillShortPath = an->gethltpath();
676 an->analyze(ispassTrigger, source, it->second, nMinOne, dEtaqq, mqq, dPhibb, CSV1, CSV2, CSV3, passAllCuts);
681 int refOfThePath = -1;
687 _elements[SummaryName]->Fill(refOfThePath);
689 _elements[SummaryName +
"_passingHLT"]->Fill(refOfThePath, 1);
691 _elements[nameVtxPlot +
"_" + fillShortPath]->Fill(nbMCvtx);
693 _elements[nameHtPlot +
"_" + fillShortPath]->Fill(Htmap[it->first]);
695 _elements[SummaryName +
"_passingHLT"]->Fill(refOfThePath, 0);
703 static const unsigned int objSize = 7;
713 std::set<unsigned int> objsType;
715 for (
unsigned int i = 0;
i < objSize; ++
i) {
718 if (!TString(hltPath).Contains(objTypeStr)) {
720 TString(hltPath).Contains(
"WHbbBoost")) ||
722 (objtriggernames[i] == EVTColContainer::PFMET && TString(hltPath).Contains(
"MHT")) ||
724 objsType.insert(objtriggernames[i]);
729 (TString(hltPath).Contains(
"PFMET") || TString(hltPath).Contains(
"MHT"))) ||
731 !TString(hltPath).Contains(TRegexp(
"Jet[^I]"))) ||
737 objsType.insert(objtriggernames[i]);
740 return std::vector<unsigned int>(objsType.begin(), objsType.end());
745 if (anpset.
exists(
"recMuonLabel")) {
750 if (anpset.
exists(
"recElecLabel")) {
755 if (anpset.
exists(
"recPhotonLabel")) {
760 if (anpset.
exists(
"recCaloMETLabel")) {
765 if (anpset.
exists(
"recPFMETLabel")) {
770 if (anpset.
exists(
"recPFTauLabel")) {
775 if (anpset.
exists(
"recJetLabel")) {
778 if (anpset.
exists(
"jetTagLabel"))
789 edm::LogError(
"HiggsValidation") <<
"HLTHiggsSubAnalysis::bookobjects, " 790 <<
"Not included any object (recMuonLabel, recElecLabel, ...) " 818 for (std::map<unsigned int, std::string>::iterator it =
_recLabels.begin(); it !=
_recLabels.end(); ++it) {
855 edm::LogError(
"HiggsValidation") <<
"HLTHiggsSubAnalysis::initobjects " 856 <<
" NOT IMPLEMENTED (yet) ERROR: '" << it->second <<
"'";
867 sourceUpper[0] = std::toupper(sourceUpper[0]);
871 if (variable.find(
"MaxPt") != std::string::npos) {
873 if (variable ==
"MaxPt1")
875 else if (variable ==
"MaxPt2")
876 desc =
"Next-to-Leading";
878 desc = variable.substr(5, 6) +
"th Leading";
881 size_t nBins = nBinsStandard;
882 float*
edges =
new float[nBinsStandard + 1];
883 for (
size_t i = 0;
i < nBinsStandard + 1;
i++) {
888 if (objType == jetObj) {
889 const size_t nBinsJets = 25;
892 edges =
new float[nBinsJets + 1];
893 for (
size_t i = 0;
i < nBinsJets + 1;
i++) {
898 const size_t nBinsJets = 30;
901 edges =
new float[nBinsJets + 1];
902 for (
size_t i = 0;
i < nBinsJets + 1;
i++) {
906 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
edges);
908 }
else if (variable ==
"dEtaqq") {
913 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
914 }
else if (variable ==
"mqq") {
919 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
920 }
else if (variable ==
"dPhibb") {
925 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
926 }
else if (variable ==
"CSV1") {
931 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
932 }
else if (variable ==
"CSV2") {
937 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
938 }
else if (variable ==
"CSV3") {
943 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
944 }
else if (variable ==
"maxCSV") {
949 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
951 std::string symbol = (variable ==
"Eta") ?
"#eta" :
"#phi";
956 double min = params[1];
957 double max = params[2];
958 h =
new TH1F(name.c_str(), title.c_str(),
nBins,
min,
max);
968 const float&
value) {
970 sourceUpper[0] = toupper(sourceUpper[0]);
1005 std::vector<MatchStruct>*
matches) {
1015 for (reco::PFJetCollection::const_iterator it = PFJetHandle->begin(); it != PFJetHandle->end(); ++it) {
1021 float bTag = (*(JetTagHandle.
product()))[jetBaseRef];
1031 std::vector<MatchStruct>*
matches,
1032 std::map<std::string, bool>& jetCutResult,
1047 jetCutResult[maxPt.Data()] =
true;
1049 jetCutResult[maxPt.Data()] =
false;
1053 if (matches->size() < NbTag)
1054 NbTag = matches->size();
1059 jetCutResult[
"dEtaqq"] =
false;
1060 if (matches->size() > 2) {
1061 dEtaqq = fabs((*matches)[2].
eta - (*matches)[3].
eta);
1063 jetCutResult[
"dEtaqq"] =
true;
1068 jetCutResult[
"mqq"] =
false;
1069 if (matches->size() > 2) {
1070 mqq = ((*matches)[2].lorentzVector + (*matches)[3].lorentzVector).M();
1072 jetCutResult[
"mqq"] =
true;
1077 jetCutResult[
"dPhibb"] =
false;
1078 if (matches->size() > 1) {
1079 dPhibb = fmod(fabs((*matches)[0].
phi - (*matches)[1].
phi), 3.1416);
1081 jetCutResult[
"dPhibb"] =
true;
1087 jetCutResult[nameCSV2plot] =
false;
1088 if (matches->size() > 1) {
1089 CSV2 = (*matches)[1].bTag;
1091 jetCutResult[nameCSV2plot] =
true;
1097 jetCutResult[nameCSV3plot] =
false;
1098 if (matches->size() > 2) {
1099 CSV3 = (*matches)[2].bTag;
1101 jetCutResult[nameCSV3plot] =
true;
1106 CSV1 = (*matches)[0].bTag;
1109 nameCSVplot =
"maxCSV";
1112 jetCutResult[nameCSVplot] =
true;
1114 jetCutResult[nameCSVplot] =
false;
1119 CSV1 = (*matches)[0].bTag;
1122 Njets = matches->size();
1123 for (
unsigned int i = 1;
i < (
unsigned int)Njets; ++
i) {
1124 if ((*matches)[
i].bTag > CSV1 && (*matches)[
i].pt >
_NminOneCuts[7])
1125 CSV1 = (*matches)[
i].bTag;
1132 std::map<std::string, bool>& jetCutResult) {
1134 jetCutResult[
"PFMET"] =
false;
1135 for (std::vector<MatchStruct>::const_iterator it = matches.begin(); it != matches.end(); ++it) {
1138 jetCutResult[
"PFMET"] =
true;
1147 std::vector<MatchStruct>*
matches) {
1149 for (
size_t i = 0;
i < cols->
muons->size();
i++) {
1161 for (
size_t i = 0;
i < cols->
photons->size();
i++) {
1167 for (
size_t i = 0;
i < cols->
caloMETs->size();
i++) {
1173 for (
size_t i = 0;
i < cols->
pfMETs->size();
i++) {
1179 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
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
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
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
void setCurrentFolder(std::string const &fullpath)
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
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
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
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::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
unsigned int triggerIndex(std::string const &name) const
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
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
std::map< unsigned int, std::string > _recLabels
const std::vector< reco::PFMET > * pfMETs
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
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
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override