star-travex
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TStiKalmanTrackNode.h
Go to the documentation of this file.
1 #ifndef TStiKalmanTrackNode_h
2 #define TStiKalmanTrackNode_h
3 
4 #include <set>
5 #include <string>
6 
7 #include "TObject.h"
8 #include "TVector3.h"
9 
10 #include "Sti/StiKalmanTrackNode.h"
11 #include "StiRootIO/TStiHit.h"
12 #include "StiRootIO/TStiHitProxy.h"
13 
14 class TStiKalmanTrack;
15 
17 
18 
19 class TStiKalmanTrackNode : public TObject
20 {
21 public:
22 
24  TStiKalmanTrackNode(const StiKalmanTrackNode &stiKTN, TStiKalmanTrack* const parent=nullptr);
25  bool IsValid() const { return fValid; }
26  bool IsInsideVolume() const { return fIsInsideVolume; }
27  const TVector3& GetTrackP() const { return fTrackP; }
28  const TVector3& GetPosition() const { return fPosition; }
29  const TVector3& GetError() const { return fError; }
30  const TVector3& GetPositionLocal() const { return fPositionLocal; }
31  const TVector3& GetProjPositionLocal() const { return fProjPositionLocal; }
32  const TVector3& GetProjError() const { return fProjError; }
33  float GetEnergyLosses() const { return fabs(fEnergyLosses); }
34  float GetNodeRadius() const { return fNodeRadius; }
35  float GetNodeCenterRefAngle() const { return fNodeCenterRefAngle; }
36  float GetNodeMaterialDensity() const { return fNodeMaterialDensity; }
37  float GetNodeRelRadLength() const { return fNodeRelRadLength; }
38  float GetNodeTrackLength() const { return fNodeTrackLength; }
39  std::string GetVolumeName() const { return fVolumeName; }
40  const TStiHit* GetHit() const { return fAcceptedStiHit; }
41  const TStiHit* GetClosestHit() const { return fClosestStiHit; }
42  std::set<const TStiHit*> GetCandidateHits() const;
43  const std::set<TStiHitProxy>& GetCandidateProxyHits() const { return fCandidateStiHits; }
44  void FindClosestHit(const std::set<TStiHit>& stiHits) const;
45  void FindCandidateHits(const std::set<TStiHit>& stiHits) const;
46  void FindCandidateHitsByChi2(const std::set<TStiHit>& stiHits) const;
49  TVector3 CalcDiffProjToFitError() const { return fProjError - fError; }
50  double CalcDistanceToClosestHit() const { return fClosestStiHit ? (fClosestStiHit->GetPosition() - GetPosition()).Mag() : -1; }
51  double CalcDistanceToHit() const { return fAcceptedStiHit ? (fAcceptedStiHit->GetPosition() - GetPosition()).Mag() : -1; }
53  double CalcDistanceToHit(const TStiHit& hit) const { return (hit.GetPosition() - GetPosition()).Mag(); }
54  TVector3 CalcPullToHit(const TStiHit& hit) const;
55  TVector3 CalcPullClosestHit() const;
56  double CalcChi2(const TStiHit& hit) const;
57  bool MatchedVolName(const std::string & pattern) const;
58  bool MatchedVolName(const std::set<std::string> & patterns) const;
59  virtual void Print(Option_t *opt = "") const;
60 
61  friend bool operator< (const TStiKalmanTrackNode& lhs, const TStiKalmanTrackNode& rhs);
62 
63 protected:
64 
66  const StiKalmanTrackNode *fStiTrackNode;
67 
70 
72  float fValid;
73 
76 
78  TVector3 fPosition;
79 
81  TVector3 fError;
82 
84  TVector3 fPositionLocal;
85 
88 
90  TVector3 fProjError;
91 
93  TVector3 fTrackP;
94 
97 
99  float fNodeRadius;
100 
103 
106 
109 
112 
114  std::string fVolumeName;
115 
117  mutable const TStiHit *fAcceptedStiHit;
118 
120  mutable const TStiHit *fClosestStiHit;
121 
123  mutable std::set<TStiHitProxy> fCandidateStiHits;
124 
125  ClassDef(TStiKalmanTrackNode, 11)
126 };
127 
128 
129 bool operator< (const TStiKalmanTrackNode& lhs, const TStiKalmanTrackNode& rhs);
130 
131 
132 #endif
virtual void Print(Option_t *opt="") const
TVector3 fProjError
The projection error to the node before the re-fit.
const std::set< TStiHitProxy > & GetCandidateProxyHits() const
float fNodeRadius
The nominal radius of the Sti volume associated with this node.
double CalcDistanceToHit(const TStiHit &hit) const
const TVector3 & GetPosition() const
Definition: TStiHit.h:19
const TVector3 & GetPositionLocal() const
Definition: TStiHit.h:20
TVector3 fPosition
Global coordinates of the final (post re-fit) track node position.
void FindCandidateHitsByChi2(const std::set< TStiHit > &stiHits) const
float fNodeCenterRefAngle
Angle to the center of the Sti volume associated with this node.
std::string fVolumeName
Name of Sti volume.
const TVector3 & GetPosition() const
float GetNodeMaterialDensity() const
TVector3 CalcPullToHit(const TStiHit &hit) const
TVector3 CalcPullClosestHit() const
Calculates and returns uncorrelated three components which can be used in the pull distribution...
const StiKalmanTrackNode * fStiTrackNode
Transient pointer to original StiKalmanTrackNode to access non-persistent info.
const TStiHit * fAcceptedStiHit
Pointer to the hit associated with this node by the reconstruction algorithm, if any.
std::string GetVolumeName() const
void FindClosestHit(const std::set< TStiHit > &stiHits) const
Traverses the provided collection of hits and sets the internal pointer to the hit closest to this tr...
float GetNodeRelRadLength() const
const TStiHit * GetHit() const
TVector3 CalcDiffProjToFitError() const
double CalcDistanceToHit() const
bool MatchedVolName(const std::string &pattern) const
std::set< TStiHitProxy > fCandidateStiHits
Collection of hits in some proximity of mean track projection.
float GetNodeRadius() const
const TStiHit * fClosestStiHit
Pointer to the hit closest to this node if any.
void FindCandidateHits(const std::set< TStiHit > &stiHits) const
In the provided collection of hits this class method finds all hits within a 5-sigma vicinity around ...
const TStiHit * GetClosestHit() const
TVector3 fProjPositionLocal
Local coordinates of the projected (pre re-fit) track node position.
float fNodeRelRadLength
Relative radiation length.
float GetNodeCenterRefAngle() const
const TVector3 & GetPositionLocal() const
const TVector3 & GetProjPositionLocal() const
double CalcDistanceProjToHit() const
StiNodeHitStatus
float fEnergyLosses
Energy lost in the volume.
float fNodeMaterialDensity
Density of the material of this node/volume.
double CalcDistanceToClosestHit() const
double CalcChi2(const TStiHit &hit) const
Calculate chi2 for a user provided hit using the original Sti methods.
TStiKalmanTrack * fTrack
transient member
const TVector3 & GetError() const
float fNodeTrackLength
Relative radiation length.
double CalcDiffProjToFitPositionWRTHit() const
float GetEnergyLosses() const
float GetNodeTrackLength() const
TVector3 fError
Diagonal elements of error matrix after final fit.
TVector3 fTrackP
Track momentum vector in global CS.
const TVector3 & GetTrackP() const
TVector3 fPositionLocal
Local coordinates of the final (post re-fit) track node position.
bool operator<(const TStiKalmanTrackNode &lhs, const TStiKalmanTrackNode &rhs)
bool IsInsideVolume() const
float fValid
transient member
void AssignClosestCandidateHit() const
const TVector3 & GetProjError() const
friend bool operator<(const TStiKalmanTrackNode &lhs, const TStiKalmanTrackNode &rhs)
int fIsInsideVolume
A flag taken directly from StiKalmanTrackNode.
std::set< const TStiHit * > GetCandidateHits() const