CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Static Private Member Functions | Private Attributes
JetAnalyzer_HeavyIons_matching Class Reference

#include <JetAnalyzer_HeavyIons_matching.h>

Inheritance diagram for JetAnalyzer_HeavyIons_matching:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Classes

struct  CompareMatchedJets
 
struct  MyJet
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 JetAnalyzer_HeavyIons_matching (const edm::ParameterSet &)
 
 ~JetAnalyzer_HeavyIons_matching () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Types

typedef std::multiset< ABJetPair >::iterator ABItr
 
typedef std::pair< MyJet, MyJetABJetPair
 
typedef std::multiset< ABJetPair, CompareMatchedJetsABMatchedJets
 

Static Private Member Functions

static float deltaRR (float eta1, float phi1, float eta2, float phi2)
 

Private Attributes

edm::EDGetTokenT< reco::BasicJetCollectionbasicJetsToken_
 
edm::EDGetTokenT< reco::CaloJetCollectioncaloJet1Token_
 
edm::EDGetTokenT< reco::CaloJetCollectioncaloJet2Token_
 
std::string JetType1
 
std::string JetType2
 
edm::EDGetTokenT< reco::JPTJetCollectionjptJetsToken_
 
MonitorElementmChargedEmEnergy_Jet1_unmatched
 
MonitorElementmChargedEmEnergy_Jet2_unmatched
 
MonitorElementmChargedHadEnergyFraction_Jet1_unmatched
 
MonitorElementmChargedHadEnergyFraction_Jet2_unmatched
 
MonitorElementmChargedHadronEnergy_Jet1_unmatched
 
MonitorElementmChargedHadronEnergy_Jet2_unmatched
 
MonitorElementmChargedMuEnergy_Jet1_unmatched
 
MonitorElementmChargedMuEnergy_Jet2_unmatched
 
MonitorElementmElectronEnergyFraction_Jet1_unmatched
 
MonitorElementmElectronEnergyFraction_Jet2_unmatched
 
MonitorElementmEmEnergy_Jet1_unmatched
 
MonitorElementmEmEnergy_Jet2_unmatched
 
MonitorElementmHadEnergy_Jet1_unmatched
 
MonitorElementmHadEnergy_Jet2_unmatched
 
edm::InputTag mInputJet1Collection
 
edm::InputTag mInputJet2Collection
 
MonitorElementmMuonEnergyFraction_Jet1_unmatched
 
MonitorElementmMuonEnergyFraction_Jet2_unmatched
 
MonitorElementmNeutralEmEnergy_Jet1_unmatched
 
MonitorElementmNeutralEmEnergy_Jet2_unmatched
 
MonitorElementmNeutralHadEnergyFraction_Jet1_unmatched
 
MonitorElementmNeutralHadEnergyFraction_Jet2_unmatched
 
MonitorElementmNeutralHadronEnergy_Jet1_unmatched
 
MonitorElementmNeutralHadronEnergy_Jet2_unmatched
 
std::string mOutputFile
 
MonitorElementmPhotonEnergyFraction_Jet1_unmatched
 
MonitorElementmPhotonEnergyFraction_Jet2_unmatched
 
MonitorElementmpT_Jet1_matched
 
MonitorElementmpT_Jet1_unmatched
 
MonitorElementmpT_Jet2_matched
 
MonitorElementmpT_Jet2_unmatched
 
MonitorElementmpT_ratio_Jet1Jet2
 
double mRecoDelRMatch
 
double mRecoJetEtaCut
 
double mRecoJetPtThreshold
 
edm::EDGetTokenT< reco::PFJetCollectionpfJetsToken_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 74 of file JetAnalyzer_HeavyIons_matching.h.

Member Typedef Documentation

◆ ABItr

typedef std::multiset<ABJetPair>::iterator JetAnalyzer_HeavyIons_matching::ABItr
private

Definition at line 161 of file JetAnalyzer_HeavyIons_matching.h.

◆ ABJetPair

Definition at line 144 of file JetAnalyzer_HeavyIons_matching.h.

◆ ABMatchedJets

Definition at line 160 of file JetAnalyzer_HeavyIons_matching.h.

Constructor & Destructor Documentation

◆ JetAnalyzer_HeavyIons_matching()

JetAnalyzer_HeavyIons_matching::JetAnalyzer_HeavyIons_matching ( const edm::ParameterSet iConfig)
explicit

Definition at line 17 of file JetAnalyzer_HeavyIons_matching.cc.

