ATLAS Offline Software
Loading...
Searching...
No Matches
PixelRadSimFluenceMapAlg Class Reference

#include <PixelRadSimFluenceMapAlg.h>

Inheritance diagram for PixelRadSimFluenceMapAlg:
Collaboration diagram for PixelRadSimFluenceMapAlg:

Public Member Functions

 PixelRadSimFluenceMapAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual bool isReEntrant () const override
 Avoid scheduling algorithm multiple times.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadCondHandleKey< PixelModuleDatam_moduleDataKey {this, "PixelModuleData", "PixelModuleData", "Pixel module data"}
SG::WriteCondHandleKey< PixelRadiationDamageFluenceMapDatam_writeFluenceMapKey {this, "WriteRadiationFluenceMapKey", "PixelRadiationDamageFluenceMapData", "Output key for radiation damage fluence map"}
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 21 of file PixelRadSimFluenceMapAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ PixelRadSimFluenceMapAlg()

PixelRadSimFluenceMapAlg::PixelRadSimFluenceMapAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 9 of file PixelRadSimFluenceMapAlg.cxx.

9 :
10 ::AthCondAlgorithm(name, pSvcLocator)
11{
12}

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode PixelRadSimFluenceMapAlg::execute ( const EventContext & ctx) const
overridevirtual

Definition at line 21 of file PixelRadSimFluenceMapAlg.cxx.

