CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
FixedGridRhoProducerFastjetFromRecHit Class Reference
Inheritance diagram for FixedGridRhoProducerFastjetFromRecHit:
edm::stream::EDProducer<>

Public Member Functions

 FixedGridRhoProducerFastjetFromRecHit (const edm::ParameterSet &iConfig)
 
 ~FixedGridRhoProducerFastjetFromRecHit () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

std::array< double, 4 > getHitP4 (const DetId &detId, const double hitE, const CaloGeometry &caloGeometry) const
 
bool passedEcalNoiseCut (const EcalRecHit &hit, const EcalPFRecHitThresholds &thresholds) const
 
bool passedHcalNoiseCut (const HBHERecHit &hit, const HcalPFCuts *) const
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

fastjet::GridMedianBackgroundEstimator bge_
 
const edm::ESGetToken< CaloGeometry, CaloGeometryRecordcaloGeometryToken_
 
const bool cutsFromDB_
 
const edm::EDGetTokenT< EcalRecHitCollectionebRecHitsTag_
 
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcdecalPFRecHitThresholdsToken_
 
const edm::EDGetTokenT< EcalRecHitCollectioneeRecHitsTag_
 
const EgammaHcalIsolation::arrayHB eThresHB_
 
const EgammaHcalIsolation::arrayHE eThresHE_
 
const edm::EDGetTokenT< HBHERecHitCollectionhbheRecHitsTag_
 
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcdhcalCutsToken_
 
HcalPFCuts const * paramPF_ = nullptr
 
const bool skipECAL_
 
const bool skipHCAL_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
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
 

Detailed Description

Definition at line 33 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Constructor & Destructor Documentation

◆ FixedGridRhoProducerFastjetFromRecHit()

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

Definition at line 67 of file FixedGridRhoProducerFastjetFromRecHit.cc.

References deDxTools::esConsumes().

68  : bge_(iConfig.getParameter<double>("maxRapidity"), iConfig.getParameter<double>("gridSpacing")),
69  hbheRecHitsTag_(consumes(iConfig.getParameter<edm::InputTag>("hbheRecHitsTag"))),
70  ebRecHitsTag_(consumes(iConfig.getParameter<edm::InputTag>("ebRecHitsTag"))),
71  eeRecHitsTag_(consumes(iConfig.getParameter<edm::InputTag>("eeRecHitsTag"))),
74  skipHCAL_(iConfig.getParameter<bool>("skipHCAL")),
75  skipECAL_(iConfig.getParameter<bool>("skipECAL")),
78  cutsFromDB_(iConfig.getParameter<bool>("usePFThresholdsFromDB")) {
79  if (skipHCAL_ && skipECAL_) {
80  throw cms::Exception("FixedGridRhoProducerFastjetFromRecHit")
81  << "skipHCAL and skipECAL both can't be True. Please make at least one of them False.";
82  }
83  if (cutsFromDB_) {
84  hcalCutsToken_ = esConsumes<HcalPFCuts, HcalPFCutsRcd>(edm::ESInputTag("", "withTopo"));
85  }
86  produces<double>();
87 }
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
const edm::EDGetTokenT< EcalRecHitCollection > ebRecHitsTag_
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd > ecalPFRecHitThresholdsToken_
const edm::EDGetTokenT< HBHERecHitCollection > hbheRecHitsTag_
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_
const edm::EDGetTokenT< EcalRecHitCollection > eeRecHitsTag_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
std::array< double, 4 > arrayHB
std::array< double, 7 > arrayHE

◆ ~FixedGridRhoProducerFastjetFromRecHit()

FixedGridRhoProducerFastjetFromRecHit::~FixedGridRhoProducerFastjetFromRecHit ( )
overridedefault

Member Function Documentation

◆ fillDescriptions()

void FixedGridRhoProducerFastjetFromRecHit::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 89 of file FixedGridRhoProducerFastjetFromRecHit.cc.

References edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, and ProducerED_cfi::InputTag.

