ATLAS Offline Software
TBDetDescrLoader.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 //Gaudi Includes
6 #include "GaudiKernel/IDataProviderSvc.h"
7 #include "GaudiKernel/SmartDataPtr.h"
8 
10 
11 //TBDetDescr includes
14 #include "TBDetDescrLoader.h"
15 
16 // Constructor & destructor
17 TBDetDescrLoader::TBDetDescrLoader(const std::string& name, ISvcLocator* pSvcLocator)
18  : AthAlgorithm(name, pSvcLocator),
19  m_TBDDM(0),
20  c_TBDDM(0)
21 {
22  declareProperty("TBDetDescrManager", m_TBDetDescrManager = "TBDetDescrMgr");
23  declareProperty("TBElementContainer", m_TBElementContainer = "TBElementCnt");
24  declareProperty("ReadAction", m_readAction = -1);
25  declareProperty("WriteAction", m_writeAction = 0);
26 }
27 
29 {
30 }
31 
32 // Alg standard interface function
34 {
35  StatusCode sc;
36 
37  if (m_readAction != 0) {
38 
39  ATH_MSG_INFO( "Creating TBDetDescrManager in DetectorStore" );
40 
41  m_TBDDM = new TBDetDescrManager();
42 
43  // somebody else should provide coordinates for all envelopes
44  // we can't do anything here
45  // so this initialization is not needed,
46  // it is kept here as an example
47  std::vector<TBElement> vec;
48  vec.resize(1); // it will contain just one "Unknown" element
49 
50  // initialize the manager with detectors we just created
52  m_TBDDM->print(msg());
53 
54  if (m_readAction < 0) {
55  m_readAction = 0;
56  sc=detStore()->record(m_TBDDM, m_TBDetDescrManager, true);
57  } else {
58  sc=detStore()->record(m_TBDDM, m_TBDetDescrManager, false);
59  }
60 
61  if(sc.isFailure()) {
62  ATH_MSG_ERROR( "failed to register TBDetDescrManager in Detector Store" );
63  m_readAction = 0;
64  ATH_MSG_ERROR( "resetting m_readAction to 0" );
65  delete m_TBDDM;
66  // do not exit wih FAILURE here
67  // probably manager is created already
68  // and we just want to use it
69  // return sc;
70  }
71  } else {
72 
74  (new DetDescrAddress(
77 
78  sc = detStore()->recordAddress(addr);
79  if (sc != StatusCode::SUCCESS) {
80  ATH_MSG_INFO( "unable to fill address for " << (*addr->par())
81  << " with CLID " << addr->clID()
82  << " and storage type " << addr->svcType()
83  << " to detector store " );
84  }
85  else {
86  unsigned int st = addr->svcType();
87  ATH_MSG_INFO( "filling address for " << (*addr->par())
88  << " with CLID " << addr->clID()
89  << " and storage type " << st
90  << " to detector store " );
91  }
92  }
93 
94  if (m_writeAction != 0) {
95 
96  ATH_MSG_INFO( "Retrieving TBDetDescrManager from DetectorStore" );
97 
98  sc = detStore()->retrieve(c_TBDDM);
99  if (sc.isFailure()) {
100  ATH_MSG_ERROR( "Unable to retrieve TBDetDescrManager from DetectorStore" );
101  m_writeAction = 0;
102  ATH_MSG_ERROR( "resetting m_writeAction to 0" );
103  return StatusCode::RECOVERABLE;
104  }
105  c_TBDDM->print(msg());
106  }
107 
108  ATH_MSG_INFO( "initialization completed" );
109  return StatusCode::SUCCESS;
110 }
111 
113  StatusCode sc;
114 
115  TBElementContainer* pTBElementContainer;
116 
117  switch (m_readAction) {
118 
119  case 0: // do nothing
120  ATH_MSG_DEBUG( "readAction: do nothing" );
121 
122  // write to StoreGate only if we are not reading from it!
123 
124  switch (m_writeAction) {
125 
126  case 0: // do nothing
127  ATH_MSG_DEBUG( "writeAction: do nothing" );
128  break;
129 
130  case 1: // write once
131  m_writeAction = 0; // don't do anything anymore
132  // but without break proceed to next case
133  /* FALLTHROUGH */
134 
135  case 2: // write always
136 
137  ATH_MSG_DEBUG( "Action: write TBDetDescr to StoreGate" );
138 
139  pTBElementContainer = new TBElementContainer();
140 
141  c_TBDDM->getAll(pTBElementContainer);
142  c_TBDDM->print(msg());
143 
144  sc=evtStore()->record(pTBElementContainer, m_TBElementContainer, false);
145  if(sc.isFailure()) {
146  ATH_MSG_FATAL( "failed to register the TBElementContainer" );
147  return StatusCode::FAILURE;
148  }
149  break;
150 
151  default:
152  break;
153  }
154 
155  break;
156 
157  case 1: // read once
158  m_readAction = 0; // don't do anything anymore
159  // but without break proceed to next case
160  /* FALLTHROUGH */
161 
162  case 2: // read always
163 
164  ATH_MSG_DEBUG( "Action: read TBDetDescr from StoreGate" );
165  {
166  const TBElementContainer* pContainer = nullptr;
168  m_TBDDM->initialize(pContainer);
169  m_TBDDM->print(msg());
170  }
171  break;
172 
173  default:
174  break;
175 
176  }
177 
178  return StatusCode::SUCCESS;
179 }
180 
181 StatusCode
183  ATH_MSG_INFO( "finalized successfully" );
184  return StatusCode::SUCCESS;
185 }
186 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TBDetDescrLoader::TBDetDescrLoader
TBDetDescrLoader(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TBDetDescrLoader.cxx:17
TBDetDescrLoader.h
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TBDetDescrManager.h
TBDetDescrLoader::m_writeAction
int m_writeAction
Definition: TBDetDescrLoader.h:32
DetDescrAddress.h
CxxUtils::RefCountedPtr
Simple smart pointer for Gaudi-style refcounted objects.
Definition: RefCountedPtr.h:39
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
TBDetDescrLoader::m_TBDDM
TBDetDescrManager * m_TBDDM
Definition: TBDetDescrLoader.h:34
TBDetDescrLoader::c_TBDDM
const TBDetDescrManager * c_TBDDM
Definition: TBDetDescrLoader.h:35
TBDetDescrManager::initialize
void initialize(const std::vector< TBElement > &vec)
Definition: TBDetDescrManager.cxx:74
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TBDetDescrManager::getAll
void getAll(TBElementContainer *pTBElementContainer) const
Definition: TBDetDescrManager.cxx:108
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TBDetDescrManager::print
void print(MsgStream &log) const
Definition: TBDetDescrManager.cxx:146
TBDetDescrLoader::execute
virtual StatusCode execute() override
Definition: TBDetDescrLoader.cxx:112
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TBDetDescrLoader::initialize
virtual StatusCode initialize() override
Definition: TBDetDescrLoader.cxx:33
TBElementContainer.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DetDescrAddress
Definition: DetDescrAddress.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
python.getProblemFolderFromLogs.st
st
Definition: getProblemFolderFromLogs.py:68
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:37
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TBDetDescrLoader::m_readAction
int m_readAction
Definition: TBDetDescrLoader.h:31
AthAlgorithm
Definition: AthAlgorithm.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TBDetDescrLoader::m_TBDetDescrManager
std::string m_TBDetDescrManager
Definition: TBDetDescrLoader.h:29
TBElementContainer
Definition: TBElementContainer.h:18
TBDetDescrManager
Definition: TBDetDescrManager.h:21
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
TBDetDescrLoader::m_TBElementContainer
std::string m_TBElementContainer
Definition: TBDetDescrLoader.h:30
TBDetDescrLoader::~TBDetDescrLoader
virtual ~TBDetDescrLoader()
Definition: TBDetDescrLoader.cxx:28
TBDetDescrLoader::finalize
virtual StatusCode finalize() override
Definition: TBDetDescrLoader.cxx:182