ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArTest
LArEventTest
src
DumpLArDigits.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 "
LArEventTest/DumpLArDigits.h
"
6
#include "
CaloIdentifier/CaloCell_ID.h
"
7
#include "
LArRawEvent/LArDigitContainer.h
"
8
#include "
xAODEventInfo/EventInfo.h
"
9
//#include "testpack/compdigit.h"
10
#include <stdlib.h>
11
12
#include <vector>
13
14
DumpLArDigits::DumpLArDigits
(
const
std::string& name, ISvcLocator* pSvcLocator)
15
:
AthAlgorithm
(name, pSvcLocator),
16
m_chan
(0),
17
m_onlineHelper
(0),
18
m_emId
(0)
19
{
m_count
=0;
20
declareProperty
(
"LArDigitContainerName"
,
m_key
=
""
);
21
declareProperty
(
"OutputFileName"
,
m_FileName
=
"LArDigits.txt"
);
22
}
23
24
DumpLArDigits::~DumpLArDigits
()
25
{
//empty
26
}
27
28
StatusCode
DumpLArDigits::initialize
()
29
{
30
ATH_MSG_INFO
(
"======== initialize DumpLArDigits ========"
);
31
ATH_CHECK
(
detStore
()->retrieve(
m_onlineHelper
,
"LArOnlineID"
) );
32
ATH_MSG_DEBUG
(
" Found the LArOnlineID helper. "
);
33
34
const
CaloCell_ID
* idHelper =
nullptr
;
35
ATH_CHECK
(
detStore
()->retrieve (idHelper,
"CaloCell_ID"
) );
36
m_emId
=idHelper->
em_idHelper
();
37
if
(!
m_emId
) {
38
ATH_MSG_ERROR
(
"Unable to get EM_ID"
);
39
return
StatusCode::FAILURE;
40
}
41
42
ATH_CHECK
(
m_cablingKey
.initialize() );
43
44
m_outfile
.open(
m_FileName
.c_str(),std::ios::out);
45
46
ATH_MSG_INFO
(
"======== test-stuff initialize successfully ========"
);
47
return
StatusCode::SUCCESS;
48
}
49
50
51
StatusCode
DumpLArDigits::execute
(
const
EventContext& ctx)
52
{
53
m_count
++;
54
ATH_MSG_INFO
(
"======== executing event "
<<
m_count
<<
" ========"
);
55
const
xAOD::EventInfo
* thisEventInfo;
56
StatusCode
sc
=
evtStore
()->retrieve(thisEventInfo);
57
if
(
sc
!=StatusCode::SUCCESS)
58
ATH_MSG_WARNING
(
"No EventInfo object found!"
);
59
else
60
{
61
std::cout <<
"*** Event #"
<< std::dec << thisEventInfo->
runNumber
() <<
"/"
<< thisEventInfo->
eventNumber
() << std::endl;
62
}
63
64
const
LArDigitContainer
* digit_cont;
65
66
if
(
m_key
.size())
67
ATH_CHECK
(
evtStore
()->retrieve(digit_cont,
m_key
) );
68
else
69
ATH_CHECK
(
evtStore
()->retrieve(digit_cont) );
70
ATH_MSG_INFO
(
"Retrieved LArDigitContainer from StoreGate! key="
<<
m_key
);
71
SG::ReadCondHandle<LArOnOffIdMapping>
cablingHdl{
m_cablingKey
, ctx};
72
const
LArOnOffIdMapping
* cabling{*cablingHdl};
73
if
(!cabling){
74
ATH_MSG_ERROR
(
"Do not have mapping object "
<<
m_cablingKey
.key() );
75
return
StatusCode::FAILURE;
76
}
77
//int nColl=0;
78
short
layer,
eta
,
phi
;
79
m_chan
=0;
80
//int Nchan=0;
81
typedef
std::vector< const LArDigit* > LArDigitVector;
82
//std::vector< const LArDigit* > digitVector;
83
LArDigitVector digitVector;
84
LArDigitContainer::const_iterator
it = digit_cont->
begin
();
85
LArDigitContainer::const_iterator
it_e = digit_cont->
end
();
86
//Nchan=0;
87
for
(; it!=it_e; ++it){
88
m_chan
++;
89
digitVector.push_back(*it);
90
}
91
//std::cout << "End of outer loop" <<std::endl;
92
93
m_outfile
<<
"Event "
<<
m_count
<<
" contains "
<<
m_chan
<<
" digits\n"
;
94
std::cout <<
"Event "
<<
m_count
<<
" contains "
<<
m_chan
<<
" digits\n"
;
95
96
mySort
aSort;
97
std::sort
(digitVector.begin(),digitVector.end(),aSort);
98
for
(
const
LArDigit
* digit : digitVector)
99
{
100
//if (digit->energy()==0)
101
//continue;
102
const
HWIdentifier
chid=digit->channelID();
//hardwareID();
103
const
HWIdentifier
febid=
m_onlineHelper
->feb_Id(chid);
104
std::cout <<
"FEB_ID: 0x"
<< std::hex << febid.
get_identifier32
().
get_compact
()
105
<<
" channel: "
<< std::dec <<
m_onlineHelper
->channel(chid)
106
<<
" ("
<<
m_onlineHelper
->channelInSlotMax(febid) <<
"/FEB), "
;
107
m_outfile
<<
"FEB_ID: 0x"
<< std::hex << febid.
get_compact
()
108
<<
" channel: "
<< std::dec <<
m_onlineHelper
->channel(chid)
109
<<
" ("
<<
m_onlineHelper
->channelInSlotMax(febid) <<
"/FEB), "
;
110
if
(!cabling->isOnlineConnected(chid))
111
{std::cout <<
"disconnected: \n"
;
112
m_outfile
<<
"disconnected: \n"
;
113
continue
;
114
}
115
const
Identifier
id
=cabling->cnvToIdentifier(chid);
116
//std::cout << "Compact onlineid=" << id.get_compact() << std::endl;
117
eta
=
m_emId
->eta(
id
);
118
phi
=
m_emId
->phi(
id
);
119
layer=
m_emId
->sampling(
id
);
120
//std::cout << "LArDigit #" << chid.get_compact();
121
if
(!
m_emId
->is_lar_em(
id
))
122
{std::cout <<
"Is not EM! \n"
<< std::endl;
123
m_outfile
<<
"Is not EM! \n"
<< std::endl;
124
continue
;
125
}
126
if
(
m_onlineHelper
->isEmEndcapOnline(chid))
127
{std::cout <<
"Endcap "
;
128
m_outfile
<<
"Endcap "
;
129
}
130
if
(
m_onlineHelper
->isEmBarrelOnline(chid))
131
{std::cout <<
"Barrel "
;
132
m_outfile
<<
"Barrel "
;
133
}
134
std::cout <<
" l/e/p= "
<< layer <<
"/"
<<
eta
<<
"/"
<<
phi
<<
":"
;
135
for
(
unsigned
int
i=0;i<digit->samples().
size
();i++)
136
std::cout <<
" "
<< digit->samples()[i];
137
std::cout <<
" G="
<< digit->gain() << std::endl;
138
139
m_outfile
<<
"l/e/p= "
<< layer <<
"/"
<<
eta
<<
"/"
<<
phi
<<
":"
;
140
for
(
unsigned
int
i=0;i<digit->samples().
size
();i++)
141
m_outfile
<<
" "
<< digit->samples()[i];
142
m_outfile
<<
" G="
<< digit->gain() << std::endl;
143
}
144
//std::cout << "Collection #" << ++nColl << " contains " << chan_coll->size() << " elementes." << std::endl;
145
std::cout <<
"Event "
<<
m_count
<<
" contains "
<<
m_chan
<<
" ("
<<digitVector.size() <<
") channels\n"
;
146
return
StatusCode::SUCCESS;
147
}
148
149
StatusCode
DumpLArDigits::finalize
()
150
{
151
m_outfile
.close();
152
ATH_MSG_INFO
(
"======== finalize DumpLArDigit ========"
);
153
return
StatusCode::SUCCESS;
154
}
155
156
bool
DumpLArDigits::mySort::operator()
(
const
LArDigit
*
a
,
const
LArDigit
* b)
157
{
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
DumpLArDigits.h
LArDigitContainer.h
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
size
size_t size() const
Number of registered mappings.
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
DataVector< LArDigit >::const_iterator
DataModel_detail::const_iterator< DataVector > const_iterator
Definition
DataVector.h:838
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
DumpLArDigits::mySort
Definition
DumpLArDigits.h:37
DumpLArDigits::mySort::operator()
bool operator()(const LArDigit *a, const LArDigit *b)
Definition
DumpLArDigits.cxx:156
DumpLArDigits::finalize
StatusCode finalize()
Definition
DumpLArDigits.cxx:149
DumpLArDigits::m_FileName
std::string m_FileName
Definition
DumpLArDigits.h:35
DumpLArDigits::m_emId
const LArEM_ID * m_emId
Definition
DumpLArDigits.h:33
DumpLArDigits::initialize
StatusCode initialize()
Definition
DumpLArDigits.cxx:28
DumpLArDigits::m_outfile
std::ofstream m_outfile
Definition
DumpLArDigits.h:34
DumpLArDigits::execute
StatusCode execute(const EventContext &ctx)
Execute method.
Definition
DumpLArDigits.cxx:51
DumpLArDigits::~DumpLArDigits
~DumpLArDigits()
Definition
DumpLArDigits.cxx:24
DumpLArDigits::DumpLArDigits
DumpLArDigits(const std::string &name, ISvcLocator *pSvcLocator)
Definition
DumpLArDigits.cxx:14
DumpLArDigits::m_chan
int m_chan
Definition
DumpLArDigits.h:30
DumpLArDigits::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition
DumpLArDigits.h:32
DumpLArDigits::m_count
int m_count
Definition
DumpLArDigits.h:30
DumpLArDigits::m_key
std::string m_key
Definition
DumpLArDigits.h:35
DumpLArDigits::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition
DumpLArDigits.h:29
HWIdentifier
Definition
HWIdentifier.h:13
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition
Identifier32.h:47
Identifier::get_compact
value_type get_compact() const
Get the compact id.
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
LArDigitContainer
Container class for LArDigit.
Definition
LArDigitContainer.h:24
LArDigit
Liquid Argon digit base class.
Definition
LArDigit.h:25
LArOnOffIdMapping
Definition
LArOnOffIdMapping.h:20
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