EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
SiliconPulseDiscretization.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2025 Chun Yuen Tsang
3//
4// Creates a discrete pulse from a continuous pulse
5//
6
7#pragma once
8
9#include <TGraph.h>
10#include <algorithms/algorithm.h>
11#include <edm4hep/RawTimeSeriesCollection.h>
12#include <edm4eic/EDM4eicVersion.h>
13#if EDM4EIC_VERSION_MAJOR > 8 || (EDM4EIC_VERSION_MAJOR == 8 && EDM4EIC_VERSION_MINOR >= 1)
14#include <edm4eic/SimPulseCollection.h>
15#else
16#include <edm4hep/TimeSeriesCollection.h>
17#endif
18#include <string>
19#include <string_view>
20
23
24namespace eicrecon {
25
26#if EDM4EIC_VERSION_MAJOR > 8 || (EDM4EIC_VERSION_MAJOR == 8 && EDM4EIC_VERSION_MINOR >= 1)
27using PulseType = edm4eic::SimPulse;
28#else
29using PulseType = edm4hep::TimeSeries;
30#endif
31
33 algorithms::Algorithm<algorithms::Input<PulseType::collection_type>,
34 algorithms::Output<edm4hep::RawTimeSeriesCollection>>;
35
37 public WithPodConfig<SiliconPulseDiscretizationConfig> {
38
39public:
40 SiliconPulseDiscretization(std::string_view name)
41 : SiliconPulseDiscretizationAlgorithm{name, {"OutputPulses"}, {"DiscretePulses"}, {}} {}
42 virtual void init() final;
43 void process(const Input&, const Output&) const;
44
45private:
46 double _interpolateOrZero(const TGraph& graph, double t, double tMin, double tMax) const;
47};
48
49} // namespace eicrecon
Definition SiliconPulseDiscretization.h:37
SiliconPulseDiscretization(std::string_view name)
Definition SiliconPulseDiscretization.h:40
Definition WithPodConfig.h:22
edm4hep::TimeSeries PulseType
Definition digi_PulseGeneration.cc:29
-client
Definition CalorimeterClusterRecoCoG.cc:37
algorithms::Algorithm< algorithms::Input< PulseType::collection_type >, algorithms::Output< edm4hep::RawTimeSeriesCollection > > SiliconPulseDiscretizationAlgorithm
Definition SiliconPulseDiscretization.h:34