49 std::map<std::string, MonitorElement *>
me;
64 inputPFlowLabel_tok_ = consumes<reco::PFCandidateCollection>(iConfig.
getParameter<
std::string>(
"InputPFlowLabel"));
67 if (!outputFile_.empty())
68 edm::LogInfo(
"OutputInfo") <<
" ParticleFLow Task histograms will be saved to '" << outputFile_.c_str() <<
"'";
70 edm::LogInfo(
"OutputInfo") <<
" ParticleFlow Task histograms will NOT be saved";
80 dbe_->setCurrentFolder(
"PFTask/PFCandidates");
82 me[
"CandidateEt"] =
dbe_->book1D(
"CandidateEt",
"CandidateEt", 1000, 0, 1000);
83 me[
"CandidateEta"] =
dbe_->book1D(
"CandidateEta",
"CandidateEta", 200, -5, 5);
84 me[
"CandidatePhi"] =
dbe_->book1D(
"CandidatePhi",
"CandidatePhi", 200, -
M_PI,
M_PI);
85 me[
"CandidateCharge"] =
dbe_->book1D(
"CandidateCharge",
"CandidateCharge", 5, -2, 2);
86 me[
"PFCandidateType"] =
dbe_->book1D(
"PFCandidateType",
"PFCandidateType", 10, 0, 10);
88 dbe_->setCurrentFolder(
"PFTask/PFBlocks");
90 me[
"NumElements"] =
dbe_->book1D(
"NumElements",
"NumElements", 25, 0, 25);
91 me[
"NumTrackElements"] =
dbe_->book1D(
"NumTrackElements",
"NumTrackElements", 5, 0, 5);
92 me[
"NumPS1Elements"] =
dbe_->book1D(
"NumPS1Elements",
"NumPS1Elements", 5, 0, 5);
93 me[
"NumPS2Elements"] =
dbe_->book1D(
"NumPS2Elements",
"NumPS2Elements", 5, 0, 5);
94 me[
"NumECALElements"] =
dbe_->book1D(
"NumECALElements",
"NumECALElements", 5, 0, 5);
95 me[
"NumHCALElements"] =
dbe_->book1D(
"NumHCALElements",
"NumHCALElements", 5, 0, 5);
96 me[
"NumMuonElements"] =
dbe_->book1D(
"NumMuonElements",
"NumMuonElements", 5, 0, 5);
98 dbe_->setCurrentFolder(
"PFTask/PFTracks");
100 me[
"TrackCharge"] =
dbe_->book1D(
"TrackCharge",
"TrackCharge", 5, -2, 2);
101 me[
"TrackNumPoints"] =
dbe_->book1D(
"TrackNumPoints",
"TrackNumPoints", 100, 0, 100);
102 me[
"TrackNumMeasurements"] =
dbe_->book1D(
"TrackNumMeasurements",
"TrackNumMeasurements", 100, 0, 100);
103 me[
"TrackImpactParameter"] =
dbe_->book1D(
"TrackImpactParameter",
"TrackImpactParameter", 1000, 0, 1);
105 dbe_->setCurrentFolder(
"PFTask/PFClusters");
120 iEvent.
getByToken(inputPFlowLabel_tok_, pflow_hnd);
121 pflow_candidates = pflow_hnd.
product();
124 if (!pflow_candidates) {
125 edm::LogInfo(
"OutputInfo") <<
" failed to retrieve data required by ParticleFlow Task";
126 edm::LogInfo(
"OutputInfo") <<
" ParticleFlow Task cannot continue...!";
135 PFCandidateCollection::const_iterator pf;
136 for (pf = pflow_candidates->begin(); pf != pflow_candidates->end(); pf++) {
140 me[
"CandidateEt"]->Fill(particle->
et());
141 me[
"CandidateEta"]->Fill(particle->
eta());
142 me[
"CandidatePhi"]->Fill(particle->
phi());
143 me[
"CandidateCharge"]->Fill(particle->
charge());
144 me[
"CandidatePdgId"]->Fill(particle->
pdgId());
220 if (!outputFile_.empty() &&
dbe_)
221 dbe_->save(outputFile_);
T getUntrackedParameter(std::string const &, T const &) const
dqm::legacy::MonitorElement MonitorElement
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
void analyze(const edm::Event &, const edm::EventSetup &) override
std::map< std::string, MonitorElement * > me
int pdgId() const final
PDG identifier.
Log< level::Info, false > LogInfo
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
T const * product() const
dqm::legacy::DQMStore DQMStore
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::PFCandidateCollection > inputPFlowLabel_tok_
Particle reconstructed by the particle flow algorithm.
double et() const final
transverse energy
virtual ParticleType particleId() const
double phi() const final
momentum azimuthal angle
PFTester(const edm::ParameterSet &)
int charge() const final
electric charge
double eta() const final
momentum pseudorapidity