CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes | Static Private Attributes
SuperClusterImporter Class Reference
Inheritance diagram for SuperClusterImporter:
BlockElementImporterBase

Public Member Functions

void importToBlock (const edm::Event &, ElementList &) const override
 
 SuperClusterImporter (const edm::ParameterSet &, edm::ConsumesCollector &)
 
void updateEventSetup (const edm::EventSetup &es) override
 
- Public Member Functions inherited from BlockElementImporterBase
 BlockElementImporterBase (const BlockElementImporterBase &)=delete
 
 BlockElementImporterBase (const edm::ParameterSet &conf, edm::ConsumesCollector &sumes)
 
const std::string & name () const
 
BlockElementImporterBaseoperator= (const BlockElementImporterBase &)=delete
 
virtual ~BlockElementImporterBase ()=default
 

Private Attributes

const double _maxHoverE
 
const double _minSCPt
 
const double _pTbyPass
 
edm::EDGetTokenT< reco::SuperClusterCollection_srcEB
 
edm::EDGetTokenT< reco::SuperClusterCollection_srcEE
 
edm::EDGetTokenT< CaloTowerCollection_srcTowers
 
bool _superClustersArePF
 
CaloTowerConstituentsMap const * towerMap_
 

Static Private Attributes

static const math::XYZPoint _zero = math::XYZPoint(0, 0, 0)
 

Additional Inherited Members

- Public Types inherited from BlockElementImporterBase
typedef std::vector< std::unique_ptr< reco::PFBlockElement > > ElementList
 

Detailed Description

Definition at line 22 of file SuperClusterImporter.cc.

Constructor & Destructor Documentation

◆ SuperClusterImporter()

SuperClusterImporter::SuperClusterImporter ( const edm::ParameterSet conf,
edm::ConsumesCollector sumes 
)

Definition at line 43 of file SuperClusterImporter.cc.

44  : BlockElementImporterBase(conf, sumes),
47  _srcTowers(sumes.consumes<CaloTowerCollection>(conf.getParameter<edm::InputTag>("source_towers"))),
48  _maxHoverE(conf.getParameter<double>("maximumHoverE")),
49  _pTbyPass(conf.getParameter<double>("minPTforBypass")),
50  _minSCPt(conf.getParameter<double>("minSuperClusterPt")),
51  _superClustersArePF(conf.getParameter<bool>("superClustersArePF")) {}

Member Function Documentation

◆ importToBlock()

void SuperClusterImporter::importToBlock ( const edm::Event e,
BlockElementImporterBase::ElementList elems 
) const
overridevirtual

Implements BlockElementImporterBase.

Definition at line 59 of file SuperClusterImporter.cc.

59  {
60  auto eb_scs = e.getHandle(_srcEB);
61  auto ee_scs = e.getHandle(_srcEE);
62  auto const& towers = e.get(_srcTowers);
63  elems.reserve(elems.size() + eb_scs->size() + ee_scs->size());
64  // setup our elements so that all the SCs are grouped together
65  auto SCs_end =
66  std::partition(elems.begin(), elems.end(), [](auto const& a) { return a->type() == reco::PFBlockElement::SC; });
67  // add eb superclusters
68  auto bsc = eb_scs->cbegin();
69  auto esc = eb_scs->cend();
70  reco::PFBlockElementSuperCluster* scbe = nullptr;
72  for (auto sc = bsc; sc != esc; ++sc) {
73  scref = reco::SuperClusterRef(eb_scs, std::distance(bsc, sc));
74  PFBlockElementSCEqual myEqual(scref);
75  auto sc_elem = std::find_if(elems.begin(), SCs_end, myEqual);
76  const double scpT = ptFast(sc->energy(), sc->position(), _zero);
77  const auto towersBehindCluster = egamma::towersOf(*sc, *towerMap_);
78  const double H_tower =
79  (egamma::depth1HcalESum(towersBehindCluster, towers) + egamma::depth2HcalESum(towersBehindCluster, towers));
80  const double HoverE = H_tower / sc->energy();
81  if (sc_elem == SCs_end && scpT > _minSCPt && (scpT > _pTbyPass || HoverE < _maxHoverE)) {
82  scbe = new reco::PFBlockElementSuperCluster(scref);
84  SCs_end = elems.emplace(SCs_end, scbe);
85  ++SCs_end; // point to element *after* the new one
86  }
87  } // loop on eb superclusters
88  // add ee superclusters
89  bsc = ee_scs->cbegin();
90  esc = ee_scs->cend();
91  for (auto sc = bsc; sc != esc; ++sc) {
92  scref = reco::SuperClusterRef(ee_scs, std::distance(bsc, sc));
93  PFBlockElementSCEqual myEqual(scref);
94  auto sc_elem = std::find_if(elems.begin(), SCs_end, myEqual);
95  const double scpT = ptFast(sc->energy(), sc->position(), _zero);
96  const auto towersBehindCluster = egamma::towersOf(*sc, *towerMap_);
97  const double H_tower =
98  (egamma::depth1HcalESum(towersBehindCluster, towers) + egamma::depth2HcalESum(towersBehindCluster, towers));
99  const double HoverE = H_tower / sc->energy();
100  if (sc_elem == SCs_end && scpT > _minSCPt && (scpT > _pTbyPass || HoverE < _maxHoverE)) {
101  scbe = new reco::PFBlockElementSuperCluster(scref);
103  SCs_end = elems.emplace(SCs_end, scbe);
104  ++SCs_end; // point to element *after* the new one
105  }
106  } // loop on ee superclusters
107  elems.shrink_to_fit();
108 }

