31 _analysisname(analysisname),
33 _hltProcessName(
pset.getParameter<
std::
string>(
"hltProcessName")),
34 _genParticleLabel(
pset.getParameter<
std::
string>(
"genParticleLabel")),
35 _trigResultsLabel(
"TriggerResults",
"", _hltProcessName),
36 _beamSpotLabel(
pset.getParameter<
std::
string>(
"beamSpotLabel")),
37 _parametersEta(
pset.getParameter<
std::
vector<double>>(
"parametersEta")),
38 _parametersPhi(
pset.getParameter<
std::
vector<double>>(
"parametersPhi")),
39 _parametersTurnOn(
pset.getParameter<
std::
vector<double>>(
"parametersTurnOn")),
40 _parametersTurnOnSumEt(
pset.getParameter<
std::
vector<double>>(
"parametersTurnOnSumEt")),
41 _parametersDxy(
pset.getParameter<
std::
vector<double>>(
"parametersDxy")),
44 _recMuonSelector(nullptr),
45 _recMuonTrkSelector(nullptr),
46 _recTrackSelector(nullptr),
47 _recElecSelector(nullptr),
48 _recMETSelector(nullptr),
49 _recPFMETSelector(nullptr),
50 _recPFMHTSelector(nullptr),
51 _genMETSelector(nullptr),
52 _recCaloMETSelector(nullptr),
53 _recCaloMHTSelector(nullptr),
54 _recPFTauSelector(nullptr),
55 _recPhotonSelector(nullptr),
56 _recPFJetSelector(nullptr),
57 _recCaloJetSelector(nullptr) {
58 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::constructor()";
67 if (anpset.
exists(
"parametersTurnOn")) {
71 if (anpset.
exists(
"parametersEta")) {
75 if (anpset.
exists(
"parametersPhi")) {
79 if (anpset.
exists(
"parametersDxy")) {
83 if (anpset.
exists(
"parametersTurnOnSumEt")) {
87 if (anpset.
exists(
"dropPt2")) {
91 if (anpset.
exists(
"dropPt3")) {
109 auto const genCutParam = objStr +
"_genCut_leading";
110 if (
pset.exists(genCutParam)) {
115 auto const recCutParam = objStr +
"_recCut_leading";
116 if (
pset.exists(recCutParam)) {
128 auto const genCutParam = objStr +
"_genCut";
133 auto const recCutParam = objStr +
"_recCut";
151 it->second =
nullptr;
194 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::subAnalysisBookHistos()";
203 std::vector<std::string>
sources(2);
211 if (TString(objStr).Contains(
"MET") || TString(objStr).Contains(
"MHT") || TString(objStr).Contains(
"Jet")) {
230 if (TString(objStr).Contains(
"MET") || TString(objStr).Contains(
"MHT")) {
257 it->plotterBookHistos(iBooker, iRun, iSetup);
262 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::beginRun()";
268 bool changedConfig(
true);
270 edm::LogError(
"ExoticaValidation") <<
"HLTExoticaSubAnalysis::constructor(): " 271 <<
"Initialization of HLTConfigProvider failed!";
284 if (TString(thetriggername).Contains(
pattern)) {
289 LogDebug(
"ExoticaValidation") <<
"--- TRIGGER PATH : " << thetriggername;
301 LogTrace(
"ExoticaValidation") <<
"SubAnalysis: " <<
_analysisname <<
"\nHLT Trigger Paths found >>>";
302 for (std::set<std::string>::const_iterator iter =
_hltPaths.begin(); iter !=
_hltPaths.end(); ++iter) {
303 LogTrace(
"ExoticaValidation") << (*iter) <<
"\n";
308 for (std::set<std::string>::iterator iPath =
_hltPaths.begin(); iPath !=
_hltPaths.end(); ++iPath) {
312 if (
path.rfind(
"_v") <
path.length()) {
313 shortpath =
path.substr(0,
path.rfind(
"_v"));
322 std::vector<unsigned int> objsNeedHLT;
324 objsNeedHLT.push_back(
it->first);
355 LogTrace(
"ExoticaValidation") <<
" --- " << shortpath;
367 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::analyze()";
390 std::vector<reco::LeafCandidate> matchesGen;
392 std::vector<reco::LeafCandidate> matchesReco;
394 std::map<int, double> theSumEt;
395 std::map<int, std::vector<const reco::Track *>> trkObjs;
416 if (TString(objTypeStr).Contains(
"MET") || TString(objTypeStr).Contains(
"MHT") ||
417 TString(objTypeStr).Contains(
"Jet"))
435 matchesGen.push_back(
v);
452 LogDebug(
"ExoticaValidation") <<
"-- enter loop over recLabels";
465 <<
" sumEt=" << theSumEt[
it->first];
476 for (std::vector<HLTExoticaPlotter>::iterator an =
_plotters.begin(); an !=
_plotters.end(); ++an) {
510 std::map<unsigned int, int> countobjects;
513 countobjects.insert(std::pair<unsigned int, int>(
co->first, 0));
519 int totalobjectssize = 1;
524 totalobjectssize *= countobjects.size();
526 bool isPassedLeadingCut =
true;
528 for (
size_t j = 0;
j != matchesGen.size(); ++
j) {
529 const unsigned int objType = matchesGen[
j].pdgId();
533 isPassedLeadingCut =
false;
539 std::vector<float> dxys;
542 for (
size_t j = 0; (
j != matchesGen.size()) && isPassedLeadingCut; ++
j) {
543 const unsigned int objType = matchesGen[
j].pdgId();
547 float pt = matchesGen[
j].pt();
549 if (countobjects[
objType] == 0) {
550 this->
fillHist(
"gen", objTypeStr,
"MaxPt1",
pt);
554 this->
fillHist(
"gen", objTypeStr,
"MaxPt2",
pt);
558 this->
fillHist(
"gen", objTypeStr,
"MaxPt3",
pt);
563 if (counttotal == totalobjectssize) {
564 size_t max_size = matchesGen.size();
565 for (
size_t jj =
j;
jj < max_size;
jj++) {
566 matchesGen.erase(matchesGen.end());
572 float eta = matchesGen[
j].eta();
573 float phi = matchesGen[
j].phi();
582 float momphi = matchesGen[
j].momentum().phi();
583 float dxyGen = (-(
vtx.x() - cols->
bs->
x0()) *
sin(momphi) + (
vtx.y() - cols->
bs->
y0()) *
cos(momphi));
584 dxys.push_back(dxyGen);
585 this->
fillHist(
"gen", objTypeStr,
"Dxy", dxyGen);
593 for (std::vector<HLTExoticaPlotter>::iterator an =
_plotters.begin(); an !=
_plotters.end(); ++an) {
596 LogDebug(
"ExoticaValidation") <<
" preparing to call the plotters analysis";
597 an->analyze(ispassTrigger,
"gen", matchesGen, theSumEt, dxys);
598 LogDebug(
"ExoticaValidation") <<
" called the plotter";
623 std::map<unsigned int, int> countobjects;
625 countobjects.insert(std::pair<unsigned int, int>(
co->first, 0));
631 int totalobjectssize = 1;
636 totalobjectssize *= countobjects.size();
642 std::vector<float> dxys;
645 bool isPassedLeadingCut =
true;
647 for (
size_t j = 0;
j != matchesReco.size(); ++
j) {
648 const unsigned int objType = matchesReco[
j].pdgId();
652 isPassedLeadingCut =
false;
666 for (
size_t j = 0; (
j != matchesReco.size()) && isPassedLeadingCut; ++
j) {
667 const unsigned int objType = matchesReco[
j].pdgId();
672 float pt = matchesReco[
j].pt();
674 if (countobjects[
objType] == 0) {
675 this->
fillHist(
"rec", objTypeStr,
"MaxPt1",
pt);
679 if (!(TString(objTypeStr).Contains(
"MET") || TString(objTypeStr).Contains(
"MHT"))) {
680 this->
fillHist(
"rec", objTypeStr,
"MaxPt2",
pt);
685 if (!(TString(objTypeStr).Contains(
"MET") || TString(objTypeStr).Contains(
"MHT"))) {
686 this->
fillHist(
"rec", objTypeStr,
"MaxPt3",
pt);
692 if (counttotal == totalobjectssize) {
693 size_t max_size = matchesReco.size();
694 for (
size_t jj =
j;
jj < max_size;
jj++) {
695 matchesReco.erase(matchesReco.end());
701 float eta = matchesReco[
j].eta();
702 float phi = matchesReco[
j].phi();
704 if (!(TString(objTypeStr).Contains(
"MET") || TString(objTypeStr).Contains(
"MHT"))) {
713 this->
fillHist(
"rec", objTypeStr,
"Dxy", dxyRec);
714 dxys.push_back(dxyRec);
720 this->
fillHist(
"rec", objTypeStr,
"Dxy", dxyRec);
721 dxys.push_back(dxyRec);
727 this->
fillHist(
"rec", objTypeStr,
"Dxy", dxyRec);
728 dxys.push_back(dxyRec);
740 for (std::vector<HLTExoticaPlotter>::iterator an =
_plotters.begin(); an !=
_plotters.end(); ++an) {
743 LogDebug(
"ExoticaValidation") <<
" preparing to call the plotters analysis";
744 an->analyze(ispassTrigger,
"rec", matchesReco, theSumEt, dxys);
745 LogDebug(
"ExoticaValidation") <<
" called the plotter";
753 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::getObjectsType()";
755 static const unsigned int objSize = 15;
771 std::set<unsigned int> objsType;
773 for (
unsigned int i = 0;
i < objSize; ++
i) {
777 if (!TString(
hltPath).Contains(objTypeStr)) {
781 objsType.insert(objtriggernames[
i]);
784 return std::vector<unsigned int>(objsType.begin(), objsType.end());
789 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::getNamesOfObjects()";
791 if (anpset.
exists(
"recMuonLabel")) {
795 if (anpset.
exists(
"recMuonTrkLabel")) {
799 if (anpset.
exists(
"recTrackLabel")) {
803 if (anpset.
exists(
"recElecLabel")) {
807 if (anpset.
exists(
"recPhotonLabel")) {
811 if (anpset.
exists(
"recMETLabel")) {
815 if (anpset.
exists(
"recPFMETLabel")) {
819 if (anpset.
exists(
"recPFMHTLabel")) {
823 if (anpset.
exists(
"genMETLabel")) {
827 if (anpset.
exists(
"recCaloMETLabel")) {
831 if (anpset.
exists(
"recCaloMHTLabel")) {
835 if (anpset.
exists(
"hltMETLabel")) {
839 if (anpset.
exists(
"recPFTauLabel")) {
843 if (anpset.
exists(
"recPFJetLabel")) {
847 if (anpset.
exists(
"recCaloJetLabel")) {
853 edm::LogError(
"ExoticaValidation") <<
"HLTExoticaSubAnalysis::getNamesOfObjects, " 854 <<
"Not included any object (recMuonLabel, recElecLabel, ...) " 936 edm::LogError(
"ExoticaValidation") <<
"HLTExoticaSubAnalysis::registerConsumes" 937 <<
" NOT IMPLEMENTED (yet) ERROR: '" <<
it->second.label() <<
"'";
944 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::getHandlesToObjects()";
946 if (!
col->isCommonInit()) {
952 LogDebug(
"ExoticaValidation") <<
"Added handle to triggerResults";
960 LogDebug(
"ExoticaValidation") <<
"Added handle to genParticles";
972 LogDebug(
"ExoticaValidation") <<
"We have got " <<
_tokens.size() <<
"tokens";
973 for (std::map<unsigned int, edm::EDGetToken>::iterator
it =
_tokens.begin();
it !=
_tokens.end(); ++
it) {
976 iEvent.getByToken(
it->second, theHandle);
981 iEvent.getByToken(
it->second, theHandle);
986 iEvent.getByToken(
it->second, theHandle);
991 iEvent.getByToken(
it->second, theHandle);
996 iEvent.getByToken(
it->second, theHandle);
1001 iEvent.getByToken(
it->second, theHandle);
1006 iEvent.getByToken(
it->second, theHandle);
1011 iEvent.getByToken(
it->second, theHandle);
1016 iEvent.getByToken(
it->second, theHandle);
1021 iEvent.getByToken(
it->second, theHandle);
1026 iEvent.getByToken(
it->second, theHandle);
1031 iEvent.getByToken(
it->second, theHandle);
1036 iEvent.getByToken(
it->second, theHandle);
1041 iEvent.getByToken(
it->second, theHandle);
1045 edm::LogError(
"ExoticaValidation") <<
"HLTExoticaSubAnalysis::getHandlesToObjects " 1046 <<
" NOT IMPLEMENTED (yet) ERROR: '" <<
it->first <<
"'";
1056 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::bookHist()";
1058 sourceUpper[0] = std::toupper(sourceUpper[0]);
1062 if (
variable.find(
"SumEt") != std::string::npos) {
1066 for (
size_t i = 0;
i <
nBins + 1;
i++) {
1073 else if (
variable.find(
"Dxy") != std::string::npos) {
1081 else if (
variable.find(
"MaxPt") != std::string::npos) {
1086 for (
size_t i = 0;
i <
nBins + 1;
i++) {
1109 if (
objType !=
"refittedStandAloneMuons") {
1123 const float &
value) {
1125 sourceUpper[0] = toupper(sourceUpper[0]);
1128 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::fillHist() " <<
name <<
" " <<
value;
1131 if (
objType !=
"refittedStandAloneMuons") {
1138 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::fillHist() " <<
name <<
" worked";
1143 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::initSelector()";
1183 std::vector<reco::LeafCandidate> *
matches,
1184 std::map<int, double> &theSumEt,
1185 std::map<
int, std::vector<const reco::Track *>> &trkObjs) {
1186 LogDebug(
"ExoticaValidation") <<
"In HLTExoticaSubAnalysis::insertCandidates()";
1191 for (
size_t i = 0;
i < cols->
muons->size();
i++) {
1192 LogDebug(
"ExoticaValidation") <<
"Inserting muon " <<
i;
1202 for (
size_t i = 0;
i < cols->
tracks->size();
i++) {
1203 LogDebug(
"ExoticaValidation") <<
"Inserting muonTrack " <<
i;
1205 ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double>> mom4;
1207 mom4.SetXYZT(mom3.x(), mom3.y(), mom3.z(), mom3.r());
1216 for (
size_t i = 0;
i < cols->
tracks->size();
i++) {
1217 LogDebug(
"ExoticaValidation") <<
"Inserting Track " <<
i;
1219 ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double>> mom4;
1221 mom4.SetXYZT(mom3.x(), mom3.y(), mom3.z(), mom3.r());
1228 LogDebug(
"ExoticaValidation") <<
"Inserting electron " <<
i;
1238 for (
size_t i = 0;
i < cols->
photons->size();
i++) {
1239 LogDebug(
"ExoticaValidation") <<
"Inserting photon " <<
i;
1249 for (
size_t i = 0;
i < cols->
pfMETs->size();
i++) {
1250 LogDebug(
"ExoticaValidation") <<
"Inserting PFMET " <<
i;
1259 for (
size_t i = 0;
i < cols->
pfMHTs->size();
i++) {
1260 LogDebug(
"ExoticaValidation") <<
"Inserting PFMHT " <<
i;
1269 for (
size_t i = 0;
i < cols->
genMETs->size();
i++) {
1270 LogDebug(
"ExoticaValidation") <<
"Inserting GENMET " <<
i;
1279 for (
size_t i = 0;
i < cols->
caloMETs->size();
i++) {
1280 LogDebug(
"ExoticaValidation") <<
"Inserting CALOMET " <<
i;
1289 for (
size_t i = 0;
i < cols->
caloMHTs->size();
i++) {
1290 LogDebug(
"ExoticaValidation") <<
"Inserting CaloMHT " <<
i;
1299 for (
size_t i = 0;
i < cols->
pfTaus->size();
i++) {
1300 LogDebug(
"ExoticaValidation") <<
"Inserting PFtau " <<
i;
1307 for (
size_t i = 0;
i < cols->
pfJets->size();
i++) {
1308 LogDebug(
"ExoticaValidation") <<
"Inserting jet " <<
i;
1315 for (
size_t i = 0;
i < cols->
caloJets->size();
i++) {
1316 LogDebug(
"ExoticaValidation") <<
"Inserting jet " <<
i;
1332 std::stringstream
log;
1334 log <<
"=====================================================================" 1338 log <<
"=====================================================================" 1341 log << std::setw(18) <<
"# of passed events : HLT path names" << std::endl;
1342 log <<
"-------------------:-------------------------------------------------" 1346 log << std::setw(18) <<
it->second <<
" : " <<
it->first << std::endl;
1348 log <<
"=====================================================================" 1351 LogDebug(
"ExoticaValidation") <<
log.str().data();
const std::vector< reco::Muon > * muons
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
bool accept() const
Has at least one path accepted the event?
StringCutObjectSelector< reco::Track > * _recMuonTrkSelector
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
const std::vector< unsigned int > getObjectsType(const std::string &hltpath) const
closes analyze method
unsigned int _minCandidates
The minimum number of reco/gen candidates needed by the analysis.
T getParameter(std::string const &) const
void getNamesOfObjects(const edm::ParameterSet &anpset)
Creates the maps that map which collection should come from which label.
std::vector< PFTau > PFTauCollection
collection of PFTau objects
const Point & position() const
position
virtual void setCurrentFolder(std::string const &fullpath)
const std::vector< reco::CaloMET > * caloMETs
std::vector< reco::GenMET > GenMETCollection
collection of GenMET objects
std::map< unsigned int, std::string > _genCut
gen/rec objects cuts
Sin< T >::type sin(const T &t)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
T const * product() const
std::vector< Track > TrackCollection
collection of Tracks
std::vector< HLTExoticaPlotter > _plotters
The plotters: managers of each hlt path where the plots are done.
StringCutObjectSelector< reco::CaloJet > * _recCaloJetSelector
StringCutObjectSelector< reco::GenMET > * _genMETSelector
std::vector< double > _parametersPhi
const std::vector< reco::CaloJet > * caloJets
void insert(bool ok_to_replace, char const *, Entry const &)
void fillHist(const std::string &source, const std::string &objType, const std::string &variable, const float &value)
const reco::GenParticleCollection * genParticles
container with all the objects needed
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
void analyze(const edm::Event &iEvent, const edm::EventSetup &iEventSetup, EVTColContainer *cols)
edm::InputTag _trigResultsLabel
Log< level::Error, false > LogError
StringCutObjectSelector< reco::MET > * _recMETSelector
edm::EDGetTokenT< edm::TriggerResults > _trigResultsToken
__host__ __device__ VT * co
std::vector< reco::MET > METCollection
collection of MET objects
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
const std::vector< reco::PFTau > * pfTaus
std::vector< Muon > MuonCollection
collection of Muon objects
std::map< unsigned int, std::string > _genCut_leading
gen/rec pt-leading objects cuts
StringCutObjectSelector< reco::PFJet > * _recPFJetSelector
T getUntrackedParameter(std::string const &, T const &) const
U second(std::pair< T, U > const &p)
double x0() const
x coordinate
std::map< std::string, int > _triggerCounter
counting HLT passed events
std::map< unsigned int, edm::InputTag > _recLabels
StringCutObjectSelector< reco::GsfElectron > * _recElecSelector
std::map< unsigned int, std::string > _recCut_leading
const std::vector< reco::PFMET > * pfMHTs
Container::value_type value_type
void insertCandidates(const unsigned int &objtype, const EVTColContainer *col, std::vector< reco::LeafCandidate > *matches, std::map< int, double > &theSumEt, std::map< int, std::vector< const reco::Track *>> &trkObjs)
StringCutObjectSelector< reco::Muon > * _recMuonSelector
static constexpr int verbose
const std::vector< reco::GenMET > * genMETs
edm::ParameterSet _pset
Internal, working copy of the PSet passed from above.
const reco::BeamSpot * bs
void subAnalysisBookHistos(DQMStore::IBooker &iBooker, const edm::Run &iRun, const edm::EventSetup &iSetup)
Entry const & retrieve(char const *) const
std::vector< double > _parametersEta
Some kinematical parameters.
std::map< unsigned int, std::string > _recCut
std::vector< double > _parametersDxy
Cos< T >::type cos(const T &t)
StringCutObjectSelector< reco::Track > * _recTrackSelector
const std::vector< reco::PFJet > * pfJets
HLTConfigProvider _hltConfig
Interface to the HLT information.
const std::vector< reco::Track > * tracks
const std::vector< reco::Photon > * photons
~HLTExoticaSubAnalysis()
End Constructor.
double y0() const
y coordinate
std::vector< std::string > _hltPathsToCheck
The hlt paths to check for.
StringCutObjectSelector< reco::CaloMET > * _recCaloMHTSelector
std::string _hltProcessName
The labels of the object collections to be used in this analysis.
static const char *const trigNames[]
Transform3DPJ::Vector XYZVector
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
void registerConsumes(edm::ConsumesCollector &consCollector)
Registers consumption of objects.
void getHandlesToObjects(const edm::Event &iEvent, EVTColContainer *col)
Gets the collections themselves.
XYZPointD XYZPoint
point in space with cartesian internal representation
StringCutObjectSelector< reco::PFMET > * _recPFMETSelector
std::string _analysisname
The name of this sub-analysis.
StringCutObjectSelector< reco::Photon > * _recPhotonSelector
std::vector< Photon > PhotonCollection
collectin of Photon objects
std::map< unsigned int, StringCutObjectSelector< reco::GenParticle > * > _genSelectorMap
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
void beginRun(const edm::Run &iRun, const edm::EventSetup &iEventSetup)
const std::vector< reco::GsfElectron > * electrons
const std::vector< std::string > & triggerNames() const
names of trigger paths
std::vector< double > _parametersTurnOn
std::map< unsigned int, edm::EDGetToken > _tokens
std::map< std::string, MonitorElement * > _elements
Structure of the MonitorElements.
StringCutObjectSelector< reco::CaloMET > * _recCaloMETSelector
std::vector< PFJet > PFJetCollection
collection of PFJet objects
HLTExoticaSubAnalysis(const edm::ParameterSet &pset, const std::string &analysisname, edm::ConsumesCollector &&consCollector)
Constructor.
std::vector< reco::PFMET > PFMETCollection
collection of PFMET objects
const std::vector< reco::CaloMET > * caloMHTs
edm::EDGetTokenT< reco::GenParticleCollection > _genParticleToken
And also the tokens to get the object collections.
void initSelector(const unsigned int &objtype)
Initializes the selectors of the objects based on which object it is.
Log< level::Warning, false > LogWarning
std::vector< double > _parametersTurnOnSumEt
edm::InputTag _genParticleLabel
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
const std::vector< reco::PFMET > * pfMETs
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
std::set< std::string > _hltPaths
The hlt paths found in the hltConfig.
static const std::string getTypeString(const unsigned int &objtype)
Tranform types into strings.
edm::InputTag _beamSpotLabel
const edm::TriggerResults * triggerResults
StringCutObjectSelector< reco::PFMET > * _recPFMHTSelector
static std::string const source
edm::EDGetTokenT< reco::BeamSpot > _bsToken
StringCutObjectSelector< reco::PFTau > * _recPFTauSelector
void bookHist(DQMStore::IBooker &iBooker, const std::string &source, const std::string &objType, const std::string &variable)
The internal functions to book and fill histograms.
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
std::map< std::string, std::string > _shortpath2long
Relation between the short and long versions of the path.