References basicJetsToken_, caloJet1Token_, caloJet2Token_, JetType1, JetType2, edm::InputTag::label(), mChargedEmEnergy_Jet1_unmatched, mChargedEmEnergy_Jet2_unmatched, mChargedHadEnergyFraction_Jet1_unmatched, mChargedHadEnergyFraction_Jet2_unmatched, mChargedHadronEnergy_Jet1_unmatched, mChargedHadronEnergy_Jet2_unmatched, mChargedMuEnergy_Jet1_unmatched, mChargedMuEnergy_Jet2_unmatched, mElectronEnergyFraction_Jet1_unmatched, mElectronEnergyFraction_Jet2_unmatched, mEmEnergy_Jet1_unmatched, mEmEnergy_Jet2_unmatched, mHadEnergy_Jet1_unmatched, mHadEnergy_Jet2_unmatched, mInputJet1Collection, mInputJet2Collection, mMuonEnergyFraction_Jet1_unmatched, mMuonEnergyFraction_Jet2_unmatched, mNeutralEmEnergy_Jet1_unmatched, mNeutralEmEnergy_Jet2_unmatched, mNeutralHadEnergyFraction_Jet1_unmatched, mNeutralHadEnergyFraction_Jet2_unmatched, mNeutralHadronEnergy_Jet1_unmatched, mNeutralHadronEnergy_Jet2_unmatched, mPhotonEnergyFraction_Jet1_unmatched, mPhotonEnergyFraction_Jet2_unmatched, mpT_Jet1_matched, mpT_Jet1_unmatched, mpT_Jet2_matched, mpT_Jet2_unmatched, mpT_ratio_Jet1Jet2, pfJetsToken_, and AlCaHLTBitMon_QueryRunRegistry::string.

