CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
PFECALSuperClusterAlgo Class Reference

#include <PFECALSuperClusterAlgo.h>

Public Types

enum  clustering_type { kBOX = 1, kMustache = 2, kDeepSC = 3 }
 
enum  energy_weight { kRaw, kCalibratedNoPS, kCalibratedTotal }
 

Public Member Functions

std::unique_ptr< reco::SuperClusterCollection > & getEBOutputSCCollection ()
 
std::unique_ptr< reco::SuperClusterCollection > & getEEOutputSCCollection ()
 
void loadAndSortPFClusters (const edm::Event &evt)
 
 PFECALSuperClusterAlgo (const reco::SCProducerCache *cache)
 constructor More...
 
void run ()
 
void setClusteringType (clustering_type thetype)
 
void setCrackCorrections (bool applyCrackCorrections)
 
void setDropUnseedable (const bool d)
 
void setEnergyWeighting (energy_weight thetype)
 
void setEtawidthSuperClusterBarrel (double etawidth)
 
void setEtawidthSuperClusterEndcap (double etawidth)
 
void setIsOOTCollection (bool isOOTCollection)
 
void setMajorityFraction (const double f)
 
void setPFClusterCalibration (const std::shared_ptr< PFEnergyCalibration > &)
 
void setPhiwidthSuperClusterBarrel (double phiwidth)
 
void setPhiwidthSuperClusterEndcap (double phiwidth)
 
void setSatelliteMerging (const bool doit)
 
void setSatelliteThreshold (const double t)
 
void setThreshPFClusterBarrel (double thresh)
 
void setThreshPFClusterEndcap (double thresh)
 
void setThreshPFClusterSeedBarrel (double thresh)
 
void setThreshPFClusterSeedEndcap (double thresh)
 
void setThreshSuperClusterEt (double thresh)
 
void setTokens (const edm::ParameterSet &, edm::ConsumesCollector &&)
 
void setUseDynamicDPhi (bool useit)
 
void setUseETForSeeding (bool useET)
 
void setUseRegression (bool useRegression)
 
void setVerbosityLevel (bool verbose)
 
void update (const edm::EventSetup &)
 
void updateSCParams (const edm::EventSetup &)
 

Private Member Functions

void buildAllSuperClusters (CalibratedPFClusterVector &, double seedthresh)
 
void buildAllSuperClustersDeepSC (CalibratedPFClusterVector &, double seedthresh)
 
void buildAllSuperClustersMustacheOrBox (CalibratedPFClusterVector &, double seedthresh)
 
void buildSuperClusterMustacheOrBox (CalibratedPFCluster &, CalibratedPFClusterVector &)
 
void finalizeSuperCluster (CalibratedPFCluster &seed, CalibratedPFClusterVector &clustered, bool isEE)
 

Private Attributes

CalibratedPFClusterVector _clustersEB
 
CalibratedPFClusterVector _clustersEE
 
clustering_type _clustype
 
energy_weight _eweight
 
std::shared_ptr< PFEnergyCalibration_pfEnergyCalibration
 
bool applyCrackCorrections_
 
const EcalRecHitCollectionbarrelRecHits_
 
const reco::BeamSpotbeamSpot_
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordcaloGeometryToken_
 
edm::ESGetToken< CaloTopology, CaloTopologyRecordcaloTopologyToken_
 
const ESChannelStatuschannelStatus_
 
bool doSatelliteClusterMerge_
 
bool dropUnseedable_
 
const CaloSubdetectorGeometryebGeom_
 
edm::ESGetToken< EcalMustacheSCParameters, EcalMustacheSCParametersRcdecalMustacheSCParametersToken_
 
edm::ESGetToken< EcalSCDynamicDPhiParameters, EcalSCDynamicDPhiParametersRcdecalSCDynamicDPhiParametersToken_
 
const CaloSubdetectorGeometryeeGeom_
 
const reco::PFCluster::EEtoPSAssociationEEtoPS_
 
const EcalRecHitCollectionendcapRecHits_
 
edm::ESGetToken< ESChannelStatus, ESChannelStatusRcdesChannelStatusToken_
 
edm::ESGetToken< ESEEIntercalibConstants, ESEEIntercalibConstantsRcdesEEInterCalibToken_
 
const CaloSubdetectorGeometryesGeom_
 
double etawidthSuperClusterBarrel_
 
double etawidthSuperClusterEndcap_
 
double fractionForMajority_
 
const CaloGeometrygeometry_
 
edm::EDGetTokenT< EcalRecHitCollectioninputTagBarrelRecHits_
 
edm::EDGetTokenT< reco::BeamSpotinputTagBeamSpot_
 
edm::EDGetTokenT< EcalRecHitCollectioninputTagEndcapRecHits_
 
edm::EDGetTokenT< edm::View< reco::PFCluster > > inputTagPFClusters_
 
edm::EDGetTokenT< reco::PFCluster::EEtoPSAssociationinputTagPFClustersES_
 
bool isOOTCollection_
 
const EcalMustacheSCParametersmustacheSCParams_
 
double phiwidthSuperClusterBarrel_
 
double phiwidthSuperClusterEndcap_
 
std::unique_ptr< SCEnergyCorrectorSemiParmregr_
 
double satelliteThreshold_
 
const EcalSCDynamicDPhiParametersscDynamicDPhiParams_
 
const reco::SCProducerCacheSCProducerCache_
 
std::unique_ptr< reco::SuperClusterCollectionsuperClustersEB_
 
std::unique_ptr< reco::SuperClusterCollectionsuperClustersEE_
 
bool threshIsET_
 
double threshPFClusterBarrel_
 
double threshPFClusterEndcap_
 
double threshPFClusterSeedBarrel_
 
double threshPFClusterSeedEndcap_
 
double threshSuperClusterEt_
 
const CaloTopologytopology_
 
bool useDynamicDPhi_
 
bool useRegression_
 
bool verbose_
 

Detailed Description

Definition at line 66 of file PFECALSuperClusterAlgo.h.

Member Enumeration Documentation

◆ clustering_type

◆ energy_weight

Constructor & Destructor Documentation

◆ PFECALSuperClusterAlgo()

PFECALSuperClusterAlgo::PFECALSuperClusterAlgo ( const reco::SCProducerCache cache)

constructor

Definition at line 111 of file PFECALSuperClusterAlgo.cc.

112  : beamSpot_(nullptr), SCProducerCache_(cache) {}
const reco::BeamSpot * beamSpot_
const reco::SCProducerCache * SCProducerCache_
def cache(function)
Definition: utilities.py:3

Member Function Documentation

◆ buildAllSuperClusters()

void PFECALSuperClusterAlgo::buildAllSuperClusters ( CalibratedPFClusterVector clusters,
double  seedthresh 
)
private

◆ buildAllSuperClustersDeepSC()

void PFECALSuperClusterAlgo::buildAllSuperClustersDeepSC ( CalibratedPFClusterVector clusters,
double  seedthresh 
)
private

Definition at line 294 of file PFECALSuperClusterAlgo.cc.

References barrelRecHits_, bsc_activity_cfg::clusters, HLT_2023v12_cff::distance, ebGeom_, PFLayer::ECAL_ENDCAP, eeGeom_, endcapRecHits_, finalizeSuperCluster(), SCProducerCache_, fileCollector::seed, threshIsET_, and topology_.

Referenced by buildAllSuperClusters().

294  {
295  auto seedable = std::bind(isSeed, _1, seedthresh, threshIsET_);
296  // EcalClustersGraph utility class for DeepSC algorithm application
297  // make sure only seeds appear at the front of the list of clusters
298  auto last_seed = std::stable_partition(clusters.begin(), clusters.end(), seedable);
299 
300  reco::EcalClustersGraph ecalClusterGraph_{clusters,
301  static_cast<int>(std::distance(clusters.begin(), last_seed)),
302  topology_,
303  ebGeom_,
304  eeGeom_,
308  // Build sub-regions of the detector where the DeepSC algo will be run
309  ecalClusterGraph_.initWindows();
310  // For each sub-region, prepare the DeepSC input tensors
311  ecalClusterGraph_.fillVariables();
312  // Evaluate the DeepSC algorithm and save the scores
313  ecalClusterGraph_.evaluateScores();
314  // Select the final SuperCluster using the CollectionStrategy defined in the cfi
315  ecalClusterGraph_.setThresholds();
316  ecalClusterGraph_.selectClusters();
317  // Extract the final SuperCluster collection
318  reco::EcalClustersGraph::EcalGraphOutput windows = ecalClusterGraph_.getGraphOutput();
319  for (auto& [seed, clustered] : windows) {
320  bool isEE = false;
321  if (seed.ptr()->layer() == PFLayer::ECAL_ENDCAP)
322  isEE = true;
323  finalizeSuperCluster(seed, clustered, isEE);
324  }
325 }
const reco::SCProducerCache * SCProducerCache_
const CaloSubdetectorGeometry * eeGeom_
const CaloTopology * topology_
void finalizeSuperCluster(CalibratedPFCluster &seed, CalibratedPFClusterVector &clustered, bool isEE)
const EcalRecHitCollection * barrelRecHits_
std::vector< std::pair< CalibratedPFCluster, CalibratedPFClusterVector > > EcalGraphOutput
const CaloSubdetectorGeometry * ebGeom_
const EcalRecHitCollection * endcapRecHits_

◆ buildAllSuperClustersMustacheOrBox()

void PFECALSuperClusterAlgo::buildAllSuperClustersMustacheOrBox ( CalibratedPFClusterVector clusters,
double  seedthresh 
)
private

Definition at line 278 of file PFECALSuperClusterAlgo.cc.

References buildSuperClusterMustacheOrBox(), bsc_activity_cfg::clusters, and threshIsET_.

Referenced by buildAllSuperClusters().

279  {
280  auto seedable = std::bind(isSeed, _1, seedthresh, threshIsET_);
281 
282  // make sure only seeds appear at the front of the list of clusters
283  std::stable_partition(clusters.begin(), clusters.end(), seedable);
284 
285  // in each iteration we are working on a list that is already sorted
286  // in the cluster energy and remains so through each iteration
287  // NB: since clusters is sorted in loadClusters any_of has O(1)
288  // timing until you run out of seeds!
289  while (std::any_of(clusters.cbegin(), clusters.cend(), seedable)) {
291  }
292 }
void buildSuperClusterMustacheOrBox(CalibratedPFCluster &, CalibratedPFClusterVector &)

◆ buildSuperClusterMustacheOrBox()

void PFECALSuperClusterAlgo::buildSuperClusterMustacheOrBox ( CalibratedPFCluster seed,
CalibratedPFClusterVector clusters 
)
private

Definition at line 327 of file PFECALSuperClusterAlgo.cc.

References _clustype, bsc_activity_cfg::clusters, doSatelliteClusterMerge_, dropUnseedable_, PFLayer::ECAL_BARREL, PFLayer::ECAL_ENDCAP, etawidthSuperClusterBarrel_, etawidthSuperClusterEndcap_, Exception, finalizeSuperCluster(), fractionForMajority_, PFLayer::HGCAL, mustacheSCParams_, phiwidthSuperClusterBarrel_, phiwidthSuperClusterEndcap_, satelliteThreshold_, scDynamicDPhiParams_, fileCollector::seed, superClustersEB_, superClustersEE_, useDynamicDPhi_, and verbose_.

Referenced by buildAllSuperClustersMustacheOrBox().

328  {
329  CalibratedPFClusterVector clustered;
330 
331  double etawidthSuperCluster = 0.0;
332  double phiwidthSuperCluster = 0.0;
333  bool isEE = false;
334  switch (seed.ptr()->layer()) {
336  phiwidthSuperCluster = phiwidthSuperClusterBarrel_;
337  etawidthSuperCluster = etawidthSuperClusterBarrel_;
338  edm::LogInfo("PFClustering") << "Building SC number " << superClustersEB_->size() + 1 << " in the ECAL barrel!";
339  break;
340  case PFLayer::HGCAL:
342 
343  phiwidthSuperCluster = phiwidthSuperClusterEndcap_;
344  etawidthSuperCluster = etawidthSuperClusterEndcap_;
345  edm::LogInfo("PFClustering") << "Building SC number " << superClustersEE_->size() + 1 << " in the ECAL endcap!"
346  << std::endl;
347  isEE = true;
348  break;
349  default:
350  break;
351  }
352 
353  auto isClusteredWithSeed = std::bind(isClustered,
354  _1,
355  seed,
356  _clustype,
360  etawidthSuperCluster,
361  phiwidthSuperCluster);
362 
363  auto matchesSeedByRecHit = std::bind(isLinkedByRecHit, _1, seed, satelliteThreshold_, fractionForMajority_, 0.1, 0.2);
364 
365  // this function shuffles the list of clusters into a list
366  // where all clustered sub-clusters are at the front
367  // and returns a pointer to the first unclustered cluster.
368  // The relative ordering of clusters is preserved
369  // (i.e. both resulting sub-lists are sorted by energy).
370  auto not_clustered = std::stable_partition(clusters.begin(), clusters.end(), isClusteredWithSeed);
371  // satellite cluster merging
372  // it was found that large clusters can split!
374  not_clustered = std::stable_partition(not_clustered, clusters.end(), matchesSeedByRecHit);
375  }
376 
377  if (verbose_) {
378  edm::LogInfo("PFClustering") << "Dumping cluster detail";
379  edm::LogVerbatim("PFClustering") << "\tPassed seed: e = " << seed.energy_nocalib() << " eta = " << seed.eta()
380  << " phi = " << seed.phi() << std::endl;
381  for (auto clus = clusters.cbegin(); clus != not_clustered; ++clus) {
382  edm::LogVerbatim("PFClustering") << "\t\tClustered cluster: e = " << (*clus).energy_nocalib()
383  << " eta = " << (*clus).eta() << " phi = " << (*clus).phi() << std::endl;
384  }
385  for (auto clus = not_clustered; clus != clusters.end(); ++clus) {
386  edm::LogVerbatim("PFClustering") << "\tNon-Clustered cluster: e = " << (*clus).energy_nocalib()
387  << " eta = " << (*clus).eta() << " phi = " << (*clus).phi() << std::endl;
388  }
389  }
390 
391  if (not_clustered == clusters.begin()) {
392  if (dropUnseedable_) {
393  clusters.erase(clusters.begin());
394  return;
395  } else {
396  throw cms::Exception("PFECALSuperClusterAlgo::buildSuperCluster")
397  << "Cluster is not seedable!" << std::endl
398  << "\tNon-Clustered cluster: e = " << (*not_clustered).energy_nocalib() << " eta = " << (*not_clustered).eta()
399  << " phi = " << (*not_clustered).phi() << std::endl;
400  }
401  }
402 
403  // move the clustered clusters out of available cluster list
404  // and into a temporary vector for building the SC
405  CalibratedPFClusterVector clustered_tmp(clusters.begin(), not_clustered);
406  clustered = clustered_tmp;
407  clusters.erase(clusters.begin(), not_clustered);
408 
409  // Finalize the SuperCluster passing the list of clustered clusters
410  finalizeSuperCluster(seed, clustered, isEE);
411 }
Log< level::Info, true > LogVerbatim
std::unique_ptr< reco::SuperClusterCollection > superClustersEB_
const EcalMustacheSCParameters * mustacheSCParams_
std::unique_ptr< reco::SuperClusterCollection > superClustersEE_
const EcalSCDynamicDPhiParameters * scDynamicDPhiParams_
Log< level::Info, false > LogInfo
void finalizeSuperCluster(CalibratedPFCluster &seed, CalibratedPFClusterVector &clustered, bool isEE)
std::vector< CalibratedPFCluster > CalibratedPFClusterVector
\ Algorithm for box particle flow super clustering in the ECAL