21 {
22 ATH_MSG_DEBUG("PixelRadSimFluenceMapAlg::execute()");
23
24 SG::WriteCondHandle<PixelRadiationDamageFluenceMapData> writeFluenceMapHandle(m_writeFluenceMapKey, ctx);
25 if (writeFluenceMapHandle.isValid()) {
26 ATH_MSG_DEBUG("CondHandle " << writeFluenceMapHandle.fullKey() << " is already valid.. In theory this should not be called, but may happen if multiple concurrent events are being processed out of order.");
27 return StatusCode::SUCCESS;
28 }
29
30 // Construct the output Cond Object and fill it in
31 std::unique_ptr<PixelRadiationDamageFluenceMapData> writeFluenceCdo(std::make_unique<PixelRadiationDamageFluenceMapData>());
32
33 const EventIDBase start{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, 0,
34 0, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
35 const EventIDBase stop {EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, EventIDBase::UNDEFNUM-1,
36 EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
37
38 EventIDRange rangeW{start, stop};
39
40 SG::ReadCondHandle<PixelModuleData> moduleDataHandle(m_moduleDataKey, ctx);
41 const PixelModuleData *moduleData = *moduleDataHandle;
42
43 // mapping files for radiation damage simulation
44 writeFluenceCdo -> setFluenceLayer(moduleData->getFluenceLayer());
45 writeFluenceCdo -> setFluenceLayer3D(moduleData->getFluenceLayer3D());
46
47 // Create mapping file for radiation damage simulation
48 std::vector<PixelHistoConverter> ramoPotentialMap;
49 std::vector<PixelHistoConverter> lorentzMap_e;
50 std::vector<PixelHistoConverter> lorentzMap_h;
51 std::vector<PixelHistoConverter> distanceMap_e;
52 std::vector<PixelHistoConverter> distanceMap_h;
53 for (unsigned int i=0; i<moduleData->getRadSimFluenceMapList().size(); i++) {
54 ATH_MSG_INFO("Using maps located in: "<< moduleData->getRadSimFluenceMapList().at(i) << " for layer No." << i);
55 std::unique_ptr<TFile> mapsFile(TFile::Open((moduleData->getRadSimFluenceMapList().at(i)).c_str(), "READ")); //this is the ramo potential
56
57 if (!mapsFile) {
58 ATH_MSG_FATAL("Cannot open file: " << moduleData->getRadSimFluenceMapList().at(i));
59 return StatusCode::FAILURE;
60 }
61
62 //Setup ramo weighting field map
63 std::unique_ptr<TH3F> ramoPotentialMap_hold(mapsFile->Get<TH3F>("hramomap1"));
64 if (!ramoPotentialMap_hold) {
65 ramoPotentialMap_hold.reset(mapsFile->Get<TH3F>("ramo3d"));
66 }
67 if (!ramoPotentialMap_hold) {
68 ATH_MSG_FATAL("Did not find a Ramo potential map and an approximate form is available yet. Exit...");
69 return StatusCode::FAILURE;
70 }
71
72 ramoPotentialMap_hold->SetDirectory(nullptr);
73 std::unique_ptr<TH2F> lorentzMap_e_hold(mapsFile->Get<TH2F>("lorentz_map_e"));
74 std::unique_ptr<TH2F> lorentzMap_h_hold(mapsFile->Get<TH2F>("lorentz_map_h"));
75 std::unique_ptr<TH2F> distanceMap_e_hold(mapsFile->Get<TH2F>("edistance"));
76 std::unique_ptr<TH2F> distanceMap_h_hold(mapsFile->Get<TH2F>("hdistance"));
77
78 if (!lorentzMap_e_hold || !lorentzMap_h_hold || !distanceMap_e_hold || !distanceMap_h_hold) {
79 ATH_MSG_FATAL("Cannot read one of the histograms needed");
80 return StatusCode::FAILURE;
81 }
82
83 lorentzMap_e_hold->SetDirectory(nullptr);
84 lorentzMap_h_hold->SetDirectory(nullptr);
85 distanceMap_e_hold->SetDirectory(nullptr);
86 distanceMap_h_hold->SetDirectory(nullptr);
87
88 ramoPotentialMap.emplace_back();
89 ATH_CHECK(ramoPotentialMap.back().setHisto3D(ramoPotentialMap_hold.get()));
90 lorentzMap_e.emplace_back();
91 lorentzMap_h.emplace_back();
92 distanceMap_e.emplace_back();
93 distanceMap_h.emplace_back();
94 ATH_CHECK(lorentzMap_e.back().setHisto2D(lorentzMap_e_hold.get()));
95 ATH_CHECK(lorentzMap_h.back().setHisto2D(lorentzMap_h_hold.get()));
96 ATH_CHECK(distanceMap_e.back().setHisto2D(distanceMap_e_hold.get()));
97 ATH_CHECK(distanceMap_h.back().setHisto2D(distanceMap_h_hold.get()));
98
99 mapsFile->Close();
100 }
101 writeFluenceCdo -> setLorentzMap_e(std::move(lorentzMap_e));
102 writeFluenceCdo -> setLorentzMap_h(std::move(lorentzMap_h));
103 writeFluenceCdo -> setDistanceMap_e(std::move(distanceMap_e));
104 writeFluenceCdo -> setDistanceMap_h(std::move(distanceMap_h));
105 writeFluenceCdo -> setRamoPotentialMap(std::move(ramoPotentialMap));
106
107 // Create mapping file for radiation damage simulation for 3D sensor
108 std::vector<PixelHistoConverter> ramoPotentialMap3D;
109 std::vector<PixelHistoConverter> eFieldMap3D;
110 std::vector<PixelHistoConverter> xPositionMap3D_e;
111 std::vector<PixelHistoConverter> xPositionMap3D_h;
112 std::vector<PixelHistoConverter> yPositionMap3D_e;
113 std::vector<PixelHistoConverter> yPositionMap3D_h;
114 std::vector<PixelHistoConverter> timeMap3D_e;
115 std::vector<PixelHistoConverter> timeMap3D_h;
116 PixelHistoConverter avgChargeMap3D_e;
117 PixelHistoConverter avgChargeMap3D_h;
118
119 for (unsigned int i=0; i<moduleData->getRadSimFluenceMapList3D().size(); i++) {
120 ATH_MSG_INFO("Using maps located in: "<< moduleData->getRadSimFluenceMapList3D().at(i) << " for 3D sensor layer No." << i);
121 std::unique_ptr<TFile> mapsFile3D(TFile::Open((moduleData->getRadSimFluenceMapList3D().at(i)).c_str(), "READ")); //this is the ramo potential
122
123 if (!mapsFile3D) {
124 ATH_MSG_FATAL("Cannot open file: " << moduleData->getRadSimFluenceMapList3D().at(i));
125 return StatusCode::FAILURE;
126 }
127
128 //Setup ramo weighting field map
129 std::unique_ptr<TH2F> ramoPotentialMap3D_hold(mapsFile3D->Get<TH2F>("ramo"));
130 std::unique_ptr<TH2F> eFieldMap3D_hold(mapsFile3D->Get<TH2F>("efield"));
131 if (!ramoPotentialMap3D_hold || !eFieldMap3D_hold) {
132 ATH_MSG_FATAL("Did not find a Ramo potential or e-field map for 3D and an approximate form is available yet. Exit...");
133 return StatusCode::FAILURE;
134 }
135 ramoPotentialMap3D_hold->SetDirectory(nullptr);
136 eFieldMap3D_hold->SetDirectory(nullptr);
137 ramoPotentialMap3D.emplace_back();
138 eFieldMap3D.emplace_back();
139 ATH_CHECK(ramoPotentialMap3D.back().setHisto2D(ramoPotentialMap3D_hold.get()));
140 ATH_CHECK(eFieldMap3D.back().setHisto2D(eFieldMap3D_hold.get()));
141
142 //Now setup the E-field.
143 std::unique_ptr<TH3F> xPositionMap3D_e_hold(mapsFile3D->Get<TH3F>("xPosition_e"));
144 std::unique_ptr<TH3F> xPositionMap3D_h_hold(mapsFile3D->Get<TH3F>("xPosition_h"));
145 std::unique_ptr<TH3F> yPositionMap3D_e_hold(mapsFile3D->Get<TH3F>("yPosition_e"));
146 std::unique_ptr<TH3F> yPositionMap3D_h_hold(mapsFile3D->Get<TH3F>("yPosition_h"));
147 std::unique_ptr<TH2F> timeMap3D_e_hold(mapsFile3D->Get<TH2F>("etimes"));
148 std::unique_ptr<TH2F> timeMap3D_h_hold(mapsFile3D->Get<TH2F>("htimes"));
149
150 if (!xPositionMap3D_e_hold || !xPositionMap3D_h_hold || !yPositionMap3D_e_hold || !yPositionMap3D_h_hold || !timeMap3D_e_hold || !timeMap3D_h_hold) {
151 ATH_MSG_FATAL("Cannot find one of the maps.");
152 return StatusCode::FAILURE;
153 }
154
155 xPositionMap3D_e_hold->SetDirectory(nullptr);
156 xPositionMap3D_h_hold->SetDirectory(nullptr);
157 yPositionMap3D_e_hold->SetDirectory(nullptr);
158 yPositionMap3D_h_hold->SetDirectory(nullptr);
159 timeMap3D_e_hold->SetDirectory(nullptr);
160 timeMap3D_h_hold->SetDirectory(nullptr);
161
162 //Now, determine the time to reach the electrode and the trapping position.
163 xPositionMap3D_e.emplace_back();
164 xPositionMap3D_h.emplace_back();
165 yPositionMap3D_e.emplace_back();
166 yPositionMap3D_h.emplace_back();
167 timeMap3D_e.emplace_back();
168 timeMap3D_h.emplace_back();
169 ATH_CHECK(xPositionMap3D_e.back().setHisto3D(xPositionMap3D_e_hold.get()));
170 ATH_CHECK(xPositionMap3D_h.back().setHisto3D(xPositionMap3D_h_hold.get()));
171 ATH_CHECK(yPositionMap3D_e.back().setHisto3D(yPositionMap3D_e_hold.get()));
172 ATH_CHECK(yPositionMap3D_h.back().setHisto3D(yPositionMap3D_h_hold.get()));
173 ATH_CHECK(timeMap3D_e.back().setHisto2D(timeMap3D_e_hold.get()));
174 ATH_CHECK(timeMap3D_h.back().setHisto2D(timeMap3D_h_hold.get()));
175
176 std::unique_ptr<TH2F> avgCharge3D_e_hold(mapsFile3D->Get<TH2F>("avgCharge_e"));
177 std::unique_ptr<TH2F> avgCharge3D_h_hold(mapsFile3D->Get<TH2F>("avgCharge_h"));
178
179 if (!avgCharge3D_e_hold || !avgCharge3D_h_hold) {
180 ATH_MSG_ERROR("Cannot find one of the charge maps.");
181 return StatusCode::FAILURE;
182 }
183
184 avgCharge3D_e_hold->SetDirectory(nullptr);
185 avgCharge3D_h_hold->SetDirectory(nullptr);
186
187 // Get average charge data (for charge chunk effect correction)
188 ATH_CHECK(avgChargeMap3D_e.setHisto2D(avgCharge3D_e_hold.get()));
189 ATH_CHECK(avgChargeMap3D_h.setHisto2D(avgCharge3D_h_hold.get()));
190
191 mapsFile3D->Close();
192 }
193 writeFluenceCdo -> setRamoPotentialMap3D(std::move(ramoPotentialMap3D));
194 writeFluenceCdo -> setEFieldMap3D(std::move(eFieldMap3D));
195 writeFluenceCdo -> setXPositionMap3D_e(std::move(xPositionMap3D_e));
196 writeFluenceCdo -> setXPositionMap3D_h(std::move(xPositionMap3D_h));
197 writeFluenceCdo -> setYPositionMap3D_e(std::move(yPositionMap3D_e));
198 writeFluenceCdo -> setYPositionMap3D_h(std::move(yPositionMap3D_h));
199 writeFluenceCdo -> setTimeMap3D_e(std::move(timeMap3D_e));
200 writeFluenceCdo -> setTimeMap3D_h(std::move(timeMap3D_h));
201 writeFluenceCdo -> setAvgChargeMap3D_e(avgChargeMap3D_e);
202 writeFluenceCdo -> setAvgChargeMap3D_h(avgChargeMap3D_h);
203
204 if (rangeW.stop().isValid() && rangeW.start()>rangeW.stop()) {
205 ATH_MSG_FATAL("Invalid intersection rangeW: " << rangeW);
206 return StatusCode::FAILURE;
207 }
208 if (writeFluenceMapHandle.record(rangeW, std::move(writeFluenceCdo)).isFailure()) {
209 ATH_MSG_FATAL("Could not record PixelRadiationDamageFluenceMapData " << writeFluenceMapHandle.key() << " with EventRange " << rangeW << " into Conditions Store");
210 return StatusCode::FAILURE;
211 }
212 ATH_MSG_INFO("recorded new CDO " << writeFluenceMapHandle.key() << " with range " << rangeW << " into Conditions Store");
213
214 return StatusCode::SUCCESS;
215}
#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)
StatusCode setHisto2D(const TH2 *histo)
const std::vector< std::string > & getRadSimFluenceMapList3D() const
const std::vector< double > & getFluenceLayer() const
const std::vector< std::string > & getRadSimFluenceMapList() const
const std::vector< double > & getFluenceLayer3D() const
SG::WriteCondHandleKey< PixelRadiationDamageFluenceMapData > m_writeFluenceMapKey
SG::ReadCondHandleKey< PixelModuleData > m_moduleDataKey

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ initialize()

StatusCode PixelRadSimFluenceMapAlg::initialize ( )
overridevirtual

Definition at line 14 of file PixelRadSimFluenceMapAlg.cxx.

14 {
15 ATH_MSG_DEBUG("PixelRadSimFluenceMapAlg::initialize()");
16 ATH_CHECK(m_moduleDataKey.initialize());
17 ATH_CHECK(m_writeFluenceMapKey.initialize());
18 return StatusCode::SUCCESS;
19}

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ isReEntrant()

virtual bool AthCondAlgorithm::isReEntrant ( ) const
inlineoverridevirtualinherited

Avoid scheduling algorithm multiple times.

With multiple concurrent events, conditions objects often expire simultaneously for all slots. To avoid that the scheduler runs the CondAlg in each slot, we declare it as "non-reentrant". This ensures that the conditions objects are only created once.

In case a particular CondAlg should behave differently, it can override this method again and return true.

See also
ATEAM-836

Definition at line 39 of file AthCondAlgorithm.h.

39{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
#define ATH_MSG_WARNING(x)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_moduleDataKey

SG::ReadCondHandleKey<PixelModuleData> PixelRadSimFluenceMapAlg::m_moduleDataKey {this, "PixelModuleData", "PixelModuleData", "Pixel module data"}
private

Definition at line 29 of file PixelRadSimFluenceMapAlg.h.

30{this, "PixelModuleData", "PixelModuleData", "Pixel module data"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeFluenceMapKey

SG::WriteCondHandleKey<PixelRadiationDamageFluenceMapData> PixelRadSimFluenceMapAlg::m_writeFluenceMapKey {this, "WriteRadiationFluenceMapKey", "PixelRadiationDamageFluenceMapData", "Output key for radiation damage fluence map"}
private

Definition at line 32 of file PixelRadSimFluenceMapAlg.h.

33{this, "WriteRadiationFluenceMapKey", "PixelRadiationDamageFluenceMapData", "Output key for radiation damage fluence map"};

The documentation for this class was generated from the following files: