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

#include <PixelSiLorentzAngleCondAlg.h>

Inheritance diagram for PixelSiLorentzAngleCondAlg:
Collaboration diagram for PixelSiLorentzAngleCondAlg:

Public Member Functions

 PixelSiLorentzAngleCondAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~PixelSiLorentzAngleCondAlg ()=default
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual StatusCode finalize () 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

Amg::Vector3D getMagneticField (MagField::AtlasFieldCache &m_fieldCache, const InDetDD::SiDetectorElement *element) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< std::string > m_pixelIDName {this, "PixelIDName", "PixelID", "Pixel ID name"}
SG::ReadCondHandleKey< PixelDCSTempDatam_readKeyTemp {this, "ReadKeyeTemp", "PixelDCSTempCondData", "Key of input sensor temperature conditions folder"}
SG::ReadCondHandleKey< PixelDCSHVDatam_readKeyHV {this, "ReadKeyHV", "PixelDCSHVCondData", "Key of input bias voltage conditions folder"}
SG::ReadCondHandleKey< CondAttrListCollectionm_readKeyBFieldSensor {this, "ReadKeyBFieldSensor", "/EXT/DCS/MAGNETS/SENSORDATA", "Key of input B-field sensor"}
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_pixelDetEleCollKey {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}
SG::WriteCondHandleKey< SiLorentzAngleCondDatam_writeKey {this, "WriteKey", "PixelSiLorentzAngleCondData", "Key of output SiLorentzAngleCondData"}
ToolHandle< ISiPropertiesToolm_siPropertiesTool {this, "SiPropertiesTool", "SiPropertiesTool", "Tool to retrieve SiProperties"}
DoubleProperty m_nominalField {this, "NominalField", 2.0834*Gaudi::Units::tesla, "Default nominal field"}
BooleanProperty m_useMagFieldCache {this, "UseMagFieldCache", true}
BooleanProperty m_useMagFieldDcs {this, "UseMagFieldDcs", true}
BooleanProperty m_disable3D {this, "Disable3DCorrection", false}
unsigned int m_maxHash {}
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCondObjInputKey
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 35 of file PixelSiLorentzAngleCondAlg.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

◆ PixelSiLorentzAngleCondAlg()

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

Definition at line 14 of file PixelSiLorentzAngleCondAlg.cxx.

14 :
15 ::AthCondAlgorithm(name, pSvcLocator)
16{
17}

◆ ~PixelSiLorentzAngleCondAlg()

virtual PixelSiLorentzAngleCondAlg::~PixelSiLorentzAngleCondAlg ( )
virtualdefault

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 PixelSiLorentzAngleCondAlg::execute ( const EventContext & ctx) const
overridevirtual

Definition at line 45 of file PixelSiLorentzAngleCondAlg.cxx.