◆ finalizeSuperCluster()

void PFECALSuperClusterAlgo::finalizeSuperCluster ( CalibratedPFCluster seed,
CalibratedPFClusterVector clustered,
bool  isEE 
)
private

Definition at line 413 of file PFECALSuperClusterAlgo.cc.

References _eweight, _pfEnergyCalibration, reco::SuperCluster::addCluster(), reco::CaloCluster::addHitAndFraction(), reco::SuperCluster::addPreshowerCluster(), applyCrackCorrections_, barrelRecHits_, beamSpot_, channelStatus_, TauDecayModes::dec, PFLayer::ECAL_BARREL, PFLayer::ECAL_ENDCAP, EEtoPS_, endcapRecHits_, reco::CaloCluster::energy(), Exception, spr::find(), edm::SortedCollection< T, SORT >::find(), edm::Ptr< T >::get(), PFLayer::HGCAL, isOOTCollection_, kCalibratedNoPS, kCalibratedTotal, EcalRecHit::kOutOfTime, kRaw, PFClusterWidthAlgo::pflowEtaWidth(), PFClusterWidthAlgo::pflowPhiWidth(), reco::BeamSpot::position(), reco::CaloCluster::position(), RecoTauValidation_cfi::posX, RecoTauValidation_cfi::posY, reco::SuperCluster::preshowerClustersBegin(), reco::SuperCluster::preshowerClustersEnd(), ptFast(), reco::SuperCluster::rawEnergy(), regr_, reco::SuperCluster::seed(), fileCollector::seed, reco::CaloCluster::setCorrectedEnergy(), reco::SuperCluster::setEtaWidth(), reco::SuperCluster::setPhiWidth(), reco::SuperCluster::setPreshowerEnergy(), reco::SuperCluster::setPreshowerEnergyPlane1(), reco::SuperCluster::setPreshowerEnergyPlane2(), reco::SuperCluster::setSeed(), sortByKey(), superClustersEB_, superClustersEE_, threshSuperClusterEt_, and useRegression_.

Referenced by buildAllSuperClustersDeepSC(), and buildSuperClusterMustacheOrBox().

