ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCalibTools
src
LArAccumulatedDigits2Ntuple.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArCalibTools/LArAccumulatedDigits2Ntuple.h
"
6
#include "
LArRawEvent/LArAccumulatedDigitContainer.h
"
7
8
//#include "GaudiKernel/ToolHandle.h"
9
10
LArAccumulatedDigits2Ntuple::LArAccumulatedDigits2Ntuple
(
const
std::string& name, ISvcLocator* pSvcLocator):
11
LArCond2NtupleBase
(name, pSvcLocator),
12
m_ipass
(0),
13
m_event
(0)
14
{
15
m_ntTitle
=
"AccumulatedDigits"
;
16
m_ntpath
=
"/NTUPLES/FILE1/ACCUMULATEDDIGITS"
+
m_contKey
.key();
17
18
}
19
20
LArAccumulatedDigits2Ntuple::~LArAccumulatedDigits2Ntuple
()
21
=
default
;
22
23
24
StatusCode
LArAccumulatedDigits2Ntuple::initialize
()
25
{
26
ATH_MSG_INFO
(
"in initialize"
);
27
28
StatusCode
sc
=
LArCond2NtupleBase::initialize
();
29
if
(
sc
!=StatusCode::SUCCESS) {
30
ATH_MSG_ERROR
(
"Base init failed"
);
31
return
StatusCode::FAILURE;
32
}
33
34
35
36
sc
=
m_nt
->addItem(
"IEvent"
,
m_IEvent
);
37
if
(
sc
!=StatusCode::SUCCESS) {
38
ATH_MSG_ERROR
(
"addItem 'IEvent' failed"
);
39
return
sc
;
40
}
41
42
sc
=
m_nt
->addItem(
"EventNum"
,
m_EventNum
);
43
if
(
sc
!=StatusCode::SUCCESS) {
44
ATH_MSG_ERROR
(
"addItem 'EventNum' failed"
);
45
return
sc
;
46
}
47
48
sc
=
m_nt
->addItem(
"Ntrigger"
,
m_Ntrigger
,0,500);
49
if
(
sc
!=StatusCode::SUCCESS) {
50
ATH_MSG_ERROR
(
"addItem 'Ntrigger' failed"
);
51
return
sc
;
52
}
53
54
sc
=
m_nt
->addItem(
"Nsamples"
,
m_ntNsamples
,0,32);
55
if
(
sc
!=StatusCode::SUCCESS) {
56
ATH_MSG_ERROR
(
"addItem 'Nsamples' failed"
);
57
return
sc
;
58
}
59
60
sc
=
m_nt
->addItem(
"Sum"
,
m_Nsamples
,
m_sum
);
61
if
(
sc
!=StatusCode::SUCCESS) {
62
ATH_MSG_ERROR
(
"addItem 'sum' failed"
);
63
return
sc
;
64
}
65
66
sc
=
m_nt
->addItem(
"Sumsq"
,
m_Nsamples
,
m_sumsq
);
67
if
(
sc
!=StatusCode::SUCCESS) {
68
ATH_MSG_ERROR
(
"addItem 'sumsq' failed"
);
69
return
sc
;
70
}
71
72
sc
=
m_nt
->addItem(
"Mean"
,
m_mean
);
73
if
(
sc
!=StatusCode::SUCCESS) {
74
ATH_MSG_ERROR
(
"addItem 'mean' failed"
);
75
return
sc
;
76
}
77
78
sc
=
m_nt
->addItem(
"RMS"
,
m_rms
);
79
if
(
sc
!=StatusCode::SUCCESS) {
80
ATH_MSG_ERROR
(
"addItem 'rms' failed"
);
81
return
sc
;
82
}
83
84
sc
=
m_nt
->addItem(
"covr"
,
m_Nsamples
-1,
m_covr
);
85
if
(
sc
!=StatusCode::SUCCESS) {
86
ATH_MSG_ERROR
(
"addItem 'covr' failed"
);
87
return
sc
;
88
}
89
90
ATH_CHECK
(
m_contKey
.initialize(!
m_contKey
.key().empty()) );
91
92
m_ipass
= 0;
93
m_event
=0;
94
95
return
StatusCode::SUCCESS;
96
97
}
98
99
StatusCode
LArAccumulatedDigits2Ntuple::execute
(
const
EventContext& ctx)
100
{
101
102
ATH_MSG_DEBUG
(
"in execute"
);
103
StatusCode
sc
;
104
105
if
(
m_contKey
.key().empty())
return
StatusCode::SUCCESS;
106
107
108
m_event
++;
109
110
const
LArAccumulatedDigitContainer
* accuDigitContainer =
nullptr
;
111
SG::ReadHandle<LArAccumulatedDigitContainer>
Hdl{
m_contKey
, ctx};
112
if
(!Hdl.
isValid
()) {
113
ATH_MSG_WARNING
(
"Unable to retrieve LArAccumulatedDigitContainer with key "
<<
m_contKey
.key() <<
" from DetectorStore. "
);
114
return
StatusCode::SUCCESS;
115
}
else
{
116
ATH_MSG_DEBUG
(
"Got LArAccumulatedDigitContainer with key "
<<
m_contKey
.key() );
117
accuDigitContainer = Hdl.
cptr
();
118
}
119
120
if
(accuDigitContainer) {
121
122
if
(accuDigitContainer->
empty
()) {
123
ATH_MSG_DEBUG
(
"LArAccumulatedDigitContainer with key="
<<
m_contKey
<<
" is empty "
);
124
return
StatusCode::SUCCESS;
125
}
else
{
126
ATH_MSG_DEBUG
(
"LArAccumulatedDigitContainer with key="
<<
m_contKey
<<
" has "
<<accuDigitContainer->
size
() <<
" entries"
);
127
}
128
129
for
(
const
LArAccumulatedDigit
* digit : *accuDigitContainer) {
130
131
m_IEvent
=
m_event
;
132
m_EventNum
= ctx.eventID().event_number();
133
m_Ntrigger
= digit->nTrigger();
134
unsigned
int
trueMaxSample = digit->nsample();
135
m_ntNsamples
= trueMaxSample;
136
137
if
(trueMaxSample>
m_Nsamples
){
138
if
(!
m_ipass
){
139
ATH_MSG_WARNING
(
"The number of samples in data is larger than the one specified by JO: "
<< trueMaxSample <<
" > "
<<
m_Nsamples
<<
" --> only "
<<
m_Nsamples
<<
" will be available in the ntuple "
);
140
m_ipass
=1;
141
}
142
trueMaxSample =
m_Nsamples
;
143
}
144
145
m_mean
= digit->mean();
146
m_rms
= digit->RMS();
147
const
std::vector<uint64_t> sampleSquare = digit->sampleSquare();
148
const
std::vector<uint64_t> sampleSum = digit->sampleSum();
149
for
(
unsigned
i=0;i<trueMaxSample;i++) {
150
m_sumsq
[i] = sampleSquare[i];
151
m_sum
[i] = sampleSum[i];
152
}
153
std::vector<float> cov;
154
digit->getCov(cov,
m_normalize
);
155
for
(
unsigned
i=0;i<trueMaxSample-1;i++) {
156
m_covr
[i] = cov[i];
157
}
158
159
fillFromIdentifier
(digit->hardwareID());
160
sc
=
ntupleSvc
()->writeRecord(
m_nt
);
161
if
(
sc
!=StatusCode::SUCCESS) {
162
ATH_MSG_ERROR
(
"writeRecord failed"
);
163
return
sc
;
164
}
165
}
166
}
167
return
StatusCode::SUCCESS;
168
}
// end execute method.
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
LArAccumulatedDigitContainer.h
LArAccumulatedDigits2Ntuple.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
ntupleSvc
INTupleSvc * ntupleSvc()
Definition
ServiceAccessor.h:14
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
LArAccumulatedDigitContainer
Container class for LArAccumulatedDigit.
Definition
LArAccumulatedDigitContainer.h:22
LArAccumulatedDigit
Data class for ADC samples and autocorr preprocessed by the DSP.
Definition
LArAccumulatedDigit.h:32
LArAccumulatedDigits2Ntuple::m_contKey
SG::ReadHandleKey< LArAccumulatedDigitContainer > m_contKey
Definition
LArAccumulatedDigits2Ntuple.h:36
LArAccumulatedDigits2Ntuple::m_Ntrigger
NTuple::Item< long > m_Ntrigger
Definition
LArAccumulatedDigits2Ntuple.h:41
LArAccumulatedDigits2Ntuple::m_sumsq
NTuple::Array< long > m_sumsq
Definition
LArAccumulatedDigits2Ntuple.h:46
LArAccumulatedDigits2Ntuple::m_ntNsamples
NTuple::Item< long > m_ntNsamples
Definition
LArAccumulatedDigits2Ntuple.h:44
LArAccumulatedDigits2Ntuple::m_ipass
int m_ipass
Definition
LArAccumulatedDigits2Ntuple.h:38
LArAccumulatedDigits2Ntuple::initialize
virtual StatusCode initialize() override final
Definition
LArAccumulatedDigits2Ntuple.cxx:24
LArAccumulatedDigits2Ntuple::m_IEvent
NTuple::Item< long > m_IEvent
Definition
LArAccumulatedDigits2Ntuple.h:42
LArAccumulatedDigits2Ntuple::m_covr
NTuple::Array< float > m_covr
Definition
LArAccumulatedDigits2Ntuple.h:49
LArAccumulatedDigits2Ntuple::LArAccumulatedDigits2Ntuple
LArAccumulatedDigits2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition
LArAccumulatedDigits2Ntuple.cxx:10
LArAccumulatedDigits2Ntuple::m_normalize
Gaudi::Property< int > m_normalize
Definition
LArAccumulatedDigits2Ntuple.h:34
LArAccumulatedDigits2Ntuple::m_EventNum
NTuple::Item< long > m_EventNum
Definition
LArAccumulatedDigits2Ntuple.h:43
LArAccumulatedDigits2Ntuple::m_mean
NTuple::Item< float > m_mean
Definition
LArAccumulatedDigits2Ntuple.h:47
LArAccumulatedDigits2Ntuple::m_sum
NTuple::Array< long > m_sum
Definition
LArAccumulatedDigits2Ntuple.h:45
LArAccumulatedDigits2Ntuple::m_event
long m_event
Definition
LArAccumulatedDigits2Ntuple.h:39
LArAccumulatedDigits2Ntuple::~LArAccumulatedDigits2Ntuple
~LArAccumulatedDigits2Ntuple()
LArAccumulatedDigits2Ntuple::execute
virtual StatusCode execute(const EventContext &ctx) override final
Execute method.
Definition
LArAccumulatedDigits2Ntuple.cxx:99
LArAccumulatedDigits2Ntuple::m_Nsamples
Gaudi::Property< unsigned int > m_Nsamples
Definition
LArAccumulatedDigits2Ntuple.h:35
LArAccumulatedDigits2Ntuple::m_rms
NTuple::Item< float > m_rms
Definition
LArAccumulatedDigits2Ntuple.h:48
LArCond2NtupleBase::initialize
StatusCode initialize()
Definition
LArCond2NtupleBase.cxx:33
LArCond2NtupleBase::m_ntTitle
std::string m_ntTitle
Definition
LArCond2NtupleBase.h:68
LArCond2NtupleBase::m_nt
NTuple::Tuple * m_nt
Definition
LArCond2NtupleBase.h:71
LArCond2NtupleBase::m_ntpath
std::string m_ntpath
Definition
LArCond2NtupleBase.h:68
LArCond2NtupleBase::fillFromIdentifier
bool fillFromIdentifier(const HWIdentifier &id)
Definition
LArCond2NtupleBase.cxx:290
LArCond2NtupleBase::LArCond2NtupleBase
LArCond2NtupleBase(const std::string &name, ISvcLocator *pSvcLocator)
Definition
LArCond2NtupleBase.cxx:15
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
Generated on
for ATLAS Offline Software by
1.17.0