18  : mInputJet1Collection(iConfig.getParameter<edm::InputTag>("src_Jet1")),
19  mInputJet2Collection(iConfig.getParameter<edm::InputTag>("src_Jet2")),
20  JetType1(iConfig.getUntrackedParameter<std::string>("Jet1")),
21  JetType2(iConfig.getUntrackedParameter<std::string>("Jet2")),
22  mRecoJetPtThreshold(iConfig.getParameter<double>("recoJetPtThreshold")),
23  mRecoDelRMatch(iConfig.getParameter<double>("recoDelRMatch")),
24  mRecoJetEtaCut(iConfig.getParameter<double>("recoJetEtaCut")) {
25  std::string inputCollectionLabelJet1(mInputJet1Collection.label());
26  std::string inputCollectionLabelJet2(mInputJet2Collection.label());
27 
28  //consumes
29 
30  if (std::string("VsCalo") == JetType1)
31  caloJet1Token_ = consumes<reco::CaloJetCollection>(mInputJet1Collection);
32  if (std::string("VsPF") == JetType1)
33  pfJetsToken_ = consumes<reco::PFJetCollection>(mInputJet1Collection);
34  if (std::string("PuCalo") == JetType1)
35  caloJet2Token_ = consumes<reco::CaloJetCollection>(mInputJet1Collection);
36  if (std::string("PuPF") == JetType1)
37  basicJetsToken_ = consumes<reco::BasicJetCollection>(mInputJet1Collection);
38 
39  if (std::string("VsCalo") == JetType2)
40  caloJet1Token_ = consumes<reco::CaloJetCollection>(mInputJet2Collection);
41  if (std::string("VsPF") == JetType2)
42  pfJetsToken_ = consumes<reco::PFJetCollection>(mInputJet2Collection);
43  if (std::string("PuCalo") == JetType2)
44  caloJet2Token_ = consumes<reco::CaloJetCollection>(mInputJet2Collection);
45  if (std::string("PuPF") == JetType2)
46  basicJetsToken_ = consumes<reco::BasicJetCollection>(mInputJet2Collection);
47 
48  // initialize the Jet matching histograms
49 
50  mpT_ratio_Jet1Jet2 = nullptr;
51  mpT_Jet1_matched = nullptr;
52  mpT_Jet2_matched = nullptr;
53  mpT_Jet1_unmatched = nullptr;
54  mpT_Jet2_unmatched = nullptr;
55 
56  // we need to add histograms which will hold the hadronic and electromagnetic energy content for the unmatched Jets.
57  if (std::string("VsCalo") == JetType1 || std::string("PuCalo") == JetType1) {
58  mHadEnergy_Jet1_unmatched = nullptr;
59  mEmEnergy_Jet1_unmatched = nullptr;
60  }
61  if (std::string("VsCalo") == JetType2 || std::string("PuCalo") == JetType2) {
62  mHadEnergy_Jet2_unmatched = nullptr;
63  mEmEnergy_Jet2_unmatched = nullptr;
64  }
65 
66  if (std::string("VsPF") == JetType1) {
77  }
78 
79  if (std::string("VsPF") == JetType2) {
90  }
91 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::EDGetTokenT< reco::PFJetCollection > pfJetsToken_
std::string const & label() const
Definition: InputTag.h:36
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< reco::CaloJetCollection > caloJet1Token_
edm::EDGetTokenT< reco::CaloJetCollection > caloJet2Token_
edm::EDGetTokenT< reco::BasicJetCollection > basicJetsToken_

◆ ~JetAnalyzer_HeavyIons_matching()

JetAnalyzer_HeavyIons_matching::~JetAnalyzer_HeavyIons_matching ( )
override

Definition at line 189 of file JetAnalyzer_HeavyIons_matching.cc.

189 {}

Member Function Documentation

◆ analyze()

void JetAnalyzer_HeavyIons_matching::analyze ( const edm::Event mEvent,
const edm::EventSetup mSetup 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 194 of file JetAnalyzer_HeavyIons_matching.cc.

References basicJetsToken_, caloJet1Token_, caloJet2Token_, deltaRR(), PVValHelper::eta, JetAnalyzer_HeavyIons_matching::MyJet::eta, dqm::impl::MonitorElement::Fill(), JetAnalyzer_HeavyIons_matching::MyJet::id, JetType1, JetType2, mChargedEmEnergy_Jet1_unmatched, mChargedEmEnergy_Jet2_unmatched, mChargedHadEnergyFraction_Jet1_unmatched, mChargedHadEnergyFraction_Jet2_unmatched, mChargedHadronEnergy_Jet1_unmatched, mChargedHadronEnergy_Jet2_unmatched, mChargedMuEnergy_Jet1_unmatched, mChargedMuEnergy_Jet2_unmatched, mElectronEnergyFraction_Jet1_unmatched, mElectronEnergyFraction_Jet2_unmatched, mEmEnergy_Jet1_unmatched, mEmEnergy_Jet2_unmatched, evf::FastMonState::mEvent, mHadEnergy_Jet1_unmatched, mHadEnergy_Jet2_unmatched, mMuonEnergyFraction_Jet1_unmatched, mMuonEnergyFraction_Jet2_unmatched, mNeutralEmEnergy_Jet1_unmatched, mNeutralEmEnergy_Jet2_unmatched, mNeutralHadEnergyFraction_Jet1_unmatched, mNeutralHadEnergyFraction_Jet2_unmatched, mNeutralHadronEnergy_Jet1_unmatched, mNeutralHadronEnergy_Jet2_unmatched, mPhotonEnergyFraction_Jet1_unmatched, mPhotonEnergyFraction_Jet2_unmatched, mpT_Jet1_matched, mpT_Jet1_unmatched, mpT_Jet2_matched, mpT_Jet2_unmatched, mpT_ratio_Jet1Jet2, mRecoDelRMatch, mRecoJetEtaCut, mRecoJetPtThreshold, pfJetBenchmark_cfi::pfJets, pfJetsToken_, JetAnalyzer_HeavyIons_matching::MyJet::phi, DiDispStaMuonMonitor_cfi::pt, JetAnalyzer_HeavyIons_matching::MyJet::pt, and AlCaHLTBitMon_QueryRunRegistry::string.

194  {
195  // Get the Jet collection
196  //----------------------------------------------------------------------------
197 
198  std::vector<const Jet*> recoJet1;
199  recoJet1.clear();
200  std::vector<const Jet*> recoJet2;
201  recoJet2.clear();
202 
208 
209  if (std::string("VsCalo") == JetType1) {
210  mEvent.getByToken(caloJet1Token_, caloJet1);
211  for (unsigned ijet = 0; ijet < caloJet1->size(); ++ijet)
212  recoJet1.push_back(&(*caloJet1)[ijet]);
213  }
214  if (std::string("PuCalo") == JetType1) {
215  mEvent.getByToken(caloJet2Token_, caloJet1);
216  for (unsigned ijet = 0; ijet < caloJet1->size(); ++ijet)
217  recoJet1.push_back(&(*caloJet1)[ijet]);
218  }
219  if (std::string("VsPF") == JetType1) {
220  mEvent.getByToken(pfJetsToken_, pfJets);
221  for (unsigned ijet = 0; ijet < pfJets->size(); ++ijet)
222  recoJet1.push_back(&(*pfJets)[ijet]);
223  }
224  if (std::string("PuPF") == JetType1) {
225  mEvent.getByToken(basicJetsToken_, basicJets);
226  for (unsigned ijet = 0; ijet < basicJets->size(); ++ijet)
227  recoJet1.push_back(&(*basicJets)[ijet]);
228  }
229 
230  if (std::string("VsCalo") == JetType2) {
231  mEvent.getByToken(caloJet1Token_, caloJet2);
232  for (unsigned ijet = 0; ijet < caloJet2->size(); ++ijet)
233  recoJet2.push_back(&(*caloJet2)[ijet]);
234  }
235  if (std::string("PuCalo") == JetType2) {
236  mEvent.getByToken(caloJet2Token_, caloJet2);
237  for (unsigned ijet = 0; ijet < caloJet2->size(); ++ijet)
238  recoJet2.push_back(&(*caloJet2)[ijet]);
239  }
240  if (std::string("VsPF") == JetType2) {
241  mEvent.getByToken(pfJetsToken_, pfJets);
242  for (unsigned ijet = 0; ijet < pfJets->size(); ++ijet)
243  recoJet2.push_back(&(*pfJets)[ijet]);
244  }
245  if (std::string("PuPF") == JetType2) {
246  mEvent.getByToken(basicJetsToken_, basicJets);
247  for (unsigned ijet = 0; ijet < basicJets->size(); ++ijet)
248  recoJet2.push_back(&(*basicJets)[ijet]);
249  }
250 
251  // start to perform the matching - between recoJet1 and recoJet2.
252 
253  Int_t Jet1_nref = recoJet1.size();
254  Int_t Jet2_nref = recoJet2.size();
255 
256  int jet1 = 0;
257  int jet2 = 0;
258 
259  std::vector<MyJet> vJet1, vJet2;
260  std::vector<int> Jet1_ID(Jet1_nref), Jet2_ID(Jet2_nref);
261 
262  if (Jet1_nref == 0 || Jet2_nref == 0)
263  return;
264 
265  for (unsigned ijet1 = 0; ijet1 < recoJet1.size(); ++ijet1) {
266  if (recoJet1[ijet1]->pt() < mRecoJetPtThreshold)
267  continue;
268  if (fabs(recoJet1[ijet1]->eta()) < mRecoJetEtaCut)
269  continue;
270 
271  MyJet JET1;
272  JET1.eta = recoJet1[ijet1]->eta();
273  JET1.phi = recoJet1[ijet1]->phi();
274  JET1.pt = recoJet1[ijet1]->pt();
275  JET1.id = ijet1;
276 
277  vJet1.push_back(JET1);
278  jet1++;
279 
280  } // first jet loop
281 
282  for (unsigned ijet2 = 0; ijet2 < recoJet2.size(); ++ijet2) {
283  if (recoJet2[ijet2]->pt() < mRecoJetPtThreshold)
284  continue;
285  if (fabs(recoJet2[ijet2]->eta()) < mRecoJetEtaCut)
286  continue;
287 
288  MyJet JET2;
289  JET2.eta = recoJet2[ijet2]->eta();
290  JET2.phi = recoJet2[ijet2]->phi();
291  JET2.pt = recoJet2[ijet2]->pt();
292  JET2.id = ijet2;
293 
294  vJet2.push_back(JET2);
295  jet2++;
296 
297  } // second jet loop
298 
299  bool onlyJet1 = (jet1 > 0 && jet2 == 0) ? true : false;
300  bool onlyJet2 = (jet1 == 0 && jet2 > 0) ? true : false;
301  bool bothJet1Jet2 = (jet1 > 0 && jet2 > 0) ? true : false;
302 
303  std::vector<MyJet>::const_iterator iJet, jJet;
304 
305  if (onlyJet1) {
306  for (iJet = vJet1.begin(); iJet != vJet1.end(); ++iJet) {
307  int pj = (*iJet).id;
308 
309  mpT_Jet1_unmatched->Fill(recoJet1[pj]->pt());
310  }
311 
312  } else if (onlyJet2) {
313  for (iJet = vJet2.begin(); iJet != vJet2.end(); ++iJet) {
314  int cj = (*iJet).id;
315 
316  mpT_Jet2_unmatched->Fill(recoJet2[cj]->pt());
317  }
318 
319  } else if (bothJet1Jet2) {
320  ABMatchedJets mABMatchedJets;
321 
322  for (iJet = vJet1.begin(); iJet != vJet1.end(); ++iJet) {
323  for (jJet = vJet2.begin(); jJet != vJet2.end(); ++jJet) {
324  mABMatchedJets.insert(std::make_pair(*iJet, *jJet));
325  }
326  }
327 
328  ABItr itr;
329  // matched Jets matching Jet 1 to Jet 2
330  for (itr = mABMatchedJets.begin(); itr != mABMatchedJets.end(); ++itr) {
331  ABJetPair jetpair = (*itr);
332  MyJet Aj = jetpair.first;
333  MyJet Bj = jetpair.second;
334 
335  float delr = JetAnalyzer_HeavyIons_matching::deltaRR(Bj.eta, Bj.phi, Aj.eta, Aj.phi);
336 
337  if (delr < mRecoDelRMatch && Jet1_ID[Aj.id] == 0) {
338  mpT_ratio_Jet1Jet2->Fill((Float_t)recoJet2[Bj.id]->pt() / recoJet1[Aj.id]->pt());
339 
340  mpT_Jet1_matched->Fill(recoJet1[Aj.id]->pt());
341  mpT_Jet2_matched->Fill(recoJet2[Bj.id]->pt());
342 
343  Jet1_ID[Aj.id] = 1;
344  Jet2_ID[Bj.id] = 1;
345  }
346  }
347 
348  // for unmatched Jets
349  for (itr = mABMatchedJets.begin(); itr != mABMatchedJets.end(); ++itr) {
350  ABJetPair jetpair = (*itr);
351 
352  MyJet Aj = jetpair.first;
353  MyJet Bj = jetpair.second;
354 
355  if (Jet1_ID[Aj.id] == 0) {
356  mpT_Jet1_unmatched->Fill(recoJet1[Aj.id]->pt());
357  Jet1_ID[Aj.id] = 1;
358 
359  if (std::string("VsCalo") == JetType1 || std::string("PuCalo") == JetType1) {
360  mHadEnergy_Jet1_unmatched->Fill((*caloJet1)[Aj.id].hadEnergyInHO() + (*caloJet1)[Aj.id].hadEnergyInHB() +
361  (*caloJet1)[Aj.id].hadEnergyInHF() + (*caloJet1)[Aj.id].hadEnergyInHE());
362  mEmEnergy_Jet1_unmatched->Fill((*caloJet1)[Aj.id].emEnergyInEB() + (*caloJet1)[Aj.id].emEnergyInEE() +
363  (*caloJet1)[Aj.id].emEnergyInHF());
364  }
365 
366  if (std::string("VsPF") == JetType1) {
367  mChargedHadronEnergy_Jet1_unmatched->Fill((*pfJets)[Aj.id].chargedHadronEnergy());
368  mNeutralHadronEnergy_Jet1_unmatched->Fill((*pfJets)[Aj.id].neutralHadronEnergy());
369  mChargedEmEnergy_Jet1_unmatched->Fill((*pfJets)[Aj.id].chargedEmEnergy());
370  mNeutralEmEnergy_Jet1_unmatched->Fill((*pfJets)[Aj.id].neutralEmEnergy());
371  mChargedMuEnergy_Jet1_unmatched->Fill((*pfJets)[Aj.id].chargedMuEnergy());
372 
373  mChargedHadEnergyFraction_Jet1_unmatched->Fill((*pfJets)[Aj.id].chargedHadronEnergyFraction());
374  mNeutralHadEnergyFraction_Jet1_unmatched->Fill((*pfJets)[Aj.id].neutralHadronEnergyFraction());
375  mPhotonEnergyFraction_Jet1_unmatched->Fill((*pfJets)[Aj.id].photonEnergyFraction());
376  mElectronEnergyFraction_Jet1_unmatched->Fill((*pfJets)[Aj.id].electronEnergyFraction());
377  mMuonEnergyFraction_Jet1_unmatched->Fill((*pfJets)[Aj.id].muonEnergyFraction());
378  }
379  }
380 
381  if (Jet2_ID[Bj.id] == 0) {
382  mpT_Jet2_unmatched->Fill(recoJet2[Bj.id]->pt());
383  Jet2_ID[Bj.id] = 2;
384  if (std::string("VsCalo") == JetType2 || std::string("PuCalo") == JetType2) {
385  mHadEnergy_Jet2_unmatched->Fill((*caloJet2)[Bj.id].hadEnergyInHO() + (*caloJet2)[Bj.id].hadEnergyInHB() +
386  (*caloJet2)[Bj.id].hadEnergyInHF() + (*caloJet2)[Bj.id].hadEnergyInHE());
387  mEmEnergy_Jet2_unmatched->Fill((*caloJet2)[Bj.id].emEnergyInEB() + (*caloJet2)[Bj.id].emEnergyInEE() +
388  (*caloJet2)[Bj.id].emEnergyInHF());
389  }
390 
391  if (std::string("VsPF") == JetType2) {
392  mChargedHadronEnergy_Jet2_unmatched->Fill((*pfJets)[Bj.id].chargedHadronEnergy());
393  mNeutralHadronEnergy_Jet2_unmatched->Fill((*pfJets)[Bj.id].neutralHadronEnergy());
394  mChargedEmEnergy_Jet2_unmatched->Fill((*pfJets)[Bj.id].chargedEmEnergy());
395  mNeutralEmEnergy_Jet2_unmatched->Fill((*pfJets)[Bj.id].neutralEmEnergy());
396  mChargedMuEnergy_Jet2_unmatched->Fill((*pfJets)[Bj.id].chargedMuEnergy());
397 
398  mChargedHadEnergyFraction_Jet2_unmatched->Fill((*pfJets)[Bj.id].chargedHadronEnergyFraction());
399  mNeutralHadEnergyFraction_Jet2_unmatched->Fill((*pfJets)[Bj.id].neutralHadronEnergyFraction());
400  mPhotonEnergyFraction_Jet2_unmatched->Fill((*pfJets)[Bj.id].photonEnergyFraction());
401  mElectronEnergyFraction_Jet2_unmatched->Fill((*pfJets)[Bj.id].electronEnergyFraction());
402  mMuonEnergyFraction_Jet2_unmatched->Fill((*pfJets)[Bj.id].muonEnergyFraction());
403  }
404  }
405  }
406 
407  } // both Jet1 and Jet2 in the event.
408 }
edm::EDGetTokenT< reco::PFJetCollection > pfJetsToken_
void Fill(long long x)
std::multiset< ABJetPair >::iterator ABItr
edm::EDGetTokenT< reco::CaloJetCollection > caloJet1Token_
static float deltaRR(float eta1, float phi1, float eta2, float phi2)
edm::EDGetTokenT< reco::CaloJetCollection > caloJet2Token_
std::multiset< ABJetPair, CompareMatchedJets > ABMatchedJets
edm::EDGetTokenT< reco::BasicJetCollection > basicJetsToken_

◆ bookHistograms()

void JetAnalyzer_HeavyIons_matching::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 93 of file JetAnalyzer_HeavyIons_matching.cc.

References dqm::implementation::IBooker::book1D(), JetType1, JetType2, edm::InputTag::label(), mChargedEmEnergy_Jet1_unmatched, mChargedEmEnergy_Jet2_unmatched, mChargedHadEnergyFraction_Jet1_unmatched, mChargedHadEnergyFraction_Jet2_unmatched, mChargedHadronEnergy_Jet1_unmatched, mChargedHadronEnergy_Jet2_unmatched, mChargedMuEnergy_Jet1_unmatched, mChargedMuEnergy_Jet2_unmatched, mElectronEnergyFraction_Jet1_unmatched, mElectronEnergyFraction_Jet2_unmatched, mEmEnergy_Jet1_unmatched, mEmEnergy_Jet2_unmatched, mHadEnergy_Jet1_unmatched, mHadEnergy_Jet2_unmatched, mInputJet1Collection, mInputJet2Collection, mMuonEnergyFraction_Jet1_unmatched, mMuonEnergyFraction_Jet2_unmatched, mNeutralEmEnergy_Jet1_unmatched, mNeutralEmEnergy_Jet2_unmatched, mNeutralHadEnergyFraction_Jet1_unmatched, mNeutralHadEnergyFraction_Jet2_unmatched, mNeutralHadronEnergy_Jet1_unmatched, mNeutralHadronEnergy_Jet2_unmatched, mOutputFile, mPhotonEnergyFraction_Jet1_unmatched, mPhotonEnergyFraction_Jet2_unmatched, mpT_Jet1_matched, mpT_Jet1_unmatched, mpT_Jet2_matched, mpT_Jet2_unmatched, mpT_ratio_Jet1Jet2, dqm::implementation::NavigatorBase::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.

95  {
96  ibooker.setCurrentFolder("JetMET/HIJetValidation/" + mInputJet1Collection.label() + "_DeltaRMatched_" +
98 
99  mpT_ratio_Jet1Jet2 = ibooker.book1D(
100  "Ratio_Jet1pT_vs_Jet2pT", Form(";Matched %s Jet pT / %s Jet pT;Counts", "JetType1", "JetType2"), 100, 0, 10);
102  ibooker.book1D("Jet1_matched_jet_Spectra", Form(";Matched %s Spectra; counts", "JetType1"), 100, 0, 1000);
104  ibooker.book1D("Jet2_matched_jet_Spectra", Form(";Matched %s Spectra; counts", "JetType2"), 100, 0, 1000);
106  ibooker.book1D("Jet1_unmatched_jet_Spectra", Form(";Unmatched %s spectra;counts", "JetType1"), 100, 0, 1000);
108  ibooker.book1D("Jet2_unmatched_jet_Spectra", Form(";Unmatched %s spectra;counts", "JetType2"), 100, 0, 1000);
109 
110  if (std::string("VsCalo") == JetType1 || std::string("PuCalo") == JetType1) {
112  ibooker.book1D("HadEnergy_Jet1_unmatched",
113  Form("HadEnergy_Jet1_unmatched;HadEnergy unmatched %s;counts", "JetType1"),
114  50,
115  0,
116  200);
118  "EmEnergy_Jet1_unmatched", Form("EmEnergy_Jet1_unmatched;EMEnergy unmatched %s;counts", "JetType1"), 50, 0, 200);
119  }
120 
121  if (std::string("VsCalo") == JetType2 || std::string("PuCalo") == JetType2) {
123  ibooker.book1D("HadEnergy_Jet2_unmatched",
124  Form("HadEnergy_Jet2_unmatched;HadEnergy unmatched %s;counts", "JetType2"),
125  50,
126  0,
127  200);
129  "EmEnergy_Jet2_unmatched", Form("EmEnergy_Jet2_unmatched;EMEnergy unmatched %s;counts", "JetType2"), 50, 0, 200);
130  }
131 
132  if (std::string("VsPF") == JetType1) {
134  "ChargedHadronEnergy_Jet1_unmatched", Form(";charged HAD energy unmatched %s;counts", "JetType1"), 100, 0, 300);
136  "neutralHadronEnergy_Jet1_unmatched", Form(";neutral HAD energy unmatched %s;counts", "JetType1"), 100, 0, 300);
138  "ChargedEmEnergy_Jet1_unmatched", Form(";charged EM energy unmatched %s;counts", "JetType1"), 100, 0, 300);
140  "neutralEmEnergy_Jet1_unmatched", Form(";neutral EM energy unmatched %s;counts", "JetType1"), 100, 0, 300);
142  "ChargedMuEnergy_Jet1_unmatched", Form(";charged Mu energy unmatched %s;counts", "JetType1"), 100, 0, 300);
143 
145  "ChargedHadEnergyFraction_Jet1_unmatched", Form(";h^{+/-} Energy Fraction %s;counts", "JetType1"), 50, 0, 1);
147  "NeutralHadEnergyFraction_Jet1_unmatched", Form(";h^{0} Energy Fraction %s;counts", "JetType1"), 50, 0, 1);
149  "PhotonEnergyFraction_Jet1_unmatched", Form(";#gamma Energy Fraction %s;counts", "JetType1"), 50, 0, 1);
151  "ElectronEnergyFraction_Jet1_unmatched", Form(";e Energy Fraction %s;counts", "JetType1"), 50, 0, 1);
153  "MuonoEnergyFraction_Jet1_unmatched", Form(";#mu Energy Fraction %s;counts", "JetType1"), 50, 0, 1);
154  }
155 
156  if (std::string("VsPF") == JetType2) {
158  "ChargedHadronEnergy_Jet2_unmatched", Form(";charged HAD energy unmatched %s;counts", "JetType2"), 100, 0, 300);
160  "neutralHadronEnergy_Jet2_unmatched", Form(";neutral HAD energy unmatched %s;counts", "JetType2"), 100, 0, 300);
162  "ChargedEmEnergy_Jet2_unmatched", Form(";charged EM energy unmatched %s;counts", "JetType2"), 100, 0, 300);
164  "neutralEmEnergy_Jet2_unmatched", Form(";neutral EM energy unmatched %s;counts", "JetType2"), 100, 0, 300);
166  "ChargedMuEnergy_Jet2_unmatched", Form(";charged Mu energy unmatched %s;counts", "JetType2"), 100, 0, 300);
167 
169  "ChargedHadEnergyFraction_Jet2_unmatched", Form(";h^{+/-} Energy Fraction %s;counts", "JetType2"), 50, 0, 1);
171  "NeutralHadEnergyFraction_Jet2_unmatched", Form(";h^{0} Energy Fraction %s;counts", "JetType2"), 50, 0, 1);
173  "PhotonEnergyFraction_Jet2_unmatched", Form(";#gamma Energy Fraction %s;counts", "JetType2"), 50, 0, 1);
175  "ElectronEnergyFraction_Jet2_unmatched", Form(";e Energy Fraction %s;counts", "JetType2"), 50, 0, 1);
177  "MuonoEnergyFraction_Jet2_unmatched", Form(";#mu Energy Fraction %s;counts", "JetType2"), 50, 0, 1);
178  }
179 
180  if (mOutputFile.empty())
181  LogInfo("OutputInfo") << " Histograms will NOT be saved";
182  else
183  LogInfo("OutputInfo") << " Histograms will be saved to file:" << mOutputFile;
184 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
std::string const & label() const
Definition: InputTag.h:36
Log< level::Info, false > LogInfo
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98

