CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
MultiClustersFromTrackstersProducer Class Reference
Inheritance diagram for MultiClustersFromTrackstersProducer:
edm::stream::EDProducer<>

Public Member Functions

 MultiClustersFromTrackstersProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~MultiClustersFromTrackstersProducer () 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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::EDGetTokenT< std::vector< reco::CaloCluster > > layer_clusters_token_
 
edm::EDGetTokenT< std::vector< ticl::Trackster > > tracksters_token_
 

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 18 of file MultiClustersFromTrackstersProducer.cc.

Constructor & Destructor Documentation

◆ MultiClustersFromTrackstersProducer()

MultiClustersFromTrackstersProducer::MultiClustersFromTrackstersProducer ( const edm::ParameterSet ps)

Definition at line 33 of file MultiClustersFromTrackstersProducer.cc.

34  : layer_clusters_token_(consumes<std::vector<reco::CaloCluster>>(ps.getParameter<edm::InputTag>("LayerClusters"))),
35  tracksters_token_(consumes<std::vector<ticl::Trackster>>(ps.getParameter<edm::InputTag>("Tracksters"))) {
36  produces<std::vector<reco::HGCalMultiCluster>>();
37 }

◆ ~MultiClustersFromTrackstersProducer()

MultiClustersFromTrackstersProducer::~MultiClustersFromTrackstersProducer ( )
inlineoverride

Definition at line 21 of file MultiClustersFromTrackstersProducer.cc.

21 {}

Member Function Documentation

◆ fillDescriptions()

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

Definition at line 39 of file MultiClustersFromTrackstersProducer.cc.

39  {
40  // hgcalMultiClusters
42  desc.add<edm::InputTag>("Tracksters", edm::InputTag("Tracksters", "TrackstersByCA"));
43  desc.add<edm::InputTag>("LayerClusters", edm::InputTag("hgcalLayerClusters"));
44  desc.addUntracked<unsigned int>("verbosity", 3);
45  descriptions.add("multiClustersFromTrackstersProducer", desc);
46 }

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::InputTag.

◆ produce()

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

Definition at line 48 of file MultiClustersFromTrackstersProducer.cc.

48  {
49  auto multiclusters = std::make_unique<std::vector<reco::HGCalMultiCluster>>();
51  evt.getByToken(tracksters_token_, tracksterHandle);
52 
53  edm::Handle<std::vector<reco::CaloCluster>> layer_clustersHandle;
54  evt.getByToken(layer_clusters_token_, layer_clustersHandle);
55 
56  auto const& tracksters = *tracksterHandle;
57  auto const& layerClusters = *layer_clustersHandle;
58 
60  for (unsigned i = 0; i < layerClusters.size(); ++i) {
61  edm::Ptr<reco::BasicCluster> ptr(layer_clustersHandle, i);
62  clusterPtrs.push_back(ptr);
63  }
64 
65  std::for_each(std::begin(tracksters), std::end(tracksters), [&](auto const& trackster) {
66  // Create an empty multicluster if the trackster has no layer clusters.
67  // This could happen when a seed leads to no trackster and a dummy one is produced.
68 
69  std::array<double, 3> baricenter{{0., 0., 0.}};
70  double total_weight = 0.;
72  int counter = 0;
73  if (!trackster.vertices().empty()) {
74  std::for_each(std::begin(trackster.vertices()), std::end(trackster.vertices()), [&](unsigned int idx) {
75  temp.push_back(clusterPtrs[idx]);
76  auto fraction = 1.f / trackster.vertex_multiplicity(counter++);
77  for (auto const& cell : clusterPtrs[idx]->hitsAndFractions()) {
78  temp.addHitAndFraction(cell.first, cell.second * fraction);
79  }
80  auto weight = clusterPtrs[idx]->energy() * fraction;
81  total_weight += weight;
82  baricenter[0] += clusterPtrs[idx]->x() * weight;
83  baricenter[1] += clusterPtrs[idx]->y() * weight;
84  baricenter[2] += clusterPtrs[idx]->z() * weight;
85  });
87  std::begin(baricenter), std::end(baricenter), std::begin(baricenter), [&total_weight](double val) -> double {
88  return val / total_weight;
89  });
90  }
91  temp.setEnergy(total_weight);
92  temp.setCorrectedEnergy(total_weight);
93  temp.setPosition(math::XYZPoint(baricenter[0], baricenter[1], baricenter[2]));
95  temp.setTime(trackster.time(), trackster.timeError());
96  multiclusters->push_back(temp);
97  });
98 
99  evt.put(std::move(multiclusters));
100 }

References mps_fire::end, HLT_FULL_cff::fraction, edm::Event::getByToken(), reco::CaloCluster::hgcal_em, mps_fire::i, heavyIonCSV_trainingSettings::idx, layer_clusters_token_, HLTEgPhaseIITestSequence_cff::layerClusters, eostools::move(), edm::PtrVector< T >::push_back(), edm::Event::put(), groupFilesInBlocks::temp, tracksters_token_, HcalDetIdTransform::transform(), heppy_batch::val, and mps_merge::weight.

Member Data Documentation

◆ layer_clusters_token_

edm::EDGetTokenT<std::vector<reco::CaloCluster> > MultiClustersFromTrackstersProducer::layer_clusters_token_
private

Definition at line 27 of file MultiClustersFromTrackstersProducer.cc.

Referenced by produce().

◆ tracksters_token_

edm::EDGetTokenT<std::vector<ticl::Trackster> > MultiClustersFromTrackstersProducer::tracksters_token_
private

Definition at line 28 of file MultiClustersFromTrackstersProducer.cc.

Referenced by produce().

counter
Definition: counter.py:1
MultiClustersFromTrackstersProducer::layer_clusters_token_
edm::EDGetTokenT< std::vector< reco::CaloCluster > > layer_clusters_token_
Definition: MultiClustersFromTrackstersProducer.cc:27
mps_fire.i
i
Definition: mps_fire.py:428
mps_merge.weight
weight
Definition: mps_merge.py:88
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89281
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
edm::Handle
Definition: AssociativeIterator.h:50
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
edm::PtrVector
Definition: PtrVector.h:36
HLT_FULL_cff.fraction
fraction
Definition: HLT_FULL_cff.py:52802
mps_fire.end
end
Definition: mps_fire.py:242
HcalDetIdTransform::transform
unsigned transform(const HcalDetId &id, unsigned transformCode)
Definition: HcalDetIdTransform.cc:7
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:535
HLTEgPhaseIITestSequence_cff.layerClusters
layerClusters
Definition: HLTEgPhaseIITestSequence_cff.py:2506
edm::PtrVector::push_back
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:149
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
MultiClustersFromTrackstersProducer::tracksters_token_
edm::EDGetTokenT< std::vector< ticl::Trackster > > tracksters_token_
Definition: MultiClustersFromTrackstersProducer.cc:28
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::Ptr
Definition: AssociationVector.h:31
reco::HGCalMultiCluster
Definition: HGCalMultiCluster.h:12
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
heppy_batch.val
val
Definition: heppy_batch.py:351
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
reco::CaloCluster::hgcal_em
Definition: CaloCluster.h:40
edm::InputTag
Definition: InputTag.h:15
weight
Definition: weight.py:1