|  | ATLAS Offline Software
    | 
 
 
 
#include <SingleTrackConversionTool.h>
|  | 
|  | SingleTrackConversionTool (const std::string &type, const std::string &name, const IInterface *parent) | 
|  | 
| virtual | ~SingleTrackConversionTool ()=default | 
|  | 
| virtual StatusCode | initialize () override | 
|  | 
| virtual StatusCode | finalize () override | 
|  | 
| xAOD::Vertex * | buildSingleTrackParticleConversion (const xAOD::TrackParticle *, xAOD::VertexContainer *container) const | 
|  | Build single track conversion candidate.  More... 
 | 
|  | 
| bool | selectSingleTrackParticleConversion (const xAOD::TrackParticle *) const | 
|  | Select single track conversion candidates.  More... 
 | 
|  | 
| ServiceHandle< StoreGateSvc > & | evtStore () | 
|  | The standard StoreGateSvc(event store) Returns (kind of) a pointer to theStoreGateSvc.  More...
 | 
|  | 
| const ServiceHandle< StoreGateSvc > & | evtStore () const | 
|  | The standard StoreGateSvc(event store) Returns (kind of) a pointer to theStoreGateSvc.  More...
 | 
|  | 
| const ServiceHandle< StoreGateSvc > & | detStore () const | 
|  | The standard StoreGateSvc/DetectorStoreReturns (kind of) a pointer to theStoreGateSvc.  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, V, H > &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 | 
|  | 
|  | 
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) | 
|  | specialization for handling Gaudi::Property<SG::VarHandleKey>  More... 
 | 
|  | 
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &) | 
|  | specialization for handling Gaudi::Property<SG::VarHandleKeyArray>  More... 
 | 
|  | 
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &) | 
|  | specialization for handling Gaudi::Property<SG::VarHandleBase>  More... 
 | 
|  | 
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &) | 
|  | specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>  More... 
 | 
|  | 
Helper tools to reconstruct single track conversions 
- Author
- Tatjana Lenz , Thomas Koffas 
Definition at line 29 of file SingleTrackConversionTool.h.
◆ StoreGateSvc_t
◆ SingleTrackConversionTool()
      
        
          | InDet::SingleTrackConversionTool::SingleTrackConversionTool | ( | const std::string & | type, | 
        
          |  |  | const std::string & | name, | 
        
          |  |  | const IInterface * | parent | 
        
          |  | ) |  |  | 
      
 
 
◆ ~SingleTrackConversionTool()
  
  | 
        
          | virtual InDet::SingleTrackConversionTool::~SingleTrackConversionTool | ( |  | ) |  |  | virtualdefault | 
 
 
◆ buildSingleTrackParticleConversion()
Build single track conversion candidate. 
xAOD::TrackParticle interface. 
Create a RecVertex at the first measurement of the track.
Need to compute a global position covariance matrix as J.C.JT
The local position parameters covariance matrix C (2x2)
The Jacobian matrix J (3x2)
The A = J.C (3x2)
The A.JT = J.C.JT (3x3)
Construct the new covariance matrix (3x3)
The local position parameters covariance matrix C (2x2)
The straight line surface (wire) global directions
The particle global direction
The Jacobian matrix J (3x2)
The A = J.C (3x2)
The A.JT = J.C.JT (3x3)
Construct the new covariance matrix (3x3)
Definition at line 76 of file SingleTrackConversionTool.cxx.
   82     unsigned int index(0);
 
  114       double Ax[3] = { 
T(0, 0), 
T(1, 0), 
T(2, 0) };
 
  115       double Ay[3] = { 
T(0, 1), 
T(1, 1), 
T(2, 1) };
 
  124       double A11 = a11 * p11 + a12 * p21;
 
  125       double A12 = a11 * p12 + a12 * p22;
 
  126       double A21 = a21 * p11 + a22 * p21;
 
  127       double A22 = a21 * p12 + a22 * p22;
 
  128       double A31 = a31 * p11 + a32 * p21;
 
  129       double A32 = a31 * p12 + a32 * p22;
 
  132       double P11 = a11 * A11 + A12 * a12;
 
  133       double P12 = A11 * a21 + A12 * a22;
 
  134       double P13 = A11 * a31 + A12 * a32;
 
  135       double P21 = A21 * a11 + A22 * a12;
 
  136       double P22 = A21 * a21 + A22 * a22;
 
  137       double P23 = A21 * a31 + A22 * a32;
 
  138       double P31 = A31 * a11 + A32 * a12;
 
  139       double P32 = A31 * a21 + A32 * a22;
 
  140       double P33 = A31 * a31 + A32 * a32;
 
  162       double A[3] = {
T(0,2),
T(1,2),
T(2,2)};
 
  170       double Bx = 
A[1]*Pz-
A[2]*Py;
 
  171       double By = 
A[2]*Px-
A[0]*Pz;
 
  172       double Bz = 
A[0]*Py-
A[1]*Px;
 
  173       double Bn = 1./sqrt(Bx*Bx+By*By+Bz*Bz); Bx*=Bn; By*=Bn; Bz*=Bn;
 
  174       double a11 = Bx; 
double a12 = 
A[0];
 
  175       double a21 = By; 
double a22 = 
A[1];
 
  176       double a31 = Bz; 
double a32 = 
A[2];
 
  179       double A11 = a11*p11 + a12*p21; 
double A12 = a11*p12 + a12*p22;
 
  180       double A21 = a21*p11 + a22*p21; 
double A22 = a21*p12 + a22*p22;
 
  181       double A31 = a31*p11 + a32*p21; 
double A32 = a31*p12 + a32*p22;
 
  184       double P11 = a11*A11 + A12*a12; 