References _maxHoverE, _minSCPt, _pTbyPass, _srcEB, _srcEE, _srcTowers, _superClustersArePF, _zero, a, bsc_activity_cfg::bsc, egamma::depth1HcalESum(), egamma::depth2HcalESum(), HLT_FULL_cff::distance, MillePedeFileConverter_cfg::e, ptFast(), reco::PFBlockElement::SC, reco::PFBlockElementSuperCluster::setFromPFSuperCluster(), towerMap_, HLT_FULL_cff::towers, and egamma::towersOf().

◆ updateEventSetup()

void SuperClusterImporter::updateEventSetup ( const edm::EventSetup es)
overridevirtual

Reimplemented from BlockElementImporterBase.

Definition at line 53 of file SuperClusterImporter.cc.

53  {
55  es.get<CaloGeometryRecord>().get(ctmaph);
56  towerMap_ = ctmaph.product();
57 }

References edm::EventSetup::get(), get, edm::ESHandle< T >::product(), and towerMap_.

Member Data Documentation

◆ _maxHoverE

const double SuperClusterImporter::_maxHoverE
private

Definition at line 33 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _minSCPt

const double SuperClusterImporter::_minSCPt
private

Definition at line 33 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _pTbyPass

const double SuperClusterImporter::_pTbyPass
private

Definition at line 33 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _srcEB

edm::EDGetTokenT<reco::SuperClusterCollection> SuperClusterImporter::_srcEB
private

Definition at line 31 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _srcEE

edm::EDGetTokenT<reco::SuperClusterCollection> SuperClusterImporter::_srcEE
private

Definition at line 31 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _srcTowers

edm::EDGetTokenT<CaloTowerCollection> SuperClusterImporter::_srcTowers
private

Definition at line 32 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _superClustersArePF

bool SuperClusterImporter::_superClustersArePF
private

Definition at line 35 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ _zero

const math::XYZPoint SuperClusterImporter::_zero = math::XYZPoint(0, 0, 0)
staticprivate

Definition at line 36 of file SuperClusterImporter.cc.

Referenced by importToBlock().

◆ towerMap_

CaloTowerConstituentsMap const* SuperClusterImporter::towerMap_
private

Definition at line 34 of file SuperClusterImporter.cc.

Referenced by importToBlock(), and updateEventSetup().

edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
HLT_FULL_cff.towers
towers
Definition: HLT_FULL_cff.py:36425
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
reco::PFBlockElementSuperCluster
Cluster Element.
Definition: PFBlockElementSuperCluster.h:15
reco::PFBlockElement::SC
Definition: PFBlockElement.h:41
edm::SortedCollection< CaloTower >
egamma::depth2HcalESum
double depth2HcalESum(std::vector< CaloTowerDetId > const &towers, CaloTowerCollection const &)
Definition: EgammaHadTower.cc:83
BlockElementImporterBase::BlockElementImporterBase
BlockElementImporterBase(const edm::ParameterSet &conf, edm::ConsumesCollector &sumes)
Definition: BlockElementImporterBase.h:17
edm::Ref< SuperClusterCollection >
reco::SuperClusterCollection
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
Definition: SuperClusterFwd.h:9
bsc_activity_cfg.bsc
bsc
Definition: bsc_activity_cfg.py:31
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
PFBlockElementSCEqual
Definition: PFBlockElementSCEqual.h:7
reco::SuperClusterRef
edm::Ref< SuperClusterCollection > SuperClusterRef
reference to an object in a collection of SuperCluster objects
Definition: SuperClusterFwd.h:15
edm::ESHandle< CaloTowerConstituentsMap >
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
SuperClusterImporter::_srcEB
edm::EDGetTokenT< reco::SuperClusterCollection > _srcEB
Definition: SuperClusterImporter.cc:31
reco::PFBlockElementSuperCluster::setFromPFSuperCluster
void setFromPFSuperCluster(bool val)
Definition: PFBlockElementSuperCluster.h:61
egamma::towersOf
std::vector< CaloTowerDetId > towersOf(reco::SuperCluster const &sc, CaloTowerConstituentsMap const &towerMap, HoeMode mode=HoeMode::SingleTower)
Definition: EgammaHadTower.cc:25
a
double a
Definition: hdecay.h:119
SuperClusterImporter::_srcTowers
edm::EDGetTokenT< CaloTowerCollection > _srcTowers
Definition: SuperClusterImporter.cc:32
SuperClusterImporter::_minSCPt
const double _minSCPt
Definition: SuperClusterImporter.cc:33
SuperClusterImporter::_maxHoverE
const double _maxHoverE
Definition: SuperClusterImporter.cc:33
get
#define get
SuperClusterImporter::towerMap_
CaloTowerConstituentsMap const * towerMap_
Definition: SuperClusterImporter.cc:34
SuperClusterImporter::_srcEE
edm::EDGetTokenT< reco::SuperClusterCollection > _srcEE
Definition: SuperClusterImporter.cc:31
egamma::depth1HcalESum
double depth1HcalESum(std::vector< CaloTowerDetId > const &towers, CaloTowerCollection const &)
Definition: EgammaHadTower.cc:73
SuperClusterImporter::_zero
static const math::XYZPoint _zero
Definition: SuperClusterImporter.cc:36
ptFast
double ptFast(const double energy, const math::XYZPoint &position, const math::XYZPoint &origin)
Definition: SuperClusterImporter.cc:13
SuperClusterImporter::_superClustersArePF
bool _superClustersArePF
Definition: SuperClusterImporter.cc:35
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
SuperClusterImporter::_pTbyPass
const double _pTbyPass
Definition: SuperClusterImporter.cc:33
HLT_FULL_cff.distance
distance
Definition: HLT_FULL_cff.py:7796
edm::InputTag
Definition: InputTag.h:15
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37