ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::NewtonTrkDistanceFinder Class Referencefinal

AlgoTool which uses an iterative Newton method in two dimensions (the two points along the two tracks) in order to find their minimum distance. More...

#include <NewtonTrkDistanceFinder.h>

Inheritance diagram for Trk::NewtonTrkDistanceFinder:
Collaboration diagram for Trk::NewtonTrkDistanceFinder:

Public Member Functions

 NewtonTrkDistanceFinder (const std::string &t, const std::string &n, const IInterface *p)
virtual ~NewtonTrkDistanceFinder ()
virtual StatusCode initialize () override
virtual StatusCode finalize () override
std::variant< TwoPoints, std::string > GetClosestPoints (const Perigee &a, const Perigee &b) const
std::variant< TwoPoints, std::string > GetClosestPoints (const PointOnTrack &, const PointOnTrack &) const
std::variant< TwoPoints, std::string > GetClosestPoints (const TwoTracks &twotracks) const
std::variant< TwoPoints, std::string > GetClosestPoints (const TwoPointOnTrack &twopointontrack) 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 sysInitialize () override
 Perform system initialization for an algorithm.
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

Static Public Member Functions

static const InterfaceID & interfaceID ()

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

double m_precision
double m_maxloopnumber
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
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

AlgoTool which uses an iterative Newton method in two dimensions (the two points along the two tracks) in order to find their minimum distance.

For each track you can also provade a starting point, in order to avoid local maxima or an undefined quadratic form near a point...

Author
Giaci.nosp@m.nto..nosp@m.Piacq.nosp@m.uadi.nosp@m.o@phy.nosp@m.sik..nosp@m.uni-f.nosp@m.reib.nosp@m.urg.d.nosp@m.e

Definition at line 30 of file NewtonTrkDistanceFinder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ NewtonTrkDistanceFinder()

Trk::NewtonTrkDistanceFinder::NewtonTrkDistanceFinder ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 31 of file NewtonTrkDistanceFinder.cxx.

31 :
32 AthAlgTool(t,n,p),
33 m_precision(1e-8),
35 {
36 declareProperty("Precision",m_precision);
38 declareInterface<NewtonTrkDistanceFinder>(this);
39 }
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ ~NewtonTrkDistanceFinder()

Trk::NewtonTrkDistanceFinder::~NewtonTrkDistanceFinder ( )
virtualdefault

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::evtStore ( )
inlineinherited

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

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ finalize()

StatusCode Trk::NewtonTrkDistanceFinder::finalize ( )
overridevirtual

Definition at line 50 of file NewtonTrkDistanceFinder.cxx.

51 {
52 ATH_MSG_DEBUG( "Finalize successful" );
53 return StatusCode::SUCCESS;
54 }
#define ATH_MSG_DEBUG(x)

◆ GetClosestPoints() [1/4]

std::variant< TwoPoints, std::string > Trk::NewtonTrkDistanceFinder::GetClosestPoints ( const Perigee & a,
const Perigee & b ) const
inline

Definition at line 55 of file NewtonTrkDistanceFinder.h.

55 {
56 //with the constractur of PointOnTrackPar a track is constructed with, as seed,
57 //directly the point of closest approach (see for info PointOnTrack.h)
58 return GetClosestPoints(PointOnTrack(a),PointOnTrack(b));
59 }
static Double_t a
std::variant< TwoPoints, std::string > GetClosestPoints(const Perigee &a, const Perigee &b) const

◆ GetClosestPoints() [2/4]

std::variant< TwoPoints, std::string > Trk::NewtonTrkDistanceFinder::GetClosestPoints ( const PointOnTrack & firsttrack,
const PointOnTrack & secondtrack ) const

Definition at line 57 of file NewtonTrkDistanceFinder.cxx.

59{
60 //Now the direction of momentum at point of closest approach (but only direction, not versus)
61 const double a_phi0 = firsttrack.getPerigee().parameters()[Trk::phi0];
62 const double a_cosphi0 = -sin(a_phi0);//do i need it?
63 const double a_sinphi0 = cos(a_phi0);//~?
64
65 //Now initialize the variable you need to go on
66 const double a_x0=firsttrack.getPerigee().associatedSurface().center().x() +
67 firsttrack.getPerigee().parameters()[Trk::d0]*a_cosphi0;
68 const double a_y0=firsttrack.getPerigee().associatedSurface().center().y() +
69 firsttrack.getPerigee().parameters()[Trk::d0]*a_sinphi0;
70 const double a_z0=firsttrack.getPerigee().associatedSurface().center().z() +
71 firsttrack.getPerigee().parameters()[Trk::z0];
72
73#ifdef TrkDistance_DEBUG
74 ATH_MSG_DEBUG( "a_x0 " << a_x0 << " a_y0 " << a_y0 << " a_z0 " << a_z0 );
75 ATH_MSG_DEBUG( "m_a_phi0 " << a_phi0 );
76#endif
77
78 // Setup magnetic field retrieval
79 SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, Gaudi::Hive::currentContext()};
80 const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
81
82 MagField::AtlasFieldCache fieldCache;
83 fieldCondObj->getInitializedCache (fieldCache);
84
85 double magnFieldVect[3];
86 double posXYZ[3];
87 posXYZ[0] = firsttrack.getPerigee().associatedSurface().center().x();
88 posXYZ[1] = firsttrack.getPerigee().associatedSurface().center().y();
89 posXYZ[2] = firsttrack.getPerigee().associatedSurface().center().z();
90 fieldCache.getField(posXYZ,magnFieldVect);
91
92
93 //Magnetic field at (x0,y0,z0)
94 const double a_Bz=magnFieldVect[2]*299.792;//B field in Gev/mm
95 //EvaluateMagneticField(a_x0,b_y0,b_z0);
96
97 const double a_Rt = getRadiusOfCurvature(firsttrack.getPerigee(),a_Bz);
98 const double a_cotantheta = 1./tan(firsttrack.getPerigee().parameters()[Trk::theta]);
99
100#ifdef TrkDistance_DEBUG
101 ATH_MSG_DEBUG( "a_Rt" << a_Rt << " a_cotantheta " << a_cotantheta );
102 ATH_MSG_DEBUG( "Magnetic field at perigee is " << a_Bz << "GeV/mm " );
103#endif
104
105 //Now the direction of momentum at point of closest approach (but only direction, not versus)
106 const double b_phi0 = secondtrack.getPerigee().parameters()[Trk::phi0];
107 const double b_cosphi0 = -sin(b_phi0);//do i need it?
108 const double b_sinphi0 = cos(b_phi0);//~?
109
110 //Now initialize the variable you need to go on
111 const double b_x0=secondtrack.getPerigee().associatedSurface().center().x() +
112 secondtrack.getPerigee().parameters()[Trk::d0]*b_cosphi0;
113 const double b_y0=secondtrack.getPerigee().associatedSurface().center().y() +
114 secondtrack.getPerigee().parameters()[Trk::d0]*b_sinphi0;
115 const double b_z0=secondtrack.getPerigee().associatedSurface().center().z() +
116 secondtrack.getPerigee().parameters()[Trk::z0];
117
118#ifdef TrkDistance_DEBUG
119 ATH_MSG_DEBUG( "b_x0 " << b_x0 << " b_y0 " << b_y0 << " b_z0 " << b_z0 );
120 ATH_MSG_DEBUG( "b_phi0 " << b_phi0 );
121#endif
122
123
124 posXYZ[0] = secondtrack.getPerigee().associatedSurface().center().x();
125 posXYZ[1] = secondtrack.getPerigee().associatedSurface().center().y();
126 posXYZ[2] = secondtrack.getPerigee().associatedSurface().center().z();
127 fieldCache.getField(posXYZ,magnFieldVect);
128
129 //Magnetic field at (x0,y0,z0)
130 const double b_Bz = magnFieldVect[2]*299.792;//B field in Gev/mm - for the moment use a constant field offline
131 //use the right value expressed in GeV
132 //EvaluateMagneticField(b_x0,b_y0,b_z0);
133
134 const double b_Rt = getRadiusOfCurvature(secondtrack.getPerigee(),b_Bz);
135 const double b_cotantheta = 1./tan(secondtrack.getPerigee().parameters()[Trk::theta]);
136
137#ifdef TrkDistance_DEBUG
138 ATH_MSG_DEBUG( "b_Rt" << b_Rt << " b_cotantheta " << b_cotantheta );
139 ATH_MSG_DEBUG( "Magnetic field at perigee is " << b_Bz << " GeV/mm " );
140#endif
141
142
143 //Now prepare some more elaborate pieces for later
144 const double ab_Dx0 = a_x0-b_x0-a_Rt*a_cosphi0+b_Rt*b_cosphi0;
145 const double ab_Dy0 = a_y0-b_y0-a_Rt*a_sinphi0+b_Rt*b_sinphi0;
146 const double ab_Dz0 = a_z0-b_z0+a_Rt*a_cotantheta*a_phi0-b_Rt*b_cotantheta*b_phi0;
147
148#ifdef TrkDistance_DEBUG
149 ATH_MSG_DEBUG( "ab_Dx0 " << ab_Dx0 << " ab_Dy0 " << ab_Dy0 << " ab_Dz0 " << ab_Dz0 );
150#endif
151
152
153 //Prepare the initial point that can be different from point of closest approach
154 //If you don't specify any point the default will be the point of closest approach!!
155 //Another subroutine will be implemented if you want to use
156 //a certain seed
157 double a_phi = firsttrack.getPhiPoint();//this has to be corrected as soon as you adjust the Trk2dDistanceSeeder...
158 double b_phi = secondtrack.getPhiPoint();
159
160 //store cos and sin of phi
161 double a_cosphi = -sin(a_phi);
162 double a_sinphi = cos(a_phi);
163 double b_cosphi = -sin(b_phi);
164 double b_sinphi = cos(b_phi);
165
166
167#ifdef TrkDistance_DEBUG
168 ATH_MSG_DEBUG( "Beginning phi is a_phi: " << a_phi << " b_phi " << b_phi );
169 ATH_MSG_DEBUG( "LOOP number 0" );
170#endif
171
172
173 int loopsnumber = 0;
174
175 bool isok=false;
176
177 while (!isok) {
178
179#ifdef TrkDistance_DEBUG
180 ATH_MSG_DEBUG( "Entered LOOP number: " << loopsnumber );
181 ATH_MSG_DEBUG( "actual value of a_phi: " << a_phi << " of b_phi " << b_phi );
182#endif
183
184
185 //count the loop number
186 ++loopsnumber;
187
188
189#ifdef TrkDistance_DEBUG
190 ATH_MSG_DEBUG( "First point x: " << GetClosestPoints().first.x()
191 << "y: " << GetClosestPoints().first.y()
192 << "z: " << GetClosestPoints().first.z() );
193 ATH_MSG_DEBUG( << "Second point x: " << GetClosestPoints().second.x()
194 << "y: " << GetClosestPoints().second.y()
195 << "z: " << GetClosestPoints().second.z() );
196
197 ATH_MSG_DEBUG( "ActualDistance: " << GetDistance() );
198 ATH_MSG_DEBUG( "real Dx0 " << ab_Dx0+a_Rt*a_cosphi-b_Rt*b_cosphi );
199 ATH_MSG_DEBUG( "real Dy0 " << ab_Dy0+a_Rt*a_sinphi-b_Rt*b_sinphi );
200#endif
201
202 //I remove the factor two from the formula
203 const double d1da_phi =
204 (ab_Dx0-b_Rt*b_cosphi)*(-a_Rt*a_sinphi)+
205 (ab_Dy0-b_Rt*b_sinphi)*a_cosphi*a_Rt+
206 (ab_Dz0-a_Rt*a_cotantheta*a_phi+b_Rt*b_cotantheta*b_phi)*(-a_Rt*a_cotantheta);
207
208
209 //same for second deriv respective to phi
210 const double d1db_phi =
211 (ab_Dx0+a_Rt*a_cosphi)*b_Rt*b_sinphi-//attention!MINUS here
212 (ab_Dy0+a_Rt*a_sinphi)*b_cosphi*b_Rt+
213 (ab_Dz0-a_Rt*a_cotantheta*a_phi+b_Rt*b_cotantheta*b_phi)*(+b_Rt*b_cotantheta);
214
215 //second derivatives (d^2/d^2(a) d^2/d^2(b) d^2/d(a)d(b) )
216
217 const double d2da_phi2 =
218 (ab_Dx0-b_Rt*b_cosphi)*(-a_Rt*a_cosphi)+
219 (ab_Dy0-b_Rt*b_sinphi)*(-a_Rt*a_sinphi)+
220 +a_Rt*a_Rt*(a_cotantheta*a_cotantheta);
221
222 const double d2db_phi2 =
223 (ab_Dx0+a_Rt*a_cosphi)*(+b_Rt*b_cosphi)+
224 (ab_Dy0+a_Rt*a_sinphi)*(+b_Rt*b_sinphi)+
225 +b_Rt*b_Rt*(b_cotantheta*b_cotantheta);
226
227
228 const double d2da_phib_phi = -a_Rt*b_Rt*(a_sinphi*b_sinphi+a_cosphi*b_cosphi+a_cotantheta*b_cotantheta);
229
230 //Calculate the determinant of the Jacobian
231
232 const double det = d2da_phi2*d2db_phi2-d2da_phib_phi*d2da_phib_phi;
233
234
235#ifdef TrkDistance_DEBUG
236 ATH_MSG_DEBUG( "d1da_phi " << d1da_phi << " d1db_phi " << d1db_phi << " d2da_phi2 " << d2da_phi2 << " d2db_phi2 " << d2db_phi2
237 << " d2da_phib_phi " << d2da_phib_phi << " det " << det );
238#endif
239
240 //if the quadratic form is defined negative or is semidefined, throw the event
241 //(you are in a maximum or in a saddle point)
242 if (det<0) {
243 ATH_MSG_DEBUG( "Hessian is negative: saddle point" );
244 return "Hessian is negative";
245 }
246 if (det>0&&d2da_phi2<0) {
247 ATH_MSG_DEBUG( "Hessian indicates a maximum: derivative will be zero but result incorrect" );
248 return "Maximum point found";
249 }
250
251 //Now apply the Newton formula in more than one dimension
252 const double deltaa_phi = -(d2db_phi2*d1da_phi-d2da_phib_phi*d1db_phi)/det;
253 const double deltab_phi = -(-d2da_phib_phi*d1da_phi+d2da_phi2*d1db_phi)/det;
254
255#ifdef TrkDistance_DEBUG
256 ATH_MSG_DEBUG( "deltaa_phi: " << deltaa_phi );
257 ATH_MSG_DEBUG( "deltab_phi: " << deltab_phi );
258#endif
259
260
261 a_phi += deltaa_phi;
262 b_phi += deltab_phi;
263
264 //store cos and sin of phi
265 a_cosphi = -sin(a_phi);
266 a_sinphi = cos(a_phi);
267 b_cosphi = -sin(b_phi);
268 b_sinphi = cos(b_phi);
269
270 if (std::sqrt(std::pow(deltaa_phi,2)+std::pow(deltab_phi,2))<m_precision ||
271 loopsnumber>m_maxloopnumber) isok=true;
272
273 }
274
275 if (loopsnumber>m_maxloopnumber) {
276 return "Could not find minimum distance: max loops number reached"; //now return error, see how to do it...
277 }
278
279
280 return TwoPoints(Amg::Vector3D(a_x0+a_Rt*(a_cosphi-a_cosphi0),
281 a_y0+a_Rt*(a_sinphi-a_sinphi0),
282 a_z0-a_Rt*(a_phi-a_phi0)*a_cotantheta),
283 Amg::Vector3D(b_x0+b_Rt*(b_cosphi-b_cosphi0),
284 b_y0+b_Rt*(b_sinphi-b_sinphi0),
285 b_z0-b_Rt*(b_phi-b_phi0)*b_cotantheta));
286}
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Eigen::Matrix< double, 3, 1 > Vector3D
bool first
Definition DeMoScan.py:534
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64
std::pair< Amg::Vector3D, Amg::Vector3D > TwoPoints

◆ GetClosestPoints() [3/4]

std::variant< TwoPoints, std::string > Trk::NewtonTrkDistanceFinder::GetClosestPoints ( const TwoPointOnTrack & twopointontrack) const
inline

Definition at line 70 of file NewtonTrkDistanceFinder.h.

70 {
71 return GetClosestPoints(twopointontrack.first,twopointontrack.second);
72 }

◆ GetClosestPoints() [4/4]

std::variant< TwoPoints, std::string > Trk::NewtonTrkDistanceFinder::GetClosestPoints ( const TwoTracks & twotracks) const
inline

Definition at line 65 of file NewtonTrkDistanceFinder.h.

65 {
66 return GetClosestPoints(twotracks.getFirstPerigee(),twotracks.getSecondPerigee());
67 }

◆ initialize()

StatusCode Trk::NewtonTrkDistanceFinder::initialize ( )
overridevirtual

Definition at line 43 of file NewtonTrkDistanceFinder.cxx.

44 {
45 ATH_CHECK( AlgTool::initialize() );
47 ATH_MSG_DEBUG( "Initialize successful" );
48 return StatusCode::SUCCESS;
49 }
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

const InterfaceID & Trk::NewtonTrkDistanceFinder::interfaceID ( )
inlinestatic

Definition at line 34 of file NewtonTrkDistanceFinder.h.

35 {
37 };
static const InterfaceID IID_NewtonTrkDistanceFinder("NewtonTrkDistanceFinder", 1, 1)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< AlgTool >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fieldCacheCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> Trk::NewtonTrkDistanceFinder::m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
private

Definition at line 80 of file NewtonTrkDistanceFinder.h.

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

◆ m_maxloopnumber

double Trk::NewtonTrkDistanceFinder::m_maxloopnumber
private

Definition at line 77 of file NewtonTrkDistanceFinder.h.

◆ m_precision

double Trk::NewtonTrkDistanceFinder::m_precision
private

Definition at line 76 of file NewtonTrkDistanceFinder.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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