CMS 3D CMS Logo

PhotonMonitor.cc
Go to the documentation of this file.
2 
4 
6 
8 
9 // -----------------------------
10 // constructors and destructor
11 // -----------------------------
12 
14  folderName_ ( iConfig.getParameter<std::string>("FolderName") )
15  , metToken_ ( consumes<reco::PFMETCollection> (iConfig.getParameter<edm::InputTag>("met") ) )
16  , jetToken_ ( mayConsume<reco::PFJetCollection> (iConfig.getParameter<edm::InputTag>("jets") ) )
17  , eleToken_ ( mayConsume<reco::GsfElectronCollection>(iConfig.getParameter<edm::InputTag>("electrons") ) )
18  , photonToken_ ( mayConsume<reco::PhotonCollection> (iConfig.getParameter<edm::InputTag>("photons") ) )
19  , photon_variable_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("photonBinning") )
20  , diphoton_mass_binning_ ( iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("massBinning") )
21  , photon_binning_ ( getHistoPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet> ("photonPSet") ) )
22  , ls_binning_ ( getHistoLSPSet (iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet> ("lsPSet") ) )
23  , num_genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"),consumesCollector(), *this))
24  , den_genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"),consumesCollector(), *this))
25  , metSelection_ ( iConfig.getParameter<std::string>("metSelection") )
26  , jetSelection_ ( iConfig.getParameter<std::string>("jetSelection") )
27  , eleSelection_ ( iConfig.getParameter<std::string>("eleSelection") )
28  , photonSelection_ ( iConfig.getParameter<std::string>("photonSelection") )
29  , njets_ ( iConfig.getParameter<unsigned int>("njets" ) )
30  , nphotons_ ( iConfig.getParameter<unsigned int>("nphotons" ) )
31  , nelectrons_ ( iConfig.getParameter<unsigned int>("nelectrons" ) )
32 {
33 
34  photonME_.numerator = nullptr;
35  photonME_.denominator = nullptr;
38  photonVsLS_.numerator = nullptr;
39  photonVsLS_.denominator = nullptr;
40  photonEtaME_.numerator = nullptr;
41  photonEtaME_.denominator = nullptr;
42  photonPhiME_.numerator = nullptr;
43  photonPhiME_.denominator = nullptr;
44  photonEtaPhiME_.numerator = nullptr;
45  photonEtaPhiME_.denominator = nullptr;
46  photonr9ME_.numerator = nullptr;
47  photonr9ME_.denominator = nullptr;
48  photonHoverEME_.numerator = nullptr;
49  photonHoverEME_.denominator = nullptr;
50 
51  diphotonMassME_.numerator = nullptr;
52  diphotonMassME_.denominator = nullptr;
53 
54  subphotonME_.numerator = nullptr;
55  subphotonME_.denominator = nullptr;
58  subphotonEtaME_.numerator = nullptr;
59  subphotonEtaME_.denominator = nullptr;
60  subphotonPhiME_.numerator = nullptr;
61  subphotonPhiME_.denominator = nullptr;
62  subphotonEtaPhiME_.numerator = nullptr;
64  subphotonr9ME_.numerator = nullptr;
65  subphotonr9ME_.denominator = nullptr;
66  subphotonHoverEME_.numerator = nullptr;
68 
69 }
71 
73 {
74  return MEbinning{
75  pset.getParameter<unsigned int>("nbins"),
76  pset.getParameter<double>("xmin"),
77  pset.getParameter<double>("xmax"),
78  };
79 }
80 
82 {
83  return MEbinning{
84  pset.getParameter<unsigned int>("nbins"),
85  0.,
86  double(pset.getParameter<unsigned int>("nbins"))
87  };
88 }
89 
90 void PhotonMonitor::setTitle(PhotonME& me, const std::string& titleX, const std::string& titleY)
91 {
92  me.numerator->setAxisTitle(titleX,1);
93  me.numerator->setAxisTitle(titleY,2);
94  me.denominator->setAxisTitle(titleX,1);
95  me.denominator->setAxisTitle(titleY,2);
96 
97 }
98 
99 void PhotonMonitor::bookME(DQMStore::IBooker &ibooker, PhotonME& me, const std::string& histname, const std::string& histtitle, unsigned int nbins, double min, double max)
100 {
101  me.numerator = ibooker.book1D(histname+"_numerator", histtitle+" (numerator)", nbins, min, max);
102  me.denominator = ibooker.book1D(histname+"_denominator", histtitle+" (denominator)", nbins, min, max);
103 }
104 void PhotonMonitor::bookME(DQMStore::IBooker &ibooker, PhotonME& me, const std::string& histname, const std::string& histtitle, const std::vector<double>& binning)
105 {
106  unsigned int nbins = binning.size()-1;
107  std::vector<float> fbinning(binning.begin(),binning.end());
108  // float* arr = &fbinning[0];
109  float* arr = fbinning.data();
110  me.numerator = ibooker.book1D(histname+"_numerator", histtitle+" (numerator)", nbins, arr);
111  me.denominator = ibooker.book1D(histname+"_denominator", histtitle+" (denominator)", nbins, arr);
112 }
113 void PhotonMonitor::bookME(DQMStore::IBooker &ibooker, PhotonME& me, const std::string& histname, const std::string& histtitle, unsigned int nbinsX, double xmin, double xmax, double ymin, double ymax)
114 {
115  me.numerator = ibooker.bookProfile(histname+"_numerator", histtitle+" (numerator)", nbinsX, xmin, xmax, ymin, ymax);
116  me.denominator = ibooker.bookProfile(histname+"_denominator", histtitle+" (denominator)", nbinsX, xmin, xmax, ymin, ymax);
117 }
118 void PhotonMonitor::bookME(DQMStore::IBooker &ibooker, PhotonME& me, const std::string& histname, const std::string& histtitle, unsigned int nbinsX, double xmin, double xmax, unsigned int nbinsY, double ymin, double ymax)
119 {
120  me.numerator = ibooker.book2D(histname+"_numerator", histtitle+" (numerator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
121  me.denominator = ibooker.book2D(histname+"_denominator", histtitle+" (denominator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
122 }
123 void PhotonMonitor::bookME(DQMStore::IBooker &ibooker, PhotonME& me, const std::string& histname, const std::string& histtitle, const std::vector<double>& binningX, const std::vector<double>& binningY)
124 {
125  unsigned int nbinsX = binningX.size()-1;
126  std::vector<float> fbinningX(binningX.begin(),binningX.end());
127  float* arrX = &fbinningX[0];
128  unsigned int nbinsY = binningY.size()-1;
129  std::vector<float> fbinningY(binningY.begin(),binningY.end());
130  float* arrY = &fbinningY[0];
131 
132  me.numerator = ibooker.book2D(histname+"_numerator", histtitle+" (numerator)", nbinsX, arrX, nbinsY, arrY);
133  me.denominator = ibooker.book2D(histname+"_denominator", histtitle+" (denominator)", nbinsX, arrX, nbinsY, arrY);
134 }
135 
137  edm::Run const & iRun,
138  edm::EventSetup const & iSetup)
139 {
140 
141  std::string histname, histtitle;
142 
143  std::string currentFolder = folderName_ ;
144  ibooker.setCurrentFolder(currentFolder.c_str());
145 
146  histname = "photon_pt"; histtitle = "photon PT";
148  setTitle(photonME_,"Photon pT [GeV]","events / [GeV]");
149 
150  histname = "photon_pt_variable"; histtitle = "photon PT";
151  bookME(ibooker,photonME_variableBinning_,histname,histtitle,photon_variable_binning_);
152  setTitle(photonME_variableBinning_,"Photon pT [GeV]","events / [GeV]");
153 
154  histname = "photonVsLS"; histtitle = "photon pt vs LS";
156  setTitle(photonVsLS_,"LS","Photon pT [GeV]");
157 
158  histname = "photon_phi"; histtitle = "Photon phi";
160  setTitle(photonPhiME_,"Photon #phi","events / 0.1 rad");
161 
162 
163  histname = "photon_eta"; histtitle = "Photon eta";
164  bookME(ibooker,photonEtaME_,histname,histtitle, eta_binning_.nbins, eta_binning_.xmin,eta_binning_.xmax);
165  setTitle(photonEtaME_,"Photon #eta","events");
166 
167  histname = "photon_r9"; histtitle = "Photon r9";
168  bookME(ibooker,photonr9ME_,histname,histtitle, r9_binning_.nbins, r9_binning_.xmin, r9_binning_.xmax);
169  setTitle(photonr9ME_,"Photon r9","events");
170 
171 
172  histname = "photon_hoE"; histtitle = "Photon hoverE";
174  setTitle(photonHoverEME_,"Photon hoE","events");
175 
176  histname = "photon_etaphi"; histtitle = "Photon eta-phi";
178  setTitle(photonEtaPhiME_,"#eta","#phi");
179 
180  //for diphotons
181  if(nphotons_>1)
182  {
183  histname = "diphoton_mass"; histtitle = "Diphoton mass";
184  bookME(ibooker,diphotonMassME_,histname,histtitle, diphoton_mass_binning_);
185  setTitle(diphotonMassME_,"Diphoton mass","events / 0.1");
186 
187  histname = "subphoton_pt"; histtitle = "subphoton PT";
189  setTitle(subphotonME_,"subPhoton pT [GeV]","events / [GeV]");
190 
191  histname = "subphoton_eta"; histtitle = "subPhoton eta";
193  setTitle(subphotonEtaME_,"subPhoton #eta","events / 0.1");
194 
195  histname = "subphoton_phi"; histtitle = "subPhoton phi";
197  setTitle(subphotonPhiME_,"subPhoton #phi","events / 0.1 rad");
198 
199  histname = "subphoton_r9"; histtitle = "subPhoton r9";
200  bookME(ibooker,subphotonr9ME_,histname,histtitle, r9_binning_.nbins, r9_binning_.xmin, r9_binning_.xmax);
201  setTitle(subphotonr9ME_,"subPhoton r9","events");
202 
203  histname = "subphoton_hoE"; histtitle = "subPhoton hoverE";
205  setTitle(subphotonHoverEME_,"subPhoton hoE","events");
206 
207  histname = "subphoton_etaphi"; histtitle = "subPhoton eta-phi";
209  setTitle(subphotonEtaPhiME_,"#eta","#phi");
210  }
211  // Initialize the GenericTriggerEventFlag
212  if ( num_genTriggerEventFlag_ && num_genTriggerEventFlag_->on() ) num_genTriggerEventFlag_->initRun( iRun, iSetup );
213  if ( den_genTriggerEventFlag_ && den_genTriggerEventFlag_->on() ) den_genTriggerEventFlag_->initRun( iRun, iSetup );
214 
215 }
216 
222 
223  // Filter out events if Trigger Filtering is requested
224  if (den_genTriggerEventFlag_->on() && ! den_genTriggerEventFlag_->accept( iEvent, iSetup) ) return;
225 
227  iEvent.getByToken( metToken_, metHandle );
228  reco::PFMET pfmet = metHandle->front();
229  if ( ! metSelection_( pfmet ) ) return;
230 
231  //float met = pfmet.pt();
232  // float phi = pfmet.phi();
233 
235  iEvent.getByToken( jetToken_, jetHandle );
236  std::vector<reco::PFJet> jets;
237  jets.clear();
238  if ( jetHandle->size() < njets_ ) return;
239  for ( auto const & j : *jetHandle ) {
240  if ( jetSelection_( j ) ) jets.push_back(j);
241  }
242  if ( jets.size() < njets_ ) return;
243 
245  iEvent.getByToken( eleToken_, eleHandle );
246  std::vector<reco::GsfElectron> electrons;
247  if ( eleHandle->size() < nelectrons_ ) return;
248  for ( auto const & e : *eleHandle ) {
249  if ( eleSelection_( e ) ) electrons.push_back(e);
250  }
251  if ( electrons.size() < nelectrons_ ) return;
252 
254  iEvent.getByToken( photonToken_, photonHandle );
255  std::vector<reco::Photon> photons;
256  photons.clear();
257 
258  if ( photonHandle->size() < nphotons_ ) return;
259  for ( auto const & p : *photonHandle ) {
260  if ( photonSelection_( p ) ) photons.push_back(p);
261  }
262  if ( photons.size() < nphotons_ ) return;
263 
264 
265  // filling histograms (denominator)
266  int ls = iEvent.id().luminosityBlock();
267  if(!(photons.empty()))
268 
269  {
270  photonME_.denominator -> Fill(photons[0].pt());
271  photonME_variableBinning_.denominator -> Fill(photons[0].pt());
272  photonPhiME_.denominator->Fill(photons[0].phi());
273  photonEtaME_.denominator->Fill(photons[0].eta());
274  photonVsLS_.denominator -> Fill(ls, photons[0].pt());
275  photonEtaPhiME_.denominator -> Fill(photons[0].eta(), photons[0].phi());
276  photonr9ME_.denominator->Fill(photons[0].r9());
277  photonHoverEME_.denominator->Fill(photons[0].hadTowOverEm());
278  }
279 
280  if(nphotons_>1)
281  //filling diphoton histograms
282  {
283  subphotonME_.denominator -> Fill(photons[1].pt());
284  subphotonEtaME_.denominator -> Fill(photons[1].eta());
285  subphotonPhiME_.denominator -> Fill(photons[1].phi());
286  subphotonEtaPhiME_.denominator -> Fill(photons[1].eta(), photons[1].phi());
287  subphotonr9ME_.denominator->Fill(photons[1].r9());
288  subphotonHoverEME_.denominator->Fill(photons[1].hadTowOverEm());
289  diphotonMassME_.denominator -> Fill(sqrt(2*photons[0].pt()*photons[1].pt()*(cosh(photons[0].eta()-photons[1].eta())-cos(photons[0].phi()-photons[1].phi()))));
290  }
291 
292  // applying selection for numerator
293  if (num_genTriggerEventFlag_->on() && ! num_genTriggerEventFlag_->accept( iEvent, iSetup) ) return;
294 
295  // filling histograms (num_genTriggerEventFlag_)
296  if(!(photons.empty()))
297  {
298  photonME_.numerator -> Fill(photons[0].pt());
299  photonME_variableBinning_.numerator -> Fill(photons[0].pt());
300  photonPhiME_.numerator->Fill(photons[0].phi());
301  photonEtaME_.numerator->Fill(photons[0].eta());
302  photonVsLS_.numerator -> Fill(ls, photons[0].pt());
303  photonEtaPhiME_.numerator -> Fill(photons[0].eta(), photons[0].phi());
304  photonr9ME_.numerator->Fill(photons[0].r9());
305  photonHoverEME_.numerator->Fill(photons[0].hadTowOverEm());
306  }
307  if(nphotons_>1)
308  //filling diphoton histograms
309  {
310  subphotonME_.numerator -> Fill(photons[1].pt());
311  subphotonEtaME_.numerator -> Fill(photons[1].eta());
312  subphotonPhiME_.numerator -> Fill(photons[1].phi());
313  subphotonEtaPhiME_.numerator -> Fill(photons[1].eta(), photons[1].phi());
314  subphotonr9ME_.numerator->Fill(photons[1].r9());
315  subphotonHoverEME_.numerator->Fill(photons[1].hadTowOverEm());
316  diphotonMassME_.numerator -> Fill(sqrt(2*photons[0].pt()*photons[1].pt()*(cosh(photons[0].eta()-photons[1].eta())-cos(photons[0].phi()-photons[1].phi()))));
317  }
318 }
319 
321 {
322  pset.add<unsigned int> ( "nbins");
323  pset.add<double>( "xmin" );
324  pset.add<double>( "xmax" );
325 }
326 
328 {
329  pset.add<unsigned int> ( "nbins", 2500);
330 }
331 
333 {
335  desc.add<std::string> ( "FolderName", "HLT/Photon" );
336  desc.add<edm::InputTag>( "met", edm::InputTag("pfMet") );
337  desc.add<edm::InputTag>( "jets", edm::InputTag("ak4PFJetsCHS") );
338  desc.add<edm::InputTag>( "electrons",edm::InputTag("gedGsfElectrons") );
339  desc.add<edm::InputTag>( "photons",edm::InputTag("gedPhotons") );
340  desc.add<std::string>("metSelection", "pt > 0");
341  desc.add<std::string>("jetSelection", "pt > 0");
342  desc.add<std::string>("eleSelection", "pt > 0");
343  desc.add<std::string>("photonSelection", "pt > 145 && eta<1.4442 && hadTowOverEm<0.0597 && full5x5_sigmaIetaIeta()<0.01031 && chargedHadronIso<1.295");
344  //desc.add<std::string>("photonSelection", "pt > 145");
345  desc.add<unsigned int>("njets", 0);
346  desc.add<unsigned int>("nelectrons", 0);
347  desc.add<unsigned int>("nphotons", 0);
348 
349  edm::ParameterSetDescription genericTriggerEventPSet;
350  genericTriggerEventPSet.add<bool>("andOr");
351  genericTriggerEventPSet.add<edm::InputTag>("dcsInputTag", edm::InputTag("scalersRawToDigi") );
352  genericTriggerEventPSet.add<std::vector<int> >("dcsPartitions",{});
353  genericTriggerEventPSet.add<bool>("andOrDcs", false);
354  genericTriggerEventPSet.add<bool>("errorReplyDcs", true);
355  genericTriggerEventPSet.add<std::string>("dbLabel","");
356  genericTriggerEventPSet.add<bool>("andOrHlt", true);
357  genericTriggerEventPSet.add<edm::InputTag>("hltInputTag", edm::InputTag("TriggerResults::HLT") );
358  genericTriggerEventPSet.add<std::vector<std::string> >("hltPaths",{});
359  genericTriggerEventPSet.add<std::string>("hltDBKey","");
360  genericTriggerEventPSet.add<bool>("errorReplyHlt",false);
361  genericTriggerEventPSet.add<unsigned int>("verbosityLevel",1);
362 
363  desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
364  desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
365 
368  fillHistoPSetDescription(metPSet);
369  histoPSet.add<edm::ParameterSetDescription>("photonPSet", metPSet);
370  std::vector<double> bins = {0.,20.,40.,60.,80.,90.,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,220.,240.,260.,280.,300.,350.,400.,450.,1000.};
371  histoPSet.add<std::vector<double> >("photonBinning", bins);
372  std::vector<double> massbins = {90.,91.,92.,93.,94.,95.,96.,97.,98.,99.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.,115.,120.,130.,150.,200.};
373  histoPSet.add<std::vector<double> >("massBinning", massbins);
376  histoPSet.add<edm::ParameterSetDescription>("lsPSet", lsPSet);
377 
378  desc.add<edm::ParameterSetDescription>("histoPSet",histoPSet);
379 
380  descriptions.add("photonMonitoring", desc);
381 }
382 
383 // Define this as a plug-in
T getParameter(std::string const &) const
MonitorElement * denominator
Definition: PhotonMonitor.h:49
const MEbinning r9_binning_
unsigned int nelectrons_
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
PhotonME photonEtaPhiME_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
PhotonME subphotonME_variableBinning_
Definition: PhotonMonitor.h:99
MEbinning ls_binning_
Definition: PhotonMonitor.h:94
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
PhotonME photonVsLS_
StringCutObjectSelector< reco::PFJet, true > jetSelection_
PhotonME subphotonPhiME_
Definition: PhotonMonitor.h:98
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:40
PhotonME photonME_variableBinning_
PhotonME photonr9ME_
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
StringCutObjectSelector< reco::Photon, true > photonSelection_
MEbinning photon_binning_
Definition: PhotonMonitor.h:93
static MEbinning getHistoLSPSet(edm::ParameterSet const &pset)
void Fill(long long x)
MonitorElement * numerator
Definition: PhotonMonitor.h:48
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
int iEvent
Definition: GenABIO.cc:230
PhotonME diphotonMassME_
std::string folderName_
Definition: PhotonMonitor.h:79
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
StringCutObjectSelector< reco::MET, true > metSelection_
StringCutObjectSelector< reco::GsfElectron, true > eleSelection_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
edm::EDGetTokenT< reco::PhotonCollection > photonToken_
Definition: PhotonMonitor.h:85
T sqrt(T t)
Definition: SSEVec.h:18
PhotonME photonHoverEME_
vector< PseudoJet > jets
double xmin
Definition: LumiMonitor.h:30
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
PhotonME photonPhiME_
std::vector< double > diphoton_mass_binning_
Definition: PhotonMonitor.h:91
edm::EDGetTokenT< reco::PFMETCollection > metToken_
Definition: PhotonMonitor.h:82
T min(T a, T b)
Definition: MathUtil.h:58
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static MEbinning getHistoPSet(edm::ParameterSet const &pset)
PhotonMonitor(const edm::ParameterSet &)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void setTitle(PhotonME &me, const std::string &titleX, const std::string &titleY)
PhotonME subphotonHoverEME_
PhotonME subphotonME_
Definition: PhotonMonitor.h:97
PhotonME photonEtaME_
PhotonME subphotonEtaME_
Definition: PhotonMonitor.h:96
~PhotonMonitor() override
unsigned int nphotons_
def ls(path, rec=False)
Definition: eostools.py:348
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
PhotonME subphotonr9ME_
PhotonME subphotonEtaPhiME_
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
const MEbinning hoe_binning_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< reco::PFJetCollection > jetToken_
Definition: PhotonMonitor.h:83
edm::EventID id() const
Definition: EventBase.h:60
unsigned int njets_
std::vector< PFJet > PFJetCollection
collection of PFJet objects
fixed size matrix
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
HLT enums.
PhotonME photonME_
edm::EDGetTokenT< reco::GsfElectronCollection > eleToken_
Definition: PhotonMonitor.h:84
std::vector< double > photon_variable_binning_
Definition: PhotonMonitor.h:90
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
const MEbinning eta_binning_
const MEbinning phi_binning_1
Definition: Run.h:42
void bookME(DQMStore::IBooker &, PhotonME &me, const std::string &histname, const std::string &histtitle, unsigned int nbins, double xmin, double xmax)
double xmax
Definition: LumiMonitor.h:31
Collection of PF MET.