415  {
416  // need the vector of raw pointers for a PF width class
417  std::vector<const reco::PFCluster*> bare_ptrs;
418  // calculate necessary parameters and build the SC
419  double posX(0), posY(0), posZ(0), corrSCEnergy(0), corrPS1Energy(0), corrPS2Energy(0), energyweight(0),
420  energyweighttot(0);
421  for (const auto& clus : clustered) {
422  double ePS1 = 0.0;
423  double ePS2 = 0.0;
424  energyweight = clus.energy_nocalib();
425  bare_ptrs.push_back(clus.ptr().get());
426  // update EE calibrated super cluster energies
427  if (isEE) {
428  auto ee_key_val = std::make_pair(clus.ptr().key(), edm::Ptr<reco::PFCluster>());
429  const auto clustops = std::equal_range(EEtoPS_->begin(), EEtoPS_->end(), ee_key_val, sortByKey);
430  std::vector<reco::PFCluster const*> psClusterPointers;
431  for (auto i_ps = clustops.first; i_ps != clustops.second; ++i_ps) {
432  psClusterPointers.push_back(i_ps->second.get());
433  }
434  auto calibratedEnergies = _pfEnergyCalibration->calibrateEndcapClusterEnergies(
435  *(clus.ptr()), psClusterPointers, *channelStatus_, applyCrackCorrections_);
436  ePS1 = calibratedEnergies.ps1Energy;
437  ePS2 = calibratedEnergies.ps2Energy;
438  }
439 
440  if (ePS1 == -1.)
441  ePS1 = 0;
442  if (ePS2 == -1.)
443  ePS2 = 0;
444 
445  switch (_eweight) {
446  case kRaw: // energyweight is initialized to raw cluster energy
447  break;
448  case kCalibratedNoPS:
449  energyweight = clus.energy() - ePS1 - ePS2;
450  break;
451  case kCalibratedTotal:
452  energyweight = clus.energy();
453  break;
454  default:
455  break;
456  }
457  const math::XYZPoint& cluspos = clus.ptr()->position();
458  posX += energyweight * cluspos.X();
459  posY += energyweight * cluspos.Y();
460  posZ += energyweight * cluspos.Z();
461 
462  energyweighttot += energyweight;
463  corrSCEnergy += clus.energy();
464  corrPS1Energy += ePS1;
465  corrPS2Energy += ePS2;
466  }
467  posX /= energyweighttot;
468  posY /= energyweighttot;
469  posZ /= energyweighttot;
470 
471  // now build the supercluster
472  reco::SuperCluster new_sc(corrSCEnergy, math::XYZPoint(posX, posY, posZ));
473  new_sc.setCorrectedEnergy(corrSCEnergy);
474  new_sc.setSeed(clustered.front().ptr());
475  new_sc.setPreshowerEnergy(corrPS1Energy + corrPS2Energy);
476  new_sc.setPreshowerEnergyPlane1(corrPS1Energy);
477  new_sc.setPreshowerEnergyPlane2(corrPS2Energy);
478  for (const auto& clus : clustered) {
479  new_sc.addCluster(clus.ptr());
480 
481  auto& hits_and_fractions = clus.ptr()->hitsAndFractions();
482  for (auto& hit_and_fraction : hits_and_fractions) {
483  new_sc.addHitAndFraction(hit_and_fraction.first, hit_and_fraction.second);
484  }
485  if (isEE) {
486  auto ee_key_val = std::make_pair(clus.ptr().key(), edm::Ptr<reco::PFCluster>());
487  const auto clustops = std::equal_range(EEtoPS_->begin(), EEtoPS_->end(), ee_key_val, sortByKey);
488  // EE rechits should be uniquely matched to sets of pre-shower
489  // clusters at this point, so we throw an exception if otherwise
490  // now wrapped in EDM debug flags
491  for (auto i_ps = clustops.first; i_ps != clustops.second; ++i_ps) {
492  edm::Ptr<reco::PFCluster> psclus(i_ps->second);
493 #ifdef EDM_ML_DEBUG
494 
495  auto found_pscluster =
496  std::find(new_sc.preshowerClustersBegin(), new_sc.preshowerClustersEnd(), reco::CaloClusterPtr(psclus));
497 
498  if (found_pscluster == new_sc.preshowerClustersEnd()) {
499 #endif
500  new_sc.addPreshowerCluster(psclus);
501 #ifdef EDM_ML_DEBUG
502  } else {
503  throw cms::Exception("PFECALSuperClusterAlgo::buildSuperCluster")
504  << "Found a PS cluster matched to more than one EE cluster!" << std::endl
505  << std::hex << psclus.get() << " == " << found_pscluster->get() << std::dec << std::endl;
506  }
507 #endif
508  }
509  }
510  }
511 
512  // calculate linearly weighted cluster widths
513  PFClusterWidthAlgo pfwidth(bare_ptrs);
514  new_sc.setEtaWidth(pfwidth.pflowEtaWidth());
515  new_sc.setPhiWidth(pfwidth.pflowPhiWidth());
516 
517  // cache the value of the raw energy
518  new_sc.rawEnergy();
519 
520  //apply regression energy corrections
521  if (useRegression_) {
522  regr_->modifyObject(new_sc);
523  }
524 
525  // save the super cluster to the appropriate list (if it passes the final
526  // Et threshold)
527  //Note that Et is computed here with respect to the beamspot position
528  //in order to be consistent with the cut applied in the
529  //ElectronSeedProducer
530  double scEtBS = ptFast(new_sc.energy(), new_sc.position(), beamSpot_->position());
531 
532  if (scEtBS > threshSuperClusterEt_) {
533  switch (seed.ptr()->layer()) {
535  if (isOOTCollection_) {
536  DetId seedId = new_sc.seed()->seed();
538  if (!seedRecHit->checkFlag(EcalRecHit::kOutOfTime))
539  break;
540  }
541  superClustersEB_->push_back(new_sc);
542  break;
543  case PFLayer::HGCAL:
545  if (isOOTCollection_) {
546  DetId seedId = new_sc.seed()->seed();
548  if (!seedRecHit->checkFlag(EcalRecHit::kOutOfTime))
549  break;
550  }
551  superClustersEE_->push_back(new_sc);
552  break;
553  default:
554  break;
555  }
556  }
557 }
const ESChannelStatus * channelStatus_
const Point & position() const
position
Definition: BeamSpot.h:59
std::unique_ptr< SCEnergyCorrectorSemiParm > regr_
std::unique_ptr< reco::SuperClusterCollection > superClustersEB_
std::vector< EcalRecHit >::const_iterator const_iterator
const reco::BeamSpot * beamSpot_
const reco::PFCluster::EEtoPSAssociation * EEtoPS_
edm::Ptr< CaloCluster > CaloClusterPtr
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
double ptFast(const double energy, const math::XYZPoint &position, const math::XYZPoint &origin)
std::unique_ptr< reco::SuperClusterCollection > superClustersEE_
std::shared_ptr< PFEnergyCalibration > _pfEnergyCalibration
Definition: DetId.h:17
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
bool sortByKey(const EEPSPair &a, const EEPSPair &b)
iterator find(key_type k)
const EcalRecHitCollection * barrelRecHits_
const EcalRecHitCollection * endcapRecHits_

◆ getEBOutputSCCollection()

std::unique_ptr<reco::SuperClusterCollection>& PFECALSuperClusterAlgo::getEBOutputSCCollection ( )
inline

Definition at line 114 of file PFECALSuperClusterAlgo.h.

References superClustersEB_.

Referenced by PFECALSuperClusterProducer::produce().

114 { return superClustersEB_; }
std::unique_ptr< reco::SuperClusterCollection > superClustersEB_

◆ getEEOutputSCCollection()

std::unique_ptr<reco::SuperClusterCollection>& PFECALSuperClusterAlgo::getEEOutputSCCollection ( )
inline

Definition at line 115 of file PFECALSuperClusterAlgo.h.

References superClustersEE_.

Referenced by PFECALSuperClusterProducer::produce().

115 { return superClustersEE_; }
std::unique_ptr< reco::SuperClusterCollection > superClustersEE_

◆ loadAndSortPFClusters()

void PFECALSuperClusterAlgo::loadAndSortPFClusters ( const edm::Event evt)

Definition at line 184 of file PFECALSuperClusterAlgo.cc.

