ATLAS Offline Software
Loading...
Searching...
No Matches
TrackClusterAssValidation.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5
6#ifndef TrackClusterAssValidation_H
7#define TrackClusterAssValidation_H
8
21#include <string>
22#include <map>
23
24namespace InDet {
25
26 // Class-algorithm for track cluster association validation
27 //
29 {
30
32 // Public methods:
34
35 public:
36
38 // Standard Algotithm methods
40
41 TrackClusterAssValidation(const std::string &name, ISvcLocator *pSvcLocator);
43 StatusCode initialize();
44 StatusCode execute(const EventContext& ctx) const;
45 StatusCode finalize();
46
47 protected:
48
50 // Protected data
52
53 bool m_usePIX{} ;
54 bool m_useSCT{} ;
55 bool m_useTRT{} ;
57 int m_pdg{} ;
58
59 mutable std::mutex m_statMutex;
60 mutable std::vector<TrackCollectionStat_t> m_trackCollectionStat ATLAS_THREAD_SAFE; // Guarded by m_statMutex
61 mutable EventStat_t m_eventStat ATLAS_THREAD_SAFE; // Guarded by m_statMutex
62
63 unsigned int m_clcut{} ;
64 unsigned int m_clcutTRT{} ;
65 unsigned int m_spcut{} ;
66 double m_ptcut{} ;
67 double m_ptcutmax{} ;
68 double m_rapcut{} ;
69 double m_tcut{} ;
70 double m_rmin{} ;
71 double m_rmax{} ;
82 // For P->T converter of PixelClusters
83 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_pixelDetEleCollKey{this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"};
84 // For P->T converter of SCT_Clusters
85 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
86
87 struct EventData_t {
88 public:
89
90 EventData_t(unsigned int n_collections)
91 : m_nspacepoints(0),
92 m_nclusters(0),
93 m_nqtracks(0),
95 m_truthPIX{},
96 m_truthSCT{},
98 {
99 m_particles.resize(n_collections);
100 m_difference.resize(n_collections);
101 m_tracks.resize(n_collections);
102 m_trackCollectionStat.resize(n_collections);
103 }
104
109
110 std::vector<std::unique_ptr<SG::VarHandleBase> > m_clusterHandles;
111 std::vector<SG::ReadHandle<TrackCollection> > m_trackcontainer;
112 std::vector<SG::ReadHandle<SpacePointContainer> > m_spacePointContainer;
113 std::unique_ptr<SG::ReadHandle<SpacePointOverlapCollection> > m_spacepointsOverlap;
117 std::multimap<int,const Trk::PrepRawData*> m_kinecluster ;
118 std::multimap<int,const Trk::PrepRawData*> m_kineclusterTRT ;
119 std::multimap<int,const Trk::SpacePoint*> m_kinespacepoint ;
120 std::vector<std::list<PartPropCache> > m_particles ;
121 std::vector<std::list<int> > m_difference ;
122 std::vector<std::multimap<int,int> > m_tracks ;
123 std::vector<TrackCollectionStat_t> m_trackCollectionStat;
125 };
126
128 // Protected methods
130
131 void newSpacePointsEvent (const EventContext& ctx, InDet::TrackClusterAssValidation::EventData_t &event_data) const;
132 void newClustersEvent (const EventContext& ctx, InDet::TrackClusterAssValidation::EventData_t &event_data) const;
133 void tracksComparison (const EventContext& ctx, InDet::TrackClusterAssValidation::EventData_t &event_data) const;
136
138 int kine(const InDet::TrackClusterAssValidation::EventData_t &event_data,const Trk::PrepRawData*,const Trk::PrepRawData*,int*,int) const;
139 int kine (const InDet::TrackClusterAssValidation::EventData_t &event_data,const Trk::PrepRawData*,int*,int) const;
140 static int kine0(const InDet::TrackClusterAssValidation::EventData_t &event_data,const Trk::PrepRawData*,int*,int) ;
144
145 static PRD_MultiTruthCollection::const_iterator findTruth
146 (const InDet::TrackClusterAssValidation::EventData_t &event_data,const Trk::PrepRawData*,PRD_MultiTruthCollection::const_iterator&) ;
147
148 int charge(const InDet::TrackClusterAssValidation::EventData_t &event_data,std::pair<int,const Trk::PrepRawData*>,int&) const;
149
150 MsgStream& dumptools(MsgStream& out, MSG::Level level) const;
151 static MsgStream& dumpevent(MsgStream& out, const InDet::TrackClusterAssValidation::EventData_t &event_data) ;
152
153 };
154
155}
156#endif // TrackClusterAssValidation_H
Property holding a SG store/key/clid from which a ReadHandle is made.
Define macros for attributes used to control the static checker.
An algorithm that can be simultaneously executed in multiple threads.
static MsgStream & dumpevent(MsgStream &out, const InDet::TrackClusterAssValidation::EventData_t &event_data)
void tracksComparison(const EventContext &ctx, InDet::TrackClusterAssValidation::EventData_t &event_data) const
static bool isTruth(const InDet::TrackClusterAssValidation::EventData_t &, const Trk::PrepRawData *)
TrackClusterAssValidation(const std::string &name, ISvcLocator *pSvcLocator)
SG::ReadHandleKey< SpacePointContainer > m_spacepointsSCTname
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlapname
MsgStream & dumptools(MsgStream &out, MSG::Level level) const
SG::ReadHandleKey< PRD_MultiTruthCollection > m_truth_locationPixel
SG::ReadHandleKeyArray< TrackCollection > m_tracklocation
bool noReconstructedParticles(const InDet::TrackClusterAssValidation::EventData_t &event_data) const
static int kine0(const InDet::TrackClusterAssValidation::EventData_t &event_data, const Trk::PrepRawData *, int *, int)
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
SG::ReadHandleKey< SiClusterContainer > m_clustersPixelname
int charge(const InDet::TrackClusterAssValidation::EventData_t &event_data, std::pair< int, const Trk::PrepRawData * >, int &) const
void efficiencyReconstruction(InDet::TrackClusterAssValidation::EventData_t &event_data) const
StatusCode execute(const EventContext &ctx) const
SG::ReadHandleKey< PRD_MultiTruthCollection > m_truth_locationTRT
int qualityTracksSelection(InDet::TrackClusterAssValidation::EventData_t &event_data) const
void newSpacePointsEvent(const EventContext &ctx, InDet::TrackClusterAssValidation::EventData_t &event_data) const
static PRD_MultiTruthCollection::const_iterator findTruth(const InDet::TrackClusterAssValidation::EventData_t &event_data, const Trk::PrepRawData *, PRD_MultiTruthCollection::const_iterator &)
void newClustersEvent(const EventContext &ctx, InDet::TrackClusterAssValidation::EventData_t &event_data) const
SG::ReadHandleKey< TRT_DriftCircleContainer > m_clustersTRTname
SG::ReadHandleKey< SpacePointContainer > m_spacepointsPixelname
SG::ReadHandleKey< SiClusterContainer > m_clustersSCTname
SG::ReadHandleKey< PRD_MultiTruthCollection > m_truth_locationSCT
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
int kine(const InDet::TrackClusterAssValidation::EventData_t &event_data, const Trk::PrepRawData *, const Trk::PrepRawData *, int *, int) const
std::vector< TrackCollectionStat_t > m_trackCollectionStat ATLAS_THREAD_SAFE
static bool isTheSameDetElement(const InDet::TrackClusterAssValidation::EventData_t &event_data, int, const Trk::PrepRawData *)
A PRD is mapped onto all contributing particles.
Property holding a SG store/key/clid from which a ReadHandle is made.
Primary Vertex Finder.
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
std::vector< SG::ReadHandle< TrackCollection > > m_trackcontainer
std::vector< std::list< PartPropCache > > m_particles
std::multimap< int, const Trk::PrepRawData * > m_kinecluster
std::vector< std::multimap< int, int > > m_tracks
std::vector< TrackCollectionStat_t > m_trackCollectionStat
std::vector< std::unique_ptr< SG::VarHandleBase > > m_clusterHandles
std::multimap< int, const Trk::PrepRawData * > m_kineclusterTRT
std::vector< SG::ReadHandle< SpacePointContainer > > m_spacePointContainer
std::unique_ptr< SG::ReadHandle< SpacePointOverlapCollection > > m_spacepointsOverlap
std::multimap< int, const Trk::SpacePoint * > m_kinespacepoint