ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::PrimaryTruthClassifier Class Reference

modular concept to define certain categories of truth particles, this one labels primary, secondary and truncated tracks. More...

#include <PrimaryTruthClassifier.h>

Inheritance diagram for Trk::PrimaryTruthClassifier:
Collaboration diagram for Trk::PrimaryTruthClassifier:

Public Member Functions

 PrimaryTruthClassifier (const std::string &type, const std::string &name, const IInterface *parent)
 ~PrimaryTruthClassifier ()
virtual StatusCode initialize ()
 initialize
virtual StatusCode finalize ()
virtual void initClassification (const McEventCollection &, const std::vector< HepMC::ConstGenParticlePtr > *) const
 explain
virtual unsigned int classify (HepMC::ConstGenParticlePtr) const
virtual std::string nameOfClassifier () const
virtual std::string classificationAsString (unsigned int) const
virtual unsigned int numberOfClassifiers () 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 ()
 Interface ID, declared here, and defined below.

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

float m_maxRStartPrimary
 Max R of start vertex to be considered primary.
float m_maxZStartPrimary
 Max Z of start vertex to be considered primary.
float m_minREndPrimary
 If track has end vertex, this is min R of end vertex to be considered primary.
float m_minZEndPrimary
 If track has end vertex, this is min Z of end vertex to be considered primary.
float m_maxRStartSecondary
float m_maxZStartSecondary
float m_minREndSecondary
float m_minZEndSecondary
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

modular concept to define certain categories of truth particles, this one labels primary, secondary and truncated tracks.

Author
Sebastian.Fleischmann -at- cern.ch, Wolfgang.Liebig -at- cern.ch

Definition at line 32 of file PrimaryTruthClassifier.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

◆ PrimaryTruthClassifier()

Trk::PrimaryTruthClassifier::PrimaryTruthClassifier ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 17 of file PrimaryTruthClassifier.cxx.

18 : AthAlgTool (type,name,parent),
19 m_maxRStartPrimary ( 25.0*CLHEP::mm),
20 m_maxZStartPrimary ( 200.0*CLHEP::mm),
21 m_minREndPrimary ( 400.0*CLHEP::mm),
22 m_minZEndPrimary (2300.0*CLHEP::mm),
23 m_maxRStartSecondary ( 360.0*CLHEP::mm),
24 m_maxZStartSecondary (2000.0*CLHEP::mm),
25 m_minREndSecondary (1000.0*CLHEP::mm),
26 m_minZEndSecondary (3200.0*CLHEP::mm)
27{
28 declareInterface<ITrackTruthClassifier>(this);
29
30 declareProperty("maxRStartPrimary", m_maxRStartPrimary);
31 declareProperty("maxZStartPrimary", m_maxZStartPrimary);
32 declareProperty("minREndPrimary", m_minREndPrimary);
33 declareProperty("minZEndPrimary", m_minZEndPrimary);
34 declareProperty("maxRStartSecondary", m_maxRStartSecondary);
35 declareProperty("maxZStartSecondary", m_maxZStartSecondary);
36 declareProperty("minREndSecondary", m_minREndSecondary);
37 declareProperty("minZEndSecondary", m_minZEndSecondary);
38
39}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
float m_minREndPrimary
If track has end vertex, this is min R of end vertex to be considered primary.
float m_minZEndPrimary
If track has end vertex, this is min Z of end vertex to be considered primary.
float m_maxRStartPrimary
Max R of start vertex to be considered primary.
float m_maxZStartPrimary
Max Z of start vertex to be considered primary.

◆ ~PrimaryTruthClassifier()

Trk::PrimaryTruthClassifier::~PrimaryTruthClassifier ( )
inline

Definition at line 38 of file PrimaryTruthClassifier.h.

38{}

Member Function Documentation

◆ classificationAsString()

std::string Trk::PrimaryTruthClassifier::classificationAsString ( unsigned int i) const
inlinevirtual

Implements Trk::ITrackTruthClassifier.

Definition at line 76 of file PrimaryTruthClassifier.h.

76 {
77 Trk::TruthClassification::PrimaryClassifierStrings PC;
78 return PC.names[i];
79 }

◆ classify()

unsigned int Trk::PrimaryTruthClassifier::classify ( HepMC::ConstGenParticlePtr genParticle) const
virtual

Implements Trk::ITrackTruthClassifier.

Definition at line 64 of file PrimaryTruthClassifier.cxx.