◆ deltaRR()

static float JetAnalyzer_HeavyIons_matching::deltaRR ( float  eta1,
float  phi1,
float  eta2,
float  phi2 
)
inlinestaticprivate

Definition at line 163 of file JetAnalyzer_HeavyIons_matching.h.

References l1ctLayer1_cff::dr, HLT_2024v12_cff::eta1, HLT_2024v12_cff::eta2, M_PI, and mathSSE::sqrt().

Referenced by analyze(), and JetAnalyzer_HeavyIons_matching::CompareMatchedJets::operator()().

163  {
164  float deta = eta1 - eta2;
165  float dphi = fabs(phi1 - phi2);
166  if (dphi > M_PI)
167  dphi -= 2 * M_PI;
168  float dr = sqrt(deta * deta + dphi * dphi);
169  return dr;
170  }
T sqrt(T t)
Definition: SSEVec.h:19
#define M_PI

Member Data Documentation

◆ basicJetsToken_

edm::EDGetTokenT<reco::BasicJetCollection> JetAnalyzer_HeavyIons_matching::basicJetsToken_
private

Definition at line 100 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze(), and JetAnalyzer_HeavyIons_matching().

◆ caloJet1Token_

edm::EDGetTokenT<reco::CaloJetCollection> JetAnalyzer_HeavyIons_matching::caloJet1Token_
private