double P12 = A11*a21 + A12*a22; 
double P13 = A11*a31 + A12*a32;
 
  185       double P21 = A21*a11 + A22*a12; 
double P22 = A21*a21 + A22*a22; 
double P23 = A21*a31 + A22*a32;
 
  186       double P31 = A31*a11 + A32*a12; 
double P32 = A31*a21 + A32*a22; 
double P33 = A31*a31 + A32*a32;
 
  189       nCovVtx(0,0) = P11; nCovVtx(0,1) = P12; nCovVtx(0,2) = P13;
 
  190       nCovVtx(1,0) = P21; nCovVtx(1,1) = P22; nCovVtx(1,2) = P23;
 
  191       nCovVtx(2,0) = P31; nCovVtx(2,1) = P32; nCovVtx(2,2) = P33;
 
  201     vertex->setCovariancePosition(nCovVtx);
 
  203     vertex->setFitQuality( 0, 0);
 
 
 
 
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray> 
Definition at line 170 of file AthCommonDataStore.h.
  175                                                        hndl.documentation());
 
 
 
 
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey> 
Definition at line 156 of file AthCommonDataStore.h.
  161                                                        hndl.documentation());
 
 
 
 
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase> 
Definition at line 184 of file AthCommonDataStore.h.
  189                                                        hndl.documentation());
 
 
 
 
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property. 
- Parameters
- 
  
    | name | Name of the property. |  | hndl | Object holding the property value. |  | doc | Documentation 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.
  250     this->declare(hndl.
vhKey());
 
  251     hndl.
vhKey().setOwner(
this);
 
  253     return PBASE::declareProperty(
name,hndl,
doc);
 
 
 
 
◆ declareProperty() [2/6]
Declare a new Gaudi property. 
- Parameters
- 
  
    | name | Name of the property. |  | hndl | Object holding the property value. |  | doc | Documentation 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.
  229     return PBASE::declareProperty(
name,hndl,
doc);
 
 
 
 
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property. 
- Parameters
- 
  
    | name | Name of the property. |  | property | Object holding the property value. |  | doc | Documentation 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.
  338     return PBASE::declareProperty(
name, property, 
doc);
 
 
 
 
◆ declareProperty() [5/6]
Declare a new Gaudi property. 
- Parameters
- 
  
    | name | Name of the property. |  | property | Object holding the property value. |  | doc | Documentation 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.
 
 
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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::SingleTrackConversionTool::finalize | ( |  | ) |  |  | overridevirtual | 
 
 
◆ initialize()
  
  | 
        
          | StatusCode InDet::SingleTrackConversionTool::initialize | ( |  | ) |  |  | overridevirtual | 
 
 
◆ inputHandles()
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::SingleTrackConversionTool::interfaceID | ( |  | ) |  |  | static | 
 
 
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ selectSingleTrackParticleConversion()
◆ sysInitialize()
◆ sysStart()
Handle START transition. 
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container. 
 
 
◆ updateVHKA()
◆ m_detStore
◆ m_evtStore
◆ m_maxBLhits
  
  | 
        
          | IntegerProperty InDet::SingleTrackConversionTool::m_maxBLhits {this, "MaxBLayerHits", 0, "Maximum number of blayer hits"} |  | protected | 
 
 
◆ m_minInitR
  
  | 
        
          | DoubleProperty InDet::SingleTrackConversionTool::m_minInitR |  | protected | 
 
Initial value:{this, "MinInitialHitRadius", 70.,
     "Minimum initial hit radius in order to consider track as coming from photon conversion"}
Definition at line 50 of file SingleTrackConversionTool.h.
 
 
◆ m_minInitR_noBLay
  
  | 
        
          | DoubleProperty InDet::SingleTrackConversionTool::m_minInitR_noBLay |  | protected | 
 
Initial value:{this, "MinInitialHitRadius_noBlay", 120.,
     "Minimum initial hit radius in order to consider track as coming from photon conversion"}
Definition at line 53 of file SingleTrackConversionTool.h.
 
 
◆ m_PIDonlyForXe
  
  | 
        
          | BooleanProperty InDet::SingleTrackConversionTool::m_PIDonlyForXe {this, "PIDonlyForXe", false, "Only check TRT PID if all hits are Xe hits"} |  | protected | 
 
 
◆ m_singleThreshold
  
  | 
        
          | DoubleProperty InDet::SingleTrackConversionTool::m_singleThreshold |  | protected | 
 
Initial value:{this, "MinRatioOfHLhits", 0.1,
     "Minimum ratio of HL hits for a track to be labeled as electron"}
Definition at line 56 of file SingleTrackConversionTool.h.
 
 
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
 
Vertex_v1 Vertex
Define the latest version of the vertex class.
const Amg::Vector3D & position() const
Access method for the position.
@ numberOfTRTXenonHits
number of TRT hits on track in straws with xenon [unit8_t].
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
@ numberOfTRTHits
number of TRT hits [unit8_t].
bool const RAWDATA *ch2 const
#define AmgSymMatrix(dim)
virtual void setOwner(IDataHandleHolder *o)=0
@ numberOfInnermostPixelLayerOutliers
number of 0th layer barrel outliers
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
@ FirstMeasurement
Parameter defined at the position of the 1st measurement.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Ensure that the ATLAS eigen extensions are properly loaded.
virtual const S & associatedSurface() const override final
Access to the Surface method.
Definition of ATLAS Math & Geometry primitives (Amg)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Eigen::Matrix< double, 3, 1 > Vector3D
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
const Amg::Vector3D & momentum() const
Access method for the momentum.
Class describing a Vertex.
#define ATH_MSG_WARNING(x)
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ ConvVtx
Conversion vertex.
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer