Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/EICrecon/algorithms/reco/FarForwardNeutralsReconstruction.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2025 Sebouh Paul
0003 
0004 #pragma once
0005 #include <DD4hep/Detector.h>
0006 #include <algorithms/algorithm.h>
0007 #include <algorithms/geo.h>
0008 #include <edm4eic/ClusterCollection.h>
0009 #include <edm4eic/ReconstructedParticleCollection.h>
0010 #include <spdlog/logger.h>
0011 #include <gsl/pointers>
0012 #include <memory>
0013 #include <string>                                 // for basic_string
0014 #include <string_view>                            // for string_view
0015 #include <vector>
0016 
0017 #include "algorithms/interfaces/ParticleSvc.h"
0018 #include "algorithms/interfaces/WithPodConfig.h"
0019 #include "algorithms/reco/FarForwardNeutralsReconstructionConfig.h"
0020 
0021 namespace eicrecon {
0022 
0023 using FarForwardNeutralsReconstructionAlgorithm = algorithms::Algorithm<
0024    algorithms::Input<
0025        const edm4eic::ClusterCollection
0026     >,
0027     algorithms::Output<
0028       edm4eic::ReconstructedParticleCollection
0029     >
0030     >;
0031     class FarForwardNeutralsReconstruction :
0032        public FarForwardNeutralsReconstructionAlgorithm,
0033        public WithPodConfig<FarForwardNeutralsReconstructionConfig> {
0034        public:
0035          FarForwardNeutralsReconstruction(std::string_view name)
0036                   : FarForwardNeutralsReconstructionAlgorithm{
0037                       name,
0038                       {"inputClustersHcal"},
0039                       {"outputNeutrals"},
0040                       "Merges all HCAL clusters in a collection into a neutron candidate and photon candidates "}
0041                   {}
0042 
0043          void init() final;
0044          void process(const Input&, const Output&) const final;
0045     private:
0046          double calc_corr(double Etot, const std::vector<double>&) const;
0047          bool isGamma(const edm4eic::Cluster& cluster) const;
0048 
0049         std::shared_ptr<spdlog::logger> m_log;
0050         const algorithms::ParticleSvc& m_particleSvc = algorithms::ParticleSvc::instance();
0051         const dd4hep::Detector* m_detector{algorithms::GeoSvc::instance().detector()};
0052 
0053     };
0054 } // namespace eicrecon