References _clustersEB, _clustersEE, _clustype, barrelRecHits_, beamSpot_, bsc_activity_cfg::clusters, PFLayer::ECAL_BARREL, PFLayer::ECAL_ENDCAP, EEtoPS_, endcapRecHits_, CalibratedPFCluster::energy(), Exception, PFLayer::HGCAL, mps_fire::i, iEvent, inputTagBarrelRecHits_, inputTagBeamSpot_, inputTagEndcapRecHits_, inputTagPFClusters_, inputTagPFClustersES_, isOOTCollection_, edm::HandleBase::isValid(), kDeepSC, LogDebug, edm::Handle< T >::product(), regr_, jetUpdater_cfi::sort, superClustersEB_, superClustersEE_, threshPFClusterBarrel_, threshPFClusterEndcap_, and useRegression_.

Referenced by PFECALSuperClusterProducer::produce().

184  {
185  //load input collections
186  //Load the pfcluster collections
187  edm::Handle<edm::View<reco::PFCluster>> pfclustersHandle;
188  iEvent.getByToken(inputTagPFClusters_, pfclustersHandle);
189 
191  iEvent.getByToken(inputTagPFClustersES_, psAssociationHandle);
192 
193  const PFClusterView& clusters = *pfclustersHandle.product();
194  const reco::PFCluster::EEtoPSAssociation& psclusters = *psAssociationHandle.product();
195 
196  //load BeamSpot
198  iEvent.getByToken(inputTagBeamSpot_, bsHandle);
199  beamSpot_ = bsHandle.product();
200 
201  //initialize regression for this event
202  if (useRegression_) {
203  regr_->setEvent(iEvent);
204  }
205 
206  // reset the system for running
207  superClustersEB_ = std::make_unique<reco::SuperClusterCollection>();
208  _clustersEB.clear();
209  superClustersEE_ = std::make_unique<reco::SuperClusterCollection>();
210  _clustersEE.clear();
211  EEtoPS_ = &psclusters;
212 
213  //Select PF clusters available for the clustering
214  for (size_t i = 0; i < clusters.size(); ++i) {
215  auto cluster = clusters.ptrAt(i);
216  LogDebug("PFClustering") << "Loading PFCluster i=" << cluster.key() << " energy=" << cluster->energy();
217 
218  // protection for sim clusters
219  if (cluster->caloID().detectors() == 0 && cluster->hitsAndFractions().empty())
220  continue;
221 
222  CalibratedPFCluster calib_cluster(cluster);
223  switch (cluster->layer()) {
225  if (calib_cluster.energy() > threshPFClusterBarrel_) {
226  _clustersEB.push_back(calib_cluster);
227  }
228  break;
229  case PFLayer::HGCAL:
231  if (calib_cluster.energy() > threshPFClusterEndcap_) {
232  _clustersEE.push_back(calib_cluster);
233  }
234  break;
235  default:
236  break;
237  }
238  }
239  // sort full cluster collections by their calibrated energy
240  // this will put all the seeds first by construction
241  std::sort(_clustersEB.begin(), _clustersEB.end(), greaterByEt);
242  std::sort(_clustersEE.begin(), _clustersEE.end(), greaterByEt);
243 
244  // set recHit collections for OOT photons and DeepSC
246  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
247  iEvent.getByToken(inputTagBarrelRecHits_, barrelRecHitsHandle);
248  if (!barrelRecHitsHandle.isValid()) {
249  throw cms::Exception("PFECALSuperClusterAlgo")
250  << "If you use OOT photons or DeepSC, need to specify proper barrel rec hit collection";
251  }
252  barrelRecHits_ = barrelRecHitsHandle.product();
253 
254  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
255  iEvent.getByToken(inputTagEndcapRecHits_, endcapRecHitsHandle);
256  if (!endcapRecHitsHandle.isValid()) {
257  throw cms::Exception("PFECALSuperClusterAlgo")
258  << "If you use OOT photons or DeepSC, need to specify proper endcap rec hit collection";
259  }
260  endcapRecHits_ = endcapRecHitsHandle.product();
261  }
262 }
edm::EDGetTokenT< edm::View< reco::PFCluster > > inputTagPFClusters_
CalibratedPFClusterVector _clustersEB
std::unique_ptr< SCEnergyCorrectorSemiParm > regr_
std::unique_ptr< reco::SuperClusterCollection > superClustersEB_
edm::EDGetTokenT< EcalRecHitCollection > inputTagBarrelRecHits_
T const * product() const
Definition: Handle.h:70
const reco::BeamSpot * beamSpot_
const reco::PFCluster::EEtoPSAssociation * EEtoPS_
std::unique_ptr< reco::SuperClusterCollection > superClustersEE_
edm::EDGetTokenT< EcalRecHitCollection > inputTagEndcapRecHits_
int iEvent
Definition: GenABIO.cc:224
CalibratedPFClusterVector _clustersEE
edm::EDGetTokenT< reco::PFCluster::EEtoPSAssociation > inputTagPFClustersES_
std::vector< std::pair< CaloClusterPtr::key_type, edm::Ptr< PFCluster > > > EEtoPSAssociation
Definition: PFCluster.h:44
edm::EDGetTokenT< reco::BeamSpot > inputTagBeamSpot_
bool isValid() const
Definition: HandleBase.h:70
const EcalRecHitCollection * barrelRecHits_
const EcalRecHitCollection * endcapRecHits_
#define LogDebug(id)

◆ run()

void PFECALSuperClusterAlgo::run ( )

Definition at line 264 of file PFECALSuperClusterAlgo.cc.

References _clustersEB, _clustersEE, buildAllSuperClusters(), threshPFClusterSeedBarrel_, and threshPFClusterSeedEndcap_.

Referenced by PFECALSuperClusterProducer::produce().

264  {
265  // clusterize the EB
267  // clusterize the EE
269 }
void buildAllSuperClusters(CalibratedPFClusterVector &, double seedthresh)
CalibratedPFClusterVector _clustersEB
CalibratedPFClusterVector _clustersEE

◆ setClusteringType()

void PFECALSuperClusterAlgo::setClusteringType ( clustering_type  thetype)
inline

Definition at line 76 of file PFECALSuperClusterAlgo.h.

References _clustype.

Referenced by PFECALSuperClusterProducer::PFECALSuperClusterProducer().

76 { _clustype = thetype; }

◆ setCrackCorrections()

void PFECALSuperClusterAlgo::setCrackCorrections ( bool  applyCrackCorrections)
inline

◆ setDropUnseedable()

void PFECALSuperClusterAlgo::setDropUnseedable ( const bool  d)
inline

◆ setEnergyWeighting()

void PFECALSuperClusterAlgo::setEnergyWeighting ( energy_weight  thetype)
inline

Definition at line 78 of file PFECALSuperClusterAlgo.h.

References _eweight.

Referenced by PFECALSuperClusterProducer::PFECALSuperClusterProducer().

78 { _eweight = thetype; }

◆ setEtawidthSuperClusterBarrel()

void PFECALSuperClusterAlgo::setEtawidthSuperClusterBarrel ( double  etawidth)
inline

