ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
InDet::VertexPointEstimator Class Reference

#include <VertexPointEstimator.h>

Inheritance diagram for InDet::VertexPointEstimator:
Collaboration diagram for InDet::VertexPointEstimator:

Public Types

typedef std::map< std::string, float > Values_t
 

Public Member Functions

 VertexPointEstimator (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~VertexPointEstimator ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
Amg::Vector3D getCirclesIntersectionPoint (const Trk::Perigee *per1, const Trk::Perigee *per2, unsigned int flag, int &errorcode) const
 Get intersection point of two track helices. More...
 
Amg::Vector3D getCirclesIntersectionPoint (const Trk::Perigee *per1, const Trk::Perigee *per2, unsigned int flag, int &errorcode, Values_t &decors) const
 Get intersection point of two track helices. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 
static std::vector< std::string > decorKeys ()
 Return list of keys used for decorations. More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Amg::Vector3D intersectionImpl (const Trk::Perigee *per1, const Trk::Perigee *per2, unsigned int flag, int &errorcode, float &deltaPhi, float &deltaR) const
 internal implementation More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Static Private Member Functions

static double areaVar (double, double, double, double, double, double, double &)
 
static double areaVar (double, double, double, double, double, double, double &, double &, double &)
 
static bool circleIntersection (double, double, double, double, double, double, double &, double &, double &, double &)
 
static bool secondDegree (double, double, double, double &, double &)
 
static double areaTriangle (double, double, double, double, double, double)
 

Private Attributes

DoubleArrayProperty m_maxDR
 
DoubleArrayProperty m_maxDZ
 
DoubleArrayProperty m_maxR
 
DoubleArrayProperty m_minArcLength
 
DoubleArrayProperty m_maxArcLength
 
DoubleArrayProperty m_minDr
 
DoubleArrayProperty m_maxDr
 
DoubleArrayProperty m_maxHl {this, "MaxHl", {10000., 10000., 10000.}, "maximum ratio H/l"}
 
DoubleArrayProperty m_maxPhi
 
BooleanProperty m_returnOnError {this, "ReturnOnError", true}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Static Private Attributes

static const double s_bmagnt = 2.083
 

Detailed Description

Some helper tools like: hits counter

Author
Tatjana Lenz , Thomas Koffas

Definition at line 20 of file VertexPointEstimator.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

◆ Values_t

typedef std::map<std::string, float> InDet::VertexPointEstimator::Values_t

Definition at line 33 of file VertexPointEstimator.h.

Constructor & Destructor Documentation

◆ VertexPointEstimator()

InDet::VertexPointEstimator::VertexPointEstimator ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 25 of file VertexPointEstimator.cxx.

25  :
27  {
28  declareInterface<VertexPointEstimator>(this);
29  }

◆ ~VertexPointEstimator()

virtual InDet::VertexPointEstimator::~VertexPointEstimator ( )
virtualdefault

Member Function Documentation

◆ areaTriangle()

double InDet::VertexPointEstimator::areaTriangle ( double  a,
double  b,
double  d,
double  e,
double  g,
double  h 
)
staticprivate

Definition at line 475 of file VertexPointEstimator.cxx.

477  { // double i)
478  double c = 1;
479  double f = 1;
480  double i = 1;
481  return fabs(0.5* ( (a*e*i + d*h*c + b*f*g) - (g*e*c + d*b*i + a*f*h) ) );
482  }

◆ areaVar() [1/2]

double InDet::VertexPointEstimator::areaVar ( double  xc1,
double  yc1,
double  r1,
double  xc2,
double  yc2,
double  r2,
double &  phi 
)
staticprivate

Definition at line 336 of file VertexPointEstimator.cxx.

337  {
338  double ret = -999999;
339  double xi1, yi1, xi2, yi2;
340  if (circleIntersection( xc1, yc1, r1, xc2, yc2, r2, xi1, yi1, xi2, yi2 ))
341  {
342  double h = 0.5*(sqrt( pow(xi1-xi2,2) + pow(yi1-yi2,2) ));
343  double l = sqrt( pow(xc1-xc2,2) + pow(yc1-yc2,2) );
344  if (l!=0) ret = h/l;
345 
346  double norm1 = sqrt((xi1-xc1)*(xi1-xc1)+(yi1-yc1)*(yi1-yc1));
347  double norm2 = sqrt((xi1-xc2)*(xi1-xc2)+(yi1-yc2)*(yi1-yc2));
348  if((norm1!=0.) && (norm2!=0.)){ //rejecting pathology
349  //centers at the origin
350  norm1 = 1./norm1;
351  norm2 = 1./norm2;
352  double xa = (xi1-xc1)*norm1;
353  double ya = (yi1-yc1)*norm1;
354  double xb = (xi1-xc2)*norm2;
355  double yb = (yi1-yc2)*norm2;
356  double costheta = xa*xb + ya*yb;
357  phi = M_PI-std::acos(costheta);
358  }
359  }
360  return ret;
361  }

◆ areaVar() [2/2]

double InDet::VertexPointEstimator::areaVar ( double  xc1,
double  yc1,
double  r1,
double  xc2,
double  yc2,
double  r2,
double &  h,
double &  hl,
double &  ddphi 
)
staticprivate

Definition at line 373 of file VertexPointEstimator.cxx.

374  {
375  double ret = -999999;
376  double xi1, yi1, xi2, yi2;
377  h = 0;
378  hl = 0;
379  ddphi = 0.;
380  if (circleIntersection( xc1, yc1, r1, xc2, yc2, r2, xi1, yi1, xi2, yi2 )) {
381 
382  // the two triangles have identical area
383  ret = areaTriangle(xc1,yc1, xc2,yc2, xi1,yi1) ;
384 
385  h = 0.5*(sqrt( pow(xi1-xi2,2) + pow(yi1-yi2,2) ));
386 
387  double l = sqrt( pow(xc1-xc2,2) + pow(yc1-yc2,2) );
388  if (l!=0) hl = h/l;
389 
390  // |AxB| = |A||B|sin(phi) => sinphi = |AxB| / |A||B|
391  // (xi1,yi1) = first intersection point; this is the one I use
392  // (xi2,yi2) = second intersection point; this is symmetric to the first
393  // (xc1,yc1) = centre first circle
394  // (xc2,yc2) = centre second circle
395  double norm1 = sqrt(pow(xi1-xc1,2)+pow(yi1-yc1,2));
396  double norm2 = sqrt(pow(xi1-xc2,2)+pow(yi1-yc2,2));
397  if ((norm1 != 0) && (norm2 != 0)){ // rejecting pathology
398  // centres at the origin
399  double xa = (xi1 - xc1)/norm1;
400  double ya = (yi1 - yc1)/norm1;
401  double xb = (xi1 - xc2)/norm2;
402  double yb = (yi1 - yc2)/norm2;
403  double costheta = xa*xb +ya*yb;
404  double phi = M_PI-internal_acos(costheta);
405  ddphi = phi;
406  }
407  }
408 
409  return ret;
410  }

◆ circleIntersection()

bool InDet::VertexPointEstimator::circleIntersection ( double  xc1,
double  yc1,
double  r1,
double  xc2,
double  yc2,
double  r2,
double &  xi1,
double &  yi1,
double &  xi2,
double &  yi2 
)
staticprivate

Definition at line 413 of file VertexPointEstimator.cxx.

417  {
418  // Calculate the intersection of the two circles:
419  //
420  // (x-xc1)^2 + (y-yc1)^2 = R1^2
421  // (x-xc2)^2 + (y-yc2)^2 = R2^2
422 
423  xi1 = -999999999.;
424  xi2 = -999999999.;
425  yi1 = -999999999.;
426  yi2 = -999999999.;
427 
428  if ( yc1 != yc2) {
429  double A = (xc1 - xc2) / (yc2- yc1);
430  double B = (r1*r1 - r2*r2 - xc1*xc1 + xc2*xc2 - yc1*yc1 + yc2*yc2) / 2. / ( yc2 -yc1);
431  double a = 1 + A*A;
432  double b = 2*A*B - 2*xc1 -2*A*yc1;
433  double c = B*B - 2*B*yc1 + xc1*xc1 + yc1*yc1 - r1*r1;
434  if (secondDegree(a,b,c,xi1,xi2) ){
435  yi1 = A*xi1 + B;
436  yi2 = A*xi2 + B;
437  return true;
438  }
439  return false;
440  }
441  if (xc1 != xc2){
442  double A = (yc1 - yc2) / (xc2- xc1);
443  double B = (r1*r1 - r2*r2 - xc1*xc1 + xc2*xc2 - yc1*yc1 + yc2*yc2) / 2. / ( xc2 -xc1);
444  double a = 1 + A*A;
445  double b = 2*A*B - 2*yc1 -2*A*xc1;
446  double c = B*B - 2*B*xc1 + xc1*xc1 + yc1*yc1 - r1*r1;
447  if (secondDegree(a,b,c,yi1,yi2) ){
448  xi1 = A*yi1 + B;
449  xi2 = A*yi2 + B;
450  return true;
451  }
452  return false;
453  }
454 
455  // circles are concentric and we don't care
456  return false;
457 
458  return false;
459  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ decorKeys()

std::vector< std::string > InDet::VertexPointEstimator::decorKeys ( )
static

Return list of keys used for decorations.

Definition at line 74 of file VertexPointEstimator.cxx.

75  {
76  return {"deltaPhiTracks", "DR1R2"};
77  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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 InDet::VertexPointEstimator::finalize ( )
overridevirtual

Definition at line 42 of file VertexPointEstimator.cxx.

42  {
43  return StatusCode::SUCCESS;
44  }

◆ getCirclesIntersectionPoint() [1/2]

Amg::Vector3D InDet::VertexPointEstimator::getCirclesIntersectionPoint ( const Trk::Perigee per1,
const Trk::Perigee per2,
unsigned int  flag,
int &  errorcode 
) const

Get intersection point of two track helices.

circles intersection point calculation

Based on pure geometric arguments. Return error flag if problems.

Definition at line 49 of file VertexPointEstimator.cxx.

53  {
54  float deltaPhi;
55  float deltaR;
56  return intersectionImpl (per1, per2, flag, errorcode, deltaPhi, deltaR);
57  }

◆ getCirclesIntersectionPoint() [2/2]

Amg::Vector3D InDet::VertexPointEstimator::getCirclesIntersectionPoint ( const Trk::Perigee per1,
const Trk::Perigee per2,
unsigned int  flag,
int &  errorcode,
Values_t decors 
) const

Get intersection point of two track helices.

Based on pure geometric arguments. Return error flag if problems. Also return dictionary of values for decorations.

Definition at line 61 of file VertexPointEstimator.cxx.

66  {
67  decors.clear();
68  return intersectionImpl (per1, per2, flag, errorcode,
69  decors["deltaPhiTracks"],
70  decors["DR1R2"]);
71  }

◆ initialize()

StatusCode InDet::VertexPointEstimator::initialize ( )
overridevirtual

Definition at line 37 of file VertexPointEstimator.cxx.

37  {
38  return StatusCode::SUCCESS;
39  }

◆ 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 & InDet::VertexPointEstimator::interfaceID ( )
static

Definition at line 32 of file VertexPointEstimator.cxx.

32  {
33  return IID_IVertexPointEstimator;
34  }

◆ intersectionImpl()

Amg::Vector3D InDet::VertexPointEstimator::intersectionImpl ( const Trk::Perigee per1,
const Trk::Perigee per2,
unsigned int  flag,
int &  errorcode,
float &  deltaPhi,
float &  deltaR 
) const
private

internal implementation

Definition at line 83 of file VertexPointEstimator.cxx.

89  {
90  /*
91  Calculates the initial approximation to the vertex position. Based on CTVMFT.
92  Tries to intersect circles that are (R,Phi) projections of the helical trajectories of the two tracks
93  If the circles intersect, the intersection with smaller z difference between the 2 helices extrapolated to the intersection is chosen.
94  If the circles do not intersect, the vertex approximation is taken as the point of closest approach of the two circles.
95  per1 should be that of the track with the smaller radius
96  */
97  Amg::Vector3D intPoint(0.,0.,0.);
98  double aconst = -1.49898*s_bmagnt; //is it correct???????????????????
99  double DRMAX = 0.; // maximum XY separation, non-intersecting circles
100  double DZMAX = 0.; // maximum allowed track Z separation at the vertex
101  double RVMAX = 0.; // maximum allowed vertex radius
102  double minArcLength(0.);
103  double maxArcLength(0.);
104  double minDr(0.);
105  double maxDr(0.);
106  double maxHl(0.);
107  double maxPhi(0.);
108  if (flag <= 2) {
109  DRMAX = m_maxDR[flag]; //maximum XY separation, non-intersecting circles
110  DZMAX = m_maxDZ[flag]; //maximum allowed track Z separation at the vertex
111  RVMAX = m_maxR[flag] ; //maximum allowed vertex radius
112  minArcLength = m_minArcLength[flag];
113  maxArcLength = m_maxArcLength[flag];
114  minDr = m_minDr[flag];
115  maxDr = m_maxDr[flag];
116  maxHl = m_maxHl[flag];
117  maxPhi= m_maxPhi[flag];
118  }
119 
120  double d0[2],z0[2],phi[2],cotTheta[2],qOverPt[2],RC[2],XC[2],YC[2],RA[2],AB[2];
121  double XSVI[2],YSVI[2],ZSVI[2],RVI[2],DZSVI[2],SS1[2],SS2[2],ZZ1[2],ZZ2[2];
122 
123  double X=0.,Y=0.,Z=0.;
124  for (int I=0; I<2; ++I) {
125  d0[I] = -999.;
126  z0[I] = -999.;
127  phi[I] = -999.;
128  cotTheta[I] = -999.;
129  qOverPt[I] = -999.;
130  RC[I] = -999.;
131  XC[I] = -999.;
132  YC[I] = -999.;
133  RA[I] = +999.;
134  AB[I] = +999.;
135  XSVI[I] = 0.;
136  YSVI[I] = 0.;
137  ZSVI[I] = 0.;
138  RVI[I] = 2.0*RVMAX;
139  DZSVI[I] = 2.0*DZMAX;
140  SS1[I] = 0.;
141  SS2[I] = 0.;
142  ZZ1[I] = 0.;
143  ZZ2[I] = 0.;
144  }
145 
146  double U(0.);
147  const AmgVector(5)& perParam1 = per1->parameters();
148  double pt1 = fabs(sin(perParam1[Trk::theta])/perParam1[Trk::qOverP]);
149  const AmgVector(5)& perParam2 = per2->parameters();
150  double pt2 = fabs(sin(perParam2[Trk::theta])/perParam2[Trk::qOverP]);
151  if (pt1 < pt2) {
152  d0[0] = perParam1[Trk::d0]; d0[1] = perParam2[Trk::d0];
153  z0[0] = perParam1[Trk::z0]; z0[1] = perParam2[Trk::z0];
154  phi[0] = perParam1[Trk::phi]; phi[1] = perParam2[Trk::phi];
155  double theta1 = perParam1[Trk::theta]; cotTheta[0] = 1./tan(theta1);
156  double theta2 = perParam2[Trk::theta]; cotTheta[1] = 1./tan(theta2);
157  double qOverP1 = perParam1[Trk::qOverP]; qOverPt[0] = qOverP1/sin(perParam1[Trk::theta]);
158  double qOverP2 = perParam2[Trk::qOverP]; qOverPt[1] = qOverP2/sin(perParam2[Trk::theta]);
159  RC[0] = 10.*0.5/(qOverPt[0]*aconst); RC[1] = 10.*0.5/(qOverPt[1]*aconst);//Radius of curvature
160  U = RC[0] + d0[0];
161  XC[0] = -1*U*sin(phi[0]); //Circle center x-coordinate
162  YC[0] = U*cos(phi[0]); //Circle center y-coordinate
163  RA[0] = fabs(RC[0]);
164  U = RC[1] + d0[1];
165  XC[1] = -1*U*sin(phi[1]); // Circle center x-coordinate
166  YC[1] = U*cos(phi[1]); // Circle center y-coordinate
167  RA[1] = fabs(RC[1]);
168  } else {
169  d0[0] = perParam2[Trk::d0]; d0[1] = perParam1[Trk::d0];
170  z0[0] = perParam2[Trk::z0]; z0[1] = perParam1[Trk::z0];
171  phi[0] = perParam2[Trk::phi]; phi[1] = perParam1[Trk::phi];
172  double theta2 = perParam2[Trk::theta]; cotTheta[0] = 1./tan(theta2);
173  double theta1 = perParam1[Trk::theta]; cotTheta[1] = 1./tan(theta1);
174  double qOverP2 = perParam2[Trk::qOverP]; qOverPt[0] = qOverP2/sin(perParam2[Trk::theta]);
175  double qOverP1 = perParam1[Trk::qOverP]; qOverPt[1] = qOverP1/sin(perParam1[Trk::theta]);
176  RC[0] = 10.*0.5/(qOverPt[0]*aconst); RC[1] = 10.*0.5/(qOverPt[1]*aconst);//Radius of curvature
177  double U = RC[0] + d0[0];
178  XC[0] = -1*U*sin(phi[0]); //Circle center x-coordinate
179  YC[0] = U*cos(phi[0]); //Circle center y-coordinate
180  RA[0] = fabs(RC[0]);
181  U = RC[1] + d0[1];
182  XC[1] = -1*U*sin(phi[1]); // Circle center x-coordinate
183  YC[1] = U*cos(phi[1]); // Circle center y-coordinate
184  RA[1] = fabs(RC[1]);
185  }
186 
187  // get the circle centre separation
188  double DX = XC[1] - XC[0];
189  double DY = YC[1] - YC[0];
190  double D = DX*DX + DY*DY;
191  D = sqrt(D);
192  if (D == 0.) {
193  ATH_MSG_DEBUG("Concentric circles, should not happen return (0,0,0)");
194  errorcode = 1;
195  if(m_returnOnError) return intPoint;
196  }
197  U = D - RA[0] - RA[1]; // signed separation, if > 0., the circles do not intersect, if < 0., they might
198  // rotate, translate to a system, where the two circle centres lie on the X axis
199 
200  //New cut from Mauro
201  deltaR = U; double PHI = -99999.;
202  double hl = areaVar(XC[0], YC[0], RA[0], XC[1], YC[1], RA[1], PHI);
203 
204  double COST = DX/D;
205  double SINT = DY/D;
206  double Y0 = (-1*XC[0]*YC[1] + XC[1]*YC[0])/D; //Translation along the y-axis
207  for (int I=0; I<2; ++I) {
208  AB[I] = COST*XC[I] + SINT*YC[I]; // The new circle center positions in the rotated system. Essentially the new x-coordinates, since the y-coordinates are 0.
209  }
210  U = (XC[1] + XC[0])*(XC[1] - XC[0]) + (YC[1] + YC[0])*(YC[1] - YC[0]);
211  double V = (RA[1] + RA[0])*(RA[1] - RA[0]);
212  double XX = 0.5*(U - V)/D; // X of intersection in rotated coordinate system (a+AB[0]). Again the y is 0.
213  if ((XX - AB[0])*(XX - AB[0]) > 0.) {
214  U = sqrt((XX - AB[0])*(XX - AB[0])); //This is the a in my logbook
215  }
216  double YY2 = (RA[0] + U)*(RA[0] - U); //This is the h^2 in my logbook
217  double YY;
218  int nsol = 0;
219  if (YY2 > 0.) {
220 
221  // the circles intersect
222  YY = sqrt(YY2); // two intersection points (+/- Y) or (+/- h) in my logbook
223 
224  for (int I=0; I<2; ++I) {
225  U = YY + Y0; // invert the translation
226  XSVI[I] = COST*XX - SINT*U; // Invert the rotation
227  YSVI[I] = SINT*XX + COST*U;
228  YY = -1*YY;
229  }
230 
231  nsol = 2;
232 
233  } else {
234  // circles do not intersect - find how close they approach each other
235  // in the XY plane and take the point half way between them
236  U = D - RA[0] - RA[1];
237  if (U > 0.) {
238  //Circles do not overlap at all and are outside from each other.See logbook
239  V = U;
240  XX = AB[1] + RA[1];
241 
242  if (AB[0] < AB[1]) XX = AB[0] + RA[0];
243  } else {
244  //Circles inside each other but off-centered.See logbook
245  if (AB[0] < AB[1]) { //To the left
246  XX = AB[1] - RA[1];
247  V = AB[0] - RA[0] - XX;
248  } else {
249  //To the right
250  XX = AB[0] + RA[0];
251  V = AB[1] + RA[1] - XX;
252  }
253  }
254  XX = XX + 0.5*V;
255  XSVI[0] = COST*XX - SINT*Y0; // rotate back to the original system
256  YSVI[0] = SINT*XX + COST*Y0; // one solution
257  nsol = 1;
258  if (V > DRMAX) {
259  //Cut if distance of minimum approach is too big
260  ATH_MSG_DEBUG("XY distance of minimum approach is too large, return (0,0,0)");
261  errorcode = 2;
262  if(m_returnOnError) return intPoint;
263  }
264  }
265 
266  for (int J=0; J<nsol; ++J) { // loop over solutions
267  U = (XSVI[J] - XC[0])/RC[0];
268  V = -1*(YSVI[J] - YC[0])/RC[0];
269  U = atan2(U,V) - phi[0]; // turning angle from the track origin
270  if (U < -1*pi) U = U + twopi;
271  if (U > pi) U = U - twopi;
272  SS1[J] = RC[0]*U; // arc length
273  ZZ1[J] = z0[0] + SS1[J]*cotTheta[0];
274  U = (XSVI[J] - XC[1])/RC[1];
275  V = -1*(YSVI[J] - YC[1])/RC[1];
276  U = atan2(U,V) - phi[1];
277  if (U < -1*pi) U = U + twopi;
278  if (U > pi) U = U - twopi;
279  SS2[J] = RC[1]*U;
280  ZZ2[J] = z0[1] + SS1[J]*cotTheta[1];
281  RVI[J] = sqrt(XSVI[J]*XSVI[J] + YSVI[J]*YSVI[J]);
282  DZSVI[J] = ZZ2[J] - ZZ1[J];
283  }
284  ZSVI[0] = 0.5*(ZZ1[0] + ZZ2[0]);
285  ZSVI[1] = 0.5*(ZZ1[1] + ZZ2[1]);
286 
287  if (std::min(RVI[0],RVI[1]) > RVMAX) { // check the vertex radius is acceptable
288  ATH_MSG_DEBUG("Unacceptable vertex radius");
289  errorcode = 3;
290  }
291 
292  if (std::min(fabs(DZSVI[0]),fabs(DZSVI[1])) > DZMAX) { // check the Z difference
293  ATH_MSG_DEBUG("Unacceptable Z difference");
294  errorcode = 4;
295  }
296 
297  double A = std::min(SS1[0],SS2[0]); // minimum track arc length, solution 1
298  double B = std::min(SS1[1],SS2[1]); // minimum track arc length, solution 2
299  if (std::max(A,B) < minArcLength || std::max(A,B) > maxArcLength) { // limit the minimum arc length
300  ATH_MSG_DEBUG("Unacceptable arc length");
301  errorcode = 5;
302  if(m_returnOnError) return intPoint;
303  }
304 
305  int J = 0;
306  if ( nsol == 2 && (fabs(DZSVI[1]) < fabs(DZSVI[0])) ) J = 1;
307 
308  X = XSVI[J];
309  Y = YSVI[J];
310  Z = ZSVI[J];
311  intPoint(0)=X; intPoint(1)=Y; intPoint(2)=Z;
312 
313  if(deltaR>maxDr || deltaR<minDr){
314  ATH_MSG_DEBUG("Unaceptable circle distance");
315  errorcode = 6;
316  if(m_returnOnError) return intPoint;
317  }
318 
319  if(hl>maxHl){
320  ATH_MSG_DEBUG("Unacceptable h/D ratio");
321  errorcode = 7;
322  if(m_returnOnError) return intPoint;
323  }
324 
325  deltaPhi = PHI; // quick fix: cannot get rid of (double) PHI as it is passed by ref and deltaPhi is a float
326  if(deltaPhi>maxPhi){
327  ATH_MSG_DEBUG("Unacceptable difference in phi");
328  errorcode = 8;
329  if(m_returnOnError) return intPoint;
330  }
331 
332  return intPoint;
333  }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
366  }

◆ secondDegree()

bool InDet::VertexPointEstimator::secondDegree ( double  a,
double  b,
double  c,
double &  y1,
double &  y2 
)
staticprivate

Definition at line 462 of file VertexPointEstimator.cxx.

463  {
464  y1 = -999999999;
465  y2 = -999999999;
466  double discr = b*b - 4*a*c;
467  if (discr < 0) return false;
468  y1 = (-b+sqrt(discr))/2./a;
469  y2 = (-b-sqrt(discr))/2./a;
470  return true;
471 
472  }

◆ 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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

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_maxArcLength

DoubleArrayProperty InDet::VertexPointEstimator::m_maxArcLength
private
Initial value:
{this, "MaxArcLength", {10000., 10000., 10000.},
"maximum permitted arc length, track to vertex, depends on the posion of the first measurement"}

Definition at line 91 of file VertexPointEstimator.h.

◆ m_maxDR

DoubleArrayProperty InDet::VertexPointEstimator::m_maxDR
private
Initial value:
{this, "MaxTrkXYDiffAtVtx", {10000., 10000., 10000.},
"maximum XY separation, non-intersecting circles"}

Definition at line 79 of file VertexPointEstimator.h.

◆ m_maxDr

DoubleArrayProperty InDet::VertexPointEstimator::m_maxDr
private
Initial value:
{this, "MaxDeltaR", {5., 10., 10.},
"maximum difference between helix centers"}

Definition at line 97 of file VertexPointEstimator.h.

◆ m_maxDZ

DoubleArrayProperty InDet::VertexPointEstimator::m_maxDZ
private
Initial value:
{this, "MaxTrkZDiffAtVtx", {10000., 10000., 10000.},
"maximum allowed track Z separation at the vertex"}

Definition at line 82 of file VertexPointEstimator.h.

◆ m_maxHl

DoubleArrayProperty InDet::VertexPointEstimator::m_maxHl {this, "MaxHl", {10000., 10000., 10000.}, "maximum ratio H/l"}
private

Definition at line 100 of file VertexPointEstimator.h.

◆ m_maxPhi

DoubleArrayProperty InDet::VertexPointEstimator::m_maxPhi
private
Initial value:
{this, "MaxPhi", {0.05, 0.1, 0.1},
"maximum DPhi at the estimated vertex position"}

Definition at line 102 of file VertexPointEstimator.h.

◆ m_maxR

DoubleArrayProperty InDet::VertexPointEstimator::m_maxR
private
Initial value:
{this, "MaxTrkXYValue", {10000., 10000., 10000.},
"maximum allowed vertex radius"}

Definition at line 85 of file VertexPointEstimator.h.

◆ m_minArcLength

DoubleArrayProperty InDet::VertexPointEstimator::m_minArcLength
private
Initial value:
{this, "MinArcLength", {-10000., -10000., -10000.},
"minimum permitted arc length, track to vertex, depends on the posion of the first measurement"}

Definition at line 88 of file VertexPointEstimator.h.

◆ m_minDr

DoubleArrayProperty InDet::VertexPointEstimator::m_minDr
private
Initial value:
{this, "MinDeltaR", {-5., -25., -50.},
"minimum difference between helix centers"}

Definition at line 94 of file VertexPointEstimator.h.

◆ m_returnOnError

BooleanProperty InDet::VertexPointEstimator::m_returnOnError {this, "ReturnOnError", true}
private

Definition at line 105 of file VertexPointEstimator.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.

◆ s_bmagnt

const double InDet::VertexPointEstimator::s_bmagnt = 2.083
staticprivate

Definition at line 78 of file VertexPointEstimator.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
InDet::VertexPointEstimator::m_maxDZ
DoubleArrayProperty m_maxDZ
Definition: VertexPointEstimator.h:83
max
#define max(a, b)
Definition: cfImp.cxx:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
InDet::VertexPointEstimator::areaTriangle
static double areaTriangle(double, double, double, double, double, double)
Definition: VertexPointEstimator.cxx:475
InDet::VertexPointEstimator::s_bmagnt
static const double s_bmagnt
Definition: VertexPointEstimator.h:78
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Monitored::Z
@ Z
Definition: HistogramFillerUtils.h:24
hist_file_dump.d
d
Definition: hist_file_dump.py:137
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
InDet::VertexPointEstimator::m_minDr
DoubleArrayProperty m_minDr
Definition: VertexPointEstimator.h:95
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::z0
@ z0
Definition: ParamDefs.h:64
DataModelTestDataCommonDict::xa
std::vector< DMTest::B > xa
Definition: DataModelTestDataCommonDict.h:54
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
InDet::VertexPointEstimator::m_maxR
DoubleArrayProperty m_maxR
Definition: VertexPointEstimator.h:86
InDet::VertexPointEstimator::m_maxHl
DoubleArrayProperty m_maxHl
Definition: VertexPointEstimator.h:101
RoiUtil::PHI
@ PHI
Definition: RoiSerialise.cxx:31
MCP::ScaleSmearParam::r2
@ r2
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
pi
constexpr double pi
Definition: VertexPointEstimator.cxx:15
A
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
InDet::VertexPointEstimator::intersectionImpl
Amg::Vector3D intersectionImpl(const Trk::Perigee *per1, const Trk::Perigee *per2, unsigned int flag, int &errorcode, float &deltaPhi, float &deltaR) const
internal implementation
Definition: VertexPointEstimator.cxx:83
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
Trk::theta
@ theta
Definition: ParamDefs.h:66
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
master.flag
bool flag
Definition: master.py:29
InDet::VertexPointEstimator::m_maxDr
DoubleArrayProperty m_maxDr
Definition: VertexPointEstimator.h:98
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
InDet::VertexPointEstimator::m_maxDR
DoubleArrayProperty m_maxDR
Definition: VertexPointEstimator.h:80
test_pyathena.parent
parent
Definition: test_pyathena.py:15
hist_file_dump.f
f
Definition: hist_file_dump.py:135
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
min
#define min(a, b)
Definition: cfImp.cxx:40
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Monitored::Y
@ Y
Definition: HistogramFillerUtils.h:24
twopi
constexpr double twopi
Definition: VertexPointEstimator.cxx:16
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
Trk::d0
@ d0
Definition: ParamDefs.h:63
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
InDet::VertexPointEstimator::m_returnOnError
BooleanProperty m_returnOnError
Definition: VertexPointEstimator.h:105
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
DataModelTestDataCommonDict::xb
DMTest::CView::Pers_t xb
Definition: DataModelTestDataCommonDict.h:55
a
TList * a
Definition: liststreamerinfos.cxx:10
h
InDet::internal_acos
double internal_acos(double x)
Definition: VertexPointEstimator.cxx:364
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
InDet::VertexPointEstimator::secondDegree
static bool secondDegree(double, double, double, double &, double &)
Definition: VertexPointEstimator.cxx:462
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
InDet::VertexPointEstimator::m_minArcLength
DoubleArrayProperty m_minArcLength
Definition: VertexPointEstimator.h:89
InDet::VertexPointEstimator::m_maxArcLength
DoubleArrayProperty m_maxArcLength
Definition: VertexPointEstimator.h:92
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
TRT::Track::cotTheta
@ cotTheta
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:65
Trk::phi
@ phi
Definition: ParamDefs.h:75
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
I
#define I(x, y, z)
Definition: MD5.cxx:116
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
MCP::ScaleSmearParam::r1
@ r1
InDet::VertexPointEstimator::circleIntersection
static bool circleIntersection(double, double, double, double, double, double, double &, double &, double &, double &)
Definition: VertexPointEstimator.cxx:413
makeComparison.deltaR
float deltaR
Definition: makeComparison.py:36
python.compressB64.c
def c
Definition: compressB64.py:93
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDet::VertexPointEstimator::areaVar
static double areaVar(double, double, double, double, double, double, double &)
Definition: VertexPointEstimator.cxx:336
fitman.k
k
Definition: fitman.py:528
InDet::VertexPointEstimator::m_maxPhi
DoubleArrayProperty m_maxPhi
Definition: VertexPointEstimator.h:103