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

Constructor & Destructor Documentation

◆ HGCalHitCalibration()

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

Definition at line 79 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(), hgcalMultiClusters_, BPHMonitor_cfi::photons, photons_, recHitsBH_, EcalDeadCellBoundaryEnergyFilter_cfi::recHitsEE, recHitsEE_, recHitsFH_, and AlCaHLTBitMon_QueryRunRegistry::string.

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

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

Member Function Documentation

◆ analyze()

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

Reimplemented from DQMEDAnalyzer.

Definition at line 189 of file HGCalHitCalibration.cc.

References a, algo_, cms::cuda::assert(), b, caloGeomToken_, caloTruthCellsProducer_cfi::caloParticles, caloParticles_, pv::closest(), bsc_activity_cfg::clusters, 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(), SimCluster::simEnergy(), and edm::SortedCollection< T, SORT >::size().

189  {
192 
193  const edm::Handle<std::vector<CaloParticle> >& caloParticleHandle = iEvent.getHandle(caloParticles_);
194  const std::vector<CaloParticle>& caloParticles = *caloParticleHandle;
195 
196  const edm::Handle<std::vector<reco::PFCluster> >& hgcalMultiClustersHandle = iEvent.getHandle(hgcalMultiClusters_);
197 
198  const edm::Handle<std::vector<reco::GsfElectron> >& PFElectronHandle = iEvent.getHandle(electrons_);
199 
200  const edm::Handle<std::vector<reco::Photon> >& PFPhotonHandle = iEvent.getHandle(photons_);
201 
202  // make a map detid-rechit
203  std::map<DetId, const HGCRecHit*> hitmap;
204  switch (algo_) {
205  case 1: {
206  const auto& rechitsEE = iEvent.get(recHitsEE_);
207  const auto& rechitsFH = iEvent.get(recHitsFH_);
208  const auto& rechitsBH = iEvent.get(recHitsBH_);
209  for (unsigned int i = 0; i < rechitsEE.size(); ++i) {
210  hitmap[rechitsEE[i].detid()] = &rechitsEE[i];
211  }
212  for (unsigned int i = 0; i < rechitsFH.size(); ++i) {
213  hitmap[rechitsFH[i].detid()] = &rechitsFH[i];
214  }
215  for (unsigned int i = 0; i < rechitsBH.size(); ++i) {
216  hitmap[rechitsBH[i].detid()] = &rechitsBH[i];
217  }
218  break;
219  }
220  case 2: {
221  const HGCRecHitCollection& rechitsEE = iEvent.get(recHitsEE_);
222  for (unsigned int i = 0; i < rechitsEE.size(); i++) {
223  hitmap[rechitsEE[i].detid()] = &rechitsEE[i];
224  }
225  break;
226  }
227  case 3: {
228  const auto& rechitsFH = iEvent.get(recHitsFH_);
229  const auto& rechitsBH = iEvent.get(recHitsBH_);
230  for (unsigned int i = 0; i < rechitsFH.size(); i++) {
231  hitmap[rechitsFH[i].detid()] = &rechitsFH[i];
232  }
233  for (unsigned int i = 0; i < rechitsBH.size(); i++) {
234  hitmap[rechitsBH[i].detid()] = &rechitsBH[i];
235  }
236  break;
237  }
238  default:
239  assert(false);
240  break;
241  }
242 
243  // loop over caloParticles
244  int seedDet = 0;
245  float seedEnergy = 0.;
246  IfLogTrace(debug_ > 0, "HGCalHitCalibration") << "Number of caloParticles: " << caloParticles.size() << std::endl;
247  for (const auto& it_caloPart : caloParticles) {
248  if (it_caloPart.g4Tracks()[0].eventId().event() != 0 or it_caloPart.g4Tracks()[0].eventId().bunchCrossing() != 0) {
249  LogDebug("HGCalHitCalibration") << "Excluding CaloParticles from event: "
250  << it_caloPart.g4Tracks()[0].eventId().event()
251  << " with BX: " << it_caloPart.g4Tracks()[0].eventId().bunchCrossing()
252  << std::endl;
253  continue;
254  }
255 
256  const SimClusterRefVector& simClusterRefVector = it_caloPart.simClusters();
257  Energy_layer_calib_.fill(0.);
259 
260  seedDet = 0;
261  seedEnergy = 0.;
262  for (const auto& it_sc : simClusterRefVector) {
263  const SimCluster& simCluster = (*(it_sc));
264  IfLogTrace(debug_ > 1, "HGCalHitCalibration")
265  << ">>> SC.energy(): " << simCluster.energy() << " SC.simEnergy(): " << simCluster.simEnergy() << std::endl;
266  const std::vector<std::pair<uint32_t, float> >& hits_and_fractions = simCluster.hits_and_fractions();
267 
268  // loop over hits
269  for (const auto& it_haf : hits_and_fractions) {
270  unsigned int hitlayer = recHitTools_.getLayerWithOffset(it_haf.first);
271  DetId hitid = (it_haf.first);
272  // dump raw RecHits and match
273  if (rawRecHits_) {
274  if ((hitid.det() == DetId::Forward) || (hitid.det() == DetId::HGCalEE) || (hitid.det() == DetId::HGCalHSi) ||
275  (hitid.det() == DetId::HGCalHSc))
276  fillWithRecHits(hitmap, hitid, hitlayer, it_haf.second, seedDet, seedEnergy);
277  }
278  } // end simHit
279  } // end simCluster
280 
281  auto sumCalibRecHitCalib_fraction =
282  std::accumulate(Energy_layer_calib_fraction_.begin(), Energy_layer_calib_fraction_.end(), 0.);
283  IfLogTrace(debug_ > 0, "HGCalHitCalibration")
284  << ">>> MC Energy: " << it_caloPart.energy() << " reco energy: " << sumCalibRecHitCalib_fraction << std::endl;
285  if (h_EoP_CPene_calib_fraction_.count(seedDet))
286  h_EoP_CPene_calib_fraction_[seedDet]->Fill(sumCalibRecHitCalib_fraction / it_caloPart.energy());
287 
288  // Loop on reconstructed SC.
289  const auto& clusters = *hgcalMultiClustersHandle;
290  float total_energy = 0.;
291  float max_dR2 = 0.0025;
292  auto closest =
293  std::min_element(clusters.begin(), clusters.end(), [&](const reco::PFCluster& a, const reco::PFCluster& b) {
294  auto dR2_a = reco::deltaR2(it_caloPart, a);
295  auto dR2_b = reco::deltaR2(it_caloPart, b);
296  auto ERatio_a = a.correctedEnergy() / it_caloPart.energy();
297  auto ERatio_b = b.correctedEnergy() / it_caloPart.energy();
298  // If both clusters are within 0.0025, mark as first (min) the
299  // element with the highest ratio against the SimCluster
300  if (dR2_a < max_dR2 && dR2_b < max_dR2)
301  return ERatio_a > ERatio_b;
302  return dR2_a < dR2_b;
303  });
304  if (closest != clusters.end() && reco::deltaR2(*closest, it_caloPart) < 0.01) {
305  total_energy = closest->correctedEnergy();
306  seedDet = recHitTools_.getSiThickness(closest->seed());
307  if (closest->seed().det() == DetId::HGCalHSc) {
308  seedDet = scint_;
309  }
310  if (hgcal_EoP_CPene_calib_fraction_.count(seedDet)) {
311  hgcal_EoP_CPene_calib_fraction_[seedDet]->Fill(total_energy / it_caloPart.energy());
312  }
313  }
314 
315  auto closest_fcn = [&](auto const& a, auto const& b) {
316  auto dR2_a = reco::deltaR2(it_caloPart, a);
317  auto dR2_b = reco::deltaR2(it_caloPart, b);
318  auto ERatio_a = a.energy() / it_caloPart.energy();
319  auto ERatio_b = b.energy() / it_caloPart.energy();
320  // If both clusters are within 0.0025, mark as first (min) the
321  // element with the highest ratio against the SimCluster
322  if (dR2_a < max_dR2 && dR2_b < max_dR2)
323  return ERatio_a > ERatio_b;
324  return dR2_a < dR2_b;
325  };
326  // ELECTRONS in HGCAL
327  if (PFElectronHandle.isValid()) {
328  auto const& ele = (*PFElectronHandle);
329  auto closest = std::min_element(ele.begin(), ele.end(), closest_fcn);
330  if (closest != ele.end() &&
331  ((closest->superCluster()->seed()->seed().det() == DetId::Forward) ||
332  (closest->superCluster()->seed()->seed().det() == DetId::HGCalEE) ||
333  (closest->superCluster()->seed()->seed().det() == DetId::HGCalHSi)) &&
334  reco::deltaR2(*closest, it_caloPart) < 0.01) {
335  seedDet = recHitTools_.getSiThickness(closest->superCluster()->seed()->seed());
336  if (closest->superCluster()->seed()->seed().det() == DetId::HGCalHSc) {
337  seedDet = scint_;
338  }
339  if (hgcal_ele_EoP_CPene_calib_fraction_.count(seedDet)) {
340  hgcal_ele_EoP_CPene_calib_fraction_[seedDet]->Fill(closest->energy() / it_caloPart.energy());
341  }
342  }
343  }
344 
345  // PHOTONS in HGCAL
346  if (PFPhotonHandle.isValid()) {
347  auto const& photon = (*PFPhotonHandle);
348  auto closest = std::min_element(photon.begin(), photon.end(), closest_fcn);
349  if (closest != photon.end() &&
350  ((closest->superCluster()->seed()->seed().det() == DetId::Forward) ||
351  (closest->superCluster()->seed()->seed().det() == DetId::HGCalEE) ||
352  (closest->superCluster()->seed()->seed().det() == DetId::HGCalHSi)) &&
353  reco::deltaR2(*closest, it_caloPart) < 0.01) {
354  seedDet = recHitTools_.getSiThickness(closest->superCluster()->seed()->seed());
355  if (hgcal_photon_EoP_CPene_calib_fraction_.count(seedDet)) {
356  hgcal_photon_EoP_CPene_calib_fraction_[seedDet]->Fill(closest->energy() / it_caloPart.energy());
357  }
358  }
359  }
360  } // end caloparticle
361 }
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_
size_type size() const
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:184
float simEnergy() const
returns the accumulated sim energy in the cluster
Definition: SimCluster.h:213
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< HGCRecHitCollection > recHitsBH_
Monte Carlo truth information used for tracking validation.
Definition: SimCluster.h:29
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:118
bool isValid() const
Definition: HandleBase.h:70
void setGeometry(CaloGeometry const &)
Definition: RecHitTools.cc:68
float energy() const
Energy. Note this is taken from the first SimTrack only.
Definition: SimCluster.h:104
double a
Definition: hdecay.h:119
std::array< float, layers_ > Energy_layer_calib_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeomToken_
std::float_t getSiThickness(const DetId &) const
Definition: RecHitTools.cc:179
#define LogDebug(id)
unsigned int getLayerWithOffset(const DetId &) const
Definition: RecHitTools.cc:365