45 {
47
48 ATH_MSG_DEBUG("PixelSiLorentzAngleCondAlg::execute()");
49
50 SG::WriteCondHandle<SiLorentzAngleCondData> writeHandle{m_writeKey, ctx};
51 if (writeHandle.isValid()) {
52 ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid." << " In theory this should not be called, but may happen" << " if multiple concurrent events are being processed out of order.");
53 return StatusCode::SUCCESS;
54 }
55
56 // Read Cond Handle (temperature)
57 SG::ReadCondHandle<PixelDCSTempData> readHandleTemp(m_readKeyTemp, ctx);
58 const PixelDCSTempData* readCdoTemp(*readHandleTemp);
59 if (readCdoTemp==nullptr) {
60 ATH_MSG_FATAL("Null pointer to the read conditions object");
61 return StatusCode::FAILURE;
62 }
63 writeHandle.addDependency(readHandleTemp);
64 ATH_MSG_DEBUG("Input is " << readHandleTemp.fullKey() << " with the range of " << readHandleTemp.getRange());
65
66 // Read Cond Handle (HV)
67 SG::ReadCondHandle<PixelDCSHVData> readHandleHV(m_readKeyHV, ctx);
68 const PixelDCSHVData* readCdoHV(*readHandleHV);
69 if (readCdoHV==nullptr) {
70 ATH_MSG_FATAL("Null pointer to the read conditions object");
71 return StatusCode::FAILURE;
72 }
73 writeHandle.addDependency(readHandleHV);
74 ATH_MSG_DEBUG("Input is " << readHandleHV.fullKey() << " with the range of " << readHandleHV.getRange());
75
76 // Field cache object for field calculations
77 MagField::AtlasFieldCache fieldCache;
80 // Get field cache object
81 SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandleField{m_fieldCondObjInputKey, ctx};
82 const AtlasFieldCacheCondObj* fieldCondObj{*readHandleField};
83
84 if (fieldCondObj == nullptr) {
85 ATH_MSG_ERROR("PixelSiLorentzAngleCondAlg: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCondObjInputKey.key());
86 return StatusCode::FAILURE;
87 }
88 //WL: The previous implementation didn't intersect the range of this readHanlde.
89 //I suspect that was a bug.
90 writeHandle.addDependency(readHandleField);
91 fieldCondObj->getInitializedCache (fieldCache);
93
94 if (m_useMagFieldDcs) {
95 // Read Cond Handle (B field sensor)
96 SG::ReadCondHandle<CondAttrListCollection> readHandleBFieldSensor(m_readKeyBFieldSensor, ctx);
97 const CondAttrListCollection* readCdoBFieldSensor(*readHandleBFieldSensor);
98 if (readCdoBFieldSensor==nullptr) {
99 ATH_MSG_FATAL("Null pointer to the read conditions object");
100 return StatusCode::FAILURE;
101 }
102 writeHandle.addDependency(readHandleBFieldSensor);
103 ATH_MSG_DEBUG("Input is " << readHandleBFieldSensor.fullKey() << " with the range of " << readHandleBFieldSensor.getRange() );
104
105 }//end if useMagFieldDcs
106 }//end if useMagFieldSvc
107
108
109 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> pixelDetEle(m_pixelDetEleCollKey, ctx);
110 const InDetDD::SiDetectorElementCollection* elements(pixelDetEle.retrieve());
111 if (elements==nullptr) {
112 ATH_MSG_FATAL(m_pixelDetEleCollKey.fullKey() << " could not be retrieved");
113 return StatusCode::FAILURE;
114 }
115 writeHandle.addDependency(pixelDetEle);
116
117 // Construct the output Cond Object and fill it in
118 std::unique_ptr<SiLorentzAngleCondData> writeCdo{std::make_unique<SiLorentzAngleCondData>()};
119 const PixelID::size_type wafer_hash_max = m_maxHash;
120 writeCdo->resize(wafer_hash_max);
121 for (PixelID::size_type hash = 0; hash < wafer_hash_max; hash++) {
122 const IdentifierHash elementHash = static_cast<IdentifierHash::value_type>(hash);
123
124 double temperature = readCdoTemp->getTemperature(elementHash)+273.15;
125 double deplVoltage = 0.0*CLHEP::volt;
126 double biasVoltage = readCdoHV->getBiasVoltage(elementHash)*CLHEP::volt;
127
128 ATH_MSG_DEBUG("Pixel Hash = " << elementHash << " Temperature = " << temperature << " [deg K], BiasV = " << biasVoltage << " DeplV = " << deplVoltage);
129
130 const InDetDD::SiDetectorElement* element = elements->getDetectorElement(elementHash);
131 double depletionDepth = element->thickness();
132 if (std::fabs(biasVoltage) < std::fabs(deplVoltage)) {
133 depletionDepth *= std::sqrt(std::fabs(biasVoltage/deplVoltage));
134 }
135
136 const InDetDD::PixelModuleDesign* p_design = dynamic_cast<const InDetDD::PixelModuleDesign*>(&element->design());
137
138 if (not p_design){
139 ATH_MSG_FATAL("Dynamic cast to PixelModuleDesign* failed in PixelSiLorentzAngleCondAlg::execute");
140 return StatusCode::FAILURE;
141 }
142 double forceLorentzToZero = 1.0;
143 if ((p_design->getReadoutTechnology()==InDetDD::PixelReadoutTechnology::FEI4 && p_design->numberOfCircuits()==1 && p_design->rowsPerCircuit()>100) // IBL 3D
144 || (m_disable3D && p_design->is3D())) { // ITk L0 + L0.5
145 forceLorentzToZero = 0.0;
146 }
147
148 const InDet::SiliconProperties &siProperties = m_siPropertiesTool->getSiProperties(elementHash, ctx);
149 double mobility = siProperties.signedHallMobility(element->carrierType());
150
151 // Get magnetic field. This first checks that field cache is valid.
152 Amg::Vector3D magneticField = getMagneticField(fieldCache,element);
153
154 // The angles are in the hit frame. This is because that is what is needed by the digization and also
155 // gives a more physical sign of the angle (ie dosen't flip sign when the detector is flipped).
156 // The hit depth axis is pointing from the readout side to the backside if m_design->readoutSide() < 0
157 // The hit depth axis is pointing from the backside to the readout side if m_design->readoutSide() > 0
158 double tanLorentzAnglePhi = forceLorentzToZero*element->design().readoutSide()*mobility*element->hitDepthDirection()*element->hitPhiDirection()*(element->normal().cross(magneticField)).dot(element->phiAxis());
159 writeCdo->setTanLorentzAngle(elementHash, tanLorentzAnglePhi);
160
161 // This gives the effective correction in the reconstruction frame hence the extra hitPhiDirection()
162 // as the angle above is in the hit frame.
163 double lorentzCorrectionPhi = -0.5*element->hitPhiDirection()*tanLorentzAnglePhi*depletionDepth;
164 writeCdo->setLorentzShift(elementHash, lorentzCorrectionPhi);
165
166 // The Lorentz eta shift very small and so can be ignored, but we include it for completeness.
167 double tanLorentzAngleEta = forceLorentzToZero*element->design().readoutSide()*mobility*element->hitDepthDirection()*element->hitEtaDirection()*(element->normal().cross(magneticField)).dot(element->etaAxis());
168 writeCdo->setTanLorentzAngleEta(elementHash, tanLorentzAngleEta);
169 double lorentzCorrectionEta = -0.5*element->hitPhiDirection()*tanLorentzAngleEta*depletionDepth;
170 writeCdo->setLorentzShiftEta(elementHash, lorentzCorrectionEta);
171
172 // Monitoring value
173 writeCdo->setBiasVoltage(elementHash, biasVoltage/CLHEP::volt);
174 writeCdo->setTemperature(elementHash, temperature-273.15);
175 writeCdo->setDepletionVoltage(elementHash, deplVoltage/CLHEP::volt);
176
177 ATH_MSG_DEBUG("Hash = " << elementHash << " tanPhi = " << lorentzCorrectionPhi << " shiftPhi = " << writeCdo->getLorentzShift(elementHash) << " Factor = 1.0 Depletion depth = " << depletionDepth);
178 ATH_MSG_DEBUG("Hash = " << elementHash << " tanPhi = " << lorentzCorrectionPhi << " shiftPhi = " << writeCdo->getLorentzShift(elementHash) << "Depletion depth = " << depletionDepth);
179 ATH_MSG_VERBOSE("Temperature (C), bias voltage, depletion voltage: " << temperature-273.15 << ", " << biasVoltage/CLHEP::volt << ", " << deplVoltage/CLHEP::volt);
180 ATH_MSG_VERBOSE("Depletion depth: " << depletionDepth/CLHEP::mm);
181 ATH_MSG_VERBOSE("Mobility (cm2/V/s): " << mobility/(CLHEP::cm2/CLHEP::volt/CLHEP::s));
182 ATH_MSG_VERBOSE("Magnetic Field (tesla): " << "(" << magneticField.x()/CLHEP::tesla << "," << magneticField.y()/CLHEP::tesla << "," << magneticField.z()/CLHEP::tesla << ")");
183 ATH_MSG_VERBOSE("LorentzShift, tanLorentzAngle = " << writeCdo->getLorentzShift(elementHash) << ", " << writeCdo->getTanLorentzAngle(elementHash));
184 ATH_MSG_VERBOSE("LorentzShiftEta, tanLorentzAngleEta = " << writeCdo->getLorentzShiftEta(elementHash) << ", " << writeCdo->getTanLorentzAngleEta(elementHash));
185 }
186
187 // Record the output cond object
188 if (writeHandle.record(std::move(writeCdo)).isFailure()) {
189 ATH_MSG_FATAL("Could not record SiLorentzAngleCondData " << writeHandle.key() << " with EventRange " << writeHandle.getRange() << " into Conditions Store");
190 return StatusCode::FAILURE;
191 }
192
193 ATH_MSG_DEBUG("recorded new CDO " << writeHandle.key() << " with range " << writeHandle.getRange() << " into Conditions Store");
194
195 return StatusCode::SUCCESS;
196}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
unsigned int value_type
int readoutSide() const
ReadoutSide.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
InDetDD::CarrierType carrierType() const
carrier type for readout.
double hitPhiDirection() const
See previous method.
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
double hitDepthDirection() const
Directions of hit depth,phi,eta axes relative to reconstruction local position axes (LocalPosition).
double hitEtaDirection() const
See previous method.
double signedHallMobility(InDetDD::CarrierType carrier) const
Identifier::size_type size_type
Definition PixelID.h:71
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
SG::ReadCondHandleKey< PixelDCSHVData > m_readKeyHV
Amg::Vector3D getMagneticField(MagField::AtlasFieldCache &m_fieldCache, const InDetDD::SiDetectorElement *element) const
SG::WriteCondHandleKey< SiLorentzAngleCondData > m_writeKey
SG::ReadCondHandleKey< CondAttrListCollection > m_readKeyBFieldSensor
ToolHandle< ISiPropertiesTool > m_siPropertiesTool
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
SG::ReadCondHandleKey< PixelDCSTempData > m_readKeyTemp
const std::string & key() const
void addDependency(const EventIDRange &range)
const EventIDRange & getRange() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
const DataObjID & fullKey() const
Eigen::Matrix< double, 3, 1 > Vector3D