◆ setEtawidthSuperClusterEndcap()

void PFECALSuperClusterAlgo::setEtawidthSuperClusterEndcap ( double  etawidth)
inline

◆ setIsOOTCollection()

void PFECALSuperClusterAlgo::setIsOOTCollection ( bool  isOOTCollection)
inline

◆ setMajorityFraction()

void PFECALSuperClusterAlgo::setMajorityFraction ( const double  f)
inline

Definition at line 102 of file PFECALSuperClusterAlgo.h.

References f, and fractionForMajority_.

Referenced by PFECALSuperClusterProducer::PFECALSuperClusterProducer().

102 { fractionForMajority_ = f; }
double f[11][100]

◆ setPFClusterCalibration()

void PFECALSuperClusterAlgo::setPFClusterCalibration ( const std::shared_ptr< PFEnergyCalibration > &  calib)

◆ setPhiwidthSuperClusterBarrel()

void PFECALSuperClusterAlgo::setPhiwidthSuperClusterBarrel ( double  phiwidth)
inline

◆ setPhiwidthSuperClusterEndcap()

void PFECALSuperClusterAlgo::setPhiwidthSuperClusterEndcap ( double  phiwidth)
inline

◆ setSatelliteMerging()

void PFECALSuperClusterAlgo::setSatelliteMerging ( const bool  doit)
inline

◆ setSatelliteThreshold()

void PFECALSuperClusterAlgo::setSatelliteThreshold ( const double  t)
inline

◆ setThreshPFClusterBarrel()

void PFECALSuperClusterAlgo::setThreshPFClusterBarrel ( double  thresh)
inline

◆ setThreshPFClusterEndcap()

void PFECALSuperClusterAlgo::setThreshPFClusterEndcap ( double  thresh)
inline

◆ setThreshPFClusterSeedBarrel()

void PFECALSuperClusterAlgo::setThreshPFClusterSeedBarrel ( double  thresh)
inline

◆ setThreshPFClusterSeedEndcap()

void PFECALSuperClusterAlgo::setThreshPFClusterSeedEndcap ( double  thresh)
inline

◆ setThreshSuperClusterEt()

void PFECALSuperClusterAlgo::setThreshSuperClusterEt ( double  thresh)
inline

◆ setTokens()

void PFECALSuperClusterAlgo::setTokens ( const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  cc 
)

Definition at line 118 of file PFECALSuperClusterAlgo.cc.

References _clustype, edm::BeginLuminosityBlock, caloGeometryToken_, caloTopologyToken_, gpuPixelDoublets::cc, ecalMustacheSCParametersToken_, ecalSCDynamicDPhiParametersToken_, esChannelStatusToken_, esEEInterCalibToken_, edm::ParameterSet::getParameter(), inputTagBarrelRecHits_, inputTagBeamSpot_, inputTagEndcapRecHits_, inputTagPFClusters_, inputTagPFClustersES_, isOOTCollection_, kDeepSC, kMustache, regr_, useDynamicDPhi_, and useRegression_.

Referenced by PFECALSuperClusterProducer::PFECALSuperClusterProducer().

118  {
119  inputTagPFClusters_ = cc.consumes<edm::View<reco::PFCluster>>(iConfig.getParameter<edm::InputTag>("PFClusters"));
121  cc.consumes<reco::PFCluster::EEtoPSAssociation>(iConfig.getParameter<edm::InputTag>("ESAssociation"));
122  inputTagBeamSpot_ = cc.consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("BeamSpot"));
123 
127 
130  }
131  if (useDynamicDPhi_) {
133  }
134 
135  if (useRegression_) {
136  const edm::ParameterSet& regconf = iConfig.getParameter<edm::ParameterSet>("regressionConfig");
137 
138  regr_ = std::make_unique<SCEnergyCorrectorSemiParm>();
139  regr_->setTokens(regconf, cc);
140  }
141 
142  if (isOOTCollection_ || _clustype == PFECALSuperClusterAlgo::kDeepSC) { // OOT photons and DeepSC uses rechits
143  inputTagBarrelRecHits_ = cc.consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("barrelRecHits"));
144  inputTagEndcapRecHits_ = cc.consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("endcapRecHits"));
145  }
146  if (_clustype == PFECALSuperClusterAlgo::kDeepSC) { // DeepSC uses geometry also
149  }
150 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< edm::View< reco::PFCluster > > inputTagPFClusters_
std::unique_ptr< SCEnergyCorrectorSemiParm > regr_
edm::EDGetTokenT< EcalRecHitCollection > inputTagBarrelRecHits_
uint32_t cc[maxCellsPerHit]
Definition: gpuFishbone.h:49
edm::ESGetToken< ESEEIntercalibConstants, ESEEIntercalibConstantsRcd > esEEInterCalibToken_
edm::EDGetTokenT< EcalRecHitCollection > inputTagEndcapRecHits_
ESChannelStatusMap ESChannelStatus
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
edm::ESGetToken< ESChannelStatus, ESChannelStatusRcd > esChannelStatusToken_
edm::ESGetToken< EcalSCDynamicDPhiParameters, EcalSCDynamicDPhiParametersRcd > ecalSCDynamicDPhiParametersToken_
edm::ESGetToken< CaloTopology, CaloTopologyRecord > caloTopologyToken_
edm::EDGetTokenT< reco::PFCluster::EEtoPSAssociation > inputTagPFClustersES_
std::vector< std::pair< CaloClusterPtr::key_type, edm::Ptr< PFCluster > > > EEtoPSAssociation
Definition: PFCluster.h:44
edm::EDGetTokenT< reco::BeamSpot > inputTagBeamSpot_
edm::ESGetToken< EcalMustacheSCParameters, EcalMustacheSCParametersRcd > ecalMustacheSCParametersToken_

◆ setUseDynamicDPhi()

void PFECALSuperClusterAlgo::setUseDynamicDPhi ( bool  useit)
inline

◆ setUseETForSeeding()

void PFECALSuperClusterAlgo::setUseETForSeeding ( bool  useET)
inline

◆ setUseRegression()

void PFECALSuperClusterAlgo::setUseRegression ( bool  useRegression)
inline

◆ setVerbosityLevel()

void PFECALSuperClusterAlgo::setVerbosityLevel ( bool  verbose)
inline

◆ update()

void PFECALSuperClusterAlgo::update ( const edm::EventSetup setup)

Definition at line 152 of file PFECALSuperClusterAlgo.cc.

