ATLAS Offline Software
Loading...
Searching...
No Matches
IdDictCnvTest.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5/***************************************************************************
6 IdDict converter package
7 -----------------------------------------
8 ***************************************************************************/
9
10#include "IdDictCnvTest.h"
11
12// Id-related includes
14#include "IdDict/IdDictMgr.h"
16#include "Identifier/Range.h"
20
21// Athena-related includes
23#include "GaudiKernel/MsgStream.h"
24#include "Gaudi/Property.h"
25#include "GaudiKernel/IChronoStatSvc.h"
26
27
29
30void
31IdDictCnvTest::tab (size_t level) const
32{
33 for (size_t i = 0; i < level; ++i) msg() << " ";
34}
35
37// CONSTRUCTOR:
39
40IdDictCnvTest::IdDictCnvTest(const std::string& name, ISvcLocator* pSvcLocator)
41 :
42 AthAlgorithm(name, pSvcLocator)
43{}
44
46// DESTRUCTOR:
48
51
53// INITIALIZE:
54// The initialize method will create all the required algorithm objects
55// Note that it is NOT NECESSARY to run the initialize of individual
56// sub-algorithms. The framework takes care of it.
58
59StatusCode
61{
62 ATH_MSG_INFO ( "Start initialization" );
63
64 const IdDictManager* idDictMgr = nullptr;
65 ATH_CHECK( detStore()->retrieve(idDictMgr, "IdDict") );
66 ATH_MSG_DEBUG ( " Found the IdDictManager. " );
67 ATH_MSG_DEBUG ( " Tag is " << idDictMgr->manager()->tag() );
68
70
71 int n = 0;
72
73 if (dv.empty()) {
74 // No dicts found
75 ATH_MSG_ERROR ( "No dictionaries found!" );
76 return StatusCode::FAILURE;
77 }
78
79
80 for (const IdDictDictionary* dictionary : dv) {
81 ATH_MSG_INFO( "---- " << n << " ----------------------------" );
82 std::string version = ("" != dictionary->version()) ? dictionary->version() : "default";
83 ATH_MSG_INFO ( "Dictionary " << dictionary->name()
84 << " version " << version );
85
86 if(dictionary->verify()) {
87 ATH_MSG_INFO( "Dictionary verification is OK" );
88 }
89 else {
90 ATH_MSG_FATAL( "Dictionary verification has failed: "
91 << dictionary->name() << " multirange: "
92 << (std::string)dictionary->build_multirange() );
93 return StatusCode::FAILURE;
94 }
95
96
97// std::vector<IdDictRegion*>::const_iterator rit;
98// for (rit = dictionary->m_regions.begin (); rit != dictionary->m_regions.end (); ++rit) {
99// const IdDictRegion& region = *(*rit);
100
101// log << MSG::DEBUG
102// << "region #" << region.m_index
103// << endmsg;
104
105// std::vector <IdDictFieldImplementation>::const_iterator fit;
106
107// size_t width = 0;
108
109// for (fit = region.m_implementation.begin ();
110// fit != region.m_implementation.end ();
111// ++fit) {
112// const IdDictFieldImplementation& impl = *fit;
113
114// size_t w = impl.range()->m_field->m_name.size ();
115
116// if (w > width) width = w;
117// }
118
119// int bits = 0;
120
121// for (fit = region.m_implementation.begin ();
122// fit != region.m_implementation.end ();
123// ++fit) {
124// const IdDictFieldImplementation& impl = *fit;
125
126// size_t w = impl.range()->m_field->m_name.size ();
127
128// log << MSG::DEBUG
129// << " implement field #" << impl.range()->m_field->m_index <<
130// " " << impl.range()->m_field->m_name;
131
132// tab (width - w);
133
134// // int index = impl.field();
135// // std::string label = impl.range()->m_field->labels[index]->m_name;
136// // std::cout << " name " << label << " ";
137
138// log << " -> " << (std::string) impl.field()
139// << "/" << (std::string) impl.ored_field()
140// << " (" << impl.bits() << " bits)"
141// << endmsg;
142
143// bits += impl.bits();
144// }
145
146// Range range = region.build_range ();
147
148// log << MSG::DEBUG
149// << " -> " << (std::string) range <<
150// " (cardinality=" << range.cardinality () << ")" <<
151// " (" << bits << " bits)"
152// << endmsg;
153// }
154// }
155 }
156
157
158 ATH_MSG_DEBUG ( " Get AtlasDetectorID. " );
159 const AtlasDetectorID* atlasID = nullptr;
160 // Access AtlasID from detector store
161 ATH_CHECK( detStore()->retrieve(atlasID, "AtlasID") );
162 ATH_MSG_DEBUG ( " Found the AtlasDetectorID. " );
163
164 ATH_MSG_DEBUG ( " Begin tests for AtlasDetectorID. " );
165 Identifier id = atlasID->indet();
166 ATH_MSG_DEBUG ( " is indet " << atlasID->show_to_string(id)
167 << " " << atlasID->is_indet(id) );
168 ATH_MSG_DEBUG ( " is sct " << atlasID->show_to_string(id)
169 << " " << atlasID->is_sct(id) );
170 ATH_MSG_DEBUG ( " is lar " << atlasID->show_to_string(id)
171 << " " << atlasID->is_lar(id) );
172 ATH_MSG_DEBUG ( " is muon " << atlasID->show_to_string(id)
173 << " " << atlasID->is_muon(id) );
174 id = atlasID->trt();
175 ATH_MSG_DEBUG ( " is indet " << atlasID->show_to_string(id)
176 << " " << atlasID->is_indet(id) );
177 ATH_MSG_DEBUG ( " is sct " << atlasID->show_to_string(id)
178 << " " << atlasID->is_sct(id) );
179 ATH_MSG_DEBUG ( " is trt " << atlasID->show_to_string(id)
180 << " " << atlasID->is_trt(id) );
181 ATH_MSG_DEBUG ( " is lar " << atlasID->show_to_string(id)
182 << " " << atlasID->is_lar(id) );
183 ATH_MSG_DEBUG ( " is muon " << atlasID->show_to_string(id)
184 << " " << atlasID->is_muon(id) );
185
186 ATH_MSG_INFO( "Initialization completed successfully" );
187
188 return StatusCode::SUCCESS;
189
190}
191
192
194StatusCode
196{
197 return StatusCode::SUCCESS;
198}
199
200
202// FINALIZE:
204
205StatusCode
207{
208 ATH_MSG_DEBUG ( "finalize completed successfully" );
209 return StatusCode::SUCCESS;
210}
211
212
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
defines an "iterator" over instances of a given type in StoreGateSvc
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
const ServiceHandle< StoreGateSvc > & detStore() const
MsgStream & msg() const
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Identifier trt(void) const
bool is_indet(Identifier id) const
bool is_lar(Identifier id) const
bool is_sct(Identifier id) const
bool is_muon(Identifier id) const
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
bool is_trt(Identifier id) const
Identifier indet(void) const
Detector systems:
StatusCode execute()
StatusCode finalize()
void tab(size_t level) const
IdDictCnvTest(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize()
IdDictManager is the interface to identifier dictionaries.
const IdDictMgr * manager(void) const
const std::string & tag() const
Version tag.
Definition IdDictMgr.cxx:54
dictionary_vec get_dictionaries() const
Access to all dictionaries.
std::vector< const IdDictDictionary * > dictionary_vec
Definition IdDictMgr.h:18