CMS 3D CMS Logo

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

#include <HybridClusterProducer.h>

Inheritance diagram for HybridClusterProducer:
edm::stream::EDProducer<>

Public Member Functions

 HybridClusterProducer (const edm::ParameterSet &ps)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~HybridClusterProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Attributes

std::string basicclusterCollection_
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordgeoToken_
 
edm::EDGetTokenT< EcalRecHitCollectionhitsToken_
 
HybridClusterAlgohybrid_p
 
int nEvt_
 
PositionCalc posCalculator_
 
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcdsevLvToken_
 
std::string superclusterCollection_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 23 of file HybridClusterProducer.h.

Constructor & Destructor Documentation

◆ HybridClusterProducer()

HybridClusterProducer::HybridClusterProducer ( const edm::ParameterSet ps)

Definition at line 33 of file HybridClusterProducer.cc.

33  {
34  basicclusterCollection_ = ps.getParameter<std::string>("basicclusterCollection");
35  superclusterCollection_ = ps.getParameter<std::string>("superclusterCollection");
36  hitsToken_ = consumes<EcalRecHitCollection>(ps.getParameter<edm::InputTag>("recHitsCollection"));
37  geoToken_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
38  sevLvToken_ = esConsumes<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd>();
39 
40  //Setup for core tools objects.
42 
44 
45  const std::vector<std::string> flagnames = ps.getParameter<std::vector<std::string> >("RecHitFlagToBeExcluded");
46 
47  const std::vector<int> flagsexcl = StringToEnumValue<EcalRecHit::Flags>(flagnames);
48 
49  const std::vector<std::string> severitynames =
50  ps.getParameter<std::vector<std::string> >("RecHitSeverityToBeExcluded");
51 
52  const std::vector<int> severitiesexcl = StringToEnumValue<EcalSeverityLevel::SeverityLevel>(severitynames);
53 
54  hybrid_p = new HybridClusterAlgo(ps.getParameter<double>("HybridBarrelSeedThr"),
55  ps.getParameter<int>("step"),
56  ps.getParameter<double>("ethresh"),
57  ps.getParameter<double>("eseed"),
58  ps.getParameter<double>("xi"),
59  ps.getParameter<bool>("useEtForXi"),
60  ps.getParameter<double>("ewing"),
61  flagsexcl,
63  ps.getParameter<bool>("dynamicEThresh"),
64  ps.getParameter<double>("eThreshA"),
65  ps.getParameter<double>("eThreshB"),
66  severitiesexcl,
67  ps.getParameter<bool>("excludeFlagged"));
68  //bremRecoveryPset,
69 
70  // get brem recovery parameters
71  bool dynamicPhiRoad = ps.getParameter<bool>("dynamicPhiRoad");
72  if (dynamicPhiRoad) {
75  }
76 
77  produces<reco::BasicClusterCollection>(basicclusterCollection_);
78  produces<reco::SuperClusterCollection>(superclusterCollection_);
79  nEvt_ = 0;
80 }

References basicclusterCollection_, cosmicSuperClusters_cfi::bremRecoveryPset, cosmicSuperClusters_cfi::dynamicPhiRoad, geoToken_, edm::ParameterSet::getParameter(), hitsToken_, hybrid_p, nEvt_, MonitorAlCaEcalPi0_cfi::posCalcParameters, posCalculator_, HybridClusterAlgo::setDynamicPhiRoad(), sevLvToken_, AlCaHLTBitMon_QueryRunRegistry::string, and superclusterCollection_.

◆ ~HybridClusterProducer()

HybridClusterProducer::~HybridClusterProducer ( )
override

Definition at line 82 of file HybridClusterProducer.cc.

82 { delete hybrid_p; }

References hybrid_p.

Member Function Documentation

◆ produce()

void HybridClusterProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
override

Definition at line 84 of file HybridClusterProducer.cc.

84  {
85  // get the hit collection from the event:
87 
88  evt.getByToken(hitsToken_, rhcHandle);
89  if (!(rhcHandle.isValid())) {
90  edm::LogError("MissingProduct") << "could not get a handle on the EcalRecHitCollection!";
91  return;
92  }
93  const EcalRecHitCollection* hit_collection = rhcHandle.product();
94 
95  // get the collection geometry:
97  const CaloGeometry& geometry = *geoHandle;
98  const CaloSubdetectorGeometry* geometry_p;
99  std::unique_ptr<const CaloSubdetectorTopology> topology;
100 
102 
103  geometry_p = geometry.getSubdetectorGeometry(DetId::Ecal, EcalBarrel);
104  topology = std::make_unique<EcalBarrelTopology>(*geoHandle);
105 
106  // make the Basic clusters!
107  reco::BasicClusterCollection basicClusters;
109  hit_collection, geometry_p, basicClusters, sevLv.product(), false, std::vector<RectangularEtaPhiRegion>());
110 
111  LogTrace("EcalClusters") << "Finished clustering - BasicClusterCollection returned to producer...";
112 
113  // create a unique_ptr to a BasicClusterCollection, copy the clusters into it and put in the Event:
114  auto basicclusters_p = std::make_unique<reco::BasicClusterCollection>();
115  basicclusters_p->assign(basicClusters.begin(), basicClusters.end());
117  evt.put(std::move(basicclusters_p), basicclusterCollection_);
118 
119  //Basic clusters now in the event.
120  LogTrace("EcalClusters") << "Basic Clusters now put into event.";
121 
122  //Weird though it is, get the BasicClusters back out of the event. We need the
123  //edm::Ref to these guys to make our superclusters for Hybrid.
124 
125  if (!(bccHandle.isValid())) {
126  edm::LogError("Missing Product") << "could not get a handle on the BasicClusterCollection!";
127  return;
128  }
129 
130  reco::BasicClusterCollection clusterCollection = *bccHandle;
131 
132  LogTrace("EcalClusters") << "Got the BasicClusterCollection" << std::endl;
133 
134  reco::CaloClusterPtrVector clusterPtrVector;
135  for (unsigned int i = 0; i < clusterCollection.size(); i++) {
136  clusterPtrVector.push_back(reco::CaloClusterPtr(bccHandle, i));
137  }
138 
140  LogTrace("EcalClusters") << "Found: " << superClusters.size() << " superclusters.";
141 
142  auto superclusters_p = std::make_unique<reco::SuperClusterCollection>();
143  superclusters_p->assign(superClusters.begin(), superClusters.end());
144 
145  evt.put(std::move(superclusters_p), superclusterCollection_);
146  LogTrace("EcalClusters") << "Hybrid Clusters (Basic/Super) added to the Event! :-)";
147 
148  nEvt_++;
149 }

References basicclusterCollection_, DetId::Ecal, EcalBarrel, geoToken_, edm::Event::getByToken(), edm::EventSetup::getHandle(), hitsToken_, hybrid_p, mps_fire::i, edm::OrphanHandleBase::isValid(), edm::HandleBase::isValid(), LogTrace, HybridClusterAlgo::makeClusters(), HybridClusterAlgo::makeSuperClusters(), eostools::move(), nEvt_, edm::Handle< T >::product(), edm::ESHandle< T >::product(), edm::PtrVector< T >::push_back(), edm::Event::put(), sevLvToken_, superclusterCollection_, and HLT_FULL_cff::superClusters.

Member Data Documentation

◆ basicclusterCollection_

std::string HybridClusterProducer::basicclusterCollection_
private

Definition at line 34 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), and produce().

◆ geoToken_

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> HybridClusterProducer::geoToken_
private

Definition at line 38 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), and produce().

◆ hitsToken_

edm::EDGetTokenT<EcalRecHitCollection> HybridClusterProducer::hitsToken_
private

Definition at line 37 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), and produce().

◆ hybrid_p

HybridClusterAlgo* HybridClusterProducer::hybrid_p
private

Definition at line 41 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), produce(), and ~HybridClusterProducer().

◆ nEvt_

int HybridClusterProducer::nEvt_
private

Definition at line 32 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), and produce().

◆ posCalculator_

PositionCalc HybridClusterProducer::posCalculator_
private

Definition at line 42 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer().

◆ sevLvToken_

edm::ESGetToken<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd> HybridClusterProducer::sevLvToken_
private

Definition at line 39 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), and produce().

◆ superclusterCollection_

std::string HybridClusterProducer::superclusterCollection_
private

Definition at line 35 of file HybridClusterProducer.h.

Referenced by HybridClusterProducer(), and produce().

HybridClusterProducer::hybrid_p
HybridClusterAlgo * hybrid_p
Definition: HybridClusterProducer.h:41
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
mps_fire.i
i
Definition: mps_fire.py:428
HybridClusterAlgo::makeClusters
void makeClusters(const EcalRecHitCollection *, const CaloSubdetectorGeometry *geometry, reco::BasicClusterCollection &basicClusters, const EcalSeverityLevelAlgo *sevLv, bool regional=false, const std::vector< RectangularEtaPhiRegion > &regions=std::vector< RectangularEtaPhiRegion >())
Definition: HybridClusterAlgo.cc:60
edm::Handle::product
T const * product() const
Definition: Handle.h:70
HybridClusterProducer::sevLvToken_
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > sevLvToken_
Definition: HybridClusterProducer.h:39
geometry
Definition: geometry.py:1
edm::SortedCollection< EcalRecHit >
MonitorAlCaEcalPi0_cfi.posCalcParameters
posCalcParameters
Definition: MonitorAlCaEcalPi0_cfi.py:72
edm::Handle
Definition: AssociativeIterator.h:50
EcalBarrel
Definition: EcalSubdetector.h:10
HLT_FULL_cff.superClusters
superClusters
Definition: HLT_FULL_cff.py:15173
reco::SuperClusterCollection
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
Definition: SuperClusterFwd.h:9
CaloGeometry
Definition: CaloGeometry.h:21
edm::PtrVector< CaloCluster >
HybridClusterProducer::hitsToken_
edm::EDGetTokenT< EcalRecHitCollection > hitsToken_
Definition: HybridClusterProducer.h:37
edm::ESHandle< CaloGeometry >
HybridClusterProducer::superclusterCollection_
std::string superclusterCollection_
Definition: HybridClusterProducer.h:35
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:535
reco::BasicClusterCollection
std::vector< BasicCluster > BasicClusterCollection
collection of BasicCluster objects
Definition: BasicClusterFwd.h:16
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HybridClusterProducer::nEvt_
int nEvt_
Definition: HybridClusterProducer.h:32
edm::PtrVector::push_back
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:149
HybridClusterAlgo
Definition: HybridClusterAlgo.h:26
edm::ParameterSet
Definition: ParameterSet.h:47
PositionCalc
Definition: PositionCalc.h:29
HybridClusterAlgo::setDynamicPhiRoad
void setDynamicPhiRoad(const edm::ParameterSet &bremRecoveryPset)
Definition: HybridClusterAlgo.h:143
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
HybridClusterAlgo::makeSuperClusters
reco::SuperClusterCollection makeSuperClusters(const reco::CaloClusterPtrVector &)
Definition: HybridClusterAlgo.cc:450
cosmicSuperClusters_cfi.dynamicPhiRoad
dynamicPhiRoad
Definition: cosmicSuperClusters_cfi.py:25
cosmicSuperClusters_cfi.bremRecoveryPset
bremRecoveryPset
Definition: cosmicSuperClusters_cfi.py:26
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
DetId::Ecal
Definition: DetId.h:27
edm::OrphanHandleBase::isValid
bool isValid() const
Definition: OrphanHandleBase.h:53
edm::Ptr< CaloCluster >
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::OrphanHandle
Definition: EDProductfwd.h:39
HybridClusterProducer::geoToken_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > geoToken_
Definition: HybridClusterProducer.h:38
HybridClusterProducer::basicclusterCollection_
std::string basicclusterCollection_
Definition: HybridClusterProducer.h:34
HybridClusterProducer::posCalculator_
PositionCalc posCalculator_
Definition: HybridClusterProducer.h:42
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::InputTag
Definition: InputTag.h:15