ATLAS Offline Software
TrackTimeDefAndQualityAlg.h
Go to the documentation of this file.
1 
41 #ifndef HGTD_RECALGS_TRACKTIMEDEFANDQUALITYALG_H
42 #define HGTD_RECALGS_TRACKTIMEDEFANDQUALITYALG_H
43 
45 
50 
51 namespace {
52 static constexpr unsigned short n_hgtd_layers = 4; // two double sided layers
53 } // namespace
54 
55 namespace HGTD {
56 
58 
59 private:
60  // different shift distances for bitfield definition
61  const short m_recoed_ptrn_sft = 0;
62  //const short m_exp_ptrn_sft = 4;
63  const short m_comp_ptrn_sft = 8;
64  const short m_holes_ptrn_sft = 12;
65  const short m_primes_ptrn_sft = 16;
66 
67 public:
68  TrackTimeDefAndQualityAlg(const std::string& name, ISvcLocator* pSvcLocator);
70  virtual StatusCode initialize() override final;
71  virtual StatusCode execute(const EventContext& ctx) const override final;
72 
73 private:
75  this, "TrackParticleContainerName", "InDetTrackParticles",
76  "Name of the TrackParticle container"};
77 
79  this, "HGTD_has_extension", "InDetTrackParticles.HGTD_has_extension",
80  "deco with a handle for an extension"};
82  this, "HGTD_cluster_time", "InDetTrackParticles.HGTD_cluster_time",
83  "deco with a handle for cluster time"};
86  this, "HGTD_cluster_truth_class",
87  "InDetTrackParticles.HGTD_cluster_truth_class",
88  "deco with a handle for a truth time"};
89 
91  this, "time", "InDetTrackParticles.time", "Time assigned to this track"};
93  this, "timeResolution", "InDetTrackParticles.timeResolution",
94  "Time resolution assigned to this track"};
96  this, "hasValidTime", "InDetTrackParticles.hasValidTime", "Time assigned to this track is valid"};
98  m_summarypattern_dec_key{this, "HGTD_summaryinfo",
99  "InDetTrackParticles.HGTD_summaryinfo",
100  "Bitfield for working point definition"};
101 
102  // TODO: the resolution is fixed to 0.035 ps, should add the resolution
103  // calculation after the irradiation
104  struct Hit {
105  float m_time = 0.;
106  float m_resolution = 0.035;
107  bool m_isprime = false;
108  bool m_isvalid = false;
109  short m_layer = -1;
110  };
111 
112  struct CleaningResult {
113  std::array<Hit, n_hgtd_layers> m_hits;
115  float m_time;
118  };
119 
120  FloatProperty m_chi2_threshold{
121  this, "Chi2Threshold", 1.5,
122  "Quality cut for decision to keep hits compatible in time"};
123  FloatProperty m_deltat_cut{this, "DeltaTCut", 2.0,
124  "Upper limit for a cluster delta t cut"};
125 
126  FloatProperty m_default_time{
127  this, "DefaultTime", 0.0,
128  "Default time used for tracks without HGTD timing info"};
129  // time resolution default value, set to +- half a bunch crossing, using flat
130  // distribution
131  FloatProperty m_default_time_res{
132  this, "DefaultTimeRes", 50. / std::sqrt(12.),
133  "Default time resolution used for tracks without HGTD timing info"};
134 
135  CleaningResult
136  runTimeConsistencyCuts(const xAOD::TrackParticle* track_particle) const;
137 
138  std::array<Hit, n_hgtd_layers>
139  getValidHits(const xAOD::TrackParticle* track_particle) const;
140 
148  float calculateChi2(const std::array<Hit, n_hgtd_layers>& hits) const;
149 
150  // float calculateChi2(const std::vector<Hit>& hits) const;
151 
159  bool passesDeltaT(const std::array<Hit, n_hgtd_layers>& hits) const;
160 
169  float meanTime(const std::array<Hit, n_hgtd_layers>& hits) const;
170 
174  float trackTimeResolution(const std::array<Hit, n_hgtd_layers>& hits) const;
175 
185  short findLayerWithBadChi2(std::array<Hit, n_hgtd_layers> hits) const;
186 
194  void setLayerAsInvalid(std::array<Hit, n_hgtd_layers>& hits,
195  short layer) const;
196 
206  short getValidPattern(const std::array<Hit, n_hgtd_layers>& hits) const;
207 
218  bool lastHitIsOnLastSurface(const xAOD::TrackParticle& track_particle) const;
219 
221 };
222 
223 } // namespace HGTD
224 
225 #endif // HGTD_RECALGS_TRACKTIMEDEFANDQUALITYALG_H
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer >
HGTD::TrackTimeDefAndQualityAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition: TrackTimeDefAndQualityAlg.cxx:40
ReadDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
HGTD::TrackTimeDefAndQualityAlg::initialize
virtual StatusCode initialize() override final
Definition: TrackTimeDefAndQualityAlg.cxx:23
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
HGTD::TrackTimeDefAndQualityAlg::passesDeltaT
bool passesDeltaT(const std::array< Hit, n_hgtd_layers > &hits) const
Checks two hits for time compatibility.
Definition: TrackTimeDefAndQualityAlg.cxx:242
HGTD::TrackTimeDefAndQualityAlg::Hit::m_isvalid
bool m_isvalid
Definition: TrackTimeDefAndQualityAlg.h:108
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
AthCUDAExamples::TrackParticleContainer
vecmem::edm::container< TrackParticleInterface, vecmem::edm::type::vector< float >, vecmem::edm::type::vector< float >, vecmem::edm::type::vector< float > > TrackParticleContainer
SoA, GPU friendly TrackParticleContainer.
Definition: Control/AthenaExamples/AthExCUDA/src/TrackParticleContainer.h:46
HGTD::TrackTimeDefAndQualityAlg::CleaningResult::m_field
uint32_t m_field
Definition: TrackTimeDefAndQualityAlg.h:114
HGTD::TrackTimeDefAndQualityAlg::setLayerAsInvalid
void setLayerAsInvalid(std::array< Hit, n_hgtd_layers > &hits, short layer) const
Given a layer number, the hit sitting on this layer is flagged as invalid.
Definition: TrackTimeDefAndQualityAlg.cxx:311
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
HGTD::TrackTimeDefAndQualityAlg::lastHitIsOnLastSurface
bool lastHitIsOnLastSurface(const xAOD::TrackParticle &track_particle) const
Checks if the last hit on track was found on a pre-specified set of Pixel and Strip layers close to t...
Definition: TrackTimeDefAndQualityAlg.cxx:346
HGTD::TrackTimeDefAndQualityAlg::findLayerWithBadChi2
short findLayerWithBadChi2(std::array< Hit, n_hgtd_layers > hits) const
Identifies time outliers by finding the layer within which a hit contributes negatively to the overal...
Definition: TrackTimeDefAndQualityAlg.cxx:293
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
HGTD::TrackTimeDefAndQualityAlg::m_layerClusterTruthClassKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterTruthClassKey
Definition: TrackTimeDefAndQualityAlg.h:85
HGTD::TrackTimeDefAndQualityAlg::Hit::m_resolution
float m_resolution
Definition: TrackTimeDefAndQualityAlg.h:106
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
HGTD::TrackTimeDefAndQualityAlg::m_hasValidTime_dec_key
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_hasValidTime_dec_key
Definition: TrackTimeDefAndQualityAlg.h:95
HGTD::TrackTimeDefAndQualityAlg::getLastHitOnTrack
const Trk::TrackParameters * getLastHitOnTrack(const Trk::Track &track) const
Definition: TrackTimeDefAndQualityAlg.cxx:322
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
HGTD::TrackTimeDefAndQualityAlg
Definition: TrackTimeDefAndQualityAlg.h:57
WriteDecorHandleKey.h
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
HGTD
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration.
Definition: Clustering.h:28
HGTD::TrackTimeDefAndQualityAlg::trackTimeResolution
float trackTimeResolution(const std::array< Hit, n_hgtd_layers > &hits) const
Calculates the combined resolution.
Definition: TrackTimeDefAndQualityAlg.cxx:279
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
HGTD::TrackTimeDefAndQualityAlg::m_summarypattern_dec_key
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_summarypattern_dec_key
Definition: TrackTimeDefAndQualityAlg.h:98
HGTD::TrackTimeDefAndQualityAlg::getValidPattern
short getValidPattern(const std::array< Hit, n_hgtd_layers > &hits) const
Returns the pattern of valid hits in HGTD as a 4-bit bitfield, where a 1 encodes that a valid hit was...
Definition: TrackTimeDefAndQualityAlg.cxx:215
HGTD::TrackTimeDefAndQualityAlg::getValidHits
std::array< Hit, n_hgtd_layers > getValidHits(const xAOD::TrackParticle *track_particle) const
Definition: TrackTimeDefAndQualityAlg.cxx:183
Trk::ParametersBase
Definition: ParametersBase.h:55
HGTD::TrackTimeDefAndQualityAlg::CleaningResult::m_time
float m_time
Definition: TrackTimeDefAndQualityAlg.h:115
HGTD::TrackTimeDefAndQualityAlg::Hit
Definition: TrackTimeDefAndQualityAlg.h:104
HGTD::TrackTimeDefAndQualityAlg::calculateChi2
float calculateChi2(const std::array< Hit, n_hgtd_layers > &hits) const
Calculates the chi2 of the hit times given their resolution.
Definition: TrackTimeDefAndQualityAlg.cxx:227
HGTD::TrackTimeDefAndQualityAlg::runTimeConsistencyCuts
CleaningResult runTimeConsistencyCuts(const xAOD::TrackParticle *track_particle) const
Definition: TrackTimeDefAndQualityAlg.cxx:97
AthReentrantAlgorithm.h
HGTD::TrackTimeDefAndQualityAlg::CleaningResult::m_resolution
float m_resolution
Definition: TrackTimeDefAndQualityAlg.h:116
HGTD::TrackTimeDefAndQualityAlg::meanTime
float meanTime(const std::array< Hit, n_hgtd_layers > &hits) const
Calculates the arithmetic mean of the valid hit times;.
Definition: TrackTimeDefAndQualityAlg.cxx:265
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
HGTD::TrackTimeDefAndQualityAlg::m_default_time_res
FloatProperty m_default_time_res
Definition: TrackTimeDefAndQualityAlg.h:131
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
HGTD::TrackTimeDefAndQualityAlg::m_deltat_cut
FloatProperty m_deltat_cut
Definition: TrackTimeDefAndQualityAlg.h:123
HGTD::TrackTimeDefAndQualityAlg::~TrackTimeDefAndQualityAlg
virtual ~TrackTimeDefAndQualityAlg()
Definition: TrackTimeDefAndQualityAlg.h:69
HGTD::TrackTimeDefAndQualityAlg::CleaningResult::m_hits
std::array< Hit, n_hgtd_layers > m_hits
Definition: TrackTimeDefAndQualityAlg.h:113
HGTD::TrackTimeDefAndQualityAlg::m_layerClusterTimeKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_layerClusterTimeKey
Definition: TrackTimeDefAndQualityAlg.h:81
HGTD::TrackTimeDefAndQualityAlg::m_comp_ptrn_sft
const short m_comp_ptrn_sft
Definition: TrackTimeDefAndQualityAlg.h:63
HGTD::TrackTimeDefAndQualityAlg::Hit::m_layer
short m_layer
Definition: TrackTimeDefAndQualityAlg.h:109
HGTD::TrackTimeDefAndQualityAlg::CleaningResult::m_hasValidTime
uint8_t m_hasValidTime
Definition: TrackTimeDefAndQualityAlg.h:117
HGTD::TrackTimeDefAndQualityAlg::m_default_time
FloatProperty m_default_time
Definition: TrackTimeDefAndQualityAlg.h:126
HGTD::TrackTimeDefAndQualityAlg::Hit::m_isprime
bool m_isprime
Definition: TrackTimeDefAndQualityAlg.h:107
HGTD::TrackTimeDefAndQualityAlg::m_trackParticleContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
Definition: TrackTimeDefAndQualityAlg.h:74
TrackParticle.h
HGTD::TrackTimeDefAndQualityAlg::m_time_dec_key
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_time_dec_key
Definition: TrackTimeDefAndQualityAlg.h:90
HGTD::TrackTimeDefAndQualityAlg::m_holes_ptrn_sft
const short m_holes_ptrn_sft
Definition: TrackTimeDefAndQualityAlg.h:64
HGTD::TrackTimeDefAndQualityAlg::TrackTimeDefAndQualityAlg
TrackTimeDefAndQualityAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrackTimeDefAndQualityAlg.cxx:19
HGTD::TrackTimeDefAndQualityAlg::m_time_res_dec_key
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_time_res_dec_key
Definition: TrackTimeDefAndQualityAlg.h:92
HGTD::TrackTimeDefAndQualityAlg::m_primes_ptrn_sft
const short m_primes_ptrn_sft
Definition: TrackTimeDefAndQualityAlg.h:65
HGTD::TrackTimeDefAndQualityAlg::Hit::m_time
float m_time
Definition: TrackTimeDefAndQualityAlg.h:105
HGTD::TrackTimeDefAndQualityAlg::m_layerHasExtensionKey
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_layerHasExtensionKey
Definition: TrackTimeDefAndQualityAlg.h:78
HGTD::TrackTimeDefAndQualityAlg::m_recoed_ptrn_sft
const short m_recoed_ptrn_sft
Definition: TrackTimeDefAndQualityAlg.h:61
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
SG::ReadDecorHandleKey
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Definition: StoreGate/StoreGate/ReadDecorHandleKey.h:85
HGTD::TrackTimeDefAndQualityAlg::CleaningResult
Definition: TrackTimeDefAndQualityAlg.h:112
TrackParticleContainer.h
HGTD::TrackTimeDefAndQualityAlg::m_chi2_threshold
FloatProperty m_chi2_threshold
Definition: TrackTimeDefAndQualityAlg.h:120