CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
HGCalHitCalibration Class Reference
Inheritance diagram for HGCalHitCalibration:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

 HGCalHitCalibration (const edm::ParameterSet &)
 
 ~HGCalHitCalibration () 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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- 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 &)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void fillWithRecHits (std::map< DetId, const HGCRecHit *> &, DetId, unsigned int, float, int &, float &)
 

Private Attributes

int algo_
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordcaloGeomToken_
 
edm::EDGetTokenT< std::vector< CaloParticle > > caloParticles_
 
int debug_
 
int depletion0_
 
edm::EDGetTokenT< std::vector< reco::GsfElectron > > electrons_
 
std::array< float, layers_Energy_layer_calib_
 
std::array< float, layers_Energy_layer_calib_fraction_
 
std::string folder_
 
std::map< int, MonitorElement * > h_EoP_CPene_calib_fraction_
 
std::map< int, MonitorElement * > hgcal_ele_EoP_CPene_calib_fraction_
 
std::map< int, MonitorElement * > hgcal_EoP_CPene_calib_fraction_
 
std::map< int, MonitorElement * > hgcal_photon_EoP_CPene_calib_fraction_
 
edm::EDGetTokenT< std::vector< reco::PFCluster > > hgcalMultiClusters_
 
MonitorElementLayerOccupancy_
 
edm::EDGetTokenT< std::vector< reco::Photon > > photons_
 
bool rawRecHits_
 
edm::EDGetTokenT< HGCRecHitCollectionrecHitsBH_
 
edm::EDGetTokenT< HGCRecHitCollectionrecHitsEE_
 
edm::EDGetTokenT< HGCRecHitCollectionrecHitsFH_
 
hgcal::RecHitTools recHitTools_
 

Static Private Attributes

static constexpr int depletion1_ = 200
 
static constexpr int depletion2_ = 300
 
static constexpr int layers_ = 60
 
static constexpr int scint_ = 400
 

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
 
- 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 39 of file HGCalHitCalibration.cc.

Constructor & Destructor Documentation

◆ HGCalHitCalibration()

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

Definition at line 81 of file HGCalHitCalibration.cc.

References algo_, caloTruthCellsProducer_cfi::caloParticles, caloParticles_, depletion0_, hgcalTestNeighbor_cfi::detector, pwdgSkimBPark_cfi::electrons, electrons_, Energy_layer_calib_, Energy_layer_calib_fraction_, edm::ParameterSet::getParameter(), HLTValidation_cff::hgcalMultiClusters, hgcalMultiClusters_, BPHMonitor_cfi::photons, photons_, HLTValidation_cff::recHitsBH, recHitsBH_, HLTValidation_cff::recHitsEE, recHitsEE_, HLTValidation_cff::recHitsFH, recHitsFH_, and AlCaHLTBitMon_QueryRunRegistry::string.

82  : caloGeomToken_(esConsumes<CaloGeometry, CaloGeometryRecord>()),
83  rawRecHits_(iConfig.getParameter<bool>("rawRecHits")),
84  debug_(iConfig.getParameter<int>("debug")),
85  folder_(iConfig.getParameter<std::string>("folder")) {
86  auto detector = iConfig.getParameter<std::string>("detector");
87  auto recHitsEE = iConfig.getParameter<edm::InputTag>("recHitsEE");
88  auto recHitsFH = iConfig.getParameter<edm::InputTag>("recHitsFH");
89  auto recHitsBH = iConfig.getParameter<edm::InputTag>("recHitsBH");
90  auto caloParticles = iConfig.getParameter<edm::InputTag>("caloParticles");
91  auto hgcalMultiClusters = iConfig.getParameter<edm::InputTag>("hgcalMultiClusters");
92  auto electrons = iConfig.getParameter<edm::InputTag>("electrons");
93  auto photons = iConfig.getParameter<edm::InputTag>("photons");
94  if (detector == "all") {
95  recHitsEE_ = consumes<HGCRecHitCollection>(recHitsEE);
96  recHitsFH_ = consumes<HGCRecHitCollection>(recHitsFH);
97  recHitsBH_ = consumes<HGCRecHitCollection>(recHitsBH);
98  algo_ = 1;
99  } else if (detector == "EM") {
100  recHitsEE_ = consumes<HGCRecHitCollection>(recHitsEE);
101  algo_ = 2;
102  } else if (detector == "HAD") {
103  recHitsFH_ = consumes<HGCRecHitCollection>(recHitsFH);
104  recHitsBH_ = consumes<HGCRecHitCollection>(recHitsBH);
105  algo_ = 3;
106  }
107  depletion0_ = iConfig.getParameter<int>("depletionFine");
108  caloParticles_ = consumes<std::vector<CaloParticle> >(caloParticles);
109  hgcalMultiClusters_ = consumes<std::vector<reco::PFCluster> >(hgcalMultiClusters);
110  electrons_ = consumes<std::vector<reco::GsfElectron> >(electrons);
111  photons_ = consumes<std::vector<reco::Photon> >(photons);
112 
113  // size should be HGC layers 52 is enough
114  Energy_layer_calib_.fill(0.);
116 }
edm::EDGetTokenT< std::vector< CaloParticle > > caloParticles_
edm::EDGetTokenT< std::vector< reco::Photon > > photons_
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::array< float, layers_ > Energy_layer_calib_fraction_
edm::EDGetTokenT< std::vector< reco::PFCluster > > hgcalMultiClusters_
edm::EDGetTokenT< HGCRecHitCollection > recHitsFH_
edm::EDGetTokenT< HGCRecHitCollection > recHitsEE_
edm::EDGetTokenT< HGCRecHitCollection > recHitsBH_
edm::EDGetTokenT< std::vector< reco::GsfElectron > > electrons_
std::array< float, layers_ > Energy_layer_calib_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeomToken_

◆ ~HGCalHitCalibration()

HGCalHitCalibration::~HGCalHitCalibration ( )
override

Definition at line 118 of file HGCalHitCalibration.cc.

118  {
119  // do anything here that needs to be done at desctruction time
120  // (e.g. close files, deallocate resources etc.)
121 }

Member Function Documentation

◆ analyze()

void HGCalHitCalibration::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 192 of file HGCalHitCalibration.cc.

References a, algo_, cms::cuda::assert(), b, caloGeomToken_, caloTruthCellsProducer_cfi::caloParticles, caloParticles_, pv::closest(), bsc_activity_cfg::clusters, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), debug_, reco::deltaR2(), DetId::det(), electrons_, SimCluster::energy(), Energy_layer_calib_, Energy_layer_calib_fraction_, HcalObjRepresent::Fill(), fillWithRecHits(), DetId::Forward, relativeConstraints::geom, edm::EventSetup::getHandle(), hgcal::RecHitTools::getLayerWithOffset(), hgcal::RecHitTools::getSiThickness(), h_EoP_CPene_calib_fraction_, hgcal_ele_EoP_CPene_calib_fraction_, hgcal_EoP_CPene_calib_fraction_, hgcal_photon_EoP_CPene_calib_fraction_, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, hgcalMultiClusters_, SimCluster::hits_and_fractions(), mps_fire::i, iEvent, IfLogTrace, edm::HandleBase::isValid(), LogDebug, or, displacedMuons_cfi::photon, photons_, rawRecHits_, recHitsBH_, recHitsEE_, recHitsFH_, recHitTools_, scint_, hgcal::RecHitTools::setGeometry(), and SimCluster::simEnergy().

