13#include <algorithms/algorithm.h>
14#include <edm4eic/CalorimeterHitCollection.h>
15#include <edm4eic/EDM4eicVersion.h>
16#include <edm4eic/ClusterCollection.h>
17#include <edm4eic/MCRecoCalorimeterHitAssociationCollection.h>
18#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
19#include <edm4eic/MCRecoCalorimeterHitLinkCollection.h>
20#include <podio/LinkNavigator.h>
22#include <edm4eic/MCRecoClusterParticleAssociationCollection.h>
23#include <edm4eic/ProtoClusterCollection.h>
24#include <edm4hep/CaloHitContribution.h>
26#include <edm4hep/MCParticleCollection.h>
36#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
37#include <edm4eic/MCRecoClusterParticleLinkCollection.h>
43 algorithms::Algorithm<algorithms::Input<edm4eic::ProtoClusterCollection,
44#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
45 edm4eic::MCRecoCalorimeterHitLinkCollection,
47 edm4eic::MCRecoCalorimeterHitAssociationCollection>,
48 algorithms::Output<edm4eic::ClusterCollection,
49#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
50 edm4eic::MCRecoClusterParticleLinkCollection,
52 edm4eic::MCRecoClusterParticleAssociationCollection,
53 edm4eic::ClusterCollection>>;
68 {
"inputProtoClusterCollection",
69#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
72 "mcRawHitAssocations"},
73 {
"outputClusterCollection",
74#if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
77 "outputClusterAssociations",
"outputLayerCollection"},
78 "Reconstruct the cluster/layer info for imaging calorimeter."} {
84 void process(
const Input& input,
const Output& output)
const final;
87 std::vector<edm4eic::MutableCluster>
88 reconstruct_cluster_layers(
const edm4eic::ProtoCluster& pcl)
const;
90 edm4eic::MutableCluster
91 reconstruct_layer(
const std::vector<std::pair<const edm4eic::CalorimeterHit, float>>& hits)
const;
93 edm4eic::MutableCluster reconstruct_cluster(
const edm4eic::ProtoCluster& pcl)
const;
95 std::pair<
double ,
double >
96 fit_track(
const std::vector<edm4eic::MutableCluster>& layers)
const;
98 void associate_mc_particles(
99 const edm4eic::Cluster& cl,
100 const edm4eic::MCRecoCalorimeterHitAssociationCollection* mchitassociations,
101#
if EDM4EIC_BUILD_VERSION >= EDM4EIC_VERSION(8, 7, 0)
102 const podio::LinkNavigator<edm4eic::MCRecoCalorimeterHitLinkCollection>& link_nav,
103 edm4eic::MCRecoClusterParticleLinkCollection* links,
105 edm4eic::MCRecoClusterParticleAssociationCollection* assocs)
const;
107 edm4hep::MCParticle get_primary(
const edm4hep::CaloHitContribution& contrib)
const;
Definition ImagingClusterReco.h:63
ImagingClusterReco(std::string_view name)
Definition ImagingClusterReco.h:66
void init()
Definition ImagingClusterReco.h:82
Definition WithPodConfig.h:22
-client
Definition CalorimeterClusterRecoCoG.cc:37
algorithms::Algorithm< algorithms::Input< edm4eic::ProtoClusterCollection, edm4eic::MCRecoCalorimeterHitLinkCollection, edm4eic::MCRecoCalorimeterHitAssociationCollection >, algorithms::Output< edm4eic::ClusterCollection, edm4eic::MCRecoClusterParticleLinkCollection, edm4eic::MCRecoClusterParticleAssociationCollection, edm4eic::ClusterCollection > > ImagingClusterRecoAlgorithm
Definition ImagingClusterReco.h:53