ATLAS Offline Software
Loading...
Searching...
No Matches
LArRawChannelBuilderIterAlg.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef LARROD_LARRAWCHANNELBUILDERITERALG_H
6#define LARROD_LARRAWCHANNELBUILDERITERALG_H
7
8
13
22
23//Event classes
26
27class LArOnlineID;
28
30
31 public:
32 using AthReentrantAlgorithm::AthReentrantAlgorithm;
33
34 StatusCode initialize() override;
35 StatusCode execute(const EventContext& ctx) const override;
36 StatusCode finalize() override;
37
38
39 private:
40 //Event input:
42 "SG Key of LArDigitContaiiner"};
43 //Event output:
44 SG::WriteHandleKey<LArRawChannelContainer> m_rawChannelKey{this,"LArRawChannelKey","LArRawChannels",
45 "SG key of the LArRawChannelContainer"};
46
47 //Conditions input:
48 SG::ReadCondHandleKey<ILArPedestal> m_pedestalKey{this,"PedestalKey","LArPedestal","SG Key of Pedestal conditions object"};
49 SG::ReadCondHandleKey<LArADC2MeV> m_adc2MeVKey{this,"ADC2MeVKey","LArADC2MeV","SG Key of ADC2MeV conditions object"};
50 SG::ReadCondHandleKey<ILArOFC> m_ofcKey{this,"OFCKey","LArOFC","SG Key of OFC conditions object"};
51 SG::ReadCondHandleKey<ILArShape> m_shapeKey{this,"ShapeKey","LArShape","SG Key of Shape conditions object"};
52
53
54 SG::ReadCondHandleKey<LArOnOffIdMapping> m_cablingKey{this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"};
55 SG::ReadCondHandleKey<LArDSPThresholdsComplete> m_run1DSPThresholdsKey{this, "Run1DSPThresholdsKey","", "SG Key for thresholds to compute time and quality, run 1"};
56 SG::ReadCondHandleKey<AthenaAttributeList> m_run2DSPThresholdsKey{this, "Run2DSPThresholdsKey","", "SG Key for thresholds to compute time and quality, run 2"};
57
58
59 //Other jobOptions:
60 Gaudi::Property<float> m_eCutFortQ{this,"ECutFortQ",256.0,"Time and Quality will be computed only for channels with E above this value"};
61 //This flag decides if we compute Q and t for cells with negative energy
62 Gaudi::Property<bool> m_absECutFortQ{this,"absECut",true,"Cut on fabs(E) for Q and t computation"};
63 Gaudi::Property<bool> m_useShapeDer{this,"useShapeDer",true,"Use shape derivative in Q-factor computation"};
64 //This flag decides, wheter to use DB or constant threshold
65 Gaudi::Property<bool> m_useDBFortQ{this,"useDB",true,"Use DB for cut on t,Q"};
66
67 //The following matters only in the MC case, when we have a 32 sample shapes
68 Gaudi::Property<int> m_firstSample{this,"firstSample",0,"first of the 32 sampels of the MC shape to be used"};
69
70 // flags for iterations
71 Gaudi::Property<unsigned short> m_AdcMax{this, "ADCMax", 4095, "Saturation cut"};
72 Gaudi::Property<bool> m_skipSaturatedCells{this, "Skip", false, "reconstruct saturated cells"};
73 Gaudi::Property<float> m_defaultPhase{this, "defaultPhase", 0, "starting phase for iterations"};
74 Gaudi::Property<unsigned short> m_minADCforIter{this, "minADCforIter", 30};
75 Gaudi::Property<float> m_minADCforIterInSigma{this, "minADCforIterInSigma", -1};
76 Gaudi::Property<unsigned short> m_minSample{this, "minSample", 0};
77 Gaudi::Property<unsigned short> m_maxSample{this, "maxSample",31};
78 Gaudi::Property<unsigned short> m_nIterProp{"nIterations", 10};
79 Gaudi::Property<int> m_defaultShiftTimeSamples{this, "DefaultShiftTimeSample", 0};
80 Gaudi::Property<bool> m_forceHighGain{this, "forceHighGain", false, "Force use of high gain for all shapes and OFC (default=false)"};
81
82 SG::WriteHandleKey<LArOFIterResultsContainer> m_timingContKey{this, "TimingContainerKey", "", "Key of the LArOFIterResultsContainer in StoreGate"};
83
84 //Identifier helper
85 const LArOnlineID* m_onlineId = nullptr;
86
87 // iterative peak computation
88 LArOFIterResults peak(const std::vector<float>& samples, // raw data after pedestal subtraction
89 const HWIdentifier chID, // online channel id
90 const CaloGain::CaloGain gain, // gain
91 const float delayIn, // initial delay for Shape and OFC
92 const ILArOFC* ofcs, // OFC's
93 const ILArShape* shapes, // shapes
94 const unsigned nIter=0, // number of iteration
95 const unsigned npeak=2, // initial peak position.
96 unsigned peak_low=2, // lower limit for peak position
97 unsigned peak_high=2 // upper limit for peak position
98 ) const;
99
100};
101
102
103
104#endif
A LArRawConditionsContainer holding thresholds used by the DSP.
Handle class for reading from StoreGate.
Handle class for recording to StoreGate.
An algorithm that can be simultaneously executed in multiple threads.
Container class for LArDigit.
Gaudi::Property< unsigned short > m_minSample
Gaudi::Property< unsigned short > m_AdcMax
StatusCode execute(const EventContext &ctx) const override
SG::WriteHandleKey< LArRawChannelContainer > m_rawChannelKey
SG::ReadCondHandleKey< ILArPedestal > m_pedestalKey
Gaudi::Property< int > m_defaultShiftTimeSamples
Gaudi::Property< unsigned short > m_nIterProp
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
LArOFIterResults peak(const std::vector< float > &samples, const HWIdentifier chID, const CaloGain::CaloGain gain, const float delayIn, const ILArOFC *ofcs, const ILArShape *shapes, const unsigned nIter=0, const unsigned npeak=2, unsigned peak_low=2, unsigned peak_high=2) const
SG::ReadCondHandleKey< ILArShape > m_shapeKey
SG::ReadCondHandleKey< LArADC2MeV > m_adc2MeVKey
Gaudi::Property< bool > m_skipSaturatedCells
SG::ReadHandleKey< LArDigitContainer > m_digitKey
Gaudi::Property< unsigned short > m_minADCforIter
SG::WriteHandleKey< LArOFIterResultsContainer > m_timingContKey
Gaudi::Property< float > m_defaultPhase
SG::ReadCondHandleKey< ILArOFC > m_ofcKey
Gaudi::Property< unsigned short > m_maxSample
SG::ReadCondHandleKey< LArDSPThresholdsComplete > m_run1DSPThresholdsKey
Gaudi::Property< float > m_minADCforIterInSigma
SG::ReadCondHandleKey< AthenaAttributeList > m_run2DSPThresholdsKey
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.