ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloCnv
CaloJiveXML
src
BadTileRetriever.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
BadTileRetriever.h
"
6
7
#include "
AthenaKernel/Units.h
"
8
9
#include "
EventContainers/SelectAllObject.h
"
10
11
#include "
CaloIdentifier/CaloCell_ID.h
"
12
#include "CaloDetDescr/CaloDetDescrElement.h"
13
#include "
TileEvent/TileCell.h
"
14
#include "
TileEvent/TileDigitsContainer.h
"
15
#include "
TileEvent/TileRawChannelContainer.h
"
16
#include "
TileEvent/TileCellContainer.h
"
17
#include "
Identifier/HWIdentifier.h
"
18
#include "
CaloIdentifier/TileID.h
"
19
#include "
TileIdentifier/TileHWID.h
"
20
#include "
TileIdentifier/TileTBID.h
"
21
#include "
TileConditions/TileInfo.h
"
22
#include "
TileConditions/TileCablingService.h
"
23
#include "
TileConditions/ITileBadChanTool.h
"
24
#include "
TileConditions/TileCondToolEmscale.h
"
25
#include "
TileCalibBlobObjs/TileCalibUtils.h
"
26
27
using
Athena::Units::GeV;
28
29
namespace
JiveXML
{
30
34
35
StatusCode
BadTileRetriever::initialize
() {
36
ATH_MSG_DEBUG
(
"Initialising Tool"
);
37
ATH_CHECK
( detStore()->
retrieve
(
m_calocell_id
,
"CaloCell_ID"
) );
38
ATH_CHECK
(
m_sgKey
.initialize());
39
return
StatusCode::SUCCESS;
40
}
41
45
StatusCode
BadTileRetriever::retrieve
(ToolHandle<IFormatTool> &FormatTool) {
46
ATH_MSG_DEBUG
(
"in retrieve()"
);
47
SG::ReadHandle<CaloCellContainer>
cellContainer(
m_sgKey
);
48
if
(!cellContainer.
isValid
()){
49
ATH_MSG_WARNING
(
"Could not retrieve Calorimeter Cells "
);
50
}
else
{
51
if
(
m_tile
){
52
DataMap
data =
getBadTileData
(&(*cellContainer));
53
ATH_CHECK
( FormatTool->AddToEvent(
dataTypeName
(),
m_sgKey
.key(), &data) );
54
ATH_MSG_DEBUG
(
"Bad Tile retrieved"
);
55
}
56
}
57
//Tile cells retrieved okay
58
return
StatusCode::SUCCESS;
59
}
60
61
66
const
DataMap
BadTileRetriever::getBadTileData
(
const
CaloCellContainer
* cellContainer) {
67
ATH_MSG_DEBUG
(
"getBadTileData()"
);
68
char
rndStr[30];
69
DataMap
DataMap
;
70
DataVect
phi
;
phi
.reserve(cellContainer->
size
());
71
DataVect
eta
;
eta
.reserve(cellContainer->
size
());
72
DataVect
idVec; idVec.reserve(cellContainer->
size
());
73
DataVect
energyVec; energyVec.reserve(cellContainer->
size
());
74
m_sub
.clear();
75
//Loop Over CaloCellContainer to retrieve TileCell information
76
CaloCellContainer::const_iterator
it1 = cellContainer->
beginConstCalo
(
CaloCell_ID::TILE
);
77
CaloCellContainer::const_iterator
it2 = cellContainer->
endConstCalo
(
CaloCell_ID::TILE
);
78
if
(
m_doBadTile
==
true
) {
79
double
energyGeV;
80
//int cellInd;
81
ATH_MSG_DEBUG
(
"Start iterator loop over cells"
);
82
for
(;it1!=it2;++it1){
83
if
( !(*it1)->badcell() )
continue
;
84
Identifier
cellid = (*it1)->ID();
85
calcTILELayerSub
(cellid);
86
energyGeV = (*it1)->energy()*(1./
GeV
);
87
energyVec.emplace_back( gcvt( energyGeV,
m_cellEnergyPrec
, rndStr) );
88
idVec.emplace_back( (Identifier::value_type)(*it1)->ID().get_compact() );
89
phi
.emplace_back((*it1)->phi());
90
eta
.emplace_back((*it1)->eta());
91
}
// end cell iterator
92
}
// doBadTile
93
94
// write values into DataMap
95
const
auto
nEntries =
phi
.size();
96
DataMap
[
"phi"
] = std::move(
phi
);
97
DataMap
[
"eta"
] = std::move(
eta
);
98
DataMap
[
"sub"
] = std::move(
m_sub
);
99
DataMap
[
"id"
] = std::move(idVec);
100
DataMap
[
"energy"
] = std::move(energyVec);
101
//Be verbose
102
ATH_MSG_DEBUG
(
dataTypeName
() <<
" retrieved with "
<< nEntries <<
" entries"
);
103
//All collections retrieved okay
104
return
DataMap
;
105
}
// getTileData
106
107
//-----------------------------------------------------------------------------------------------------
108
109
void
BadTileRetriever::calcTILELayerSub
(
Identifier
& cellid)
110
{
111
if
(
m_calocell_id
->is_tile_barrel(cellid))
112
{
113
if
(
m_calocell_id
->is_tile_negative(cellid))
114
m_sub
.emplace_back(2);
115
else
116
m_sub
.emplace_back(3);
117
}
118
else
if
(
m_calocell_id
->is_tile_extbarrel(cellid))
119
{
120
if
(
m_calocell_id
->is_tile_negative(cellid))
121
m_sub
.emplace_back(0);
122
else
123
m_sub
.emplace_back(5);
124
}
125
//else in ITC or scint
126
else
127
{
128
if
(
m_calocell_id
->is_tile_negative(cellid))
129
m_sub
.emplace_back(1);
130
else
131
m_sub
.emplace_back(4);
132
}
133
}
134
135
//--------------------------------------------------------------------------
136
137
}
// JiveXML namespace
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_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
BadTileRetriever.h
CaloCell_ID.h
HWIdentifier.h
ITileBadChanTool.h
GeV
#define GeV
Definition
PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
SelectAllObject.h
TileCablingService.h
TileCalibUtils.h
TileTBID.h
TileCellContainer.h
TileCell.h
TileCondToolEmscale.h
TileDigitsContainer.h
TileHWID.h
TileID.h
TileInfo.h
TileRawChannelContainer.h
Units.h
Wrapper to avoid constant divisions when using units.
CaloCellContainer
Container class for CaloCell.
Definition
CaloCellContainer.h:55
CaloCellContainer::beginConstCalo
CaloCellContainer::const_iterator beginConstCalo(CaloCell_ID::SUBCALO caloNum) const
get const iterators on cell of just one calo
Definition
CaloCellContainer.cxx:119
CaloCellContainer::endConstCalo
CaloCellContainer::const_iterator endConstCalo(CaloCell_ID::SUBCALO caloNum) const
Definition
CaloCellContainer.cxx:133
CaloCell_Base_ID::TILE
@ TILE
Definition
CaloCell_Base_ID.h:45
DataVector< CaloCell >::const_iterator
DataModel_detail::const_iterator< DataVector > const_iterator
Definition
DataVector.h:838
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
JiveXML::BadTileRetriever::m_sgKey
SG::ReadHandleKey< CaloCellContainer > m_sgKey
Definition
BadTileRetriever.h:55
JiveXML::BadTileRetriever::m_doBadTile
Gaudi::Property< bool > m_doBadTile
Definition
BadTileRetriever.h:59
JiveXML::BadTileRetriever::m_calocell_id
const CaloCell_ID * m_calocell_id
Definition
BadTileRetriever.h:53
JiveXML::BadTileRetriever::calcTILELayerSub
void calcTILELayerSub(Identifier &)
Definition
BadTileRetriever.cxx:109
JiveXML::BadTileRetriever::retrieve
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool) override
Retrieve all the data.
Definition
BadTileRetriever.cxx:45
JiveXML::BadTileRetriever::m_sub
DataVect m_sub
Definition
BadTileRetriever.h:61
JiveXML::BadTileRetriever::dataTypeName
virtual std::string dataTypeName() const override
Return the name of the data type.
Definition
BadTileRetriever.h:46
JiveXML::BadTileRetriever::initialize
virtual StatusCode initialize() override
Default AthAlgTool methods.
Definition
BadTileRetriever.cxx:35
JiveXML::BadTileRetriever::m_tile
Gaudi::Property< bool > m_tile
Definition
BadTileRetriever.h:58
JiveXML::BadTileRetriever::getBadTileData
const DataMap getBadTileData(const CaloCellContainer *cellContainer)
Retrieve Tile bad cell location and details.
Definition
BadTileRetriever.cxx:66
JiveXML::BadTileRetriever::m_cellEnergyPrec
Gaudi::Property< int > m_cellEnergyPrec
Definition
BadTileRetriever.h:57
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Identifier
Definition
IdentifierFieldParser.cxx:14
JiveXML
This header is shared inbetween the C-style server thread and the C++ Athena ServerSvc.
Definition
BadLArRetriever.cxx:22
JiveXML::DataMap
std::map< std::string, DataVect > DataMap
Definition
DataType.h:59
JiveXML::DataVect
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
Definition
DataType.h:58
Generated on
for ATLAS Offline Software by
1.17.0