◆ 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

◆ finalize()

StatusCode PixelSiLorentzAngleCondAlg::finalize ( )
overridevirtual

Definition at line 198 of file PixelSiLorentzAngleCondAlg.cxx.

198 {
199 ATH_MSG_DEBUG("PixelSiLorentzAngleCondAlg::finalize()");
200 return StatusCode::SUCCESS;
201}

◆ getMagneticField()

Amg::Vector3D PixelSiLorentzAngleCondAlg::getMagneticField ( MagField::AtlasFieldCache & m_fieldCache,
const InDetDD::SiDetectorElement * element ) const
private

Definition at line 203 of file PixelSiLorentzAngleCondAlg.cxx.

203 {
204 if (m_useMagFieldCache) {
205 ATH_MSG_VERBOSE("Getting magnetic field from MT magnetic field service.");
206 double field[3]; //in/out parameter
207 fieldCache.getField(element->center().data(), field);
208 return Amg::Vector3D(field[0], field[1], field[2]);
209 }
210 else {
211 ATH_MSG_VERBOSE("Using Nominal Field");
212 return Amg::Vector3D(0., 0., m_nominalField);
213 }
214}
virtual const Amg::Vector3D & center() const override final
Center in global coordinates.

◆ initialize()

StatusCode PixelSiLorentzAngleCondAlg::initialize ( )
overridevirtual

