ATLAS Offline Software
Loading...
Searching...
No Matches
ZDC::LISAnalysisTool Class Reference

#include <LISAnalysisTool.h>

Inheritance diagram for ZDC::LISAnalysisTool:

Public Member Functions

 LISAnalysisTool (std::string const &name)
virtual ~LISAnalysisTool () override=default
StatusCode initialize () override
 Dummy implementation of the initialisation function.
StatusCode recoZdcModules (xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer) override
StatusCode reprocessZdc () override
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void initialize_default ()
LISModuleResults processLISModule (const xAOD::ZdcModule &module, unsigned int lumiBlock)
LISModuleResults processModuleData (int side, int channel, const std::vector< unsigned short > &data, unsigned int startSample, unsigned int endSample, unsigned int lumiBlock)
void setStatusBit (unsigned int &statusWord, unsigned int bitIndex)
bool CheckStatusBit (unsigned int statusWord, unsigned int bitIndex)
StatusCode SetPedestals (unsigned int runNumber)
float GetPedestal (int channel, unsigned int lumiBlock)
double getAmplitudeCorrection (int iside, int imod, bool highGain, float fitAmp)
void setFADCCorrections (unsigned int runNumber)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

bool m_init {false}
bool m_MominalPedestals {false}
std::string m_name
unsigned int m_runNumber {0}
const int m_nLISChannels = 8
const int m_nSamples = 24
const int m_ADCSaturationValue = 3800
Gaudi::Property< std::string > m_configuration {this, "Configuration", "default", "Which config to use"}
Gaudi::Property< bool > m_writeAux {this, "WriteAux", true, "Write auxiliary data"}
Gaudi::Property< std::string > m_auxSuffix {this, "AuxSuffix", "", "Suffix for aux data names"}
Gaudi::Property< unsigned int > m_nBaselineStart {this, "BaselineStart", 0, "Start index for baseline calculation"}
Gaudi::Property< unsigned int > m_nBaselineEnd {this, "BaselineEnd", 5, "End index for baseline calculation"}
Gaudi::Property< unsigned int > m_nPulsStart {this, "PulseStart", 6, "Start index for pulse analysis"}
Gaudi::Property< unsigned int > m_nPulsEnd {this, "PulseEnd", 12, "End index for pulse analysis"}
Gaudi::Property< std::vector< float > > m_channelPedestals
std::vector< unsigned int > m_LEDCalreqIdx
std::vector< unsigned int > m_LEDBCID
const std::vector< std::string > m_LEDNames = {"Blue1", "Green", "Blue2"}
const std::vector< std::string > m_calreqNames = {"CalReq1", "CalReq2", "CalReq3"}
unsigned int m_numSamples {24}
unsigned int m_preSample {0}
float m_deltaTSample {3.125}
unsigned int m_sampleAnaStart {5}
unsigned int m_sampleAnaEnd {23}
unsigned int m_nBaselineSamples {5}
Gaudi::Property< std::string > m_zdcModuleContainerName {this, "ZdcModuleContainerName", "ZdcModules", "Location of ZDC processed data"}
Gaudi::Property< std::string > m_zdcSumContainerName {this, "ZdcSumContainerName", "ZdcSums", "Location of ZDC processed sums"}
const xAOD::ZdcModuleContainerm_zdcModules {nullptr}
const xAOD::ZdcModuleContainerm_zdcSums {nullptr}
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {this, "EventInfoKey", "EventInfo", "Location of the event info"}
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainerm_eventTypeKey {this, "ZdcEventTypeKey", "", "ZDC Event type"}
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainerm_robBCIDKey {this, "ROBBCIDKey", "", "BCID from LUCROD ROB headers"}
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainerm_DAQModeKey {this, "ZdcDAQModeKey", "", "ZDC DAQ mode"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_ZdcLEDType {this, "ZdcLEDType", "", "ZDC LED Type (0-Blue1, 1-Green, 2-Blue2}"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_LISPresampleADC {this, "LISPresampleADC", "", "LIS presample ADC"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_LISADCSum {this, "LISADCSum", "", "LIS pulse FADC sum"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_LISMaxADC {this, "LISMaxADC", "", "LIS pulse max FADC value"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_LISMaxSample {this, "LISMaxSample", "", "LIS max FADC sample"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_LISAvgTime {this, "LISAvgTime", "", "LIS average time"}
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainerm_LISModuleStatus {this, "LISModuleStatus", "", "LIS module status"}
std::array< std::unique_ptr< TH1 >, 8 > m_LISPedestals
bool m_doFADCCorr {}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 69 of file LISAnalysisTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LISAnalysisTool()

ZDC::LISAnalysisTool::LISAnalysisTool ( std::string const & name)
explicit

Definition at line 21 of file LISAnalysisTool.cxx.

21 :
22 asg::AsgTool(name),
23 m_name(name)
24{
25#ifndef XAOD_STANDALONE
26 declareInterface<IZdcAnalysisTool>(this);
27#endif
28}

◆ ~LISAnalysisTool()

virtual ZDC::LISAnalysisTool::~LISAnalysisTool ( )
overridevirtualdefault

Member Function Documentation

◆ CheckStatusBit()

bool ZDC::LISAnalysisTool::CheckStatusBit ( unsigned int statusWord,
unsigned int bitIndex )
inlineprivate

Definition at line 93 of file LISAnalysisTool.h.

93{ return (statusWord & (1 << bitIndex)) != 0; }

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getAmplitudeCorrection()

double ZDC::LISAnalysisTool::getAmplitudeCorrection ( int iside,
int imod,
bool highGain,
float fitAmp )
private

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void * ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119 {
120
121#ifdef XAOD_STANDALONE
122 // In case we use @c xAOD::TEvent, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ getName()

const std::string & asg::AsgTool::getName ( const void * ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106 {
107
108#ifdef XAOD_STANDALONE
109 // In case we use @c xAOD::TEvent, we have a direct function call
110 // for this.
111 return evtStore()->event()->getName( ptr );
112#else
113 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114 static const std::string dummy = "";
115 return ( proxy == nullptr ? dummy : proxy->name() );
116#endif // XAOD_STANDALONE
117 }

◆ GetPedestal()

float ZDC::LISAnalysisTool::GetPedestal ( int channel,
unsigned int lumiBlock )
private

Definition at line 176 of file LISAnalysisTool.cxx.

176 {
177 // Check if channel is valid
178 if (channel >= m_nLISChannels) {
179 ATH_MSG_WARNING("GetPedestals: invalid channel " << channel << ", returning 0");
180 return 0;
181 }
182
183 ATH_MSG_DEBUG("GetPedestals: m_MominalPedestals " << m_MominalPedestals );
184
185 if(!m_MominalPedestals) {
186 // Check if histogram is available for this channel
187 if (m_LISPedestals[channel]) {
188 // Find the bin corresponding to this lumiblock
189
190 if(lumiBlock < m_LISPedestals[channel]->GetXaxis()->GetXmin() || lumiBlock > m_LISPedestals[channel]->GetXaxis()->GetXmax())
191 {
192 ATH_MSG_DEBUG("GetPedestals: channel " << channel << ", LB " << lumiBlock
193 << ", lumiblock out of histogram range");
194 }
195 else{
196
197 int bin = m_LISPedestals[channel]->FindBin(lumiBlock);
198 float pedestal = m_LISPedestals[channel]->GetBinContent(bin);
199
200 // Check if pedestal value is valid (non-zero)
201 if (pedestal > 0) {
202 ATH_MSG_DEBUG("GetPedestals: channel " << channel << ", LB " << lumiBlock
203 << ", pedestal = " << pedestal << " (from histogram)");
204 return pedestal;
205 }
206 else {
207 ATH_MSG_DEBUG("GetPedestals: channel " << channel << ", LB " << lumiBlock
208 << ", no valid histogram entry");
209 }
210 }
211 }
212 else {
213 ATH_MSG_DEBUG("GetPedestals: no histogram available for channel " << channel);
214 }
215 }
216
217 // Fallback to predefined pedestals
218 ATH_MSG_DEBUG("GetPedestals: channel " << channel << ", LB " << lumiBlock
219 << ", using default pedestal = " << m_channelPedestals.value()[channel]);
220
221 return m_channelPedestals.value()[channel];
222}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Property< std::vector< float > > m_channelPedestals
std::array< std::unique_ptr< TH1 >, 8 > m_LISPedestals

◆ getProperty()

template<class T>
const T * asg::AsgTool::getProperty ( const std::string & name) const
inherited

Get one of the tool's properties.

◆ initialize()

StatusCode ZDC::LISAnalysisTool::initialize ( void )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 30 of file LISAnalysisTool.cxx.

30 {
31 ATH_MSG_INFO("Initializing LISAnalysisTool with configuration: " << m_configuration);
32 ATH_MSG_INFO("Initializing LISAnalysisTool with BaselineStart: " << m_nBaselineStart << ", BaselineEnd: " << m_nBaselineEnd);
33 ATH_MSG_INFO("Initializing LISAnalysisTool with PulseStart: " << m_nPulsStart << ", PulseEnd: " << m_nPulsEnd);
34
35 // Format channel pedestals for printing
36 std::ostringstream pedestalStr;
37 pedestalStr << "[";
38 for (size_t i = 0; i < m_channelPedestals.value().size(); ++i) {
39 if (i > 0) pedestalStr << ", ";
40 pedestalStr << m_channelPedestals.value()[i];
41 }
42 pedestalStr << "]";
43 ATH_MSG_INFO("Initializing LISAnalysisTool with Pedestals: " << pedestalStr.str());
44
45
47
48 ATH_MSG_INFO("LIS Configuration:");
49 ATH_MSG_INFO(" NumSamples: " << m_numSamples);
50 ATH_MSG_INFO(" Presample: " << m_preSample);
51 ATH_MSG_INFO(" DeltaTSample: " << m_deltaTSample << " ns");
52 ATH_MSG_INFO(" SampleAnaStart: " << m_sampleAnaStart);
53 ATH_MSG_INFO(" SampleAnaEnd: " << m_sampleAnaEnd);
54
55 // If an aux suffix is provided, prepend it with "_"
56 std::string auxSuffix = m_auxSuffix;
57 if (auxSuffix != "") auxSuffix = "_" + auxSuffix;
58
59 // Initialize eventInfo access
60 ATH_CHECK(m_eventInfoKey.initialize());
61
62 // Initialize keys for reading ZDC event-level aux decor information
64 ATH_CHECK(m_eventTypeKey.initialize());
65
67 ATH_CHECK(m_DAQModeKey.initialize());
68
70 ATH_CHECK(m_robBCIDKey.initialize());
71
72 // Initialize WriteDecor handles
73 if (m_writeAux) {
74 m_ZdcLEDType = m_zdcSumContainerName + ".ZdcLEDType" + auxSuffix;
75 ATH_CHECK(m_ZdcLEDType.initialize());
76
77 m_LISPresampleADC = m_zdcModuleContainerName + ".LISPresample" + auxSuffix;
78 ATH_CHECK(m_LISPresampleADC.initialize());
79
80 m_LISADCSum = m_zdcModuleContainerName + ".LISADCSum" + auxSuffix;
81 ATH_CHECK(m_LISADCSum.initialize());
82
83 m_LISMaxADC = m_zdcModuleContainerName + ".LISMaxADC" + auxSuffix;
84 ATH_CHECK(m_LISMaxADC.initialize());
85
86 m_LISMaxSample = m_zdcModuleContainerName + ".LISMaxSample" + auxSuffix;
87 ATH_CHECK(m_LISMaxSample.initialize());
88
89 m_LISAvgTime = m_zdcModuleContainerName + ".LISAvgTime" + auxSuffix;
90 ATH_CHECK(m_LISAvgTime.initialize());
91
92 m_LISModuleStatus = m_zdcModuleContainerName + ".LISModuleStatus" + auxSuffix;
93 ATH_CHECK(m_LISModuleStatus.initialize());
94
95 }
96
97 m_init = true;
98 ATH_MSG_INFO("LISAnalysisTool initialization complete");
99
100 return StatusCode::SUCCESS;
101}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_LISMaxADC
Gaudi::Property< bool > m_writeAux
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_LISMaxSample
Gaudi::Property< unsigned int > m_nBaselineEnd
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_LISADCSum
Gaudi::Property< std::string > m_auxSuffix
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_robBCIDKey
unsigned int m_sampleAnaStart
Gaudi::Property< unsigned int > m_nPulsStart
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_LISPresampleADC
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_eventTypeKey
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_ZdcLEDType
Gaudi::Property< unsigned int > m_nBaselineStart
Gaudi::Property< std::string > m_configuration
SG::ReadDecorHandleKey< xAOD::ZdcModuleContainer > m_DAQModeKey
Gaudi::Property< std::string > m_zdcModuleContainerName
Gaudi::Property< unsigned int > m_nPulsEnd
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_LISAvgTime
SG::WriteDecorHandleKey< xAOD::ZdcModuleContainer > m_LISModuleStatus
Gaudi::Property< std::string > m_zdcSumContainerName
unsigned int m_sampleAnaEnd

◆ initialize_default()

void ZDC::LISAnalysisTool::initialize_default ( )
private

Definition at line 103 of file LISAnalysisTool.cxx.

103 {
104 // PbPb 2025 configuration
106 m_preSample = 0;
107 m_deltaTSample = 3.125;
109 m_sampleAnaEnd = 23;
111
112 m_LEDBCID = {3476, 3479, 3482};
113 m_LEDCalreqIdx = {0 ,1 ,2};
114}
std::vector< unsigned int > m_LEDCalreqIdx
std::vector< unsigned int > m_LEDBCID
unsigned int m_nBaselineSamples

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101 {
102
103 return MSG::name( msg().level() );
104 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print()

◆ processLISModule()

LISModuleResults ZDC::LISAnalysisTool::processLISModule ( const xAOD::ZdcModule & module,
unsigned int lumiBlock )
private

Definition at line 322 of file LISAnalysisTool.cxx.

322 {
323 ATH_MSG_DEBUG("Processing LIS module: side=" << module.zdcSide()
324 << ", module=" << module.zdcModule()
325 << ", channel=" << module.zdcChannel());
326
327 int LISModuleGain = 0;
328
329 if(module.zdcChannel() > 3){
330 LISModuleGain = 1; // gain 1 for channels 4-7
331 }
332 else{
333 LISModuleGain = 0; // gain 0 for channels 0-3
334 }
335
336 ATH_MSG_DEBUG("LIS module gain: " << LISModuleGain);
337
338 // Determine which gain data to use
339 static SG::ConstAccessor<std::vector<uint16_t>> g0dataAccessor("g0data");
340 static SG::ConstAccessor<std::vector<uint16_t>> g1dataAccessor("g1data");
341 const SG::ConstAccessor<std::vector<uint16_t>> &gainDataAccessor = (LISModuleGain == 0) ? g0dataAccessor : g1dataAccessor;
342
343 // Get waveform data
344 if (!gainDataAccessor.isAvailable(module)) {
345 ATH_MSG_DEBUG("No gain data available for this module");
346 return LISModuleResults();
347 }
348
349 const std::vector<uint16_t> &waveform = gainDataAccessor(module);
350 if (waveform.empty()) {
351 ATH_MSG_DEBUG("Empty waveform");
352 return LISModuleResults();
353 }
354
355 return processModuleData(module.zdcSide(), module.zdcChannel(),
356 waveform, m_sampleAnaStart, m_sampleAnaEnd, lumiBlock);
357}
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
LISModuleResults processModuleData(int side, int channel, const std::vector< unsigned short > &data, unsigned int startSample, unsigned int endSample, unsigned int lumiBlock)

◆ processModuleData()

LISModuleResults ZDC::LISAnalysisTool::processModuleData ( int side,
int channel,
const std::vector< unsigned short > & data,
unsigned int startSample,
unsigned int endSample,
unsigned int lumiBlock )
private

Definition at line 228 of file LISAnalysisTool.cxx.

233{
234 ATH_MSG_DEBUG("Processing LIS data for side " << side << ", channel " << channel);
235
236 int ADCSum = 0;
237 int maxADCsub = -999;
238 unsigned int maxSample = 0;
239 float avgTime = 0.f;
240 unsigned int moduleStatus = 0;
241
242 if (data.empty()) {
243 ATH_MSG_DEBUG("Empty waveform data");
244 return LISModuleResults();
245 }
246
247 if (startSample >= data.size() || endSample >= data.size()) {
248 ATH_MSG_WARNING("Start or end sample number greater than number of samples");
249 return LISModuleResults();
250 }
251
252 // Get pedestal for this channel using histogram if available, otherwise use predefined value
253 float ModPedestal = GetPedestal(channel, lumiBlock);
254
255 // Calculate presample (baseline) from first few samples
256 float preFADC = 0;
257 unsigned int nBaseline = std::min(m_nBaselineSamples, static_cast<unsigned int>(data.size()));
258 for (unsigned int i = m_nBaselineStart; i < m_nBaselineEnd; ++i) {
259 preFADC += data[i];
260 }
261 preFADC /= nBaseline;
262
263 // Process samples in analysis window
264 for (unsigned int sample = startSample; sample <= endSample; sample++) {
265 int FADCsub = static_cast<int>(data[sample]) - static_cast<int>(std::round(ModPedestal));
266
267 float time = (sample + 0.5f) * m_deltaTSample;
268 ADCSum += FADCsub;
269
270 if (FADCsub > maxADCsub) {
271 maxADCsub = FADCsub;
272 maxSample = sample;
273 }
274
275 avgTime += time * FADCsub;
276 }
277
278 // Calculate average time
279 if (ADCSum != 0) {
280 avgTime /= ADCSum;
281 } else {
282 avgTime = 0.f;
283 }
284
285 // Set status bits
286 if(std::abs(preFADC - ModPedestal) > 15) {
287 setStatusBit(moduleStatus, LISModuleStatusBits::LIS_HighPedestal); // Set high pedestal bit
288 }
289
290 if(maxSample < m_nPulsStart) {
291 setStatusBit(moduleStatus, LISModuleStatusBits::LIS_EarlyPulse); // Set early pulse bit
292 }
293 else if(maxSample > m_nPulsEnd) {
294 setStatusBit(moduleStatus, LISModuleStatusBits::LIS_LatePulse); // Set late pulse bit
295 }
296
297 if(maxADCsub > m_ADCSaturationValue){ // ADC overflow threshold
298 setStatusBit(moduleStatus, LISModuleStatusBits::LIS_Overflow); // Set overflow bit
299 }
300
301 bool hasBadStatus = false;
302 for(int ibit = 1; ibit < LISModuleStatusBits::LIS_NumStatusBits; ibit++){
303 if(CheckStatusBit(moduleStatus, ibit)){
304 hasBadStatus = true;
305 break;
306 }
307 }
308 if(!hasBadStatus) {
309 setStatusBit(moduleStatus, LISModuleStatusBits::LIS_ValidData); // Set good status bit if no other bits are set
310 }
311 else{
312 setStatusBit(moduleStatus, LISModuleStatusBits::LIS_BadBit); // Set generic bad bit if any specific issue bits are set
313 }
314
315 ATH_MSG_DEBUG(" Presample: " << preFADC << ", ADCSum: " << ADCSum
316 << ", MaxADC: " << maxADCsub << ", MaxSample: " << maxSample
317 << ", AvgTime: " << avgTime);
318
319 return LISModuleResults(preFADC, ADCSum, maxADCsub, maxSample, avgTime, moduleStatus);
320}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
float GetPedestal(int channel, unsigned int lumiBlock)
void setStatusBit(unsigned int &statusWord, unsigned int bitIndex)
bool CheckStatusBit(unsigned int statusWord, unsigned int bitIndex)
time(flags, cells_name, *args, **kw)
@ LIS_NumStatusBits
@ LIS_LatePulse
@ LIS_HighPedestal
@ LIS_Overflow
@ LIS_EarlyPulse
@ LIS_ValidData

◆ recoZdcModules()

StatusCode ZDC::LISAnalysisTool::recoZdcModules ( xAOD::ZdcModuleContainer const & moduleContainer,
xAOD::ZdcModuleContainer const & moduleSumContainer )
overridevirtual

Implements ZDC::IZdcAnalysisTool.

Definition at line 359 of file LISAnalysisTool.cxx.

361 {
362
363 ATH_MSG_DEBUG("LISAnalysisTool::recoZdcModules processing event");
364
365 if (!m_init) {
366 ATH_MSG_WARNING("Tool not initialized!");
367 return StatusCode::FAILURE;
368 }
369
370 if (moduleContainer.empty()) {
371 return StatusCode::SUCCESS;
372 }
373 // Check for decoding errors
374 SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey);
375 if (!eventInfo.isValid()) {
376 ATH_MSG_WARNING("EventInfo not valid");
377 return StatusCode::FAILURE;
378 }
379
380 bool lisErr = eventInfo->isEventFlagBitSet(xAOD::EventInfo::ForwardDet, ZdcEventInfo::LISDECODINGERROR);
381 if (lisErr) {
382 ATH_MSG_WARNING("LIS decoding error found - abandoning LISAnalysisTool!");
383 return StatusCode::SUCCESS;
384 }
385
386 SG::ReadDecorHandle<xAOD::ZdcModuleContainer, unsigned int> eventTypeHandle(m_eventTypeKey);
387 SG::ReadDecorHandle<xAOD::ZdcModuleContainer, std::vector<uint16_t>> rodBCIDHandle(m_robBCIDKey);
388
389 // Get lumiblock from event info
390 unsigned int lumiBlock = eventInfo->lumiBlock();
391
392 unsigned int thisRunNumber = eventInfo->runNumber();
393 if (thisRunNumber != m_runNumber) {
394 ATH_MSG_INFO("LIS analysis tool will be configured for run " << thisRunNumber );
395 ATH_MSG_INFO("Pedestals will be configured for run " << thisRunNumber);
396 StatusCode status = SetPedestals(thisRunNumber);
397 if (status != StatusCode::SUCCESS) {
398 ATH_MSG_ERROR("Failed to set pedestals from calibration file for run " << thisRunNumber << ", using nominal pedestal values instead!");
399 m_MominalPedestals = true;
400 }
401
402 m_runNumber = thisRunNumber;
403 }
404 // Loop over the sum container to find event-level info (side == 0)
405 //
406 bool haveZdcEventInfo = false;
407 unsigned int eventType = ZdcEventInfo::ZdcEventUnknown;
408 unsigned int bcid = 0;
409
410 const xAOD::ZdcModule* moduleSumEventInfo_ptr = 0;
411
412 for (auto modSum : moduleSumContainer) {
413 //
414 // Module sum object with side == 0 contains event-level information
415 //
416 if (modSum->zdcSide() == 0) {
417 //
418 // Add the event type and bcid as aux decors
419 //
420 ATH_MSG_DEBUG("Found global sum");
421 eventType = eventTypeHandle(*modSum);
422 haveZdcEventInfo = true;
423 moduleSumEventInfo_ptr = modSum;
424 }
425 }
426
427 if (!haveZdcEventInfo) {
428 ATH_MSG_ERROR("Zdc event data not available (moduleSum with side = 0)");
429 return StatusCode::FAILURE;
430 }
431
432 // Get the BCID from the rodBCID vector
433 const std::vector<uint16_t>& rodBCID = rodBCIDHandle(*moduleSumEventInfo_ptr);
434 if (!rodBCID.empty()) {
435 bcid = rodBCID[0]; // Use first BCID from LUCROD
436 ATH_MSG_DEBUG("Retrieved BCID from rodBCID: " << bcid);
437 } else {
438 ATH_MSG_WARNING("rodBCID vector is empty, using EventInfo BCID");
439 bcid = eventInfo->bcid();
440 }
441
442 // Determine the LED type
443 //
444 unsigned int evtLEDType = ZdcEventInfo::LEDNone;
445
446 for (unsigned int idxLED = 0; idxLED < ZdcEventInfo::NumLEDs; idxLED++) {
447 //
448 // Does the BCID match one of those associated with the LEDs?
449 //
450 if (m_LEDBCID[idxLED] == bcid) {
451
452 evtLEDType = idxLED;
453 break;
454 }
455 }
456
457 if (evtLEDType == ZdcEventInfo::LEDNone && eventType == ZdcEventInfo::ZdcEventLED) {
458 //
459 // Thie BCID does not appear to be associated with one of the LEDs, print warning and quit processing
460 //
461 ATH_MSG_WARNING("LED event: Unexpected BCID found in data: bcid = " << bcid << m_configuration);
462 return StatusCode::SUCCESS;
463 }
464 else {
465 ATH_MSG_DEBUG("Event with BCID = " << bcid << " has LED type " << evtLEDType);
466 }
467
468 // Create write decoration handles
469 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, unsigned int> LEDTypeHandle(m_ZdcLEDType);
470 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> presampleHandle(m_LISPresampleADC);
471 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, int> adcSumHandle(m_LISADCSum);
472 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, int> maxADCHandle(m_LISMaxADC);
473 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, unsigned int> maxSampleHandle(m_LISMaxSample);
474 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, float> avgTimeHandle(m_LISAvgTime);
475 SG::WriteDecorHandle<xAOD::ZdcModuleContainer, unsigned int> moduleStatusHandle(m_LISModuleStatus);
476
477 ATH_MSG_DEBUG("Processing " << moduleContainer.size() << " modules");
478
479 // Loop over modules and process LIS channels (module=5, type=2)
480 for (const auto* zdcModule : moduleContainer) {
481
482 LISModuleResults results = processLISModule(*zdcModule, lumiBlock);
483
484 ATH_MSG_DEBUG("Writing aux decors to LIS module: side=" << zdcModule->zdcSide()
485 << ", channel=" << zdcModule->zdcChannel());
486
487 // Write decorations
488 presampleHandle(*zdcModule) = results.getPresampleADC();
489 adcSumHandle(*zdcModule) = results.getADCSum();
490 maxADCHandle(*zdcModule) = results.getMaxADC();
491 maxSampleHandle(*zdcModule) = results.getMaxSample();
492 avgTimeHandle(*zdcModule) = results.getAvgTime();
493 moduleStatusHandle(*zdcModule) = results.getmoduleStatus();
494 }
495
496
497 if(eventType == ZdcEventInfo::ZdcEventLED){
498 // Write the LED type to the moduleSum container keep event-level data
499 //
500 LEDTypeHandle(*moduleSumEventInfo_ptr) = evtLEDType;
501 }
502
503 ATH_MSG_DEBUG("Finished event processing");
504
505 return StatusCode::SUCCESS;
506}
#define ATH_MSG_ERROR(x)
LISModuleResults processLISModule(const xAOD::ZdcModule &module, unsigned int lumiBlock)
StatusCode SetPedestals(unsigned int runNumber)
@ ForwardDet
The forward detectors.
::StatusCode StatusCode
StatusCode definition for legacy code.
status
Definition merge.py:16
ZdcModule_v1 ZdcModule
Definition ZdcModule.h:15
setTeId lumiBlock
setEventNumber setTimeStamp bcid

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ reprocessZdc()

StatusCode ZDC::LISAnalysisTool::reprocessZdc ( )
overridevirtual

Implements ZDC::IZdcAnalysisTool.

Definition at line 508 of file LISAnalysisTool.cxx.

508 {
509 if (!m_init) {
510 ATH_MSG_WARNING("Tool not initialized!");
511 return StatusCode::FAILURE;
512 }
513
514 ATH_MSG_DEBUG("Trying to retrieve " << m_zdcModuleContainerName);
515
516 m_zdcModules = nullptr;
518
519 m_zdcSums = nullptr;
521
523
524 return StatusCode::SUCCESS;
525}
const xAOD::ZdcModuleContainer * m_zdcSums
const xAOD::ZdcModuleContainer * m_zdcModules
StatusCode recoZdcModules(xAOD::ZdcModuleContainer const &moduleContainer, xAOD::ZdcModuleContainer const &moduleSumContainer) override

◆ setFADCCorrections()

void ZDC::LISAnalysisTool::setFADCCorrections ( unsigned int runNumber)
private

◆ SetPedestals()

StatusCode ZDC::LISAnalysisTool::SetPedestals ( unsigned int runNumber)
private

Definition at line 116 of file LISAnalysisTool.cxx.

117{
118 std::string filename;
119 std::string runString;
120
121 runString = ("ZdcCalib_Run"+TString::Itoa(runNumber,10)+".root").Data();
122
123 filename = PathResolverFindCalibFile("ZdcAnalysis/" + runString );
124
125 if (filename.empty())
126 {
127 ATH_MSG_INFO("No LIS pedestals file found - using default pedestals");
128 return StatusCode::FAILURE;
129 }
130
131 ATH_MSG_INFO("Opening LIS pedestals file " << filename);
132 std::unique_ptr<TFile> fLISPed(TFile::Open(filename.c_str(), "READ"));
133
134 if (!fLISPed->IsOpen()) {
135 ATH_MSG_INFO ("SetPedestals: failed to open file: " << filename << ". Using default pedestals.");
136 return StatusCode::FAILURE;
137 }
138
139 // Read 8 TH1D histograms (one for each channel/module)
140 // Each histogram contains pedestal value (y-axis) vs lumiblock (x-axis)
141 //
142 bool readSuccess = true;
143
144 for (int channel = 0; channel < m_nLISChannels; channel++) {
145 std::string histName = "LIS_Pedestal_ch" + std::to_string(channel);
146
147 ATH_MSG_DEBUG("SetPedestals: Searching for histogram: " << histName);
148
149 TH1D* hist_ptr = static_cast<TH1D*>(fLISPed->GetObjectChecked(histName.c_str(), "TH1D"));
150
151 if (!hist_ptr) {
152 ATH_MSG_ERROR("SetPedestals: unable to read pedestal histogram " << histName);
153 readSuccess = false;
154 break;
155 }
156 else {
157 ATH_MSG_INFO("Successfully read pedestal histogram for channel " << channel);
158 // Store the histogram in member variable
159 hist_ptr->SetDirectory(0);
160 m_LISPedestals[channel].reset(hist_ptr);
161 }
162 }
163
164 fLISPed->Close();
165
166 if (readSuccess) {
167 ATH_MSG_INFO("Successfully loaded LIS pedestals from file");
168 }
169 else {
170 ATH_MSG_ERROR("SetPedestals: due to at least one error, LIS pedestals not loaded from file");
171 }
172
173 return readSuccess ? StatusCode::SUCCESS : StatusCode::FAILURE;
174}
@ Data
Definition BaseObject.h:11
std::string PathResolverFindCalibFile(const std::string &logical_file_name)

◆ setStatusBit()

void ZDC::LISAnalysisTool::setStatusBit ( unsigned int & statusWord,
unsigned int bitIndex )
private

Definition at line 224 of file LISAnalysisTool.cxx.

224 {
225 statusWord |= (1 << bitIndex);
226}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_ADCSaturationValue

const int ZDC::LISAnalysisTool::m_ADCSaturationValue = 3800
private

Definition at line 104 of file LISAnalysisTool.h.

◆ m_auxSuffix

Gaudi::Property<std::string> ZDC::LISAnalysisTool::m_auxSuffix {this, "AuxSuffix", "", "Suffix for aux data names"}
private

Definition at line 109 of file LISAnalysisTool.h.

109{this, "AuxSuffix", "", "Suffix for aux data names"};

◆ m_calreqNames

const std::vector<std::string> ZDC::LISAnalysisTool::m_calreqNames = {"CalReq1", "CalReq2", "CalReq3"}
private

Definition at line 122 of file LISAnalysisTool.h.

122{"CalReq1", "CalReq2", "CalReq3"};

◆ m_channelPedestals

Gaudi::Property<std::vector<float> > ZDC::LISAnalysisTool::m_channelPedestals
private
Initial value:
{this, "ChannelPedestals",
{100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 },
"Per-channel pedestal values to subtract from ADCs"}

Definition at line 114 of file LISAnalysisTool.h.

114 {this, "ChannelPedestals",
115 {100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 },
116 "Per-channel pedestal values to subtract from ADCs"}; // May change after looking at pulse shapes more

◆ m_configuration

Gaudi::Property<std::string> ZDC::LISAnalysisTool::m_configuration {this, "Configuration", "default", "Which config to use"}
private

Definition at line 107 of file LISAnalysisTool.h.

107{this, "Configuration", "default", "Which config to use"};

◆ m_DAQModeKey

SG::ReadDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_DAQModeKey {this, "ZdcDAQModeKey", "", "ZDC DAQ mode"}
private

Definition at line 142 of file LISAnalysisTool.h.

142{this, "ZdcDAQModeKey", "", "ZDC DAQ mode"};

◆ m_deltaTSample

float ZDC::LISAnalysisTool::m_deltaTSample {3.125}
private

Definition at line 127 of file LISAnalysisTool.h.

127{3.125}; // ns per sample

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doFADCCorr

bool ZDC::LISAnalysisTool::m_doFADCCorr {}
private

Definition at line 156 of file LISAnalysisTool.h.

156{};

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> ZDC::LISAnalysisTool::m_eventInfoKey {this, "EventInfoKey", "EventInfo", "Location of the event info"}
private

Definition at line 139 of file LISAnalysisTool.h.

139{this, "EventInfoKey", "EventInfo", "Location of the event info"};

◆ m_eventTypeKey

SG::ReadDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_eventTypeKey {this, "ZdcEventTypeKey", "", "ZDC Event type"}
private

Definition at line 140 of file LISAnalysisTool.h.

140{this, "ZdcEventTypeKey", "", "ZDC Event type"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_init

bool ZDC::LISAnalysisTool::m_init {false}
private

Definition at line 97 of file LISAnalysisTool.h.

97{false};

◆ m_LEDBCID

std::vector<unsigned int> ZDC::LISAnalysisTool::m_LEDBCID
private

Definition at line 119 of file LISAnalysisTool.h.

◆ m_LEDCalreqIdx

std::vector<unsigned int> ZDC::LISAnalysisTool::m_LEDCalreqIdx
private

Definition at line 118 of file LISAnalysisTool.h.

◆ m_LEDNames

const std::vector<std::string> ZDC::LISAnalysisTool::m_LEDNames = {"Blue1", "Green", "Blue2"}
private

Definition at line 121 of file LISAnalysisTool.h.

121{"Blue1", "Green", "Blue2"};

◆ m_LISADCSum

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_LISADCSum {this, "LISADCSum", "", "LIS pulse FADC sum"}
private

Definition at line 147 of file LISAnalysisTool.h.

147{this, "LISADCSum", "", "LIS pulse FADC sum"};

◆ m_LISAvgTime

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_LISAvgTime {this, "LISAvgTime", "", "LIS average time"}
private

Definition at line 150 of file LISAnalysisTool.h.

150{this, "LISAvgTime", "", "LIS average time"};

◆ m_LISMaxADC

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_LISMaxADC {this, "LISMaxADC", "", "LIS pulse max FADC value"}
private

Definition at line 148 of file LISAnalysisTool.h.

148{this, "LISMaxADC", "", "LIS pulse max FADC value"};

◆ m_LISMaxSample

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_LISMaxSample {this, "LISMaxSample", "", "LIS max FADC sample"}
private

Definition at line 149 of file LISAnalysisTool.h.

149{this, "LISMaxSample", "", "LIS max FADC sample"};

◆ m_LISModuleStatus

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_LISModuleStatus {this, "LISModuleStatus", "", "LIS module status"}
private

Definition at line 151 of file LISAnalysisTool.h.

151{this, "LISModuleStatus", "", "LIS module status"};

◆ m_LISPedestals

std::array<std::unique_ptr<TH1>, 8> ZDC::LISAnalysisTool::m_LISPedestals
private

Definition at line 154 of file LISAnalysisTool.h.

◆ m_LISPresampleADC

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_LISPresampleADC {this, "LISPresampleADC", "", "LIS presample ADC"}
private

Definition at line 146 of file LISAnalysisTool.h.

146{this, "LISPresampleADC", "", "LIS presample ADC"};

◆ m_MominalPedestals

bool ZDC::LISAnalysisTool::m_MominalPedestals {false}
private

Definition at line 98 of file LISAnalysisTool.h.

98{false};

◆ m_name

std::string ZDC::LISAnalysisTool::m_name
private

Definition at line 99 of file LISAnalysisTool.h.

◆ m_nBaselineEnd

Gaudi::Property<unsigned int> ZDC::LISAnalysisTool::m_nBaselineEnd {this, "BaselineEnd", 5, "End index for baseline calculation"}
private

Definition at line 111 of file LISAnalysisTool.h.

111{this, "BaselineEnd", 5, "End index for baseline calculation"};

◆ m_nBaselineSamples

unsigned int ZDC::LISAnalysisTool::m_nBaselineSamples {5}
private

Definition at line 130 of file LISAnalysisTool.h.

130{5}; // default to 5 samples for baseline calculation

◆ m_nBaselineStart

Gaudi::Property<unsigned int> ZDC::LISAnalysisTool::m_nBaselineStart {this, "BaselineStart", 0, "Start index for baseline calculation"}
private

Definition at line 110 of file LISAnalysisTool.h.

110{this, "BaselineStart", 0, "Start index for baseline calculation"};

◆ m_nLISChannels

const int ZDC::LISAnalysisTool::m_nLISChannels = 8
private

Definition at line 101 of file LISAnalysisTool.h.

◆ m_nPulsEnd

Gaudi::Property<unsigned int> ZDC::LISAnalysisTool::m_nPulsEnd {this, "PulseEnd", 12, "End index for pulse analysis"}
private

Definition at line 113 of file LISAnalysisTool.h.

113{this, "PulseEnd", 12, "End index for pulse analysis"}; // May change after looking at pulse shapes more

◆ m_nPulsStart

Gaudi::Property<unsigned int> ZDC::LISAnalysisTool::m_nPulsStart {this, "PulseStart", 6, "Start index for pulse analysis"}
private

Definition at line 112 of file LISAnalysisTool.h.

112{this, "PulseStart", 6, "Start index for pulse analysis"}; // May change after looking at pulse shapes more

◆ m_nSamples

const int ZDC::LISAnalysisTool::m_nSamples = 24
private

Definition at line 102 of file LISAnalysisTool.h.

◆ m_numSamples

unsigned int ZDC::LISAnalysisTool::m_numSamples {24}
private

Definition at line 125 of file LISAnalysisTool.h.

125{24};

◆ m_preSample

unsigned int ZDC::LISAnalysisTool::m_preSample {0}
private

Definition at line 126 of file LISAnalysisTool.h.

126{0};

◆ m_robBCIDKey

SG::ReadDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_robBCIDKey {this, "ROBBCIDKey", "", "BCID from LUCROD ROB headers"}
private

Definition at line 141 of file LISAnalysisTool.h.

141{this, "ROBBCIDKey", "", "BCID from LUCROD ROB headers"};

◆ m_runNumber

unsigned int ZDC::LISAnalysisTool::m_runNumber {0}
private

Definition at line 100 of file LISAnalysisTool.h.

100{0};

◆ m_sampleAnaEnd

unsigned int ZDC::LISAnalysisTool::m_sampleAnaEnd {23}
private

Definition at line 129 of file LISAnalysisTool.h.

129{23};

◆ m_sampleAnaStart

unsigned int ZDC::LISAnalysisTool::m_sampleAnaStart {5}
private

Definition at line 128 of file LISAnalysisTool.h.

128{5};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeAux

Gaudi::Property<bool> ZDC::LISAnalysisTool::m_writeAux {this, "WriteAux", true, "Write auxiliary data"}
private

Definition at line 108 of file LISAnalysisTool.h.

108{this, "WriteAux", true, "Write auxiliary data"};

◆ m_ZdcLEDType

SG::WriteDecorHandleKey<xAOD::ZdcModuleContainer> ZDC::LISAnalysisTool::m_ZdcLEDType {this, "ZdcLEDType", "", "ZDC LED Type (0-Blue1, 1-Green, 2-Blue2}"}
private

Definition at line 145 of file LISAnalysisTool.h.

145{this, "ZdcLEDType", "", "ZDC LED Type (0-Blue1, 1-Green, 2-Blue2}"};

◆ m_zdcModuleContainerName

Gaudi::Property<std::string> ZDC::LISAnalysisTool::m_zdcModuleContainerName {this, "ZdcModuleContainerName", "ZdcModules", "Location of ZDC processed data"}
private

Definition at line 133 of file LISAnalysisTool.h.

133{this, "ZdcModuleContainerName", "ZdcModules", "Location of ZDC processed data"};

◆ m_zdcModules

const xAOD::ZdcModuleContainer* ZDC::LISAnalysisTool::m_zdcModules {nullptr}
private

Definition at line 135 of file LISAnalysisTool.h.

135{nullptr};

◆ m_zdcSumContainerName

Gaudi::Property<std::string> ZDC::LISAnalysisTool::m_zdcSumContainerName {this, "ZdcSumContainerName", "ZdcSums", "Location of ZDC processed sums"}
private

Definition at line 134 of file LISAnalysisTool.h.

134{this, "ZdcSumContainerName", "ZdcSums", "Location of ZDC processed sums"};

◆ m_zdcSums

const xAOD::ZdcModuleContainer* ZDC::LISAnalysisTool::m_zdcSums {nullptr}
private

Definition at line 136 of file LISAnalysisTool.h.

136{nullptr};

The documentation for this class was generated from the following files: