NAIA  1.1.1
TrTrack.h
Go to the documentation of this file.
1 
7 #ifndef NAIA_TRTRACK_H
8 #define NAIA_TRTRACK_H
9 
10 // gbatch headers
11 #ifdef ENABLE_PRODUCTION_CODE
12 #include "root.h"
13 #endif
14 
16 #include "Containers/Utils.h"
17 
18 #include <array>
19 #include <map>
20 #include <vector>
21 
22 namespace NAIA {
23 
27 template <class T> using TrackChargeVariable = std::map<TrTrack::ChargeRecoType, T>;
33 template <class T> using TrackFitVariable = std::map<TrTrack::Fit, std::map<TrTrack::Span, T>>;
37 template <class T> using TrackFitOnlyVariable = std::map<TrTrack::Fit, T>;
41 template <class T> using TrackSideVariable = std::map<TrTrack::Side, T>;
45 template <class T> using TrackFitPosVariable = std::map<TrTrack::FitPositionHeight, T>;
49 template <class T> using TrackDistanceVariable = std::map<TrTrack::DistanceFromTrack, T>;
50 
51 #ifdef ENABLE_PRODUCTION_CODE
52 enum class TrTrackFillType { Full, SecondTrack, Standalone };
53 #endif
54 
55 enum class HitClusterAssociation { None = 0, Y, XY };
56 
64 class TrTrackBaseData : public TObject {
65  friend class TrdKBaseData;
66  friend class TrTrackPlusData;
67 
68 public:
69  // clang-format off
70  // hit-related
72 
73  // fit-related
77 
78  // charge-related
85 
86  float FitCharge;
87  // clang-format on
88 
89 #ifdef ENABLE_PRODUCTION_CODE
90  bool Fill(TrTrackR *trackPtr, TrTrackFillType type = TrTrackFillType::Full);
91  bool FillElectronVars(TrTrackR *trackPtr, float zEcalCOG, bool refitKalman = false);
92 
93  void SetBeta(double beta) { _beta = beta; }
94  void SetMC(bool isMC) { _isMC = isMC; }
95 
96  TrTrack::Span _GetBestSpan(TrTrack::Fit fit = TrTrack::Fit::Choutko) const;
97  bool _FitIDExists(TrTrack::Fit fit, TrTrack::Span span) const;
98 #endif
99 
104  void Clear();
105 
110  void Dump() const;
111 
118  [[nodiscard]] TrTrack::Span GetBestSpan(TrTrack::Fit fit = TrTrack::Fit::Choutko) const;
119 
126  [[nodiscard]] bool FitIDExists(TrTrack::Fit fit, TrTrack::Span span) const;
127 
135  [[nodiscard]] LayerVariable<HitClusterAssociation> GetTrackPattern() const;
136 
137 private:
138  uint32_t m_trackPattern{0};
139 
140  bool _isMC = false;
141  float _beta = 1.0f;
143  int _tmpCharge = 1;
144 
145  ClassDef(TrTrackBaseData, 3)
146 };
147 
155 class TrTrackPlusData : public TObject {
156 public:
157  // clang-format off
158  // hit-related
160 
161  // fit-related
164 
174 
175  // charge-related
184 
185  std::array<float, 2> DirectionalStoermerCutoff{0.0f, 0.0f};
186  // clang-format on
187 
188 #ifdef ENABLE_PRODUCTION_CODE
189  bool Fill(TrTrackR *trackPtr);
190  bool FillElectronVars(TrTrackR *trackPtr, bool refitKalman = false);
191 #endif
192 
197  void Clear();
198 
203  void Dump() const;
204 
205  const TrTrackBaseData *trkBase = nullptr;
206 
207 private:
209 
210  ClassDef(TrTrackPlusData, 2)
211 };
212 
221 class TrTrackBase : public OnDemandContainer<TrTrackBase>, public TrTrackBaseData {
222 public:
223  static const std::string BranchName;
224 
226 };
227 
236 class TrTrackPlus : public OnDemandContainer<TrTrackPlus>, public TrTrackPlusData {
237 public:
238  static const std::string BranchName;
239 
241 };
242 
251 class SecondTrTrackBase : public OnDemandContainer<SecondTrTrackBase>, public TrTrackBaseData {
252 public:
253  static const std::string BranchName;
254 
256 };
257 
266 class TrTrackBaseStandalone : public OnDemandContainer<TrTrackBaseStandalone>, public TrTrackBaseData {
267 public:
268  static const std::string BranchName;
269 
271 };
272 
273 } // namespace NAIA
274 #endif
NAIA::TrTrackBaseData::LayerChargeXY
LayerVariable< TrackChargeVariable< float > > LayerChargeXY
Track hit charge (for each single layer, using both sides clusters) for each available reconstruction...
Definition: TrTrack.h:84
NAIA::TrTrackBaseData::InnerChargeRMS
TrackChargeVariable< float > InnerChargeRMS
Track charge RMS (inner tracker only) for each charge reconstruction. See TrTrack::ChargeRecoType for...
Definition: TrTrack.h:82
NAIA::TrTrackBaseData::m_trackPattern
uint32_t m_trackPattern
Definition: TrTrack.h:138
NAIA::TrTrackPlusData::RigidityTOI
TrackFitVariable< float > RigidityTOI
Track rigidity at Top-Of-Instrument, for both downward and upward going partitcles,...
Definition: TrTrack.h:165
NAIA::TrackDistanceVariable
std::map< TrTrack::DistanceFromTrack, T > TrackDistanceVariable
Definition: TrTrack.h:49
NAIA::TrTrackPlusData::TrackFeetDistance
LayerVariable< float > TrackFeetDistance
Track distance to the inner tracker supporting feet for each layer.
Definition: TrTrack.h:159
NAIA::TrTrackBase::TrTrackBase
TrTrackBase()
Definition: TrTrack.h:225
NAIA::TrTrackPlusData::_fit_ID
TrackFitVariable< int > _fit_ID
needed to get basic info without computing twice
Definition: TrTrack.h:208
NAIA::TrTrackBaseData::Rigidity
TrackFitVariable< float > Rigidity
Track rigidity, corrected for time-dependent rigidity scale shifts and geometry volume correction,...
Definition: TrTrack.h:74
NAIA::TrTrackBaseData::FitCharge
float FitCharge
Initial charge estimate used for track re-fitting.
Definition: TrTrack.h:86
NAIA::TrTrackBaseData::_beta
float _beta
Definition: TrTrack.h:141
NAIA::TrTrackPlusData::Clear
void Clear()
Clear container content.
Definition: TrTrack.cpp:47
NAIA::TrTrackPlusData::ClustersEdep
LayerVariable< TrackDistanceVariable< TrackSideVariable< float > > > ClustersEdep
Total energy deposition of tracker clusters for each layer, within a given distance from the track,...
Definition: TrTrack.h:179
NAIA::TrTrackPlusData::NClusters
LayerVariable< TrackDistanceVariable< TrackSideVariable< unsigned int > > > NClusters
Total number of tracker clusters for each layer, within a given distance from the track,...
Definition: TrTrack.h:178
NAIA::SecondTrTrackBase::BranchName
static const std::string BranchName
Definition: TrTrack.h:253
NAIA::TrTrackPlusData::LayerEdep
LayerVariable< TrackSideVariable< float > > LayerEdep
Track hit (X and Y-side) energy deposition for each layer.
Definition: TrTrack.h:177
NAIA::TrTrackPlusData::MaxClusterDistance
LayerVariable< TrackSideVariable< float > > MaxClusterDistance
Distance from the track of the cluster with the highest energy deposition for each layer,...
Definition: TrTrack.h:181
NAIA::TrackFitPosVariable
std::map< TrTrack::FitPositionHeight, T > TrackFitPosVariable
Definition: TrTrack.h:45
NAIA::HitClusterAssociation
HitClusterAssociation
Definition: TrTrack.h:55
NAIA::TrTrackPlusData::Phi
TrackFitVariable< float > Phi
phi of track direction in AMS coordinate system, for each available fit and span. See TrTrack::Fit an...
Definition: TrTrack.h:163
NAIA::TrTrackPlusData::PartialRigidity
LayerVariable< TrackFitOnlyVariable< float > > PartialRigidity
Rigidity obtained from a fit where the hit on an a given layer 'i' is not considered....
Definition: TrTrack.h:170
NAIA::TrTrack::Choutko
@ Choutko
standard track fit
Definition: Utils.h:179
NAIA::TrTrackPlusData::UnbiasedCharge
TrackChargeVariable< float > UnbiasedCharge
"Unbiased" tracker charge for each charge reconstruction. It is a simple truncated mean between the h...
Definition: TrTrack.h:176
NAIA::TrTrackBaseData::InnerCharge
TrackChargeVariable< float > InnerCharge
Track charge (inner tracker only) for each available reconstruction. See TrTrack::ChargeRecoType for ...
Definition: TrTrack.h:80
NAIA::TrTrackBaseData::TrTrackFitPos
TrackFitPosVariable< TrackFitVariable< TrackSideVariable< float > > > TrTrackFitPos
Track X and Y position at different heights in AMS and for each available fit and span....
Definition: TrTrack.h:76
NAIA::TrTrack::Span
Span
Definition: Utils.h:157
NAIA::TrTrackPlusData::DirectionalStoermerCutoff
std::array< float, 2 > DirectionalStoermerCutoff
Stoermer cutoff estimated by the TrdK track direction (for both negative and positive particles)
Definition: TrTrack.h:185
NAIA
Definition: Event.h:13
NAIA::TrTrackBaseData::LayerChargeStatus
LayerVariable< int > LayerChargeStatus
Track hit charge reconstruction status for each layer (this is a bitmask. Bits 0-11 refer to the X-si...
Definition: TrTrack.h:83
NAIA::TrTrackPlusData::PartialInvRigErr
LayerVariable< TrackFitOnlyVariable< float > > PartialInvRigErr
Inverse rigidity error obtained from a fit where a given layer 'i' was excluded. See TrTrack::Fit for...
Definition: TrTrack.h:171
NAIA::TrTrackPlusData::MaxClusterEdep
LayerVariable< TrackSideVariable< float > > MaxClusterEdep
Max cluster energy deposit for each layer, for each side.
Definition: TrTrack.h:180
NAIA::OnDemandContainer
Mixin class to add "read-on-demand" behavior to an existing container class.
Definition: OnDemandContainer.h:44
NAIA::TrTrackBaseData::TrTrackHitPos
LayerVariable< std::array< float, 3 > > TrTrackHitPos
X,Y and Z position of hit on each layer, if available.
Definition: TrTrack.h:71
NAIA::TrTrackBaseData::ChargeRMS
TrackChargeVariable< float > ChargeRMS
Track charge RMS (including external layers) for each charge reconstruction. See TrTrack::ChargeRecoT...
Definition: TrTrack.h:81
NAIA::HitClusterAssociation::Y
@ Y
NAIA::SecondTrTrackBase::SecondTrTrackBase
SecondTrTrackBase()
Definition: TrTrack.h:255
Utils.h
NAIA::TrTrackPlusData::Dump
void Dump() const
Dump on screen container content.
Definition: TrTrack.cpp:135
NAIA::TrTrackPlusData::LayerCharge
LayerVariable< TrackChargeVariable< TrackSideVariable< float > > > LayerCharge
Track hit charge (X and Y-side) for each layer, for each charge reconstruction. See TrTrack::ChargeRe...
Definition: TrTrack.h:183
NAIA::TrTrackPlusData::PartialTrTrackFitPos
LayerVariable< TrackFitOnlyVariable< TrackSideVariable< float > > > PartialTrTrackFitPos
Track X and Y position obtained from a fit where a given layer 'i' was excluded. See TrTrack::Fit for...
Definition: TrTrack.h:173
NAIA::TrTrackPlus
Accessor class for additional TrTrack info.
Definition: TrTrack.h:236
NAIA::TrTrackBaseData::_tmpCharge
int _tmpCharge
Definition: TrTrack.h:143
NAIA::HitClusterAssociation::None
@ None
NAIA::TrTrackBaseData
Container class for base TrTrack info.
Definition: TrTrack.h:64
NAIA::TrTrackBase
Accessor class for base TrTrack info.
Definition: TrTrack.h:221
NAIA::TrTrackBaseData::Clear
void Clear()
Clear container content.
Definition: TrTrack.cpp:27
NAIA::TrackFitVariable
std::map< TrTrack::Fit, std::map< TrTrack::Span, T > > TrackFitVariable
Definition: TrTrack.h:33
NAIA::TrTrackBase::BranchName
static const std::string BranchName
Definition: TrTrack.h:223
NAIA::TrTrackBaseData::TrChiSq
TrackFitVariable< TrackSideVariable< float > > TrChiSq
Normalized track chi-square (X and Y) for each available fit and span. See TrTrack::Fit and TrTrack::...
Definition: TrTrack.h:75
NAIA::TrTrackPlusData::PartialTrTrackResidual
LayerVariable< TrackFitOnlyVariable< TrackSideVariable< float > > > PartialTrTrackResidual
Track X and Y residuals obtained from a fit where the hit on an a given layer 'i' is not considered....
Definition: TrTrack.h:169
NAIA::TrTrackPlusData::RigidityRICH
TrackFitVariable< float > RigidityRICH
Track rigidity at RICH for each available fit and span (only available for Kalman fit)....
Definition: TrTrack.h:166
NAIA::TrackChargeVariable
std::map< TrTrack::ChargeRecoType, T > TrackChargeVariable
Definition: TrTrack.h:27
NAIA::TrTrackPlusData::PartialTrChiSq
LayerVariable< TrackFitOnlyVariable< TrackSideVariable< float > > > PartialTrChiSq
Normalized chi-square obtained from a fit where a given layer 'i' was excluded. See TrTrack::Fit for ...
Definition: TrTrack.h:172
NAIA::TrTrackPlus::BranchName
static const std::string BranchName
Definition: TrTrack.h:238
NAIA::TrackFitOnlyVariable
std::map< TrTrack::Fit, T > TrackFitOnlyVariable
Definition: TrTrack.h:37
NAIA::TrTrackBaseStandalone::TrTrackBaseStandalone
TrTrackBaseStandalone()
Definition: TrTrack.h:270
NAIA::SecondTrTrackBase
Accessor class for base TrTrack info about the second track.
Definition: TrTrack.h:251
NAIA::TrTrackBaseData::_isMC
bool _isMC
Definition: TrTrack.h:140
NAIA::TrTrackBaseData::Charge
TrackChargeVariable< float > Charge
Track charge (including external layers) for each available reconstruction. See TrTrack::ChargeRecoTy...
Definition: TrTrack.h:79
NAIA::TrTrackPlusData::trkBase
const TrTrackBaseData * trkBase
Definition: TrTrack.h:205
NAIA::TrTrackPlusData
Container class for additional TrTrack info.
Definition: TrTrack.h:155
NAIA::TrTrackBaseData::_fit_ID
TrackFitVariable< int > _fit_ID
Definition: TrTrack.h:142
NAIA::TrTrackBaseData::Dump
void Dump() const
Dump on screen container content.
Definition: TrTrack.cpp:73
NAIA::TrTrackBaseData::GetBestSpan
TrTrack::Span GetBestSpan(TrTrack::Fit fit=TrTrack::Fit::Choutko) const
Get the best Span available for this track.
Definition: TrTrack.cpp:18
NAIA::TrTrackPlusData::TrTrackResidual
LayerVariable< TrackFitVariable< TrackSideVariable< float > > > TrTrackResidual
Track X and Y residuals in each layer for each available fit and span. See TrTrack::Fit and TrTrack::...
Definition: TrTrack.h:168
NAIA::TrTrackBaseStandalone
Accessor class for base TrTrack info reconstructed without Tof information.
Definition: TrTrack.h:266
NAIA::TrdKBaseData
Container class for base Trd info.
Definition: TrdK.h:57
NAIA::HitClusterAssociation::XY
@ XY
NAIA::LayerVariable
std::map< unsigned int, T > LayerVariable
Definition: Utils.h:54
NAIA::TrTrack::Fit
Fit
Definition: Utils.h:177
NAIA::TrackSideVariable
std::map< TrTrack::Side, T > TrackSideVariable
Definition: TrTrack.h:41
NAIA::TrTrackPlusData::InvRigErr
TrackFitVariable< float > InvRigErr
Error on the deflection ( = 1 / rigidity) estimation, for each available fit and span....
Definition: TrTrack.h:167
NAIA::TrTrackBaseStandalone::BranchName
static const std::string BranchName
Definition: TrTrack.h:268
NAIA::TrTrackBaseData::GetTrackPattern
LayerVariable< HitClusterAssociation > GetTrackPattern() const
Get the track pattern for a given tracker side. One bit per layer, set to 1 if there is a hit on that...
Definition: TrTrack.cpp:198
NAIA::TrTrackBaseData::FitIDExists
bool FitIDExists(TrTrack::Fit fit, TrTrack::Span span) const
Check if a given combination of fit and span is available for this track.
Definition: TrTrack.cpp:14
OnDemandContainer.h
OnDemandContainer container class description.
NAIA::TrTrackPlus::TrTrackPlus
TrTrackPlus()
Definition: TrTrack.h:240
NAIA::TrTrackPlusData::ClusterSignalRatio
LayerVariable< float > ClusterSignalRatio
Ratio between cluster amplitude and its neighbouring 10 strips, for each layer.
Definition: TrTrack.h:182
NAIA::TrTrackPlusData::Theta
TrackFitVariable< float > Theta
theta of track direction in AMS coordinate system, for each available fit and span....
Definition: TrTrack.h:162