CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
IslandClusterProducer Class Reference
Inheritance diagram for IslandClusterProducer:
edm::stream::EDProducer<>

Public Member Functions

 IslandClusterProducer (const edm::ParameterSet &ps)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~IslandClusterProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 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)
 

Private Member Functions

void clusterizeECALPart (edm::Event &evt, const edm::EventSetup &es, const edm::EDGetTokenT< EcalRecHitCollection > &token, const std::string &clusterCollection, const std::string &clusterShapeAssociation, const IslandClusterAlgo::EcalPart &ecalPart)
 
bool counterExceeded () const
 
const EcalRecHitCollectiongetCollection (edm::Event &evt, const edm::EDGetTokenT< EcalRecHitCollection > &token)
 
void outputValidationInfo (reco::CaloClusterPtrVector &clusterPtrVector)
 

Private Attributes

std::string barrelClusterCollection_
 
std::string barrelClusterShapeAssociation_
 
edm::EDGetTokenT
< EcalRecHitCollection
barrelRecHits_
 
edm::ESGetToken< CaloGeometry,
CaloGeometryRecord
caloGeometryToken_
 
std::string clustershapecollectionEB_
 
std::string clustershapecollectionEE_
 
std::string endcapClusterCollection_
 
std::string endcapClusterShapeAssociation_
 
edm::EDGetTokenT
< EcalRecHitCollection
endcapRecHits_
 
IslandClusterAlgoisland_p
 
int nEvt_
 
int nMaxPrintout_
 
PositionCalc posCalculator_
 
ClusterShapeAlgo shapeAlgo_
 
IslandClusterAlgo::VerbosityLevel verbosity
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
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
 

Detailed Description

Definition at line 37 of file IslandClusterProducer.cc.

Constructor & Destructor Documentation

IslandClusterProducer::IslandClusterProducer ( const edm::ParameterSet ps)

Definition at line 86 of file IslandClusterProducer.cc.

References barrelClusterCollection_, barrelClusterShapeAssociation_, barrelRecHits_, caloGeometryToken_, clustershapecollectionEB_, clustershapecollectionEE_, endcapClusterCollection_, endcapClusterShapeAssociation_, endcapRecHits_, edm::ParameterSet::getParameter(), island_p, nEvt_, IslandClusterAlgo::pDEBUG, IslandClusterAlgo::pERROR, IslandClusterAlgo::pINFO, HLT_FULL_cff::posCalcParameters, posCalculator_, IslandClusterAlgo::pWARNING, shapeAlgo_, AlCaHLTBitMon_QueryRunRegistry::string, and verbosity.