192  {
193  float constexpr max_dR2 = 0.0025;
194 
197 
198  const edm::Handle<std::vector<CaloParticle> >& caloParticleHandle = iEvent.getHandle(caloParticles_);
199  const std::vector<CaloParticle>& caloParticles = *caloParticleHandle;
200 
201  const edm::Handle<std::vector<reco::PFCluster> >& hgcalMultiClustersHandle = iEvent.getHandle(hgcalMultiClusters_);
202 
203  const edm::Handle<std::vector<reco::GsfElectron> >& PFElectronHandle = iEvent.getHandle(electrons_);
204 
205  const edm::Handle<std::vector<reco::Photon> >& PFPhotonHandle = iEvent.getHandle(photons_);
206 
207  // make a map detid-rechit
208  std::map<DetId, const HGCRecHit*> hitmap;
209  switch (algo_) {
210  case 1: {
211  const auto& rechitsEE_handle = iEvent.getHandle(recHitsEE_);
212  if (!rechitsEE_handle.isValid())
213  return;
214 
215  const auto& rechitsFH_handle = iEvent.getHandle(recHitsFH_);
216  if (!rechitsFH_handle.isValid())
217  return;
218 
219  const auto& rechitsBH_handle = iEvent.getHandle(recHitsBH_);
220  if (!rechitsBH_handle.isValid())
221  return;
222 
223  auto const& rechitsEE = *rechitsEE_handle;
224  auto const& rechitsFH = *rechitsFH_handle;
225  auto const& rechitsBH = *rechitsBH_handle;
226  for (unsigned int i = 0; i < rechitsEE.size(); ++i) {
227  hitmap[rechitsEE[i].detid()] = &rechitsEE[i];
228  }
229  for (unsigned int i = 0; i < rechitsFH.size(); ++i) {
230  hitmap[rechitsFH[i].detid()] = &rechitsFH[i];
231  }
232  for (unsigned int i = 0; i < rechitsBH.size(); ++i) {
233  hitmap[rechitsBH[i].detid()] = &rechitsBH[i];
234  }
235  break;
236  }
237  case 2: {
238  const auto& rechitsEE_handle = iEvent.getHandle(recHitsEE_);
239  if (!rechitsEE_handle.isValid())
240  return;
241 
242  auto const& rechitsEE = *rechitsEE_handle;
243  for (unsigned int i = 0; i < rechitsEE.size(); i++) {
244  hitmap[rechitsEE[i].detid()] = &rechitsEE[i];
245  }
246  break;
247  }
248  case 3: {
249  const auto& rechitsFH_handle = iEvent.getHandle(recHitsFH_);
250  if (!rechitsFH_handle.isValid())
251  return;
252 
253  const auto& rechitsBH_handle = iEvent.getHandle(recHitsBH_);
254  if (!rechitsBH_handle.isValid())
255  return;
256 
257  auto const& rechitsFH = *rechitsFH_handle;
258  auto const& rechitsBH = *rechitsBH_handle;
259  for (unsigned int i = 0; i < rechitsFH.size(); i++) {
260  hitmap[rechitsFH[i].detid()] = &rechitsFH[i];
261  }
262  for (unsigned int i = 0; i < rechitsBH.size(); i++) {
263  hitmap[rechitsBH[i].detid()] = &rechitsBH[i];
264  }
265  break;
266  }
267  default:
268  assert(false);
269  break;
270  }
271 
272  // loop over caloParticles
273  int seedDet = 0;
274  float seedEnergy = 0.;
275  IfLogTrace(debug_ > 0, "HGCalHitCalibration") << "Number of caloParticles: " << caloParticles.size() << std::endl;
276  for (const auto& it_caloPart : caloParticles) {
277  if (it_caloPart.g4Tracks()[0].eventId().event() != 0 or it_caloPart.g4Tracks()[0].eventId().bunchCrossing() != 0) {
278  LogDebug("HGCalHitCalibration") << "Excluding CaloParticles from event: "
279  << it_caloPart.g4Tracks()[0].eventId().event()
280  << " with BX: " << it_caloPart.g4Tracks()[0].eventId().bunchCrossing()
281  << std::endl;
282  continue;
283  }
284 
285  const SimClusterRefVector& simClusterRefVector = it_caloPart.simClusters();
286  Energy_layer_calib_.fill(0.);
288 
289  seedDet = 0;
290  seedEnergy = 0.;
291  for (const auto& it_sc : simClusterRefVector) {
292  const SimCluster& simCluster = (*(it_sc));
293  IfLogTrace(debug_ > 1, "HGCalHitCalibration")
294  << ">>> SC.energy(): " << simCluster.energy() << " SC.simEnergy(): " << simCluster.simEnergy() << std::endl;
295  const std::vector<std::pair<uint32_t, float> >& hits_and_fractions = simCluster.hits_and_fractions();
296 
297  // loop over hits
298  for (const auto& it_haf : hits_and_fractions) {
299  unsigned int hitlayer = recHitTools_.getLayerWithOffset(it_haf.first);
300  DetId hitid = (it_haf.first);
301  // dump raw RecHits and match
302  if (rawRecHits_) {
303  if ((hitid.det() == DetId::Forward) || (hitid.det() == DetId::HGCalEE) || (hitid.det() == DetId::HGCalHSi) ||
304  (hitid.det() == DetId::HGCalHSc))
305  fillWithRecHits(hitmap, hitid, hitlayer, it_haf.second, seedDet, seedEnergy);
306  }
307  } // end simHit
308  } // end simCluster
309 
310  auto sumCalibRecHitCalib_fraction =
311  std::accumulate(Energy_layer_calib_fraction_.begin(), Energy_layer_calib_fraction_.end(), 0.);
312  IfLogTrace(debug_ > 0, "HGCalHitCalibration")
313  << ">>> MC Energy: " << it_caloPart.energy() << " reco energy: " << sumCalibRecHitCalib_fraction << std::endl;
314  if (h_EoP_CPene_calib_fraction_.count(seedDet))
315  h_EoP_CPene_calib_fraction_[seedDet]->Fill(sumCalibRecHitCalib_fraction / it_caloPart.energy());
316 
317  // Loop on reconstructed SC.
318  if (hgcalMultiClustersHandle.isValid()) {
319  const auto& clusters = *hgcalMultiClustersHandle;
320  float total_energy = 0.;
321  auto closest =
322  std::min_element(clusters.begin(), clusters.end(), [&](const reco::PFCluster& a, const reco::PFCluster& b) {
323  auto dR2_a = reco::deltaR2(it_caloPart, a);
324  auto dR2_b = reco::deltaR2(it_caloPart, b);
325  auto ERatio_a = a.correctedEnergy() / it_caloPart.energy();
326  auto ERatio_b = b.correctedEnergy() / it_caloPart.energy();
327  // If both clusters are within 0.0025, mark as first (min) the
328  // element with the highest ratio against the SimCluster
329  if (dR2_a < max_dR2 && dR2_b < max_dR2)
330  return ERatio_a > ERatio_b;
331  return dR2_a < dR2_b;
332  });
333  if (closest != clusters.end() && reco::deltaR2(*closest, it_caloPart) < 0.01) {
334  total_energy = closest->correctedEnergy();
335  seedDet = recHitTools_.getSiThickness(closest->seed());
336  if (closest->seed().det() == DetId::HGCalHSc) {
337  seedDet = scint_;
338  }
339  if (hgcal_EoP_CPene_calib_fraction_.count(seedDet)) {
340  hgcal_EoP_CPene_calib_fraction_[seedDet]->Fill(total_energy / it_caloPart.energy());
341  }
342  }
343  }
344 
345  auto closest_fcn = [&](auto const& a, auto const& b) {
346  auto dR2_a = reco::deltaR2(it_caloPart, a);
347  auto dR2_b = reco::deltaR2(it_caloPart, b);
348  auto ERatio_a = a.energy() / it_caloPart.energy();
349  auto ERatio_b = b.energy() / it_caloPart.energy();
350  // If both clusters are within 0.0025, mark as first (min) the
351  // element with the highest ratio against the SimCluster
352  if (dR2_a < max_dR2 && dR2_b < max_dR2)
353  return ERatio_a > ERatio_b;
354  return dR2_a < dR2_b;
355  };
356 
357  // ELECTRONS in HGCAL
358  if (PFElectronHandle.isValid()) {
359  auto const& ele = (*PFElectronHandle);
360  auto closest = std::min_element(ele.begin(), ele.end(), closest_fcn);
361  if (closest != ele.end() &&
362  ((closest->superCluster()->seed()->seed().det() == DetId::Forward) ||
363  (closest->superCluster()->seed()->seed().det() == DetId::HGCalEE) ||
364  (closest->superCluster()->seed()->seed().det() == DetId::HGCalHSi)) &&
365  reco::deltaR2(*closest, it_caloPart) < 0.01) {
366  seedDet = recHitTools_.getSiThickness(closest->superCluster()->seed()->seed());
367  if (closest->superCluster()->seed()->seed().det() == DetId::HGCalHSc) {
368  seedDet = scint_;
369  }
370  if (hgcal_ele_EoP_CPene_calib_fraction_.count(seedDet)) {
371  hgcal_ele_EoP_CPene_calib_fraction_[seedDet]->Fill(closest->energy() / it_caloPart.energy());
372  }
373  }
374  }
375 
376  // PHOTONS in HGCAL
377  if (PFPhotonHandle.isValid()) {
378  auto const& photon = (*PFPhotonHandle);
379  auto closest = std::min_element(photon.begin(), photon.end(), closest_fcn);
380  if (closest != photon.end() &&
381  ((closest->superCluster()->seed()->seed().det() == DetId::Forward) ||
382  (closest->superCluster()->seed()->seed().det() == DetId::HGCalEE) ||
383  (closest->superCluster()->seed()->seed().det() == DetId::HGCalHSi)) &&
384  reco::deltaR2(*closest, it_caloPart) < 0.01) {
385  seedDet = recHitTools_.getSiThickness(closest->superCluster()->seed()->seed());
386  if (hgcal_photon_EoP_CPene_calib_fraction_.count(seedDet)) {
387  hgcal_photon_EoP_CPene_calib_fraction_[seedDet]->Fill(closest->energy() / it_caloPart.energy());
388  }
389  }
390  }
391  } // end caloparticle
392 }
edm::EDGetTokenT< std::vector< CaloParticle > > caloParticles_
static constexpr int scint_
edm::EDGetTokenT< std::vector< reco::Photon > > photons_
std::array< float, layers_ > Energy_layer_calib_fraction_
edm::EDGetTokenT< std::vector< reco::PFCluster > > hgcalMultiClusters_
std::map< int, MonitorElement * > hgcal_EoP_CPene_calib_fraction_
edm::EDGetTokenT< HGCRecHitCollection > recHitsFH_
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
Definition: PFCluster.h:42
edm::EDGetTokenT< HGCRecHitCollection > recHitsEE_
#define IfLogTrace(cond, cat)
std::map< int, MonitorElement * > hgcal_ele_EoP_CPene_calib_fraction_
int closest(std::vector< int > const &vec, int value)
assert(be >=bs)
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
std::map< int, MonitorElement * > hgcal_photon_EoP_CPene_calib_fraction_
std::vector< std::pair< uint32_t, float > > hits_and_fractions() const
Returns list of rechit IDs and fractions for this SimCluster.
Definition: SimCluster.h:188
float simEnergy() const
returns the accumulated sim energy in the cluster
Definition: SimCluster.h:241
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< HGCRecHitCollection > recHitsBH_
Monte Carlo truth information used for tracking validation.
Definition: SimCluster.h:33
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void fillWithRecHits(std::map< DetId, const HGCRecHit *> &, DetId, unsigned int, float, int &, float &)
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
hgcal::RecHitTools recHitTools_
Definition: DetId.h:17
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
edm::EDGetTokenT< std::vector< reco::GsfElectron > > electrons_
std::map< int, MonitorElement * > h_EoP_CPene_calib_fraction_
double b
Definition: hdecay.h:120
bool isValid() const
Definition: HandleBase.h:70
void setGeometry(CaloGeometry const &)
Definition: RecHitTools.cc:79
float energy() const
Energy. Note this is taken from the first SimTrack only.
Definition: SimCluster.h:108
double a
Definition: hdecay.h:121
std::array< float, layers_ > Energy_layer_calib_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeomToken_
std::float_t getSiThickness(const DetId &) const
Definition: RecHitTools.cc:190
#define LogDebug(id)
unsigned int getLayerWithOffset(const DetId &) const
Definition: RecHitTools.cc:381