Definition at line 19 of file PixelSiLorentzAngleCondAlg.cxx.

19 {
20 ATH_MSG_DEBUG("PixelSiLorentzAngleCondAlg::initialize()");
21
22 const PixelID* idHelper{nullptr};
23 ATH_CHECK(detStore()->retrieve(idHelper, m_pixelIDName.value()));
24
25 m_maxHash = idHelper->wafer_hash_max();
26
27 ATH_CHECK(m_readKeyTemp.initialize());
28 ATH_CHECK(m_readKeyHV.initialize());
29 ATH_CHECK(m_writeKey.initialize());
30
31 ATH_CHECK(m_siPropertiesTool.retrieve());
32
35
36 ATH_CHECK(m_pixelDetEleCollKey.initialize());
37
38 if(m_disable3D) ATH_MSG_INFO("Running with Lorentz correction disabled for 3D pixels");
39
40 return StatusCode::SUCCESS;
41}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
const ServiceHandle< StoreGateSvc > & detStore() const
size_type wafer_hash_max() const
Definition PixelID.cxx:801
Gaudi::Property< std::string > m_pixelIDName
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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_disable3D

BooleanProperty PixelSiLorentzAngleCondAlg::m_disable3D {this, "Disable3DCorrection", false}
private

Definition at line 71 of file PixelSiLorentzAngleCondAlg.h.

71{this, "Disable3DCorrection", false};

◆ 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_fieldCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> PixelSiLorentzAngleCondAlg::m_fieldCondObjInputKey
private
Initial value:
{this, "AtlasFieldCacheCondObj", "fieldCondObj",
"Name of the Magnetic Field conditions object key"}

Definition at line 80 of file PixelSiLorentzAngleCondAlg.h.