References _clustype, _pfEnergyCalibration, caloGeometryToken_, caloTopologyToken_, channelStatus_, ebGeom_, DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, eeGeom_, esChannelStatusToken_, esEEInterCalibToken_, esGeom_, geometry_, CaloGeometry::getSubdetectorGeometry(), kDeepSC, edm::ESHandle< T >::product(), regr_, singleTopDQM_cfi::setup, topology_, and useRegression_.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), PFECALSuperClusterProducer::beginLuminosityBlock(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

152  {
153  if (useRegression_) {
154  regr_->setEventSetup(setup);
155  }
156 
157  edm::ESHandle<ESEEIntercalibConstants> esEEInterCalibHandle_ = setup.getHandle(esEEInterCalibToken_);
158  _pfEnergyCalibration->initAlphaGamma_ESplanes_fromDB(esEEInterCalibHandle_.product());
159 
160  edm::ESHandle<ESChannelStatus> esChannelStatusHandle_ = setup.getHandle(esChannelStatusToken_);
161  channelStatus_ = esChannelStatusHandle_.product();
162 
163  if (_clustype == PFECALSuperClusterAlgo::kDeepSC) { // DeepSC uses geometry
164  edm::ESHandle<CaloGeometry> caloGeometryHandle_ = setup.getHandle(caloGeometryToken_);
165  geometry_ = caloGeometryHandle_.product();
166  ebGeom_ = caloGeometryHandle_->getSubdetectorGeometry(DetId::Ecal, EcalBarrel);
167  eeGeom_ = caloGeometryHandle_->getSubdetectorGeometry(DetId::Ecal, EcalEndcap);
168  esGeom_ = caloGeometryHandle_->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
169 
170  edm::ESHandle<CaloTopology> caloTopologyHandle_ = setup.getHandle(caloTopologyToken_);
171  topology_ = caloTopologyHandle_.product();
172  }
173 }
const ESChannelStatus * channelStatus_
std::unique_ptr< SCEnergyCorrectorSemiParm > regr_
edm::ESGetToken< ESEEIntercalibConstants, ESEEIntercalibConstantsRcd > esEEInterCalibToken_
T const * product() const
Definition: ESHandle.h:86
std::shared_ptr< PFEnergyCalibration > _pfEnergyCalibration
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
edm::ESGetToken< ESChannelStatus, ESChannelStatusRcd > esChannelStatusToken_
const CaloSubdetectorGeometry * eeGeom_
const CaloSubdetectorGeometry * esGeom_
edm::ESGetToken< CaloTopology, CaloTopologyRecord > caloTopologyToken_
const CaloTopology * topology_
const CaloGeometry * geometry_
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
const CaloSubdetectorGeometry * ebGeom_

◆ updateSCParams()

void PFECALSuperClusterAlgo::updateSCParams ( const edm::EventSetup setup)

Definition at line 175 of file PFECALSuperClusterAlgo.cc.

References _clustype, ecalMustacheSCParametersToken_, ecalSCDynamicDPhiParametersToken_, kMustache, mustacheSCParams_, scDynamicDPhiParams_, singleTopDQM_cfi::setup, and useDynamicDPhi_.

Referenced by PFECALSuperClusterProducer::produce().

175  {
178  }
179  if (useDynamicDPhi_) {
181  }
182 }
const EcalMustacheSCParameters * mustacheSCParams_
const EcalSCDynamicDPhiParameters * scDynamicDPhiParams_
edm::ESGetToken< EcalSCDynamicDPhiParameters, EcalSCDynamicDPhiParametersRcd > ecalSCDynamicDPhiParametersToken_
edm::ESGetToken< EcalMustacheSCParameters, EcalMustacheSCParametersRcd > ecalMustacheSCParametersToken_

Member Data Documentation

◆ _clustersEB

CalibratedPFClusterVector PFECALSuperClusterAlgo::_clustersEB
private

Definition at line 144 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and run().

◆ _clustersEE

CalibratedPFClusterVector PFECALSuperClusterAlgo::_clustersEE
private

Definition at line 145 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and run().

◆ _clustype

clustering_type PFECALSuperClusterAlgo::_clustype
private

◆ _eweight

energy_weight PFECALSuperClusterAlgo::_eweight
private

Definition at line 151 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), and setEnergyWeighting().

◆ _pfEnergyCalibration

std::shared_ptr<PFEnergyCalibration> PFECALSuperClusterAlgo::_pfEnergyCalibration
private

Definition at line 149 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), setPFClusterCalibration(), and update().

◆ applyCrackCorrections_

bool PFECALSuperClusterAlgo::applyCrackCorrections_
private

Definition at line 182 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), and setCrackCorrections().

◆ barrelRecHits_

const EcalRecHitCollection* PFECALSuperClusterAlgo::barrelRecHits_
private

◆ beamSpot_

const reco::BeamSpot* PFECALSuperClusterAlgo::beamSpot_
private

Definition at line 133 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), and loadAndSortPFClusters().

◆ caloGeometryToken_

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> PFECALSuperClusterAlgo::caloGeometryToken_
private

Definition at line 131 of file PFECALSuperClusterAlgo.h.

Referenced by setTokens(), and update().

◆ caloTopologyToken_

edm::ESGetToken<CaloTopology, CaloTopologyRecord> PFECALSuperClusterAlgo::caloTopologyToken_
private

Definition at line 130 of file PFECALSuperClusterAlgo.h.

Referenced by setTokens(), and update().

◆ channelStatus_

const ESChannelStatus* PFECALSuperClusterAlgo::channelStatus_
private

Definition at line 134 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), and update().

◆ doSatelliteClusterMerge_

bool PFECALSuperClusterAlgo::doSatelliteClusterMerge_
private

◆ dropUnseedable_

bool PFECALSuperClusterAlgo::dropUnseedable_
private

Definition at line 178 of file PFECALSuperClusterAlgo.h.

Referenced by buildSuperClusterMustacheOrBox(), and setDropUnseedable().

◆ ebGeom_

const CaloSubdetectorGeometry* PFECALSuperClusterAlgo::ebGeom_
private

Definition at line 136 of file PFECALSuperClusterAlgo.h.

Referenced by buildAllSuperClustersDeepSC(), and update().

◆ ecalMustacheSCParametersToken_

edm::ESGetToken<EcalMustacheSCParameters, EcalMustacheSCParametersRcd> PFECALSuperClusterAlgo::ecalMustacheSCParametersToken_
private

Definition at line 128 of file PFECALSuperClusterAlgo.h.

Referenced by setTokens(), and updateSCParams().

◆ ecalSCDynamicDPhiParametersToken_

edm::ESGetToken<EcalSCDynamicDPhiParameters, EcalSCDynamicDPhiParametersRcd> PFECALSuperClusterAlgo::ecalSCDynamicDPhiParametersToken_
private

Definition at line 129 of file PFECALSuperClusterAlgo.h.

Referenced by setTokens(), and updateSCParams().

◆ eeGeom_