◆ bookHistograms()

void HGCalHitCalibration::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 123 of file HGCalHitCalibration.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::NavigatorBase::cd(), depletion0_, depletion1_, depletion2_, folder_, h_EoP_CPene_calib_fraction_, hgcal_ele_EoP_CPene_calib_fraction_, hgcal_EoP_CPene_calib_fraction_, hgcal_photon_EoP_CPene_calib_fraction_, LayerOccupancy_, layers_, scint_, and dqm::implementation::NavigatorBase::setCurrentFolder().

125  {
126  ibooker.cd();
127  ibooker.setCurrentFolder(folder_);
128  h_EoP_CPene_calib_fraction_[depletion0_] = ibooker.book1D("h_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
129  h_EoP_CPene_calib_fraction_[depletion1_] = ibooker.book1D("h_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
130  h_EoP_CPene_calib_fraction_[depletion2_] = ibooker.book1D("h_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
131  h_EoP_CPene_calib_fraction_[scint_] = ibooker.book1D("h_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
133  ibooker.book1D("hgcal_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
135  ibooker.book1D("hgcal_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
137  ibooker.book1D("hgcal_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
138  hgcal_EoP_CPene_calib_fraction_[scint_] = ibooker.book1D("hgcal_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
140  ibooker.book1D("hgcal_ele_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
142  ibooker.book1D("hgcal_ele_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
144  ibooker.book1D("hgcal_ele_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
146  ibooker.book1D("hgcal_ele_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
148  ibooker.book1D("hgcal_photon_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
150  ibooker.book1D("hgcal_photon_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
152  ibooker.book1D("hgcal_photon_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
154  ibooker.book1D("hgcal_photon_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
155  LayerOccupancy_ = ibooker.book1D("LayerOccupancy", "", layers_, 0., (float)layers_);
156 }
static constexpr int layers_
static constexpr int depletion2_
static constexpr int scint_
std::map< int, MonitorElement * > hgcal_EoP_CPene_calib_fraction_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
std::map< int, MonitorElement * > hgcal_ele_EoP_CPene_calib_fraction_
std::map< int, MonitorElement * > hgcal_photon_EoP_CPene_calib_fraction_
MonitorElement * LayerOccupancy_
std::map< int, MonitorElement * > h_EoP_CPene_calib_fraction_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
static constexpr int depletion1_

◆ fillDescriptions()

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

Definition at line 396 of file HGCalHitCalibration.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, ProducerED_cfi::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

396  {
398  desc.add<int>("debug", 0);
399  desc.add<bool>("rawRecHits", true);
400  desc.add<std::string>("folder", "HGCalHitCalibration");
401  desc.add<std::string>("detector", "all");
402  desc.add<int>("depletionFine", 120);
403  desc.add<edm::InputTag>("caloParticles", edm::InputTag("mix", "MergedCaloTruth"));
404  desc.add<edm::InputTag>("recHitsEE", edm::InputTag("HGCalRecHit", "HGCEERecHits"));
405  desc.add<edm::InputTag>("recHitsFH", edm::InputTag("HGCalRecHit", "HGCHEFRecHits"));
406  desc.add<edm::InputTag>("recHitsBH", edm::InputTag("HGCalRecHit", "HGCHEBRecHits"));
407  desc.add<edm::InputTag>("hgcalMultiClusters", edm::InputTag("particleFlowClusterHGCal"));
408  desc.add<edm::InputTag>("electrons", edm::InputTag("ecalDrivenGsfElectronsHGC"));
409  desc.add<edm::InputTag>("photons", edm::InputTag("photonsHGC"));
410  descriptions.add("hgcalHitCalibrationDefault", desc);
411 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ fillWithRecHits()

void HGCalHitCalibration::fillWithRecHits ( std::map< DetId, const HGCRecHit *> &  hitmap,
DetId  hitid,
unsigned int  hitlayer,
float  fraction,
int &  seedDet,
float &  seedEnergy 
)
private

Definition at line 158 of file HGCalHitCalibration.cc.

References cms::cuda::assert(), debug_, TauDecayModes::dec, DetId::det(), HBHEDarkening_cff::energy, Energy_layer_calib_fraction_, dqm::impl::MonitorElement::Fill(), DetId::Forward, HLT_2024v14_cff::fraction, hgcal::RecHitTools::getLayerWithOffset(), hgcal::RecHitTools::getSiThickness(), DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, IfLogTrace, nano_mu_digi_cff::layer, LayerOccupancy_, DetId::rawId(), recHitTools_, scint_, and DetId::subdetId().

Referenced by analyze().

163  {
164  if (hitmap.find(hitid) == hitmap.end()) {
165  // Hit was not reconstructed
166  IfLogTrace(debug_ > 0, "HGCalHitCalibration")
167  << ">>> Failed to find detid " << std::hex << hitid.rawId() << std::dec << " Det " << hitid.det() << " Subdet "
168  << hitid.subdetId() << std::endl;
169  return;
170  }
171  if ((hitid.det() != DetId::Forward) && (hitid.det() != DetId::HGCalEE) && (hitid.det() != DetId::HGCalHSi) &&
172  (hitid.det() != DetId::HGCalHSc)) {
173  IfLogTrace(debug_ > 0, "HGCalHitCalibration")
174  << ">>> Wrong type of detid " << std::hex << hitid.rawId() << std::dec << " Det " << hitid.det() << " Subdet "
175  << hitid.subdetId() << std::endl;
176  return;
177  }
178 
179  unsigned int layer = recHitTools_.getLayerWithOffset(hitid);
180  assert(hitlayer == layer);
181  Energy_layer_calib_fraction_[layer] += hitmap[hitid]->energy() * fraction;
183  if (seedEnergy < hitmap[hitid]->energy()) {
184  seedEnergy = hitmap[hitid]->energy();
185  seedDet = std::rint(recHitTools_.getSiThickness(hitid));
186  if (hitid.det() == DetId::HGCalHSc) {
187  seedDet = scint_;
188  }
189  }
190 }
static constexpr int scint_
std::array< float, layers_ > Energy_layer_calib_fraction_
#define IfLogTrace(cond, cat)
assert(be >=bs)
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
void Fill(long long x)
MonitorElement * LayerOccupancy_
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
hgcal::RecHitTools recHitTools_
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::float_t getSiThickness(const DetId &) const
Definition: RecHitTools.cc:190
unsigned int getLayerWithOffset(const DetId &) const
Definition: RecHitTools.cc:381

Member Data Documentation

◆ algo_

int HGCalHitCalibration::algo_
private

Definition at line 60 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ caloGeomToken_

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> HGCalHitCalibration::caloGeomToken_
private

Definition at line 61 of file HGCalHitCalibration.cc.

Referenced by analyze().

◆ caloParticles_

edm::EDGetTokenT<std::vector<CaloParticle> > HGCalHitCalibration::caloParticles_
private

Definition at line 55 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ debug_

int HGCalHitCalibration::debug_
private

Definition at line 63 of file HGCalHitCalibration.cc.

Referenced by analyze(), and fillWithRecHits().

◆ depletion0_

int HGCalHitCalibration::depletion0_
private

Definition at line 60 of file HGCalHitCalibration.cc.

Referenced by bookHistograms(), and HGCalHitCalibration().

◆ depletion1_

constexpr int HGCalHitCalibration::depletion1_ = 200
staticprivate

Definition at line 66 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ depletion2_

constexpr int HGCalHitCalibration::depletion2_ = 300
staticprivate

Definition at line 67 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ electrons_

edm::EDGetTokenT<std::vector<reco::GsfElectron> > HGCalHitCalibration::electrons_
private

Definition at line 57 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ Energy_layer_calib_

std::array<float, layers_> HGCalHitCalibration::Energy_layer_calib_
private

Definition at line 77 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ Energy_layer_calib_fraction_

std::array<float, layers_> HGCalHitCalibration::Energy_layer_calib_fraction_
private

Definition at line 78 of file HGCalHitCalibration.cc.

Referenced by analyze(), fillWithRecHits(), and HGCalHitCalibration().

◆ folder_

std::string HGCalHitCalibration::folder_
private

Definition at line 64 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ h_EoP_CPene_calib_fraction_

std::map<int, MonitorElement*> HGCalHitCalibration::h_EoP_CPene_calib_fraction_
private

Definition at line 70 of file HGCalHitCalibration.cc.

Referenced by analyze(), and bookHistograms().

◆ hgcal_ele_EoP_CPene_calib_fraction_

std::map<int, MonitorElement*> HGCalHitCalibration::hgcal_ele_EoP_CPene_calib_fraction_
private

Definition at line 72 of file HGCalHitCalibration.cc.

Referenced by analyze(), and bookHistograms().

◆ hgcal_EoP_CPene_calib_fraction_

std::map<int, MonitorElement*> HGCalHitCalibration::hgcal_EoP_CPene_calib_fraction_
private

Definition at line 71 of file HGCalHitCalibration.cc.

Referenced by analyze(), and bookHistograms().

◆ hgcal_photon_EoP_CPene_calib_fraction_

std::map<int, MonitorElement*> HGCalHitCalibration::hgcal_photon_EoP_CPene_calib_fraction_
private

Definition at line 73 of file HGCalHitCalibration.cc.

Referenced by analyze(), and bookHistograms().

◆ hgcalMultiClusters_

edm::EDGetTokenT<std::vector<reco::PFCluster> > HGCalHitCalibration::hgcalMultiClusters_
private

Definition at line 56 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ LayerOccupancy_

MonitorElement* HGCalHitCalibration::LayerOccupancy_
private

Definition at line 74 of file HGCalHitCalibration.cc.

Referenced by bookHistograms(), and fillWithRecHits().

◆ layers_

constexpr int HGCalHitCalibration::layers_ = 60
staticprivate

Definition at line 76 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ photons_

edm::EDGetTokenT<std::vector<reco::Photon> > HGCalHitCalibration::photons_
private

Definition at line 58 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ rawRecHits_

bool HGCalHitCalibration::rawRecHits_
private

Definition at line 62 of file HGCalHitCalibration.cc.

Referenced by analyze().

◆ recHitsBH_

edm::EDGetTokenT<HGCRecHitCollection> HGCalHitCalibration::recHitsBH_
private

Definition at line 54 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ recHitsEE_

edm::EDGetTokenT<HGCRecHitCollection> HGCalHitCalibration::recHitsEE_
private

Definition at line 52 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ recHitsFH_

edm::EDGetTokenT<HGCRecHitCollection> HGCalHitCalibration::recHitsFH_
private

Definition at line 53 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ recHitTools_

hgcal::RecHitTools HGCalHitCalibration::recHitTools_
private

Definition at line 65 of file HGCalHitCalibration.cc.

Referenced by analyze(), and fillWithRecHits().

◆ scint_

constexpr int HGCalHitCalibration::scint_ = 400
staticprivate

Definition at line 68 of file HGCalHitCalibration.cc.

Referenced by analyze(), bookHistograms(), and fillWithRecHits().