◆ bookHistograms()

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

Implements DQMEDAnalyzer.

Definition at line 120 of file HGCalHitCalibration.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::NavigatorBase::cd(), depletion0_, depletion1_, depletion2_, 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().

122  {
123  ibooker.cd();
124  ibooker.setCurrentFolder("HGCalHitCalibration");
125  h_EoP_CPene_calib_fraction_[depletion0_] = ibooker.book1D("h_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
126  h_EoP_CPene_calib_fraction_[depletion1_] = ibooker.book1D("h_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
127  h_EoP_CPene_calib_fraction_[depletion2_] = ibooker.book1D("h_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
128  h_EoP_CPene_calib_fraction_[scint_] = ibooker.book1D("h_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
130  ibooker.book1D("hgcal_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
132  ibooker.book1D("hgcal_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
134  ibooker.book1D("hgcal_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
135  hgcal_EoP_CPene_calib_fraction_[scint_] = ibooker.book1D("hgcal_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
137  ibooker.book1D("hgcal_ele_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
139  ibooker.book1D("hgcal_ele_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
141  ibooker.book1D("hgcal_ele_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
143  ibooker.book1D("hgcal_ele_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
145  ibooker.book1D("hgcal_photon_EoP_CPene_100_calib_fraction", "", 1000, -0.5, 2.5);
147  ibooker.book1D("hgcal_photon_EoP_CPene_200_calib_fraction", "", 1000, -0.5, 2.5);
149  ibooker.book1D("hgcal_photon_EoP_CPene_300_calib_fraction", "", 1000, -0.5, 2.5);
151  ibooker.book1D("hgcal_photon_EoP_CPene_scint_calib_fraction", "", 1000, -0.5, 2.5);
152  LayerOccupancy_ = ibooker.book1D("LayerOccupancy", "", layers_, 0., (float)layers_);
153 }
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 365 of file HGCalHitCalibration.cc.

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

365  {
367  desc.add<int>("debug", 0);
368  desc.add<bool>("rawRecHits", true);
369  desc.add<std::string>("detector", "all");
370  desc.add<int>("depletionFine", 120);
371  desc.add<edm::InputTag>("caloParticles", edm::InputTag("mix", "MergedCaloTruth"));
372  desc.add<edm::InputTag>("recHitsEE", edm::InputTag("HGCalRecHit", "HGCEERecHits"));
373  desc.add<edm::InputTag>("recHitsFH", edm::InputTag("HGCalRecHit", "HGCHEFRecHits"));
374  desc.add<edm::InputTag>("recHitsBH", edm::InputTag("HGCalRecHit", "HGCHEBRecHits"));
375  desc.add<edm::InputTag>("hgcalMultiClusters", edm::InputTag("particleFlowClusterHGCal"));
376  desc.add<edm::InputTag>("electrons", edm::InputTag("ecalDrivenGsfElectronsHGC"));
377  desc.add<edm::InputTag>("photons", edm::InputTag("photonsHGC"));
378  descriptions.add("hgcalHitCalibrationDefault", desc);
379 }
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 155 of file HGCalHitCalibration.cc.

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

Referenced by analyze().

160  {
161  if (hitmap.find(hitid) == hitmap.end()) {
162  // Hit was not reconstructed
163  IfLogTrace(debug_ > 0, "HGCalHitCalibration")
164  << ">>> Failed to find detid " << std::hex << hitid.rawId() << std::dec << " Det " << hitid.det() << " Subdet "
165  << hitid.subdetId() << std::endl;
166  return;
167  }
168  if ((hitid.det() != DetId::Forward) && (hitid.det() != DetId::HGCalEE) && (hitid.det() != DetId::HGCalHSi) &&
169  (hitid.det() != DetId::HGCalHSc)) {
170  IfLogTrace(debug_ > 0, "HGCalHitCalibration")
171  << ">>> Wrong type of detid " << std::hex << hitid.rawId() << std::dec << " Det " << hitid.det() << " Subdet "
172  << hitid.subdetId() << std::endl;
173  return;
174  }
175 
176  unsigned int layer = recHitTools_.getLayerWithOffset(hitid);
177  assert(hitlayer == layer);
178  Energy_layer_calib_fraction_[layer] += hitmap[hitid]->energy() * fraction;
180  if (seedEnergy < hitmap[hitid]->energy()) {
181  seedEnergy = hitmap[hitid]->energy();
182  seedDet = recHitTools_.getSiThickness(hitid);
183  if (hitid.det() == DetId::HGCalHSc) {
184  seedDet = scint_;
185  }
186  }
187 }
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
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
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:179
unsigned int getLayerWithOffset(const DetId &) const
Definition: RecHitTools.cc:365

Member Data Documentation

◆ algo_

int HGCalHitCalibration::algo_
private

Definition at line 59 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ caloGeomToken_

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

Definition at line 60 of file HGCalHitCalibration.cc.

Referenced by analyze().

◆ caloParticles_

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

Definition at line 54 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ debug_

int HGCalHitCalibration::debug_
private

Definition at line 62 of file HGCalHitCalibration.cc.

Referenced by analyze(), and fillWithRecHits().

◆ depletion0_

int HGCalHitCalibration::depletion0_
private

Definition at line 59 of file HGCalHitCalibration.cc.

Referenced by bookHistograms(), and HGCalHitCalibration().

◆ depletion1_

constexpr int HGCalHitCalibration::depletion1_ = 200
staticprivate

Definition at line 64 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ depletion2_

constexpr int HGCalHitCalibration::depletion2_ = 300
staticprivate

Definition at line 65 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ electrons_

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

Definition at line 56 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ Energy_layer_calib_

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

Definition at line 75 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 76 of file HGCalHitCalibration.cc.

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

◆ h_EoP_CPene_calib_fraction_

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

Definition at line 68 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 70 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 69 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 71 of file HGCalHitCalibration.cc.

Referenced by analyze(), and bookHistograms().

◆ hgcalMultiClusters_

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

Definition at line 55 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ LayerOccupancy_

MonitorElement* HGCalHitCalibration::LayerOccupancy_
private

Definition at line 72 of file HGCalHitCalibration.cc.

Referenced by bookHistograms(), and fillWithRecHits().

◆ layers_

constexpr int HGCalHitCalibration::layers_ = 60
staticprivate

Definition at line 74 of file HGCalHitCalibration.cc.

Referenced by bookHistograms().

◆ photons_

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

Definition at line 57 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ rawRecHits_

bool HGCalHitCalibration::rawRecHits_
private

Definition at line 61 of file HGCalHitCalibration.cc.

Referenced by analyze().

◆ recHitsBH_

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

Definition at line 53 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ recHitsEE_

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

Definition at line 51 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ recHitsFH_

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

Definition at line 52 of file HGCalHitCalibration.cc.

Referenced by analyze(), and HGCalHitCalibration().

◆ recHitTools_

hgcal::RecHitTools HGCalHitCalibration::recHitTools_
private

Definition at line 63 of file HGCalHitCalibration.cc.

Referenced by analyze(), and fillWithRecHits().

◆ scint_

constexpr int HGCalHitCalibration::scint_ = 400
staticprivate

Definition at line 66 of file HGCalHitCalibration.cc.

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