const CaloSubdetectorGeometry* PFECALSuperClusterAlgo::eeGeom_
private

Definition at line 137 of file PFECALSuperClusterAlgo.h.

Referenced by buildAllSuperClustersDeepSC(), and update().

◆ EEtoPS_

const reco::PFCluster::EEtoPSAssociation* PFECALSuperClusterAlgo::EEtoPS_
private

Definition at line 148 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), and loadAndSortPFClusters().

◆ endcapRecHits_

const EcalRecHitCollection* PFECALSuperClusterAlgo::endcapRecHits_
private

◆ esChannelStatusToken_

edm::ESGetToken<ESChannelStatus, ESChannelStatusRcd> PFECALSuperClusterAlgo::esChannelStatusToken_
private

Definition at line 127 of file PFECALSuperClusterAlgo.h.

Referenced by setTokens(), and update().

◆ esEEInterCalibToken_

edm::ESGetToken<ESEEIntercalibConstants, ESEEIntercalibConstantsRcd> PFECALSuperClusterAlgo::esEEInterCalibToken_
private

Definition at line 126 of file PFECALSuperClusterAlgo.h.

Referenced by setTokens(), and update().

◆ esGeom_

const CaloSubdetectorGeometry* PFECALSuperClusterAlgo::esGeom_
private

Definition at line 138 of file PFECALSuperClusterAlgo.h.

Referenced by update().

◆ etawidthSuperClusterBarrel_

double PFECALSuperClusterAlgo::etawidthSuperClusterBarrel_
private

◆ etawidthSuperClusterEndcap_

double PFECALSuperClusterAlgo::etawidthSuperClusterEndcap_
private

◆ fractionForMajority_

double PFECALSuperClusterAlgo::fractionForMajority_
private

◆ geometry_

const CaloGeometry* PFECALSuperClusterAlgo::geometry_
private

Definition at line 135 of file PFECALSuperClusterAlgo.h.

Referenced by update().

◆ inputTagBarrelRecHits_

edm::EDGetTokenT<EcalRecHitCollection> PFECALSuperClusterAlgo::inputTagBarrelRecHits_
private

Definition at line 189 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setTokens().

◆ inputTagBeamSpot_

edm::EDGetTokenT<reco::BeamSpot> PFECALSuperClusterAlgo::inputTagBeamSpot_
private

Definition at line 124 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setTokens().

◆ inputTagEndcapRecHits_

edm::EDGetTokenT<EcalRecHitCollection> PFECALSuperClusterAlgo::inputTagEndcapRecHits_
private

Definition at line 190 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setTokens().

◆ inputTagPFClusters_

edm::EDGetTokenT<edm::View<reco::PFCluster> > PFECALSuperClusterAlgo::inputTagPFClusters_
private

Definition at line 122 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setTokens().

◆ inputTagPFClustersES_

edm::EDGetTokenT<reco::PFCluster::EEtoPSAssociation> PFECALSuperClusterAlgo::inputTagPFClustersES_
private

Definition at line 123 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setTokens().

◆ isOOTCollection_

bool PFECALSuperClusterAlgo::isOOTCollection_
private

◆ mustacheSCParams_

const EcalMustacheSCParameters* PFECALSuperClusterAlgo::mustacheSCParams_
private

Definition at line 141 of file PFECALSuperClusterAlgo.h.

Referenced by buildSuperClusterMustacheOrBox(), and updateSCParams().

◆ phiwidthSuperClusterBarrel_

double PFECALSuperClusterAlgo::phiwidthSuperClusterBarrel_
private

◆ phiwidthSuperClusterEndcap_

double PFECALSuperClusterAlgo::phiwidthSuperClusterEndcap_
private

◆ regr_

std::unique_ptr<SCEnergyCorrectorSemiParm> PFECALSuperClusterAlgo::regr_
private

◆ satelliteThreshold_

double PFECALSuperClusterAlgo::satelliteThreshold_
private

◆ scDynamicDPhiParams_

const EcalSCDynamicDPhiParameters* PFECALSuperClusterAlgo::scDynamicDPhiParams_
private

Definition at line 142 of file PFECALSuperClusterAlgo.h.

Referenced by buildSuperClusterMustacheOrBox(), and updateSCParams().

◆ SCProducerCache_

const reco::SCProducerCache* PFECALSuperClusterAlgo::SCProducerCache_
private

Definition at line 185 of file PFECALSuperClusterAlgo.h.

Referenced by buildAllSuperClustersDeepSC().

◆ superClustersEB_

std::unique_ptr<reco::SuperClusterCollection> PFECALSuperClusterAlgo::superClustersEB_
private

◆ superClustersEE_

std::unique_ptr<reco::SuperClusterCollection> PFECALSuperClusterAlgo::superClustersEE_
private

◆ threshIsET_

bool PFECALSuperClusterAlgo::threshIsET_
private

◆ threshPFClusterBarrel_

double PFECALSuperClusterAlgo::threshPFClusterBarrel_
private

Definition at line 167 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setThreshPFClusterBarrel().

◆ threshPFClusterEndcap_

double PFECALSuperClusterAlgo::threshPFClusterEndcap_
private

Definition at line 169 of file PFECALSuperClusterAlgo.h.

Referenced by loadAndSortPFClusters(), and setThreshPFClusterEndcap().

◆ threshPFClusterSeedBarrel_

double PFECALSuperClusterAlgo::threshPFClusterSeedBarrel_
private

Definition at line 166 of file PFECALSuperClusterAlgo.h.

Referenced by run(), and setThreshPFClusterSeedBarrel().

◆ threshPFClusterSeedEndcap_

double PFECALSuperClusterAlgo::threshPFClusterSeedEndcap_
private

Definition at line 168 of file PFECALSuperClusterAlgo.h.

Referenced by run(), and setThreshPFClusterSeedEndcap().

◆ threshSuperClusterEt_

double PFECALSuperClusterAlgo::threshSuperClusterEt_
private

Definition at line 164 of file PFECALSuperClusterAlgo.h.

Referenced by finalizeSuperCluster(), and setThreshSuperClusterEt().

◆ topology_

const CaloTopology* PFECALSuperClusterAlgo::topology_
private

Definition at line 139 of file PFECALSuperClusterAlgo.h.

Referenced by buildAllSuperClustersDeepSC(), and update().

◆ useDynamicDPhi_

bool PFECALSuperClusterAlgo::useDynamicDPhi_
private

◆ useRegression_

bool PFECALSuperClusterAlgo::useRegression_
private

◆ verbose_

bool PFECALSuperClusterAlgo::verbose_
private

Definition at line 158 of file PFECALSuperClusterAlgo.h.

Referenced by buildSuperClusterMustacheOrBox(), and setVerbosityLevel().