86  {
87  // The verbosity level
88  std::string verbosityString = ps.getParameter<std::string>("VerbosityLevel");
89  if (verbosityString == "DEBUG")
91  else if (verbosityString == "WARNING")
93  else if (verbosityString == "INFO")
95  else
97 
98  // Parameters to identify the hit collections
99  barrelRecHits_ = consumes<EcalRecHitCollection>(ps.getParameter<edm::InputTag>("barrelHits"));
100  endcapRecHits_ = consumes<EcalRecHitCollection>(ps.getParameter<edm::InputTag>("endcapHits"));
101 
102  //EventSetup Token for CaloGeometry
103  caloGeometryToken_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
104 
105  // The names of the produced cluster collections
106  barrelClusterCollection_ = ps.getParameter<std::string>("barrelClusterCollection");
107  endcapClusterCollection_ = ps.getParameter<std::string>("endcapClusterCollection");
108 
109  // Island algorithm parameters
110  double barrelSeedThreshold = ps.getParameter<double>("IslandBarrelSeedThr");
111  double endcapSeedThreshold = ps.getParameter<double>("IslandEndcapSeedThr");
112 
113  // Parameters for the position calculation:
115  posCalculator_ = PositionCalc(posCalcParameters);
116  shapeAlgo_ = ClusterShapeAlgo(posCalcParameters);
117 
118  clustershapecollectionEB_ = ps.getParameter<std::string>("clustershapecollectionEB");
119  clustershapecollectionEE_ = ps.getParameter<std::string>("clustershapecollectionEE");
120 
121  //AssociationMap
122  barrelClusterShapeAssociation_ = ps.getParameter<std::string>("barrelShapeAssociation");
123  endcapClusterShapeAssociation_ = ps.getParameter<std::string>("endcapShapeAssociation");
124 
125  const std::vector<std::string> seedflagnamesEB =
126  ps.getParameter<std::vector<std::string>>("SeedRecHitFlagToBeExcludedEB");
127  const std::vector<int> seedflagsexclEB = StringToEnumValue<EcalRecHit::Flags>(seedflagnamesEB);
128 
129  const std::vector<std::string> seedflagnamesEE =
130  ps.getParameter<std::vector<std::string>>("SeedRecHitFlagToBeExcludedEE");
131  const std::vector<int> seedflagsexclEE = StringToEnumValue<EcalRecHit::Flags>(seedflagnamesEE);
132 
133  const std::vector<std::string> flagnamesEB = ps.getParameter<std::vector<std::string>>("RecHitFlagToBeExcludedEB");
134  const std::vector<int> flagsexclEB = StringToEnumValue<EcalRecHit::Flags>(flagnamesEB);
135 
136  const std::vector<std::string> flagnamesEE = ps.getParameter<std::vector<std::string>>("RecHitFlagToBeExcludedEE");
137  const std::vector<int> flagsexclEE = StringToEnumValue<EcalRecHit::Flags>(flagnamesEE);
138 
139  // Produces a collection of barrel and a collection of endcap clusters
140 
141  produces<reco::ClusterShapeCollection>(clustershapecollectionEE_);
142  produces<reco::BasicClusterCollection>(endcapClusterCollection_);
143  produces<reco::ClusterShapeCollection>(clustershapecollectionEB_);
144  produces<reco::BasicClusterCollection>(barrelClusterCollection_);
145  produces<reco::BasicClusterShapeAssociationCollection>(barrelClusterShapeAssociation_);
146  produces<reco::BasicClusterShapeAssociationCollection>(endcapClusterShapeAssociation_);
147 
148  island_p = new IslandClusterAlgo(barrelSeedThreshold,
149  endcapSeedThreshold,
150  posCalculator_,
151  seedflagsexclEB,
152  seedflagsexclEE,
153  flagsexclEB,
154  flagsexclEE,
155  verbosity);
156 
157  nEvt_ = 0;
158 }
edm::EDGetTokenT< EcalRecHitCollection > barrelRecHits_
edm::EDGetTokenT< EcalRecHitCollection > endcapRecHits_
tuple posCalcParameters
std::string barrelClusterShapeAssociation_
IslandClusterAlgo * island_p
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::string endcapClusterShapeAssociation_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
IslandClusterAlgo::VerbosityLevel verbosity
IslandClusterProducer::~IslandClusterProducer ( )
override

Definition at line 160 of file IslandClusterProducer.cc.

References island_p.

160 { delete island_p; }
IslandClusterAlgo * island_p

Member Function Documentation

void IslandClusterProducer::clusterizeECALPart ( edm::Event evt,
const edm::EventSetup es,
const edm::EDGetTokenT< EcalRecHitCollection > &  token,
const std::string &  clusterCollection,
const std::string &  clusterShapeAssociation,
const IslandClusterAlgo::EcalPart ecalPart 
)
private

Definition at line 207 of file IslandClusterProducer.cc.

References IslandClusterAlgo::barrel, barrelClusterCollection_, ClusterShapeAlgo::Calculate(), caloGeometryToken_, HLT_FULL_cff::clusters, clustershapecollectionEB_, clustershapecollectionEE_, DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, endcapClusterCollection_, getCollection(), edm::EventSetup::getHandle(), mps_fire::i, island_p, IslandClusterAlgo::makeClusters(), eostools::move(), edm::Event::put(), shapeAlgo_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