89  {
91  //We use raw recHits and not the PF recHits, because in Phase1 muon and egamma HLT,
92  //PF recHit collection is regional, while the full raw recHit collection is available.
93  desc.add<edm::InputTag>("hbheRecHitsTag", edm::InputTag("hltHbhereco"));
94  desc.add<edm::InputTag>("ebRecHitsTag", edm::InputTag("hltEcalRecHit", "EcalRecHitsEB"));
95  desc.add<edm::InputTag>("eeRecHitsTag", edm::InputTag("hltEcalRecHit", "EcalRecHitsEE"));
96  desc.add<bool>("skipHCAL", false);
97  desc.add<bool>("skipECAL", false);
98  //eThresHB/HE are from RecoParticleFlow/PFClusterProducer/python/particleFlowRecHitHBHE_cfi.py
99  desc.add<std::vector<double> >("eThresHB", {0.1, 0.2, 0.3, 0.3});
100  desc.add<std::vector<double> >("eThresHE", {0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2});
101  desc.add<double>("maxRapidity", 2.5);
102  desc.add<double>("gridSpacing", 0.55);
103  desc.add<bool>("usePFThresholdsFromDB", true);
104  descriptions.addWithDefaultLabel(desc);
105 }
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)

◆ getHitP4()

std::array< double, 4 > FixedGridRhoProducerFastjetFromRecHit::getHitP4 ( const DetId detId,
const double  hitE,
const CaloGeometry caloGeometry 
) const
private

Definition at line 153 of file FixedGridRhoProducerFastjetFromRecHit.cc.

References funct::cos(), hcalRecHitTable_cff::detId, CaloGeometry::getSubdetectorGeometry(), funct::sin(), and GeomDetEnumerators::subDetGeom.

Referenced by produce().

155  {
157  const auto &gpPos = subDetGeom->getGeometry(detId)->repPos();
158  const double thispt = hitE / cosh(gpPos.eta());
159  const double thispx = thispt * cos(gpPos.phi());
160  const double thispy = thispt * sin(gpPos.phi());
161  const double thispz = thispt * sinh(gpPos.eta());
162  return std::array<double, 4>{{thispx, thispy, thispz, hitE}};
163 }
constexpr SubDetector subDetGeom[21]
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34

◆ passedEcalNoiseCut()

bool FixedGridRhoProducerFastjetFromRecHit::passedEcalNoiseCut ( const EcalRecHit hit,
const EcalPFRecHitThresholds thresholds 
) const
private

◆ passedHcalNoiseCut()

bool FixedGridRhoProducerFastjetFromRecHit::passedHcalNoiseCut ( const HBHERecHit hit,
const HcalPFCuts hcalcuts 
) const
private

Definition at line 166 of file FixedGridRhoProducerFastjetFromRecHit.cc.

References eThresHB_, eThresHE_, HcalCondObjectContainer< Item >::getValues(), HcalBarrel, HcalEndcap, hit::id, and B2GTnPMonitor_cfi::item.

Referenced by produce().

167  {
168  if (hcalcuts != nullptr) { // using hcal cuts from DB
169  const HcalPFCut *item = hcalcuts->getValues(hit.id().rawId());
170  return (hit.energy() > item->noiseThreshold());
171  } else { // using hcal cuts from config file
172  const auto thisDetId = hit.id();
173  const auto thisDepth = thisDetId.depth();
174  return (thisDetId.subdet() == HcalBarrel && hit.energy() > eThresHB_[thisDepth - 1]) ||
175  (thisDetId.subdet() == HcalEndcap && hit.energy() > eThresHE_[thisDepth - 1]);
176  }
177 }
const Item * getValues(DetId fId, bool throwOnFail=true) const
unsigned int id

◆ produce()

void FixedGridRhoProducerFastjetFromRecHit::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 109 of file FixedGridRhoProducerFastjetFromRecHit.cc.

References bge_, caloGeometryToken_, cutsFromDB_, ebRecHitsTag_, ecalPFRecHitThresholdsToken_, eeRecHitsTag_, edm::EventSetup::getData(), getHitP4(), ecalDrivenElectronSeeds_cfi::hbheRecHits, hbheRecHitsTag_, hcalCutsToken_, hit::id, iEvent, PixelMapPlotter::inputs, paramPF_, passedEcalNoiseCut(), passedHcalNoiseCut(), skipECAL_, skipHCAL_, and particleFlowZeroSuppressionECAL_cff::thresholds.