80 {this, "AtlasFieldCacheCondObj", "fieldCondObj",
81 "Name of the Magnetic Field conditions object key"};

◆ m_maxHash

unsigned int PixelSiLorentzAngleCondAlg::m_maxHash {}
private

Definition at line 73 of file PixelSiLorentzAngleCondAlg.h.

73{};

◆ m_nominalField

DoubleProperty PixelSiLorentzAngleCondAlg::m_nominalField {this, "NominalField", 2.0834*Gaudi::Units::tesla, "Default nominal field"}
private

Definition at line 68 of file PixelSiLorentzAngleCondAlg.h.

68{this, "NominalField", 2.0834*Gaudi::Units::tesla, "Default nominal field"};

◆ m_pixelDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> PixelSiLorentzAngleCondAlg::m_pixelDetEleCollKey {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}
private

Definition at line 58 of file PixelSiLorentzAngleCondAlg.h.

59{this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"};

◆ m_pixelIDName

Gaudi::Property<std::string> PixelSiLorentzAngleCondAlg::m_pixelIDName {this, "PixelIDName", "PixelID", "Pixel ID name"}
private

Definition at line 45 of file PixelSiLorentzAngleCondAlg.h.

46{this, "PixelIDName", "PixelID", "Pixel ID name"};

◆ m_readKeyBFieldSensor

SG::ReadCondHandleKey<CondAttrListCollection> PixelSiLorentzAngleCondAlg::m_readKeyBFieldSensor {this, "ReadKeyBFieldSensor", "/EXT/DCS/MAGNETS/SENSORDATA", "Key of input B-field sensor"}
private

Definition at line 55 of file PixelSiLorentzAngleCondAlg.h.

56{this, "ReadKeyBFieldSensor", "/EXT/DCS/MAGNETS/SENSORDATA", "Key of input B-field sensor"};

◆ m_readKeyHV

SG::ReadCondHandleKey<PixelDCSHVData> PixelSiLorentzAngleCondAlg::m_readKeyHV {this, "ReadKeyHV", "PixelDCSHVCondData", "Key of input bias voltage conditions folder"}
private

Definition at line 52 of file PixelSiLorentzAngleCondAlg.h.

53{this, "ReadKeyHV", "PixelDCSHVCondData", "Key of input bias voltage conditions folder"};

◆ m_readKeyTemp

SG::ReadCondHandleKey<PixelDCSTempData> PixelSiLorentzAngleCondAlg::m_readKeyTemp {this, "ReadKeyeTemp", "PixelDCSTempCondData", "Key of input sensor temperature conditions folder"}
private

Definition at line 49 of file PixelSiLorentzAngleCondAlg.h.

50{this, "ReadKeyeTemp", "PixelDCSTempCondData", "Key of input sensor temperature conditions folder"};

◆ m_siPropertiesTool

ToolHandle<ISiPropertiesTool> PixelSiLorentzAngleCondAlg::m_siPropertiesTool {this, "SiPropertiesTool", "SiPropertiesTool", "Tool to retrieve SiProperties"}
private

Definition at line 64 of file PixelSiLorentzAngleCondAlg.h.

65{this, "SiPropertiesTool", "SiPropertiesTool", "Tool to retrieve SiProperties"};

◆ m_useMagFieldCache

BooleanProperty PixelSiLorentzAngleCondAlg::m_useMagFieldCache {this, "UseMagFieldCache", true}
private

Definition at line 69 of file PixelSiLorentzAngleCondAlg.h.

69{this, "UseMagFieldCache", true};

◆ m_useMagFieldDcs

BooleanProperty PixelSiLorentzAngleCondAlg::m_useMagFieldDcs {this, "UseMagFieldDcs", true}
private

Definition at line 70 of file PixelSiLorentzAngleCondAlg.h.

70{this, "UseMagFieldDcs", true};

◆ 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_writeKey

SG::WriteCondHandleKey<SiLorentzAngleCondData> PixelSiLorentzAngleCondAlg::m_writeKey {this, "WriteKey", "PixelSiLorentzAngleCondData", "Key of output SiLorentzAngleCondData"}
private

Definition at line 61 of file PixelSiLorentzAngleCondAlg.h.

62{this, "WriteKey", "PixelSiLorentzAngleCondData", "Key of output SiLorentzAngleCondData"};

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