ATLAS Offline Software
Loading...
Searching...
No Matches
LArOFFCRawChannelBuilder.h
Go to the documentation of this file.
1/* -*-c++-*- */
2/*
3 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4*/
5
6#ifndef LARROD_LAROFFCRAWCHANNELBUILDER_H
7#define LARROD_LAROFFCRAWCHANNELBUILDER_H
8
20
21// Event classes
24class LArOnlineID;
25
27
28 public:
29 using AthReentrantAlgorithm::AthReentrantAlgorithm;
30
31 StatusCode initialize() override;
32 StatusCode execute(const EventContext& ctx) const override;
33
34 private:
35 // Event input
37 this, "LArDigitKey", "FREE", "SG Key of LArDigitContainer"};
38
39 // Event output
41 this, "LArRawChannelKey", "LArRawChannels",
42 "SG key of the output LArRawChannelContainer"};
43
44 // Conditions input
46 this, "PedestalKey", "LArPedestal",
47 "SG Key of Pedestal conditions object"};
49 this, "ADC2MeVKey", "LArADC2MeV", "SG Key of ADC2MeV conditions object"};
50 SG::ReadCondHandleKey<ILArOFC> m_ofcKey{this, "OFCKey", "LArOFC",
51 "SG Key of OFC conditions object"};
53 this, "ShapeKey", "LArShape", "SG Key of Shape conditions object"};
54
56 this, "CablingKey", "LArOnOffIdMap",
57 "SG Key of LArOnOffIdMapping object"};
59 this, "Run1DSPThresholdsKey", "",
60 "SG Key for thresholds to compute time and quality, run 1"};
62 this, "Run2DSPThresholdsKey", "",
63 "SG Key for thresholds to compute time and quality, run 2"};
64
65 // Other jobOptions
66 Gaudi::Property<float> m_eCutFortQ{this, "ECutFortQ", 256.0,
67 "Time and Quality will be computed only "
68 "for channels with E above this value"};
69 Gaudi::Property<bool> m_absECutFortQ{
70 this, "absECut", true, "Cut on fabs(E) for Q and t computation"};
71 Gaudi::Property<bool> m_useShapeDer{
72 this, "useShapeDer", true,
73 "Use shape derivative in Q-factor computation"};
74 Gaudi::Property<bool> m_useDBFortQ{this, "useDB", true,
75 "Use DB for cut on t,Q"};
76 Gaudi::Property<int> m_firstSample{
77 this, "firstSample", 0,
78 "First of the 32 samples of the MC shape to be used"};
79
95
96 // OFFC algorithm configuration
100 Gaudi::Property<double> m_belowThreshold{
101 this, "BelowThreshold", 0,
102 "ADC threshold below which samples are treated as noise"};
103
108 Gaudi::Property<int> m_belowTillReset{
109 this, "BelowTillReset", 0,
110 "Number of consecutive noise samples before cache reset"};
111
115 Gaudi::Property<int> m_nPulse{
116 this, "NPulse", 0, "Maximum number of overlapping pulses to subtract"};
117
122 Gaudi::Property<double> m_Q3cut{
123 this, "Q3Cut", 0, "Shape-consistency quality cut for pulse acceptance"};
124
127 Gaudi::Property<double> m_filterThreshold{
128 this, "FilterThreshold", 0,
129 "Minimum filtered amplitude for pulse finding"};
130
131 // Identifier helper
132 const LArOnlineID* m_onlineId = nullptr;
133
134 // --- Member functions ---
135 std::vector<double> convolvePulse(const ILArShape::ShapeRef_t& shape,
136 const ILArOFC::OFCRef_t& ofc) const;
137
138 double computeOFFC(const std::vector<short>& samples, int firstSample,
139 const ILArOFC::OFCRef_t& ofc,
140 const ILArShape::ShapeRef_t& shape, double pedestal) const;
141};
142
143#endif
A LArRawConditionsContainer holding thresholds used by the DSP.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
An algorithm that can be simultaneously executed in multiple threads.
LArVectorProxy OFCRef_t
This class defines the interface for accessing Optimal Filtering coefficients for each channel provid...
Definition ILArOFC.h:26
LArVectorProxy ShapeRef_t
This class defines the interface for accessing Shape (Nsample variable, Dt = 25 ns fixed) @stereotype...
Definition ILArShape.h:26
Container class for LArDigit.
SG::WriteHandleKey< LArRawChannelContainer > m_rawChannelKey
Gaudi::Property< bool > m_useDBFortQ
double computeOFFC(const std::vector< short > &samples, int firstSample, const ILArOFC::OFCRef_t &ofc, const ILArShape::ShapeRef_t &shape, double pedestal) const
SG::ReadCondHandleKey< ILArShape > m_shapeKey
Gaudi::Property< double > m_belowThreshold
The OFFC algorithm extends the standard optimal filtering by identifying in-time pulses and subtracti...
Gaudi::Property< bool > m_absECutFortQ
Gaudi::Property< int > m_nPulse
Maximum number of overlapping pulses that can be tracked simultaneously.
SG::ReadCondHandleKey< LArADC2MeV > m_adc2MeVKey
Gaudi::Property< int > m_firstSample
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
std::vector< double > convolvePulse(const ILArShape::ShapeRef_t &shape, const ILArOFC::OFCRef_t &ofc) const
SG::ReadCondHandleKey< ILArPedestal > m_pedestalKey
Gaudi::Property< float > m_eCutFortQ
SG::ReadHandleKey< LArDigitContainer > m_digitKey
Gaudi::Property< double > m_filterThreshold
Minimum filtered amplitude required to consider a sample as a pulse peak.
SG::ReadCondHandleKey< ILArOFC > m_ofcKey
Gaudi::Property< double > m_Q3cut
Quality cut used for pulse acceptance.
Gaudi::Property< bool > m_useShapeDer
StatusCode execute(const EventContext &ctx) const override
SG::ReadCondHandleKey< AthenaAttributeList > m_run2DSPThresholdsKey
SG::ReadCondHandleKey< LArDSPThresholdsComplete > m_run1DSPThresholdsKey
Gaudi::Property< int > m_belowTillReset
Number of consecutive below-threshold samples required before the forward-subtraction cache is reset.
Container for LArRawChannel (IDC using LArRawChannelCollection)
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.