109  {
110  if (cutsFromDB_) {
111  paramPF_ = &iSetup.getData(hcalCutsToken_);
112  }
113 
114  std::vector<fastjet::PseudoJet> inputs;
115  auto const &thresholds = iSetup.getData(ecalPFRecHitThresholdsToken_);
116  auto const &caloGeometry = iSetup.getData(caloGeometryToken_);
117 
118  if (!skipHCAL_) {
119  auto const &hbheRecHits = iEvent.get(hbheRecHitsTag_);
120  inputs.reserve(inputs.size() + hbheRecHits.size());
121  for (const auto &hit : hbheRecHits) {
123  const auto &hitp4 = getHitP4(hit.id(), hit.energy(), caloGeometry);
124  inputs.emplace_back(fastjet::PseudoJet(hitp4[0], hitp4[1], hitp4[2], hitp4[3]));
125  }
126  }
127  }
128 
129  if (!skipECAL_) {
130  auto const &ebRecHits = iEvent.get(ebRecHitsTag_);
131  inputs.reserve(inputs.size() + ebRecHits.size());
132  for (const auto &hit : ebRecHits) {
134  const auto &hitp4 = getHitP4(hit.id(), hit.energy(), caloGeometry);
135  inputs.emplace_back(fastjet::PseudoJet(hitp4[0], hitp4[1], hitp4[2], hitp4[3]));
136  }
137  }
138 
139  auto const &eeRecHits = iEvent.get(eeRecHitsTag_);
140  inputs.reserve(inputs.size() + eeRecHits.size());
141  for (const auto &hit : eeRecHits) {
143  const auto &hitp4 = getHitP4(hit.id(), hit.energy(), caloGeometry);
144  inputs.emplace_back(fastjet::PseudoJet(hitp4[0], hitp4[1], hitp4[2], hitp4[3]));
145  }
146  }
147  }
148 
149  bge_.set_particles(inputs);
150  iEvent.put(std::make_unique<double>(bge_.rho()));
151 }
const edm::EDGetTokenT< EcalRecHitCollection > ebRecHitsTag_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
bool passedHcalNoiseCut(const HBHERecHit &hit, const HcalPFCuts *) const
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd > ecalPFRecHitThresholdsToken_
int iEvent
Definition: GenABIO.cc:224
std::array< double, 4 > getHitP4(const DetId &detId, const double hitE, const CaloGeometry &caloGeometry) const
unsigned int id
const edm::EDGetTokenT< HBHERecHitCollection > hbheRecHitsTag_
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_
const edm::EDGetTokenT< EcalRecHitCollection > eeRecHitsTag_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
bool passedEcalNoiseCut(const EcalRecHit &hit, const EcalPFRecHitThresholds &thresholds) const

Member Data Documentation

◆ bge_

fastjet::GridMedianBackgroundEstimator FixedGridRhoProducerFastjetFromRecHit::bge_
private

Definition at line 45 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ caloGeometryToken_

const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> FixedGridRhoProducerFastjetFromRecHit::caloGeometryToken_
private

Definition at line 59 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ cutsFromDB_

const bool FixedGridRhoProducerFastjetFromRecHit::cutsFromDB_
private

Definition at line 63 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ ebRecHitsTag_

const edm::EDGetTokenT<EcalRecHitCollection> FixedGridRhoProducerFastjetFromRecHit::ebRecHitsTag_
private

Definition at line 47 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ ecalPFRecHitThresholdsToken_

const edm::ESGetToken<EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd> FixedGridRhoProducerFastjetFromRecHit::ecalPFRecHitThresholdsToken_
private

Definition at line 58 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ eeRecHitsTag_

const edm::EDGetTokenT<EcalRecHitCollection> FixedGridRhoProducerFastjetFromRecHit::eeRecHitsTag_
private

Definition at line 48 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ eThresHB_

const EgammaHcalIsolation::arrayHB FixedGridRhoProducerFastjetFromRecHit::eThresHB_
private

Definition at line 50 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by passedHcalNoiseCut().

◆ eThresHE_

const EgammaHcalIsolation::arrayHE FixedGridRhoProducerFastjetFromRecHit::eThresHE_
private

Definition at line 51 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by passedHcalNoiseCut().

◆ hbheRecHitsTag_

const edm::EDGetTokenT<HBHERecHitCollection> FixedGridRhoProducerFastjetFromRecHit::hbheRecHitsTag_
private

Definition at line 46 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ hcalCutsToken_

edm::ESGetToken<HcalPFCuts, HcalPFCutsRcd> FixedGridRhoProducerFastjetFromRecHit::hcalCutsToken_
private

Definition at line 62 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ paramPF_

HcalPFCuts const* FixedGridRhoProducerFastjetFromRecHit::paramPF_ = nullptr
private

Definition at line 64 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ skipECAL_

const bool FixedGridRhoProducerFastjetFromRecHit::skipECAL_
private

Definition at line 56 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().

◆ skipHCAL_

const bool FixedGridRhoProducerFastjetFromRecHit::skipHCAL_
private

Definition at line 55 of file FixedGridRhoProducerFastjetFromRecHit.cc.

Referenced by produce().