ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArTest
LArEventTest
src
DumpLArRawChannels.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArEventTest/DumpLArRawChannels.h
"
6
#include "
CaloIdentifier/CaloCell_ID.h
"
7
#include "
xAODEventInfo/EventInfo.h
"
8
//#include "testpack/compdigit.h"
9
#include <stdlib.h>
10
11
#include <vector>
12
13
DumpLArRawChannels::DumpLArRawChannels
(
const
std::string& name, ISvcLocator* pSvcLocator)
14
:
AthAlgorithm
(name, pSvcLocator),
15
m_chan
(0),
16
m_onlineHelper
(0),
17
m_emId
(0),
18
m_thistSvc
(
"THistSvc"
, name)
19
{
m_count
=0;
20
declareProperty
(
"LArRawChannelContainerName"
,
m_key
=
""
);
21
declareProperty
(
"OutputFileName"
,
m_FileName
=
"LArRawChannels.txt"
);
22
declareProperty
(
"NtupStream"
,
m_ntup
);
23
declareProperty
(
"ToLog"
,
m_toLog
=
true
);
24
}
25
26
DumpLArRawChannels::~DumpLArRawChannels
()
27
{
//empty
28
}
29
30
StatusCode
DumpLArRawChannels::initialize
()
31
{
32
ATH_MSG_INFO
(
"======== initialize DumpLArRawChanels ========"
);
33
34
ATH_CHECK
(
detStore
()->retrieve(
m_onlineHelper
,
"LArOnlineID"
) );
35
ATH_MSG_DEBUG
(
" Found the LArOnlineID helper. "
);
36
37
const
CaloCell_ID
* idHelper =
nullptr
;
38
ATH_CHECK
(
detStore
()->retrieve (idHelper,
"CaloCell_ID"
) );
39
m_emId
=idHelper->
em_idHelper
();
40
if
(!
m_emId
) {
41
ATH_MSG_ERROR
(
"Unable to get EM_ID"
);
42
return
StatusCode::FAILURE;
43
}
44
45
ATH_CHECK
(
m_cablingKey
.initialize() );
46
47
if
(!
m_FileName
.empty()) {
48
m_outfile
.open(
m_FileName
.c_str(),std::ios::out);
49
m_toFile
=
true
;
50
}
51
else
52
m_toFile
=
false
;
53
54
if
(
m_ntup
.size()) {
55
m_tree
=
new
TTree(
"RC"
,
"LArRawChannels"
);
56
const
std::string ntupStream=
"/"
+
m_ntup
+
"/LArRawChanenls"
;
57
ATH_CHECK
(
m_thistSvc
->regTree(ntupStream,
m_tree
));
58
59
m_tree
->Branch(
"evt"
,&
m_evt
,
"evt/I"
);
60
m_tree
->Branch(
"e"
,&
m_e
,
"e/F"
);
61
m_tree
->Branch(
"t"
,&
m_t
,
"t/F"
);
62
m_tree
->Branch(
"Q"
,&
m_Q
,
"q/F"
);
63
m_tree
->Branch(
"gain"
,&
m_gain
,
"gain/I"
);
64
m_tree
->Branch(
"HWID"
,&
m_id
,
"hwid/I"
);
65
66
}
67
68
69
ATH_MSG_INFO
(
"======== test-stuff initialize successfully ========"
);
70
return
StatusCode::SUCCESS;
71
}
72
73
74
StatusCode
DumpLArRawChannels::execute
(
const
EventContext& ctx)
75
{
76
m_count
++;
77
ATH_MSG_INFO
(
"======== executing event "
<<
m_count
<<
" ========"
);
78
const
xAOD::EventInfo
* thisEventInfo =
nullptr
;
79
StatusCode
sc
=
evtStore
()->retrieve(thisEventInfo);
80
if
(
sc
!=StatusCode::SUCCESS)
81
ATH_MSG_WARNING
(
"No EventInfo object found!"
);
82
else
83
{
84
if
(
m_toLog
) std::cout <<
"*** Event #"
<< std::dec << thisEventInfo->
runNumber
() <<
"/"
<< thisEventInfo->
eventNumber
() << std::endl;
85
m_evt
=thisEventInfo->
eventNumber
();
86
}
87
88
SG::ReadCondHandle<LArOnOffIdMapping>
larCablingHdl(
m_cablingKey
, ctx);
89
const
LArOnOffIdMapping
* cabling=*larCablingHdl;
90
if
(!cabling) {
91
ATH_MSG_ERROR
(
"Could not get LArOnOffIdMapping !!"
);
92
return
StatusCode::FAILURE;
93
}
94
95
const
LArRawChannelContainer
* channel_cont =
nullptr
;
96
if
(
m_key
.size())
97
ATH_CHECK
(
evtStore
()->retrieve(channel_cont,
m_key
) );
98
else
99
ATH_CHECK
(
evtStore
()->retrieve(channel_cont) );
100
ATH_MSG_INFO
(
"Retrieved LArRawChannelContainer from StoreGate! key="
<<
m_key
);
101
//int nColl=0;
102
short
layer,
eta
,
phi
;
103
m_chan
=0;
104
//int Nchan=0;
105
typedef
std::vector< const LArRawChannel* > LArRawChannelVector;
106
//std::vector< const LArRawChannel* > channelVector;
107
LArRawChannelVector channelVector;
108
LArRawChannelContainer::const_iterator it_chan_coll = channel_cont->begin();
109
LArRawChannelContainer::const_iterator it_chan_coll_end = channel_cont->end();
110
//log <<MSG::DEBUG<<" number of LArRawChannel collections "<< channel_cont->size() <<endmsg;
111
for
( ; it_chan_coll!=it_chan_coll_end;++it_chan_coll) {
112
m_chan
++;
113
channelVector.push_back(&(*it_chan_coll));
114
}
115
if
(
m_toFile
)
m_outfile
<<
"Event "
<<
m_count
<<
" contains "
<<
m_chan
<<
" channels\n"
;
116
if
(
m_toLog
) std::cout <<
"Event "
<<
m_count
<<
" contains "
<<
m_chan
<<
" channels\n"
;
117
118
mySort
aSort;
119
std::sort
(channelVector.begin(),channelVector.end(),aSort);
120
for
(
const
LArRawChannel
* chan : channelVector)
121
{
122
//if (chan->energy()==0)
123
//continue;
124
const
HWIdentifier
chid=chan->channelID();
//hardwareID();
125
if
(
m_toLog
) std::cout <<
"Channel: "
<<
m_onlineHelper
->channel_name(chid);
126
if
(
m_toFile
)
m_outfile
<<
"Channel: "
<<
m_onlineHelper
->channel_name(chid);
127
128
if
(!cabling->isOnlineConnected(chid)) {
129
if
(
m_toLog
) std::cout <<
" disconnected"
<< std::endl;
130
if
(
m_toFile
)
m_outfile
<<
" disconnected"
<< std::endl;
131
continue
;
132
}
133
const
Identifier
id
=cabling->cnvToIdentifier(chid);
134
135
if
(!
m_emId
->is_lar_em(
id
)) {
136
eta
=
m_emId
->eta(
id
);
137
phi
=
m_emId
->phi(
id
);
138
layer=
m_emId
->sampling(
id
);
139
if
(
m_emId
->is_em_endcap(
id
)) {
140
if
(
m_toLog
) std::cout <<
" Endcap l/e/p= "
<< layer <<
"/"
<<
eta
<<
"/"
<<
phi
<<
":"
;
141
if
(
m_toFile
)
m_outfile
<<
" Endcap l/e/p= "
<< layer <<
"/"
<<
eta
<<
"/"
<<
phi
<<
":"
;
142
}
143
else
{
144
if
(
m_toLog
) std::cout <<
" Barrel l/e/p= "
<< layer <<
"/"
<<
eta
<<
"/"
<<
phi
<<
":"
;
145
if
(
m_toFile
)
m_outfile
<<
" Barrel l/e/p= "
<< layer <<
"/"
<<
eta
<<
"/"
<<
phi
<<
":"
;
146
}
147
}
148
else
{
149
if
(
m_toLog
) std::cout <<
" (is not EM)"
;
150
if
(
m_toFile
)
m_outfile
<<
" (is not EM)"
;
151
}
152
153
154
int
Time=chan->time();
155
/*
156
if (Time>0x1fff)
157
Time=0x1fff;
158
if (Time<-0x1fff)
159
Time=-0x1fff;
160
*/
161
//if (abs(Time)>24000)
162
//Time=0;
163
if
(
m_toLog
) std::cout <<
" E= "
<< chan->energy() <<
" t= "
<< Time <<
" Q= "
<< chan->quality() <<
" P=0x"
164
<< std::hex << chan->provenance() << std::dec <<
" G="
<< chan->gain() << std::endl;
165
166
if
(
m_toFile
)
m_outfile
<<
" E= "
<< chan->energy() <<
" t= "
<< Time <<
" Q= "
<< chan->quality() <<
" P=0x"
167
<< std::hex << chan->provenance() << std::dec <<
" G="
<< chan->gain() << std::endl;
168
169
if
(
m_tree
) {
170
m_e
=chan->energy();
171
m_t
=chan->time();
172
m_Q
=chan->quality();
173
m_gain
=chan->gain();
174
m_id
=chid.
get_identifier32
().
get_compact
();
175
m_tree
->Fill();
176
}
177
}
178
//std::cout << "Collection #" << ++nColl << " contains " << chan_coll->size() << " elementes." << std::endl;
179
std::cout <<
"Event "
<<
m_count
<<
" contains "
<<
m_chan
<<
" ("
<<channelVector.size() <<
") channels\n"
;
180
return
StatusCode::SUCCESS;
181
}
182
183
StatusCode
DumpLArRawChannels::finalize
()
184
{
185
if
(
m_toFile
)
m_outfile
.close();
186
ATH_MSG_INFO
(
"======== finalize DumpLArRawChannel ========"
);
187
return
StatusCode::SUCCESS;
188
}
189
190
bool
DumpLArRawChannels::mySort::operator()
(
const
LArRawChannel
*
a
,
const
LArRawChannel
* b)
191
{
return
a
->channelID() < b->channelID();}
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
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
CaloCell_ID.h
DumpLArRawChannels.h
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
Definition
AthCommonDataStore.h:85
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
CaloCell_ID
Helper class for offline cell identifiers.
Definition
CaloCell_ID.h:34
CaloCell_ID::em_idHelper
const LArEM_ID * em_idHelper() const
access to EM idHelper
Definition
CaloCell_ID.h:63
DumpLArRawChannels::mySort
Definition
DumpLArRawChannels.h:53
DumpLArRawChannels::mySort::operator()
bool operator()(const LArRawChannel *a, const LArRawChannel *b)
Definition
DumpLArRawChannels.cxx:190
DumpLArRawChannels::m_toLog
bool m_toLog
Definition
DumpLArRawChannels.h:48
DumpLArRawChannels::m_emId
const LArEM_ID * m_emId
Definition
DumpLArRawChannels.h:37
DumpLArRawChannels::m_evt
int m_evt
Definition
DumpLArRawChannels.h:44
DumpLArRawChannels::m_outfile
std::ofstream m_outfile
Definition
DumpLArRawChannels.h:38
DumpLArRawChannels::m_t
float m_t
Definition
DumpLArRawChannels.h:45
DumpLArRawChannels::m_gain
unsigned m_gain
Definition
DumpLArRawChannels.h:46
DumpLArRawChannels::m_thistSvc
ServiceHandle< ITHistSvc > m_thistSvc
Definition
DumpLArRawChannels.h:51
DumpLArRawChannels::m_FileName
std::string m_FileName
Definition
DumpLArRawChannels.h:39
DumpLArRawChannels::m_toFile
bool m_toFile
Definition
DumpLArRawChannels.h:49
DumpLArRawChannels::m_id
unsigned m_id
Definition
DumpLArRawChannels.h:47
DumpLArRawChannels::m_count
int m_count
Definition
DumpLArRawChannels.h:34
DumpLArRawChannels::~DumpLArRawChannels
~DumpLArRawChannels()
Definition
DumpLArRawChannels.cxx:26
DumpLArRawChannels::m_Q
float m_Q
Definition
DumpLArRawChannels.h:45
DumpLArRawChannels::initialize
StatusCode initialize()
Definition
DumpLArRawChannels.cxx:30
DumpLArRawChannels::m_e
float m_e
Definition
DumpLArRawChannels.h:45
DumpLArRawChannels::DumpLArRawChannels
DumpLArRawChannels(const std::string &name, ISvcLocator *pSvcLocator)
Definition
DumpLArRawChannels.cxx:13
DumpLArRawChannels::m_key
std::string m_key
Definition
DumpLArRawChannels.h:39
DumpLArRawChannels::m_tree
TTree * m_tree
Definition
DumpLArRawChannels.h:43
DumpLArRawChannels::execute
StatusCode execute(const EventContext &ctx)
Execute method.
Definition
DumpLArRawChannels.cxx:74
DumpLArRawChannels::m_ntup
std::string m_ntup
Definition
DumpLArRawChannels.h:42
DumpLArRawChannels::m_chan
int m_chan
Definition
DumpLArRawChannels.h:34
DumpLArRawChannels::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition
DumpLArRawChannels.h:36
DumpLArRawChannels::finalize
StatusCode finalize()
Definition
DumpLArRawChannels.cxx:183
DumpLArRawChannels::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition
DumpLArRawChannels.h:33
HWIdentifier
Definition
HWIdentifier.h:13
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition
Identifier32.h:47
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
LArOnOffIdMapping
Definition
LArOnOffIdMapping.h:20
LArRawChannelContainer
Container for LArRawChannel (IDC using LArRawChannelCollection).
Definition
LArRawChannelContainer.h:26
LArRawChannel
Liquid Argon ROD output object base class.
Definition
LArRawChannel.h:40
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
Identifier
Definition
IdentifierFieldParser.cxx:14
std::sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition
DVL_algorithms.h:554
xAOD::EventInfo
EventInfo_v1 EventInfo
Definition of the latest event info version.
Definition
IEventInfoCnvTool.h:16
EventInfo.h
Generated on
for ATLAS Offline Software by
1.17.0