212  {
213  // get the hit collection from the event:
214  const EcalRecHitCollection* hitCollection_p = getCollection(evt, token);
215 
216  // get the geometry and topology from the event setup:
218 
219  const CaloSubdetectorGeometry* geometry_p;
220  std::unique_ptr<CaloSubdetectorTopology> topology_p;
221 
222  std::string clustershapetag;
223  if (ecalPart == IslandClusterAlgo::barrel) {
224  geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalBarrel);
225  topology_p = std::make_unique<EcalBarrelTopology>(*geoHandle);
226  } else {
227  geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalEndcap);
228  topology_p = std::make_unique<EcalEndcapTopology>(*geoHandle);
229  }
230 
231  const CaloSubdetectorGeometry* geometryES_p;
232  geometryES_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
233 
234  // Run the clusterization algorithm:
236  clusters = island_p->makeClusters(hitCollection_p, geometry_p, topology_p.get(), geometryES_p, ecalPart);
237 
238  //Create associated ClusterShape objects.
239  std::vector<reco::ClusterShape> ClusVec;
240  for (int erg = 0; erg < int(clusters.size()); ++erg) {
241  reco::ClusterShape TestShape = shapeAlgo_.Calculate(clusters[erg], hitCollection_p, geometry_p, topology_p.get());
242  ClusVec.push_back(TestShape);
243  }
244 
245  //Put clustershapes in event, but retain a Handle on them.
246  auto clustersshapes_p = std::make_unique<reco::ClusterShapeCollection>();
247  clustersshapes_p->assign(ClusVec.begin(), ClusVec.end());
249  if (ecalPart == IslandClusterAlgo::barrel)
250  clusHandle = evt.put(std::move(clustersshapes_p), clustershapecollectionEB_);
251  else
252  clusHandle = evt.put(std::move(clustersshapes_p), clustershapecollectionEE_);
253 
254  // create a unique_ptr to a BasicClusterCollection, copy the barrel clusters into it and put in the Event:
255  auto clusters_p = std::make_unique<reco::BasicClusterCollection>();
256  clusters_p->assign(clusters.begin(), clusters.end());
258  if (ecalPart == IslandClusterAlgo::barrel)
259  bccHandle = evt.put(std::move(clusters_p), barrelClusterCollection_);
260  else
261  bccHandle = evt.put(std::move(clusters_p), endcapClusterCollection_);
262 
263  // BasicClusterShapeAssociationMap
264  auto shapeAssocs_p = std::make_unique<reco::BasicClusterShapeAssociationCollection>(bccHandle, clusHandle);
265  for (unsigned int i = 0; i < clusHandle->size(); i++) {
266  shapeAssocs_p->insert(edm::Ref<reco::BasicClusterCollection>(bccHandle, i),
268  }
269  evt.put(std::move(shapeAssocs_p), clusterShapeAssociation);
270 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
reco::ClusterShape Calculate(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology)
def move
Definition: eostools.py:511
IslandClusterAlgo * island_p
std::vector< reco::BasicCluster > makeClusters(const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology_p, const CaloSubdetectorGeometry *geometryES_p, EcalPart ecalPart, bool regional=false, const std::vector< RectangularEtaPhiRegion > &regions=std::vector< RectangularEtaPhiRegion >())
std::vector< BasicCluster > BasicClusterCollection
collection of BasicCluster objects
const EcalRecHitCollection * getCollection(edm::Event &evt, const edm::EDGetTokenT< EcalRecHitCollection > &token)
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:157
bool IslandClusterProducer::counterExceeded ( ) const
inlineprivate

Definition at line 69 of file IslandClusterProducer.cc.

References nEvt_, and nMaxPrintout_.

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

Definition at line 162 of file IslandClusterProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, HLT_FULL_cff::InputTag, HLT_FULL_cff::posCalcParameters, and AlCaHLTBitMon_QueryRunRegistry::string.

162  {
164  desc.add<std::string>("VerbosityLevel", "ERROR");
165  desc.add<edm::InputTag>("barrelHits", edm::InputTag("ecalRecHit", "EcalRecHitsEB"));
166  desc.add<edm::InputTag>("endcapHits", edm::InputTag("ecalRecHit", "EcalRecHitsEE"));
167  desc.add<std::string>("barrelClusterCollection", "islandBarrelBasicClusters");
168  desc.add<std::string>("endcapClusterCollection", "islandEndcapBasicClusters");
169  desc.add<double>("IslandBarrelSeedThr", 0.5);
170  desc.add<double>("IslandEndcapSeedThr", 0.18);
171 
173  posCalcParameters.add<bool>("LogWeighted", true);
174  posCalcParameters.add<double>("T0_barl", 7.4);
175  posCalcParameters.add<double>("T0_endc", 3.1);
176  posCalcParameters.add<double>("T0_endcPresh", 1.2);
177  posCalcParameters.add<double>("W0", 4.2);
178  posCalcParameters.add<double>("X0", 0.89);
179  desc.add<edm::ParameterSetDescription>("posCalcParameters", posCalcParameters);
180 
181  desc.add<std::string>("clustershapecollectionEE", "islandEndcapShape");
182  desc.add<std::string>("clustershapecollectionEB", "islandBarrelShape");
183  desc.add<std::string>("barrelShapeAssociation", "islandBarrelShapeAssoc");
184  desc.add<std::string>("endcapShapeAssociation", "islandEndcapShapeAssoc");
185  desc.add<std::vector<std::string>>("SeedRecHitFlagToBeExcludedEB", {});
186  desc.add<std::vector<std::string>>("SeedRecHitFlagToBeExcludedEE", {});
187  desc.add<std::vector<std::string>>("RecHitFlagToBeExcludedEB", {});
188  desc.add<std::vector<std::string>>("RecHitFlagToBeExcludedEE", {});
189  descriptions.add("IslandClusterProducer", desc);
190 }
tuple posCalcParameters
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const EcalRecHitCollection * IslandClusterProducer::getCollection ( edm::Event evt,
const edm::EDGetTokenT< EcalRecHitCollection > &  token 
)
private

Definition at line 200 of file IslandClusterProducer.cc.

References edm::Event::getByToken(), and edm::Handle< T >::product().

Referenced by clusterizeECALPart().

201  {
203  evt.getByToken(token, rhcHandle);
204  return rhcHandle.product();
205 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
T const * product() const
Definition: Handle.h:70
void IslandClusterProducer::outputValidationInfo ( reco::CaloClusterPtrVector clusterPtrVector)
private
void IslandClusterProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
override

Definition at line 192 of file IslandClusterProducer.cc.

References IslandClusterAlgo::barrel, barrelClusterCollection_, barrelClusterShapeAssociation_, barrelRecHits_, clusterizeECALPart(), IslandClusterAlgo::endcap, endcapClusterCollection_, endcapClusterShapeAssociation_, endcapRecHits_, and nEvt_.

192  {
197  nEvt_++;
198 }
edm::EDGetTokenT< EcalRecHitCollection > barrelRecHits_
edm::EDGetTokenT< EcalRecHitCollection > endcapRecHits_
std::string barrelClusterShapeAssociation_
std::string endcapClusterShapeAssociation_
void clusterizeECALPart(edm::Event &evt, const edm::EventSetup &es, const edm::EDGetTokenT< EcalRecHitCollection > &token, const std::string &clusterCollection, const std::string &clusterShapeAssociation, const IslandClusterAlgo::EcalPart &ecalPart)

Member Data Documentation

std::string IslandClusterProducer::barrelClusterCollection_
private

Definition at line 55 of file IslandClusterProducer.cc.

Referenced by clusterizeECALPart(), IslandClusterProducer(), and produce().

std::string IslandClusterProducer::barrelClusterShapeAssociation_
private

Definition at line 62 of file IslandClusterProducer.cc.

Referenced by IslandClusterProducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> IslandClusterProducer::barrelRecHits_
private

Definition at line 51 of file IslandClusterProducer.cc.

Referenced by IslandClusterProducer(), and produce().

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

Definition at line 53 of file IslandClusterProducer.cc.

Referenced by clusterizeECALPart(), and IslandClusterProducer().

std::string IslandClusterProducer::clustershapecollectionEB_
private

Definition at line 58 of file IslandClusterProducer.cc.

Referenced by clusterizeECALPart(), and IslandClusterProducer().

std::string IslandClusterProducer::clustershapecollectionEE_
private

Definition at line 59 of file IslandClusterProducer.cc.

Referenced by clusterizeECALPart(), and IslandClusterProducer().

std::string IslandClusterProducer::endcapClusterCollection_
private

Definition at line 56 of file IslandClusterProducer.cc.

Referenced by clusterizeECALPart(), IslandClusterProducer(), and produce().

std::string IslandClusterProducer::endcapClusterShapeAssociation_
private

Definition at line 63 of file IslandClusterProducer.cc.

Referenced by IslandClusterProducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> IslandClusterProducer::endcapRecHits_
private

Definition at line 52 of file IslandClusterProducer.cc.

Referenced by IslandClusterProducer(), and produce().

IslandClusterAlgo* IslandClusterProducer::island_p
private
int IslandClusterProducer::nEvt_
private

Definition at line 47 of file IslandClusterProducer.cc.

Referenced by counterExceeded(), IslandClusterProducer(), and produce().

int IslandClusterProducer::nMaxPrintout_
private

Definition at line 46 of file IslandClusterProducer.cc.

Referenced by counterExceeded().

PositionCalc IslandClusterProducer::posCalculator_
private

Definition at line 65 of file IslandClusterProducer.cc.

Referenced by IslandClusterProducer().

ClusterShapeAlgo IslandClusterProducer::shapeAlgo_
private

Definition at line 66 of file IslandClusterProducer.cc.

Referenced by clusterizeECALPart(), and IslandClusterProducer().

IslandClusterAlgo::VerbosityLevel IslandClusterProducer::verbosity
private

Definition at line 49 of file IslandClusterProducer.cc.

Referenced by IslandClusterProducer().