ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileRecUtils
src
TileCellFakeProb.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
AthenaKernel/errorcheck.h
"
6
7
#include "
CaloIdentifier/TileID.h
"
8
#include "
CaloIdentifier/CaloCell_ID.h
"
9
#include "
CaloEvent/CaloCell.h
"
10
11
#include "
TileIdentifier/TileHWID.h
"
12
#include "
TileConditions/TileCablingService.h
"
13
#include "
TileRecUtils/TileCellFakeProb.h
"
14
15
16
17
// Constructor:
18
19
TileCellFakeProb::TileCellFakeProb
(
const
std::string&
type
,
20
const
std::string& name,
const
IInterface* parent)
21
: base_class(
type
, name, parent)
22
,
m_caloID
(nullptr)
23
,
m_tileID
(nullptr)
24
,
m_tileHWID
(nullptr)
25
,
m_cabling
(nullptr)
26
{
27
28
}
29
30
StatusCode
TileCellFakeProb::initialize
() {
31
32
// Get the CaloCell_ID helper from the detector store
33
CHECK
( detStore()->retrieve(
m_caloID
,
"CaloCell_ID"
) );
34
35
// Get the TileID helper from the detector store
36
CHECK
( detStore()->retrieve(
m_tileID
,
"TileID"
) );
37
38
// Get the TileHWID helper from the detector store
39
CHECK
( detStore()->retrieve(
m_tileHWID
,
"TileHWID"
) );
40
41
ATH_CHECK
(
m_cablingSvc
.retrieve());
42
43
// Instantiate Cabling Svc to initialize pointers to helpers there
44
m_cabling
=
m_cablingSvc
->cablingService();
45
if
(
m_cabling
== 0) {
46
ATH_MSG_FATAL
(
" Cannot get instance of TileCablingService"
);
47
return
StatusCode::FAILURE;
48
}
49
50
// process properties from jobOptions
51
CHECK
(
createMiscalibratedCellList
() );
52
53
return
StatusCode::SUCCESS;
54
}
55
56
// Desctructor
57
TileCellFakeProb::~TileCellFakeProb
() {
58
}
59
60
// MakeCorrection: This is called with a pointer to the Cell Object.
61
double
TileCellFakeProb::wtCell
(
const
CaloCell
* theCell)
const
{
62
63
Identifier
id
= theCell->
ID
();
64
double
totalweight = 1.0;
// default weight
65
66
if
(
m_tileID
->is_tile(
id
)) {
67
std::map<Identifier, double>::const_iterator cur =
m_celllist
.find(
id
);
68
69
if
(cur !=
m_celllist
.end()) {
70
totalweight = (cur->second);
71
ATH_MSG_VERBOSE
(
"eta = "
<< theCell->
eta
()
72
<<
", phi = "
<< theCell->
phi
()
73
<<
", weight = "
<< totalweight );
74
}
75
}
76
77
return
totalweight;
78
}
79
80
StatusCode
TileCellFakeProb::createMiscalibratedCellList
() {
81
82
// ros 1 to 4 ReadOutSystem number ( 1,2 = pos/neg Barrel (side A/C)
83
// 3,4 = pos/neg Ext.Barrel (side A/C) )
84
// drawer 0 to 63 64 drawers (modules) in one cylinder (phi-slices)
85
// channel 0 to 47 channel number in the drawer
86
// adc 0 to 1 ADC number for the channel (0 = low gain, 1 = high gain)
87
88
// read in dead drawers from jopOptions
89
std::vector<std::string>::const_iterator itrStringID =
m_deadDrawerInput
.begin();
90
for
(; itrStringID !=
m_deadDrawerInput
.end(); ++itrStringID) {
91
std::string theString = *itrStringID;
92
std::stringstream is;
93
is << theString << std::endl;
94
95
int
iros, idrawer;
96
double
weight;
97
is >> iros >> idrawer >> weight;
98
99
ATH_MSG_DEBUG
(
"scale ROS "
<< iros
100
<<
" Drawer "
<< idrawer
101
<<
" with weight="
<< weight );
102
103
// loop over all TileCal cells and check if they belong to dead drawers
104
int
sub_calo_num = (int)
CaloCell_ID::TILE
;
105
IdentifierHash
hmin,
hmax
;
106
m_caloID
->calo_cell_hash_range(sub_calo_num, hmin,
hmax
);
107
108
int
nCells = 0;
109
for
(
unsigned
int
i = hmin; i <
hmax
; ++i) {
110
Identifier
id
=
m_caloID
->cell_id((
IdentifierHash
) i);
111
HWIdentifier
myhwid =
m_cabling
->s2h_drawer_id(
id
);
112
int
ros =
m_tileHWID
->ros(myhwid);
113
int
drawer =
m_tileHWID
->drawer(myhwid);
114
115
if
((ros == iros) && (drawer == idrawer)) {
116
m_celllist
[id] = weight;
117
++nCells;
118
}
119
}
120
ATH_MSG_DEBUG
(
"looped over "
<< (
hmax
- hmin)
121
<<
" cells, "
<< nCells <<
" cells matched"
);
122
}
123
124
return
StatusCode::SUCCESS;
125
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CaloCell.h
CaloCell_ID.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
TileCablingService.h
TileCellFakeProb.h
TileHWID.h
TileID.h
CaloCell_Base_ID::TILE
@ TILE
Definition
CaloCell_Base_ID.h:45
CaloCell
Data object for each calorimeter readout cell.
Definition
CaloCell.h:57
CaloCell::phi
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition
CaloCell.h:375
CaloCell::eta
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition
CaloCell.h:382
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition
CaloCell.h:295
HWIdentifier
Definition
HWIdentifier.h:13
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
TileCellFakeProb::m_deadDrawerInput
Gaudi::Property< std::vector< std::string > > m_deadDrawerInput
Property: List of "dead" drawers.
Definition
TileCellFakeProb.h:61
TileCellFakeProb::wtCell
virtual double wtCell(const CaloCell *theCell) const override
implementation of ICellWeightTool weighting method
Definition
TileCellFakeProb.cxx:61
TileCellFakeProb::TileCellFakeProb
TileCellFakeProb(const std::string &type, const std::string &name, const IInterface *parent)
Standard constructor.
Definition
TileCellFakeProb.cxx:19
TileCellFakeProb::initialize
virtual StatusCode initialize() override
AlgTool Initialization.
Definition
TileCellFakeProb.cxx:30
TileCellFakeProb::m_cablingSvc
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
Definition
TileCellFakeProb.h:57
TileCellFakeProb::m_celllist
std::map< Identifier, double > m_celllist
List of "dead" cells and their weights.
Definition
TileCellFakeProb.h:74
TileCellFakeProb::createMiscalibratedCellList
StatusCode createMiscalibratedCellList()
Reads in properties and creates list of miscalibrated cells.
Definition
TileCellFakeProb.cxx:80
TileCellFakeProb::~TileCellFakeProb
virtual ~TileCellFakeProb()
Standard destructor.
Definition
TileCellFakeProb.cxx:57
TileCellFakeProb::m_cabling
const TileCablingService * m_cabling
Pointer to TileCablingService.
Definition
TileCellFakeProb.h:71
TileCellFakeProb::m_tileID
const TileID * m_tileID
Pointer to TileID.
Definition
TileCellFakeProb.h:67
TileCellFakeProb::m_tileHWID
const TileHWID * m_tileHWID
Pointer to TileHWID.
Definition
TileCellFakeProb.h:69
TileCellFakeProb::m_caloID
const CaloCell_ID * m_caloID
Pointer to CaloCellID.
Definition
TileCellFakeProb.h:65
hmax
double hmax(TH1 *&h)
Definition
listroot.cxx:115
Identifier
Definition
IdentifierFieldParser.cxx:14
type
Generated on
for ATLAS Offline Software by
1.17.0