Definition at line 97 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze(), and JetAnalyzer_HeavyIons_matching().

◆ caloJet2Token_

edm::EDGetTokenT<reco::CaloJetCollection> JetAnalyzer_HeavyIons_matching::caloJet2Token_
private

Definition at line 98 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze(), and JetAnalyzer_HeavyIons_matching().

◆ JetType1

std::string JetAnalyzer_HeavyIons_matching::JetType1
private

◆ JetType2

std::string JetAnalyzer_HeavyIons_matching::JetType2
private

◆ jptJetsToken_

edm::EDGetTokenT<reco::JPTJetCollection> JetAnalyzer_HeavyIons_matching::jptJetsToken_
private

Definition at line 101 of file JetAnalyzer_HeavyIons_matching.h.

◆ mChargedEmEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedEmEnergy_Jet1_unmatched
private

◆ mChargedEmEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedEmEnergy_Jet2_unmatched
private

◆ mChargedHadEnergyFraction_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedHadEnergyFraction_Jet1_unmatched
private

◆ mChargedHadEnergyFraction_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedHadEnergyFraction_Jet2_unmatched
private

◆ mChargedHadronEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedHadronEnergy_Jet1_unmatched
private

◆ mChargedHadronEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedHadronEnergy_Jet2_unmatched
private

