Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-29 07:05:54

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2022 Chao Peng, Jihee Kim, Sylvester Joosten, Whitney Armstrong, Wouter Deconinck, David Lawrence
0003 
0004 /*
0005  *  An algorithm to group readout hits from a calorimeter
0006  *  Energy is summed
0007  *
0008  *  Author: Chao Peng (ANL), 03/31/2021
0009  */
0010 
0011 #pragma once
0012 
0013 #include <DD4hep/Detector.h>
0014 #include <DDRec/CellIDPositionConverter.h>
0015 #include <algorithms/algorithm.h>
0016 #include <algorithms/geo.h>
0017 #include <edm4eic/CalorimeterHitCollection.h>
0018 #include <stdint.h>
0019 #include <gsl/pointers>
0020 #include <string>
0021 #include <string_view>
0022 
0023 #include "CalorimeterHitsMergerConfig.h"
0024 #include "algorithms/interfaces/WithPodConfig.h"
0025 
0026 namespace eicrecon {
0027 
0028   using CalorimeterHitsMergerAlgorithm = algorithms::Algorithm<
0029     algorithms::Input<
0030       edm4eic::CalorimeterHitCollection
0031     >,
0032     algorithms::Output<
0033       edm4eic::CalorimeterHitCollection
0034     >
0035   >;
0036 
0037   class CalorimeterHitsMerger
0038   : public CalorimeterHitsMergerAlgorithm,
0039     public WithPodConfig<CalorimeterHitsMergerConfig> {
0040 
0041   public:
0042     CalorimeterHitsMerger(std::string_view name)
0043       : CalorimeterHitsMergerAlgorithm{name,
0044                             {"inputHitCollection"},
0045                             {"outputHitCollection"},
0046                             "Group readout hits from a calorimeter."} {}
0047 
0048     void init() final;
0049     void process(const Input&, const Output&) const final;
0050 
0051   private:
0052     uint64_t id_mask{0}, ref_mask{0};
0053 
0054   private:
0055     const dd4hep::Detector* m_detector{algorithms::GeoSvc::instance().detector()};
0056     const dd4hep::rec::CellIDPositionConverter* m_converter{algorithms::GeoSvc::instance().cellIDPositionConverter()};
0057 
0058   };
0059 
0060 } // namespace eicrecon