File indexing completed on 2025-02-22 10:33:27
0001
0002
0003
0004 #pragma once
0005
0006 #include "algorithms/calorimetry/CalorimeterIslandCluster.h"
0007 #include "services/algorithms_init/AlgorithmsInit_service.h"
0008 #include "extensions/jana/JOmniFactory.h"
0009
0010
0011 namespace eicrecon {
0012
0013 class CalorimeterIslandCluster_factory : public JOmniFactory<CalorimeterIslandCluster_factory, CalorimeterIslandClusterConfig> {
0014 public:
0015 using AlgoT = eicrecon::CalorimeterIslandCluster;
0016 private:
0017 std::unique_ptr<AlgoT> m_algo;
0018
0019 PodioInput<edm4eic::CalorimeterHit> m_calo_hit_input {this};
0020 PodioOutput<edm4eic::ProtoCluster> m_proto_cluster_output {this};
0021
0022 ParameterRef<double> m_sectorDist {this, "sectorDist", config().sectorDist};
0023 ParameterRef<std::vector<double>> m_localDistXY {this, "localDistXY", config().localDistXY};
0024 ParameterRef<std::vector<double>> m_localDistXZ {this, "localDistXZ", config().localDistXZ};
0025 ParameterRef<std::vector<double>> m_localDistYZ {this, "localDistYZ", config().localDistYZ};
0026 ParameterRef<std::vector<double>> m_globallDistRPhi {this, "globalDistRPhi", config().globalDistRPhi};
0027 ParameterRef<std::vector<double>> m_globalDistEtaPhi {this, "globalDistEtaPhi", config().globalDistEtaPhi};
0028 ParameterRef<std::vector<double>> m_dimScalledLocalDistXY {this, "dimScaledLocalDistXY", config().dimScaledLocalDistXY};
0029 ParameterRef<std::string> m_adjacencyMatrix {this, "adjacencyMatrix", config().adjacencyMatrix};
0030 ParameterRef<std::string> m_readout {this, "readoutClass", config().readout};
0031 ParameterRef<bool> m_splitCluster {this, "splitCluster", config().splitCluster};
0032 ParameterRef<double> m_minClusterHitEdep {this, "minClusterHitEdep", config().minClusterHitEdep};
0033 ParameterRef<double> m_minClusterCenterEdep {this, "minClusterCenterEdep", config().minClusterCenterEdep};
0034 ParameterRef<std::string> m_tepm {this, "transverseEnergyProfileMetric", config().transverseEnergyProfileMetric};
0035 ParameterRef<double> m_teps {this, "transverseEnergyProfileScale", config().transverseEnergyProfileScale};
0036
0037 Service<AlgorithmsInit_service> m_algorithmsInit {this};
0038
0039 public:
0040
0041 void Configure() {
0042 m_algo = std::make_unique<AlgoT>(GetPrefix());
0043 m_algo->level(static_cast<algorithms::LogLevel>(logger()->level()));
0044
0045
0046
0047 m_algo->applyConfig(config());
0048 m_algo->init();
0049 }
0050
0051 void ChangeRun(int64_t run_number) {
0052 }
0053
0054 void Process(int64_t run_number, uint64_t event_number) {
0055 m_algo->process({m_calo_hit_input()}, {m_proto_cluster_output().get()});
0056 }
0057
0058 };
0059
0060 }