◆ mChargedMuEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedMuEnergy_Jet1_unmatched
private

◆ mChargedMuEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mChargedMuEnergy_Jet2_unmatched
private

◆ mElectronEnergyFraction_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mElectronEnergyFraction_Jet1_unmatched
private

◆ mElectronEnergyFraction_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mElectronEnergyFraction_Jet2_unmatched
private

◆ mEmEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mEmEnergy_Jet1_unmatched
private

◆ mEmEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mEmEnergy_Jet2_unmatched
private

◆ mHadEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mHadEnergy_Jet1_unmatched
private

◆ mHadEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mHadEnergy_Jet2_unmatched
private

◆ mInputJet1Collection

edm::InputTag JetAnalyzer_HeavyIons_matching::mInputJet1Collection
private

◆ mInputJet2Collection

edm::InputTag JetAnalyzer_HeavyIons_matching::mInputJet2Collection
private

◆ mMuonEnergyFraction_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mMuonEnergyFraction_Jet1_unmatched
private

◆ mMuonEnergyFraction_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mMuonEnergyFraction_Jet2_unmatched
private

◆ mNeutralEmEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mNeutralEmEnergy_Jet1_unmatched
private

◆ mNeutralEmEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mNeutralEmEnergy_Jet2_unmatched
private

◆ mNeutralHadEnergyFraction_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mNeutralHadEnergyFraction_Jet1_unmatched
private

◆ mNeutralHadEnergyFraction_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mNeutralHadEnergyFraction_Jet2_unmatched
private

◆ mNeutralHadronEnergy_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mNeutralHadronEnergy_Jet1_unmatched
private

◆ mNeutralHadronEnergy_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mNeutralHadronEnergy_Jet2_unmatched
private

◆ mOutputFile

std::string JetAnalyzer_HeavyIons_matching::mOutputFile
private

Definition at line 89 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by bookHistograms().

◆ mPhotonEnergyFraction_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mPhotonEnergyFraction_Jet1_unmatched
private

◆ mPhotonEnergyFraction_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mPhotonEnergyFraction_Jet2_unmatched
private

◆ mpT_Jet1_matched

MonitorElement* JetAnalyzer_HeavyIons_matching::mpT_Jet1_matched
private

◆ mpT_Jet1_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mpT_Jet1_unmatched
private

◆ mpT_Jet2_matched

MonitorElement* JetAnalyzer_HeavyIons_matching::mpT_Jet2_matched
private

◆ mpT_Jet2_unmatched

MonitorElement* JetAnalyzer_HeavyIons_matching::mpT_Jet2_unmatched
private

◆ mpT_ratio_Jet1Jet2

MonitorElement* JetAnalyzer_HeavyIons_matching::mpT_ratio_Jet1Jet2
private

◆ mRecoDelRMatch

double JetAnalyzer_HeavyIons_matching::mRecoDelRMatch
private

Definition at line 93 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze().

◆ mRecoJetEtaCut

double JetAnalyzer_HeavyIons_matching::mRecoJetEtaCut
private

Definition at line 94 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze().

◆ mRecoJetPtThreshold

double JetAnalyzer_HeavyIons_matching::mRecoJetPtThreshold
private

Definition at line 92 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze().

◆ pfJetsToken_

edm::EDGetTokenT<reco::PFJetCollection> JetAnalyzer_HeavyIons_matching::pfJetsToken_
private

Definition at line 99 of file JetAnalyzer_HeavyIons_matching.h.

Referenced by analyze(), and JetAnalyzer_HeavyIons_matching().