ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileRec
src
TileTBHitToNtuple.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
//*****************************************************************************
6
// Filename : TileTBHitToNtuple.cxx
7
// Author : Anna
8
// Created : June, 2004
9
//
10
// DESCRIPTION:
11
// Implement the algorithm
12
//
13
// HISTORY:
14
//
15
// BUGS:
16
//
17
//*****************************************************************************
18
19
//Gaudi Includes
20
#include "GaudiKernel/INTupleSvc.h"
21
#include "GaudiKernel/IDataProviderSvc.h"
22
#include "GaudiKernel/SmartDataPtr.h"
23
24
//Atlas include
25
#include "
AthenaKernel/errorcheck.h
"
26
#include "
EventContainers/SelectAllObject.h
"
27
28
29
//TileCalo include
30
#include "
CaloIdentifier/TileTBID.h
"
31
#include "
TileEvent/TileHitContainer.h
"
32
#include "
TileRec/TileTBHitToNtuple.h
"
33
#include "
TileSimEvent/TileHitVector.h
"
34
35
const
int
max_chan
=99999;
36
37
// Constructor & deconstructor
38
TileTBHitToNtuple::TileTBHitToNtuple
(
const
std::string& name, ISvcLocator* pSvcLocator)
39
:
AthAlgorithm
(name, pSvcLocator)
40
,
m_ntuplePtr
(0)
41
,
m_ntupleID
(
"h31"
)
42
,
m_ntupleLoc
(
"/FILE1/TileRec"
)
43
,
m_hitContainer
(
"TileTBHits"
)
//name of hit vector for ancillary detectors
44
,
m_tileTBID
(0)
45
{
46
declareProperty
(
"TileHitContainer"
,
m_hitContainer
);
47
declareProperty
(
"NTupleLoc"
,
m_ntupleLoc
);
48
declareProperty
(
"NTupleID"
,
m_ntupleID
);
49
}
50
51
TileTBHitToNtuple::~TileTBHitToNtuple
()
52
{
53
}
54
55
// Alg standard interface function
56
StatusCode
TileTBHitToNtuple::initialize
()
57
{
58
59
ATH_MSG_INFO
(
"Initialization started"
);
60
61
// retrieve TileTBID helper from det store
62
63
CHECK
(
detStore
()->retrieve(
m_tileTBID
) );
64
65
m_ntupleLoc
=
"/NTUPLES"
+
m_ntupleLoc
;
66
67
SmartDataPtr<NTuple::Directory> DirPtr(
ntupleSvc
(),
m_ntupleLoc
);
68
if
(!DirPtr) DirPtr =
ntupleSvc
()->createDirectory(
m_ntupleLoc
);
69
if
(!DirPtr) {
70
ATH_MSG_ERROR
(
"Invalid Ntuple Directory: "
);
71
return
StatusCode::FAILURE;
72
}
73
m_ntuplePtr
=
ntupleSvc
()->book(DirPtr.ptr(),
m_ntupleID
,
74
CLID_ColumnWiseTuple,
"TileTBHit-Ntuple"
);
75
if
(!
m_ntuplePtr
) {
76
77
std::string ntupleCompleteID=
m_ntupleLoc
+
"/"
+
m_ntupleID
;
78
79
NTuplePtr nt(
ntupleSvc
(),ntupleCompleteID);
80
if
(!nt) {
81
ATH_MSG_ERROR
(
"Failed to book or to retrieve ntuple "
82
<< ntupleCompleteID );
83
return
StatusCode::FAILURE;
84
}
else
{
85
ATH_MSG_INFO
(
"Reaccessing ntuple "
<< ntupleCompleteID );
86
m_ntuplePtr
= nt;
87
}
88
}
89
90
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/nchan"
,
m_nchan
,0,
max_chan
) );
91
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/energy"
,
m_nchan
,
m_energy
) );
92
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/time"
,
m_nchan
,
m_time
) );
93
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/type"
,
m_nchan
,
m_type
,-1,6) );
94
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/module"
,
m_nchan
,
m_module
,0,7) );
95
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/channel"
,
m_nchan
,
m_channel
,0,15) );
96
CHECK
(
m_ntuplePtr
->addItem(
"TileTBHit/totalE"
,
m_tolE
) );
97
98
ATH_MSG_INFO
(
"Initialization completed"
);
99
return
StatusCode::SUCCESS;
100
}
101
102
StatusCode
TileTBHitToNtuple::execute
(
const
EventContext&
/*ctx*/
)
103
{
104
105
// step1: read Hit for ancillary
106
const
TileHitVector
* HitCnt =
nullptr
;
107
CHECK
(
evtStore
()->retrieve(HitCnt,
m_hitContainer
) );
108
109
m_nchan
=0;
110
m_tolE
=0.0;
111
for
(
const
TileHit
& cinp : *HitCnt) {
112
m_tolE
+=cinp.energy();
113
m_energy
[
m_nchan
]=cinp.energy();
114
m_time
[
m_nchan
]=cinp.time();
115
116
Identifier
id
=cinp.identify();
117
m_type
[
m_nchan
]=
m_tileTBID
->type(
id
);
118
m_channel
[
m_nchan
]=
m_tileTBID
->channel(
id
);
119
m_module
[
m_nchan
]=
m_tileTBID
->module(
id
);
120
121
m_nchan
++;
122
123
if
(
m_nchan
>=
max_chan
)
break
;
124
}
125
126
// step3: commit ntuple
127
CHECK
(
ntupleSvc
()->writeRecord(
m_ntuplePtr
) );
128
129
// Execution completed.
130
ATH_MSG_DEBUG
(
"execute() completed successfully"
);
131
return
StatusCode::SUCCESS;
132
}
133
134
StatusCode
TileTBHitToNtuple::finalize
()
135
{
136
ATH_MSG_INFO
(
"finalize() successfully"
);
137
return
StatusCode::SUCCESS;
138
}
139
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_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
TileTBID.h
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:422
SelectAllObject.h
ntupleSvc
INTupleSvc * ntupleSvc()
Definition
ServiceAccessor.h:14
max_chan
const int max_chan
Definition
TileCellIDCToNtuple.cxx:35
TileHitContainer.h
TileHitVector.h
TileHitVector
AtlasHitsVector< TileHit > TileHitVector
Definition
TileHitVector.h:28
TileTBHitToNtuple.h
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
TileHit
Definition
TileSimEvent/TileSimEvent/TileHit.h:30
TileTBHitToNtuple::m_channel
NTuple::Array< int > m_channel
Definition
TileTBHitToNtuple.h:61
TileTBHitToNtuple::m_ntupleLoc
std::string m_ntupleLoc
Definition
TileTBHitToNtuple.h:52
TileTBHitToNtuple::m_time
NTuple::Array< float > m_time
Definition
TileTBHitToNtuple.h:58
TileTBHitToNtuple::m_tileTBID
const TileTBID * m_tileTBID
Definition
TileTBHitToNtuple.h:66
TileTBHitToNtuple::m_nchan
NTuple::Item< int > m_nchan
Definition
TileTBHitToNtuple.h:54
TileTBHitToNtuple::m_ntuplePtr
NTuple::Tuple * m_ntuplePtr
Definition
TileTBHitToNtuple.h:50
TileTBHitToNtuple::initialize
StatusCode initialize()
Definition
TileTBHitToNtuple.cxx:56
TileTBHitToNtuple::m_hitContainer
std::string m_hitContainer
Definition
TileTBHitToNtuple.h:64
TileTBHitToNtuple::execute
StatusCode execute(const EventContext &ctx)
Execute method.
Definition
TileTBHitToNtuple.cxx:102
TileTBHitToNtuple::m_energy
NTuple::Array< float > m_energy
Definition
TileTBHitToNtuple.h:57
TileTBHitToNtuple::m_type
NTuple::Array< int > m_type
Definition
TileTBHitToNtuple.h:60
TileTBHitToNtuple::finalize
StatusCode finalize()
Definition
TileTBHitToNtuple.cxx:134
TileTBHitToNtuple::m_ntupleID
std::string m_ntupleID
Definition
TileTBHitToNtuple.h:51
TileTBHitToNtuple::m_module
NTuple::Array< int > m_module
Definition
TileTBHitToNtuple.h:62
TileTBHitToNtuple::~TileTBHitToNtuple
virtual ~TileTBHitToNtuple()
Definition
TileTBHitToNtuple.cxx:51
TileTBHitToNtuple::m_tolE
NTuple::Item< double > m_tolE
Definition
TileTBHitToNtuple.h:55
TileTBHitToNtuple::TileTBHitToNtuple
TileTBHitToNtuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition
TileTBHitToNtuple.cxx:38
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0