ATLAS Offline Software
ITkTrackClusterAssValidation.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #ifndef ITkTrackClusterAssValidation_H
7 #define ITkTrackClusterAssValidation_H
8 
20 #include <string>
21 #include <map>
22 
23 namespace HepPDT{
24  class ParticleDataTable;
25 }
26 
27 namespace ITk {
28 
29  // Class-algorithm for track cluster association validation
30  //
32  {
33 
35  // Public methods:
37 
38  public:
39 
41  // Standard Algotithm methods
43 
44  TrackClusterAssValidation(const std::string &name, ISvcLocator *pSvcLocator);
47  StatusCode execute(const EventContext& ctx) const;
49 
50  protected:
51 
53  // Protected data
55 
56  BooleanProperty m_usePix{this, "usePixel", true};
57  BooleanProperty m_useStrip{this, "useStrip", true};
58  BooleanProperty m_useOutliers{this, "useOutliers", false};
59  IntegerProperty m_pdg{this, "pdgParticle", 0};
60 
62  mutable std::vector<InDet::TrackCollectionStat_t> m_trackCollectionStat ATLAS_THREAD_SAFE; // Guarded by m_statMutex
63  mutable InDet::EventStat_t m_eventStat ATLAS_THREAD_SAFE; // Guarded by m_statMutex
64 
65  UnsignedIntegerProperty m_spcut{this, "MinNumberSpacePoints", 3};
66  FloatProperty m_ptcutmax{this, "MomentumMaxCut", 1.e20};
67  FloatProperty m_rapcut{this, "RapidityCut", 4.0};
68  FloatProperty m_ptcut{this, "MomentumCut", {}};
69  FloatProperty m_rmin{this, "RadiusMin", 0.};
70  FloatProperty m_rmax{this, "RadiusMax", 20.};
71 
72  FloatArrayProperty m_etabins{this, "EtaBins", {}};
73  FloatArrayProperty m_ptcuts{this, "PtCuts", {}};
74  UnsignedIntegerArrayProperty m_clcuts{this, "MinNumberClustersCuts", {}};
75 
76  float m_tcut = 0;
77 
79  {this, "TracksLocation", {"CombinedITkTracks"}};
81  {this, "SpacePointsStripName", "ITkStripSpacePoints"};
83  {this, "SpacePointsPixelName", "ITkPixelSpacePoints"};
85  {this, "SpacePointsOverlapName", "ITkOverlapSpacePoints"};
87  {this, "StripClusterContainer", "ITkStripClusters"};
89  {this, "PixelClusterContainer", "ITkPixelClusters"};
91  {this, "TruthLocationPixel", "PRD_MultiTruthITkPixel"};
93  {this, "TruthLocationStrip", "PRD_MultiTruthITkStrip"};
94 
95  // For P->T converter of PixelClusters
96  SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_pixelDetEleCollKey{this, "PixelDetEleCollKey", "ITkPixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"};
97  // For P->T converter of StripClusters
98  SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_StripDetEleCollKey{this, "StripDetEleCollKey", "ITkStripDetectorElementCollection", "Key of SiDetectorElementCollection for Strip"};
99 
100  struct EventData_t {
101  public:
102 
103  EventData_t(unsigned int n_collections)
104  : m_nspacepoints(0),
105  m_nclusters(0),
106  m_nqtracks(0),
107  m_truthPix{},
108  m_truthStrip{}
109  {
110  m_particles.resize(n_collections);
111  m_difference.resize(n_collections);
112  m_tracks.resize(n_collections);
113  m_trackCollectionStat.resize(n_collections);
114  }
115 
117  int m_nclusters{} ;
118  int m_nqtracks{} ;
119 
120  std::vector<std::unique_ptr<SG::VarHandleBase> > m_clusterHandles;
121  std::vector<SG::ReadHandle<TrackCollection> > m_trackcontainer;
122  std::vector<SG::ReadHandle<SpacePointContainer> > m_spacePointContainer;
123  std::unique_ptr<SG::ReadHandle<SpacePointOverlapCollection> > m_spacepointsOverlap;
126  std::multimap<int,const Trk::PrepRawData*> m_kinecluster ;
127  std::multimap<int,const Trk::SpacePoint*> m_kinespacepoint ;
128  std::vector<std::list<InDet::PartPropCache> > m_particles ;
129  std::vector<std::list<int> > m_difference ;
130  std::vector<std::multimap<int,int> > m_tracks ;
131  std::vector<InDet::TrackCollectionStat_t> m_trackCollectionStat;
133  };
134 
135  const HepPDT::ParticleDataTable* m_particleDataTable{} ;
136 
138  // Protected methods
140 
142  (const EventContext& ctx,
144  void newClustersEvent
145  (const EventContext& ctx,
147  void tracksComparison
148  (const EventContext& ctx,
153  (const ITk::TrackClusterAssValidation::EventData_t &event_data) const;
154 
157  int kine
159  const Trk::PrepRawData*, const Trk::PrepRawData*,
160  int*, int) const;
161  int kine
163  const Trk::PrepRawData*,
164  int*, int) const;
165  static int kine0
167  const Trk::PrepRawData*,
168  int*, int);
169  static bool isTruth
171  const Trk::PrepRawData*);
172  static bool isTheSameDetElement
174  int, const Trk::PrepRawData*);
175  static bool isTheSameDetElement
177  int, const Trk::SpacePoint*);
178 
179  static PRD_MultiTruthCollection::const_iterator findTruth
181  const Trk::PrepRawData*, PRD_MultiTruthCollection::const_iterator&) ;
182 
183  int charge
185  std::pair<int,const Trk::PrepRawData*>, int&, double&) const;
186  int charge
188  std::pair<int,const Trk::PrepRawData*> pa, int& rap) const
189  { double eta; return charge(event_data, pa, rap, eta); };
190 
191  float minpT(float eta) const;
192  unsigned int minclusters(float eta) const;
193 
194  MsgStream& dumptools(MsgStream& out, MSG::Level level) const;
195  static MsgStream& dumpevent
196  (MsgStream& out,
198 
199  };
200 
201  inline float ITk::TrackClusterAssValidation::minpT(float eta) const {
202  float aeta = std::abs(eta);
203  for(int n = int(m_ptcuts.size()-1); n>0; --n) {
204  if(aeta > m_etabins.value().at(n)) return m_ptcuts.value().at(n);
205  }
206  return m_ptcuts.value().at(0);
207  }
208 
209  inline unsigned int ITk::TrackClusterAssValidation::minclusters(float eta) const {
210  float aeta = std::abs(eta);
211  for(int n = int(m_clcuts.size()-1); n>0; --n) {
212  if(aeta > m_etabins.value().at(n)) return m_clcuts.value().at(n);
213  }
214  return m_clcuts.value().at(0);
215  }
216 
217 
218 }
219 #endif // TrackClusterAssValidation_H
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
ITk::TrackClusterAssValidation::m_ptcutmax
FloatProperty m_ptcutmax
Definition: ITkTrackClusterAssValidation.h:66
ITk::TrackClusterAssValidation::finalize
StatusCode finalize()
Definition: ITkTrackClusterAssValidation.cxx:166
Trk::SpacePoint
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:35
ITk::TrackClusterAssValidation::EventData_t::m_eventStat
InDet::EventStat_t m_eventStat
Definition: ITkTrackClusterAssValidation.h:132
ITk::TrackClusterAssValidation::EventData_t::m_nqtracks
int m_nqtracks
Definition: ITkTrackClusterAssValidation.h:118
ITk::TrackClusterAssValidation::m_ptcut
FloatProperty m_ptcut
Definition: ITkTrackClusterAssValidation.h:68
ITk::TrackClusterAssValidation::EventData_t::EventData_t
EventData_t(unsigned int n_collections)
Definition: ITkTrackClusterAssValidation.h:103
ITk::TrackClusterAssValidation::charge
int charge(const ITk::TrackClusterAssValidation::EventData_t &event_data, std::pair< int, const Trk::PrepRawData * > pa, int &rap) const
Definition: ITkTrackClusterAssValidation.h:187
ITk::TrackClusterAssValidation::m_rmin
FloatProperty m_rmin
Definition: ITkTrackClusterAssValidation.h:69
ITk::TrackClusterAssValidation::EventData_t::m_truthPix
const PRD_MultiTruthCollection * m_truthPix
Definition: ITkTrackClusterAssValidation.h:124
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
ITk::TrackClusterAssValidation::m_spacepointsPixelname
SG::ReadHandleKey< SpacePointContainer > m_spacepointsPixelname
Definition: ITkTrackClusterAssValidation.h:83
PRD_MultiTruthCollection
A PRD is mapped onto all contributing particles.
Definition: PRD_MultiTruthCollection.h:24
ITk::TrackClusterAssValidation::EventData_t::m_truthStrip
const PRD_MultiTruthCollection * m_truthStrip
Definition: ITkTrackClusterAssValidation.h:125
ITk::TrackClusterAssValidation::ATLAS_THREAD_SAFE
std::vector< InDet::TrackCollectionStat_t > m_trackCollectionStat ATLAS_THREAD_SAFE
Definition: ITkTrackClusterAssValidation.h:62
ITk::TrackClusterAssValidation::EventData_t::m_kinespacepoint
std::multimap< int, const Trk::SpacePoint * > m_kinespacepoint
Definition: ITkTrackClusterAssValidation.h:127
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
ITk::TrackClusterAssValidation::EventData_t::m_spacePointContainer
std::vector< SG::ReadHandle< SpacePointContainer > > m_spacePointContainer
Definition: ITkTrackClusterAssValidation.h:122
ITk::TrackClusterAssValidation::EventData_t::m_clusterHandles
std::vector< std::unique_ptr< SG::VarHandleBase > > m_clusterHandles
Definition: ITkTrackClusterAssValidation.h:120
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:38
SG::ReadHandleKey< SpacePointContainer >
ITk::TrackClusterAssValidation
Definition: ITkTrackClusterAssValidation.h:32
ITk::TrackClusterAssValidation::m_spcut
UnsignedIntegerProperty m_spcut
Definition: ITkTrackClusterAssValidation.h:65
ITk::TrackClusterAssValidation::m_ptcuts
FloatArrayProperty m_ptcuts
Definition: ITkTrackClusterAssValidation.h:73
ITk::TrackClusterAssValidation::newClustersEvent
void newClustersEvent(const EventContext &ctx, ITk::TrackClusterAssValidation::EventData_t &event_data) const
Definition: ITkTrackClusterAssValidation.cxx:693
SpacePointContainer.h
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
ITk::TrackClusterAssValidation::m_statMutex
std::mutex m_statMutex
Definition: ITkTrackClusterAssValidation.h:61
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
ITk::TrackClusterAssValidation::isTheSameDetElement
static bool isTheSameDetElement(const ITk::TrackClusterAssValidation::EventData_t &event_data, int, const Trk::PrepRawData *)
Definition: ITkTrackClusterAssValidation.cxx:1246
ITk::TrackClusterAssValidation::m_tracklocation
SG::ReadHandleKeyArray< TrackCollection > m_tracklocation
Definition: ITkTrackClusterAssValidation.h:79
ITk::TrackClusterAssValidation::qualityTracksSelection
int qualityTracksSelection(ITk::TrackClusterAssValidation::EventData_t &event_data) const
Definition: ITkTrackClusterAssValidation.cxx:870
ITk::TrackClusterAssValidation::TrackClusterAssValidation
TrackClusterAssValidation(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ITkTrackClusterAssValidation.cxx:25
ITk::TrackClusterAssValidation::ATLAS_THREAD_SAFE
InDet::EventStat_t m_eventStat ATLAS_THREAD_SAFE
Definition: ITkTrackClusterAssValidation.h:63
ITk::TrackClusterAssValidation::m_StripDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_StripDetEleCollKey
Definition: ITkTrackClusterAssValidation.h:98
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ITk::TrackClusterAssValidation::initialize
StatusCode initialize()
Definition: ITkTrackClusterAssValidation.cxx:38
ITk::TrackClusterAssValidation::EventData_t::m_nspacepoints
int m_nspacepoints
Definition: ITkTrackClusterAssValidation.h:116
ITk::TrackClusterAssValidation::noReconstructedParticles
bool noReconstructedParticles(const ITk::TrackClusterAssValidation::EventData_t &event_data) const
Definition: ITkTrackClusterAssValidation.cxx:1303
ITk::TrackClusterAssValidation::m_clustersStripname
SG::ReadHandleKey< InDet::SiClusterContainer > m_clustersStripname
Definition: ITkTrackClusterAssValidation.h:87
ITk::TrackClusterAssValidation::efficiencyReconstruction
void efficiencyReconstruction(ITk::TrackClusterAssValidation::EventData_t &event_data) const
Definition: ITkTrackClusterAssValidation.cxx:1089
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ITk::TrackClusterAssValidation::findTruth
static PRD_MultiTruthCollection::const_iterator findTruth(const ITk::TrackClusterAssValidation::EventData_t &event_data, const Trk::PrepRawData *, PRD_MultiTruthCollection::const_iterator &)
Definition: ITkTrackClusterAssValidation.cxx:1384
ITk::TrackClusterAssValidation::EventData_t::m_nclusters
int m_nclusters
Definition: ITkTrackClusterAssValidation.h:117
ITk::TrackClusterAssValidation::EventData_t
Definition: ITkTrackClusterAssValidation.h:100
ITk::TrackClusterAssValidation::EventData_t::m_trackcontainer
std::vector< SG::ReadHandle< TrackCollection > > m_trackcontainer
Definition: ITkTrackClusterAssValidation.h:121
TrackClusterAssValidationUtils.h
ITk::TrackClusterAssValidation::minclusters
unsigned int minclusters(float eta) const
Definition: ITkTrackClusterAssValidation.h:209
ITk::TrackClusterAssValidation::newSpacePointsEvent
void newSpacePointsEvent(const EventContext &ctx, ITk::TrackClusterAssValidation::EventData_t &event_data) const
Definition: ITkTrackClusterAssValidation.cxx:779
ITk::TrackClusterAssValidation::dumptools
MsgStream & dumptools(MsgStream &out, MSG::Level level) const
Definition: ITkTrackClusterAssValidation.cxx:611
TrackCollection.h
SpacePointOverlapCollection.h
ITk::TrackClusterAssValidation::m_pixelDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
Definition: ITkTrackClusterAssValidation.h:96
HepPDT
Definition: BeamHaloGenerator.h:13
ITk::TrackClusterAssValidation::m_tcut
float m_tcut
Definition: ITkTrackClusterAssValidation.h:76
ReadCondHandleKey.h
ITk::TrackClusterAssValidation::m_truth_locationPixel
SG::ReadHandleKey< PRD_MultiTruthCollection > m_truth_locationPixel
Definition: ITkTrackClusterAssValidation.h:91
AthReentrantAlgorithm.h
Trk::PrepRawData
Definition: PrepRawData.h:62
ITk::TrackClusterAssValidation::EventData_t::m_spacepointsOverlap
std::unique_ptr< SG::ReadHandle< SpacePointOverlapCollection > > m_spacepointsOverlap
Definition: ITkTrackClusterAssValidation.h:123
ITk::TrackClusterAssValidation::kine
int kine(const ITk::TrackClusterAssValidation::EventData_t &event_data, const Trk::PrepRawData *, const Trk::PrepRawData *, int *, int) const
Definition: ITkTrackClusterAssValidation.cxx:1137
ITk
Definition: ITkPixelOfflineCalibCondAlg.cxx:14
ITk::TrackClusterAssValidation::m_usePix
BooleanProperty m_usePix
Definition: ITkTrackClusterAssValidation.h:56
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ITk::TrackClusterAssValidation::m_rmax
FloatProperty m_rmax
Definition: ITkTrackClusterAssValidation.h:70
ITk::TrackClusterAssValidation::EventData_t::m_particles
std::vector< std::list< InDet::PartPropCache > > m_particles
Definition: ITkTrackClusterAssValidation.h:128
ITk::TrackClusterAssValidation::kine0
static int kine0(const ITk::TrackClusterAssValidation::EventData_t &event_data, const Trk::PrepRawData *, int *, int)
Definition: ITkTrackClusterAssValidation.cxx:1210
ITk::TrackClusterAssValidation::~TrackClusterAssValidation
virtual ~TrackClusterAssValidation()
SiDetectorElementCollection.h
ITk::TrackClusterAssValidation::m_truth_locationStrip
SG::ReadHandleKey< PRD_MultiTruthCollection > m_truth_locationStrip
Definition: ITkTrackClusterAssValidation.h:93
ITk::TrackClusterAssValidation::isTruth
static bool isTruth(const ITk::TrackClusterAssValidation::EventData_t &, const Trk::PrepRawData *)
Definition: ITkTrackClusterAssValidation.cxx:1234
ITk::TrackClusterAssValidation::EventData_t::m_trackCollectionStat
std::vector< InDet::TrackCollectionStat_t > m_trackCollectionStat
Definition: ITkTrackClusterAssValidation.h:131
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection >
ITk::TrackClusterAssValidation::m_etabins
FloatArrayProperty m_etabins
Definition: ITkTrackClusterAssValidation.h:72
ITk::TrackClusterAssValidation::m_pdg
IntegerProperty m_pdg
Definition: ITkTrackClusterAssValidation.h:59
SiClusterContainer.h
ITk::TrackClusterAssValidation::dumpevent
static MsgStream & dumpevent(MsgStream &out, const ITk::TrackClusterAssValidation::EventData_t &event_data)
Definition: ITkTrackClusterAssValidation.cxx:666
ITk::TrackClusterAssValidation::m_useStrip
BooleanProperty m_useStrip
Definition: ITkTrackClusterAssValidation.h:57
ITk::TrackClusterAssValidation::execute
StatusCode execute(const EventContext &ctx) const
Definition: ITkTrackClusterAssValidation.cxx:109
ITk::TrackClusterAssValidation::m_clcuts
UnsignedIntegerArrayProperty m_clcuts
Definition: ITkTrackClusterAssValidation.h:74
ITk::TrackClusterAssValidation::m_spacepointsOverlapname
SG::ReadHandleKey< SpacePointOverlapCollection > m_spacepointsOverlapname
Definition: ITkTrackClusterAssValidation.h:85
InDet::EventStat_t
Definition: TrackClusterAssValidationUtils.h:93
ITk::TrackClusterAssValidation::m_clustersPixelname
SG::ReadHandleKey< InDet::SiClusterContainer > m_clustersPixelname
Definition: ITkTrackClusterAssValidation.h:89
ITk::TrackClusterAssValidation::m_rapcut
FloatProperty m_rapcut
Definition: ITkTrackClusterAssValidation.h:67
PRD_MultiTruthCollection.h
ITk::TrackClusterAssValidation::m_spacepointsStripname
SG::ReadHandleKey< SpacePointContainer > m_spacepointsStripname
Definition: ITkTrackClusterAssValidation.h:81
ITk::TrackClusterAssValidation::EventData_t::m_kinecluster
std::multimap< int, const Trk::PrepRawData * > m_kinecluster
Definition: ITkTrackClusterAssValidation.h:126
ITk::TrackClusterAssValidation::tracksComparison
void tracksComparison(const EventContext &ctx, ITk::TrackClusterAssValidation::EventData_t &event_data) const
Definition: ITkTrackClusterAssValidation.cxx:976
ITk::TrackClusterAssValidation::charge
int charge(const ITk::TrackClusterAssValidation::EventData_t &event_data, std::pair< int, const Trk::PrepRawData * >, int &, double &) const
Definition: ITkTrackClusterAssValidation.cxx:1412
checker_macros.h
Define macros for attributes used to control the static checker.
ITk::TrackClusterAssValidation::m_useOutliers
BooleanProperty m_useOutliers
Definition: ITkTrackClusterAssValidation.h:58
ITk::TrackClusterAssValidation::m_particleDataTable
const HepPDT::ParticleDataTable * m_particleDataTable
Definition: ITkTrackClusterAssValidation.h:135
ITk::TrackClusterAssValidation::EventData_t::m_difference
std::vector< std::list< int > > m_difference
Definition: ITkTrackClusterAssValidation.h:129
ITk::TrackClusterAssValidation::EventData_t::m_tracks
std::vector< std::multimap< int, int > > m_tracks
Definition: ITkTrackClusterAssValidation.h:130
ITk::TrackClusterAssValidation::minpT
float minpT(float eta) const
Definition: ITkTrackClusterAssValidation.h:201