ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloRec
src
CaloTowerStoreTestAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
10
11
#undef NDEBUG
12
13
#include "
CaloTowerStoreTestAlg.h
"
14
#include "
CaloUtils/CaloTowerStore.h
"
15
#include <iostream>
16
#include <cmath>
17
#include <cassert>
18
19
23
CaloTowerStoreTestAlg::CaloTowerStoreTestAlg
(
const
std::string& name,
24
ISvcLocator* pSvcLocator)
25
:
AthAlgorithm
(name, pSvcLocator)
26
{
27
}
28
29
30
StatusCode
CaloTowerStoreTestAlg::initialize
()
31
{
32
ATH_CHECK
(
m_caloMgrKey
.initialize());
33
return
StatusCode::SUCCESS;
34
}
35
36
void
37
CaloTowerStoreTestAlg::iterate_full
(
const
CaloTowerStore
& store,
38
test_tows_t
& tows)
39
{
40
CaloTowerStore::tower_iterator
it = store.towers();
41
size_t
sz
= store.size();
42
tows.resize (
sz
);
43
for
(
size_t
i = 0; i <
sz
; ++i, ++it) {
44
CaloTowerStore::cell_iterator
cit = it.firstCell();
45
CaloTowerStore::cell_iterator
cit_end = it.lastCell();
46
for
(; cit != cit_end; ++cit)
47
tows[i].push_back (std::make_pair (cit.
hash
(), cit.
weight
()));
48
}
49
}
50
51
52
void
53
CaloTowerStoreTestAlg::iterate_subseg
(
const
CaloTowerStore
& store,
54
const
CaloTowerSeg::SubSeg
& subseg,
55
test_tows_t
& tows)
56
{
57
CaloTowerStore::tower_subseg_iterator
it = store.towers(subseg);
58
size_t
sz
= subseg.
size
();
59
tows.resize (
sz
);
60
for
(
size_t
i = 0; i <
sz
; ++i, ++it) {
61
size_t
itower = it.itower();
62
CaloTowerStore::cell_iterator
cit = it.firstCell();
63
CaloTowerStore::cell_iterator
cit_end = it.lastCell();
64
for
(; cit != cit_end; ++cit)
65
tows[itower].push_back (std::make_pair (cit.
hash
(), cit.
weight
()));
66
}
67
}
68
69
70
void
71
CaloTowerStoreTestAlg::dump_tows
(
const
test_tows_t
& t)
72
{
73
for
(
size_t
i = 0; i < t.size(); i++) {
74
const
test_tow_t
& tt = t[i];
75
std::cout <<
" "
<< i <<
": "
;
76
for
(
size_t
j = 0; j < tt.size(); j++)
77
std::cout << tt[j].first <<
"/"
<< tt[j].second <<
" "
;
78
std::cout <<
"\n"
;
79
}
80
}
81
82
void
83
CaloTowerStoreTestAlg::test_subseg_iter
(
const
CaloDetDescrManager
* caloDDM,
84
const
CaloTowerStore
& store1,
85
const
std::vector<CaloCell_ID::SUBCALO>& calos,
86
const
CaloTowerSeg::SubSeg
& subseg)
87
{
88
CaloTowerSeg
seg = subseg.
segmentation
();
89
CaloTowerStore
store2;
90
if
(!store2.
buildLookUp
(*caloDDM, seg, calos)) {
91
std::abort();
92
}
93
94
assert (subseg.
size
() == store2.
size
());
95
96
test_tows_t
tows_full;
97
iterate_full
(store2, tows_full);
98
99
test_tows_t
tows_subseg;
100
iterate_subseg
(store1, subseg, tows_subseg);
101
102
assert (tows_full == tows_subseg);
103
}
104
105
106
void
CaloTowerStoreTestAlg::test1
()
107
{
108
std::cout <<
"test1\n"
;
109
110
// Cannot do this in initialize: see ATLASRECTS-5012
111
SG::ReadCondHandle<CaloDetDescrManager>
caloMgrHandle{
m_caloMgrKey
};
112
if
(!caloMgrHandle.
isValid
()) std::abort();
113
114
const
CaloDetDescrManager
* caloDDM = *caloMgrHandle;
115
116
CaloTowerSeg
seg (50, 64, -2.5, 2.5);
117
std::vector<CaloCell_ID::SUBCALO> calos;
118
calos.push_back (
CaloCell_ID::LAREM
);
119
calos.push_back (
CaloCell_ID::LARHEC
);
120
calos.push_back (
CaloCell_ID::TILE
);
121
CaloTowerStore
store;
122
if
(!store.buildLookUp (*caloDDM, seg, calos)) {
123
std::abort();
124
}
125
126
CaloTowerSeg::SubSeg
subseg1 = seg.
subseg
(0.7, 0.3, -0.2, 0.4);
127
test_subseg_iter
(caloDDM, store, calos, subseg1);
128
129
CaloTowerSeg::SubSeg
subseg2 = seg.
subseg
(0.7, 0.3, 3.1, 0.4);
130
test_subseg_iter
(caloDDM, store, calos, subseg2);
131
}
132
133
137
StatusCode
CaloTowerStoreTestAlg::execute
(
const
EventContext&
/*ctx*/
)
138
{
139
test1
();
140
return
StatusCode::SUCCESS;
141
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
CaloTowerStoreTestAlg.h
Regression test for CaloTowerStore.
CaloTowerStore.h
sz
static Double_t sz
Definition
LArPhysWaveHECTool.cxx:37
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
CaloCell_Base_ID::LAREM
@ LAREM
Definition
CaloCell_Base_ID.h:45
CaloCell_Base_ID::TILE
@ TILE
Definition
CaloCell_Base_ID.h:45
CaloCell_Base_ID::LARHEC
@ LARHEC
Definition
CaloCell_Base_ID.h:45
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition
CaloDetDescrManager.h:469
CaloTowerSeg::SubSeg
A rectangular window within the segmentation.
Definition
CaloTowerSeg.h:202
CaloTowerSeg::SubSeg::size
size_t size() const
The number of towers in this window.
Definition
CaloTowerSeg.h:591
CaloTowerSeg::SubSeg::segmentation
CaloTowerSeg segmentation() const
Return a new segmentation object corresponding to this window.
Definition
CaloTowerSeg.cxx:85
CaloTowerSeg
Data object stores CaloTower segmentation.
Definition
CaloTowerSeg.h:37
CaloTowerSeg::subseg
SubSeg subseg(double eta, double deta, double phi, double dphi) const
Return a window within the current segmentation.
Definition
CaloTowerSeg.cxx:23
CaloTowerStoreTestAlg::CaloTowerStoreTestAlg
CaloTowerStoreTestAlg(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
CaloTowerStoreTestAlg.cxx:23
CaloTowerStoreTestAlg::test_tow_t
std::vector< std::pair< unsigned, double > > test_tow_t
Definition
CaloTowerStoreTestAlg.h:45
CaloTowerStoreTestAlg::dump_tows
static void dump_tows(const test_tows_t &t)
Definition
CaloTowerStoreTestAlg.cxx:71
CaloTowerStoreTestAlg::iterate_subseg
static void iterate_subseg(const CaloTowerStore &store, const CaloTowerSeg::SubSeg &subseg, test_tows_t &tows)
Definition
CaloTowerStoreTestAlg.cxx:53
CaloTowerStoreTestAlg::test1
void test1()
Definition
CaloTowerStoreTestAlg.cxx:106
CaloTowerStoreTestAlg::test_subseg_iter
static void test_subseg_iter(const CaloDetDescrManager *, const CaloTowerStore &, const std::vector< CaloCell_ID::SUBCALO > &, const CaloTowerSeg::SubSeg &)
Definition
CaloTowerStoreTestAlg.cxx:83
CaloTowerStoreTestAlg::iterate_full
static void iterate_full(const CaloTowerStore &store, test_tows_t &tows)
Definition
CaloTowerStoreTestAlg.cxx:37
CaloTowerStoreTestAlg::test_tows_t
std::vector< test_tow_t > test_tows_t
Definition
CaloTowerStoreTestAlg.h:46
CaloTowerStoreTestAlg::execute
virtual StatusCode execute(const EventContext &ctx) override
Standard Gaudi execute method.
Definition
CaloTowerStoreTestAlg.cxx:137
CaloTowerStoreTestAlg::initialize
virtual StatusCode initialize() override
Standard Gaudi initialize method.
Definition
CaloTowerStoreTestAlg.cxx:30
CaloTowerStoreTestAlg::m_caloMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Definition
CaloTowerStoreTestAlg.h:62
CaloTowerStore::cell_iterator
Definition
CaloTowerStore.h:227
CaloTowerStore::cell_iterator::weight
double weight() const
Definition
CaloTowerStore.h:261
CaloTowerStore::cell_iterator::hash
unsigned int hash()
Definition
CaloTowerStore.h:252
CaloTowerStore::tower_iterator
Definition
CaloTowerStore.h:292
CaloTowerStore
Definition
CaloTowerStore.h:157
CaloTowerStore::size
size_t size() const
Definition
CaloTowerStore.h:354
CaloTowerStore::buildLookUp
bool buildLookUp(const CaloDetDescrManager &theManager, const CaloTowerSeg &theTowerSeg, const std::vector< CaloCell_ID::SUBCALO > &theCalos)
setup trigger
Definition
CaloTowerStore.cxx:75
CaloTowerStore::tower_subseg_iterator
CaloTowerSeg::SubSegIterator< tower_iterator > tower_subseg_iterator
Definition
CaloTowerStore.h:337
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
SG::ReadCondHandle::isValid
bool isValid()
Definition
ReadCondHandle.h:205
Generated on
for ATLAS Offline Software by
1.17.0