64 {
65
66
67 /* note on using HepMC::FourVector/3Vector against HepGeom::Point3D<double>: The versions from HepMC2 do not know
68 operator+, operator- etc. */
69
70
71 //classify as primary, secondary or truncated
72 bool primary=false;
73 bool secondary=false;
74 bool truncated=false;
75
76 if (genParticle->production_vertex()) {
77 HepMC::FourVector startVertex = genParticle->production_vertex()->position();
78
79 // primary vertex inside innermost layer?
80 if ( fabs(startVertex.perp()) < m_maxRStartPrimary
81 && fabs(startVertex.z()) < m_maxZStartPrimary)
82 {
83 if (genParticle->end_vertex() == nullptr) {
84 primary=true;
85 } else {
86 HepMC::FourVector endVertex = genParticle->end_vertex()->position();
87 if ( endVertex.perp() > m_minREndPrimary
88 || fabs(startVertex.z()) > m_minZEndPrimary)
89 primary=true; else truncated = true;
90 }
91 }
92 else if ( startVertex.perp() < m_maxRStartSecondary &&
93 fabs(startVertex.z()) < m_maxZStartSecondary)
94 {
95 if (genParticle->end_vertex() == nullptr) {
96 secondary=true;
97 } else {
98 HepMC::FourVector endVertex = genParticle->end_vertex()->position();
99 if (endVertex.perp() > m_minREndSecondary
100 || fabs(endVertex.z()) > m_minZEndSecondary) {
101 secondary=true;
102 }
103 }
104 }
105 } //end classification
106
107 if (truncated) return Trk::TruthClassification::Truncated;
108 if (secondary) return Trk::TruthClassification::Secondary;
109 if (primary) return Trk::TruthClassification::Primary;
110 ATH_MSG_DEBUG ( "Could not classify this particle: " << genParticle );
112
113}
#define ATH_MSG_DEBUG(x)
@ OutsideClassification
providing some well-defined error condition

◆ 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::PrimaryTruthClassifier::finalize ( )
virtual

Definition at line 49 of file PrimaryTruthClassifier.cxx.

49 {
50 ATH_MSG_INFO ("starting finalize() in " << name() );
51 return StatusCode::SUCCESS;
52}
#define ATH_MSG_INFO(x)

◆ initClassification()

void Trk::PrimaryTruthClassifier::initClassification ( const McEventCollection & ,
const std::vector< HepMC::ConstGenParticlePtr > *  ) const
virtual

explain

Implements Trk::ITrackTruthClassifier.

Definition at line 54 of file PrimaryTruthClassifier.cxx.

56 {
57
58 // nothing to prepare as local data at start of collection analysis
59 }

◆ initialize()

StatusCode Trk::PrimaryTruthClassifier::initialize ( )
virtual

initialize

Definition at line 44 of file PrimaryTruthClassifier.cxx.

44 {
45 ATH_MSG_INFO ("initialise successful in "<<name() );
46 return StatusCode::SUCCESS;
47}

◆ 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::ITrackTruthClassifier::interfaceID ( )
inlinestaticinherited

Interface ID, declared here, and defined below.

Definition at line 48 of file ITrackTruthClassifier.h.

48 {
50}
static const InterfaceID IID_ITrackTruthClassifier("ITrackTruthClassifier", 1, 0)

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

◆ nameOfClassifier()

std::string Trk::PrimaryTruthClassifier::nameOfClassifier ( ) const
inlinevirtual

Implements Trk::ITrackTruthClassifier.

Definition at line 72 of file PrimaryTruthClassifier.h.

72 {
73 return "reconstructableForInDet";
74 }

◆ numberOfClassifiers()

unsigned int Trk::PrimaryTruthClassifier::numberOfClassifiers ( ) const
inlinevirtual

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

float Trk::PrimaryTruthClassifier::m_maxRStartPrimary
private

Max R of start vertex to be considered primary.

Definition at line 55 of file PrimaryTruthClassifier.h.

◆ m_maxRStartSecondary

float Trk::PrimaryTruthClassifier::m_maxRStartSecondary
private

Definition at line 61 of file PrimaryTruthClassifier.h.

◆ m_maxZStartPrimary

float Trk::PrimaryTruthClassifier::m_maxZStartPrimary
private

Max Z of start vertex to be considered primary.

Definition at line 56 of file PrimaryTruthClassifier.h.

◆ m_maxZStartSecondary

float Trk::PrimaryTruthClassifier::m_maxZStartSecondary
private

Definition at line 62 of file PrimaryTruthClassifier.h.

◆ m_minREndPrimary

float Trk::PrimaryTruthClassifier::m_minREndPrimary
private

If track has end vertex, this is min R of end vertex to be considered primary.

Definition at line 58 of file PrimaryTruthClassifier.h.

◆ m_minREndSecondary

float Trk::PrimaryTruthClassifier::m_minREndSecondary
private

Definition at line 63 of file PrimaryTruthClassifier.h.

◆ m_minZEndPrimary

float Trk::PrimaryTruthClassifier::m_minZEndPrimary
private

If track has end vertex, this is min Z of end vertex to be considered primary.

Definition at line 60 of file PrimaryTruthClassifier.h.

◆ m_minZEndSecondary

float Trk::PrimaryTruthClassifier::m_minZEndSecondary
private

Definition at line 64 of file PrimaryTruthClassifier.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: