REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
TRestHits.h
1 /*************************************************************************
2  * This file is part of the REST software framework. *
3  * *
4  * Copyright (C) 2016 GIFNA/TREX (University of Zaragoza) *
5  * For more information see http://gifna.unizar.es/trex *
6  * *
7  * REST is free software: you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation, either version 3 of the License, or *
10  * (at your option) any later version. *
11  * *
12  * REST is distributed in the hope that it will be useful, *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15  * GNU General Public License for more details. *
16  * *
17  * You should have a copy of the GNU General Public License along with *
18  * REST in $REST_PATH/LICENSE. *
19  * If not, see http://www.gnu.org/licenses/. *
20  * For the list of contributors see $REST_PATH/CREDITS. *
21  *************************************************************************/
22 
23 #ifndef TRestSoft_TRestHits
24 #define TRestSoft_TRestHits
25 
26 #include <TCanvas.h>
27 #include <TF1.h>
28 #include <TGraphErrors.h>
29 #include <TH1.h>
30 #include <TMath.h>
31 #include <TMatrixD.h>
32 #include <TVector3.h>
33 
34 #include <iostream>
35 
36 enum REST_HitType { unknown = -1, X = 2, Y = 3, Z = 5, XY = 6, XZ = 10, YZ = 15, XYZ = 30, VETO = 100 };
37 
39 class TRestHits {
40  protected:
41  // TODO: This is no longer used, it should be removed
42  size_t fNHits = 0;
43  // TODO: This is no longer used, it should be removed
44  Double_t fTotalEnergy = 0;
45 
47  std::vector<Float_t> fX; // [fNHits]
48 
50  std::vector<Float_t> fY; // [fNHits]
51 
53  std::vector<Float_t> fZ; // [fNHits]
54 
56  std::vector<Float_t> fTime; // [fNHits]
57 
59  std::vector<Float_t> fEnergy; // [fNHits]
60 
62  std::vector<REST_HitType> fType;
63 
64  public:
65  void Translate(Int_t n, Double_t x, Double_t y, Double_t z);
66  void RotateIn3D(Int_t n, Double_t alpha, Double_t beta, Double_t gamma, const TVector3& center);
67  void Rotate(Int_t n, Double_t alpha, const TVector3& vAxis, const TVector3& vMean);
68 
69  void AddHit(const TVector3& position, Double_t energy, Double_t time = 0, REST_HitType type = XYZ);
70  void AddHit(TRestHits& hits, Int_t n);
71 
72  Int_t GetMostEnergeticHitInRange(Int_t n, Int_t m) const;
73 
74  Double_t GetMaximumHitDistance() const;
75  Double_t GetMaximumHitDistance2() const;
76 
77  virtual void RemoveHits();
78  virtual void MergeHits(int n, int m);
79  virtual void SwapHits(Int_t i, Int_t j);
80  virtual void RemoveHit(int n);
81 
82  virtual Bool_t areXY() const;
83  virtual Bool_t areXZ() const;
84  virtual Bool_t areYZ() const;
85  virtual Bool_t areXYZ() const;
86 
87  Bool_t isNaN(Int_t n) const;
88 
89  Double_t GetDistanceToNode(Int_t n) const;
90 
91  Bool_t isSortedByEnergy() const;
92 
93  inline size_t GetNumberOfHits() const { return fEnergy.size(); }
94 
95  inline const std::vector<Float_t>& GetX() const { return fX; }
96  inline const std::vector<Float_t>& GetY() const { return fY; }
97  inline const std::vector<Float_t>& GetZ() const { return fZ; }
98  inline const std::vector<Float_t>& GetTime() const { return fTime; }
99  inline const std::vector<Float_t>& GetEnergyVector() const { return fEnergy; }
100 
101  inline Double_t GetX(int n) const { return fX[n]; } // return value in mm
102  inline Double_t GetY(int n) const { return fY[n]; } // return value in mm
103  inline Double_t GetZ(int n) const { return fZ[n]; } // return value in mm
104  inline Double_t GetTime(int n) const { return fTime[n]; } // return value in us
105  inline Double_t GetEnergy(int n) const { return fEnergy[n]; } // return value in keV
106 
107  inline REST_HitType GetType(int n) const { return fType[n]; }
108 
109  TVector3 GetPosition(int n) const;
110  TVector3 GetVector(int i, int j) const;
111 
112  Int_t GetNumberOfHitsX() const;
113  Int_t GetNumberOfHitsY() const;
114 
115  Double_t GetMeanPositionX() const;
116  Double_t GetMeanPositionY() const;
117  Double_t GetMeanPositionZ() const;
118  TVector3 GetMeanPosition() const;
119 
120  Double_t GetSigmaXY2() const;
121  Double_t GetSigmaX() const;
122  Double_t GetSigmaY() const;
123  Double_t GetSigmaZ2() const;
124  Double_t GetSkewXY() const;
125  Double_t GetSkewZ() const;
126 
127  Double_t GetGaussSigmaX(Double_t error = 150.0, Int_t nHitsMin = 100000);
128  Double_t GetGaussSigmaY(Double_t error = 150.0, Int_t nHitsMin = 100000);
129  Double_t GetGaussSigmaZ(Double_t error = 150.0, Int_t nHitsMin = 100000);
130 
131  Double_t GetEnergyX() const;
132  Double_t GetEnergyY() const;
133 
134  Bool_t isHitNInsidePrism(Int_t n, const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
135  Double_t theta) const;
136  Int_t GetNumberOfHitsInsidePrism(const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
137  Double_t theta) const;
138  Double_t GetEnergyInPrism(const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
139  Double_t theta) const;
140  Double_t GetMeanPositionXInPrism(const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
141  Double_t theta) const;
142  Double_t GetMeanPositionYInPrism(const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
143  Double_t theta) const;
144  Double_t GetMeanPositionZInPrism(const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
145  Double_t theta) const;
146  TVector3 GetMeanPositionInPrism(const TVector3& x0, const TVector3& x1, Double_t sizeX, Double_t sizeY,
147  Double_t theta) const;
148 
149  Bool_t isHitNInsideCylinder(Int_t n, const TVector3& x0, const TVector3& x1, Double_t radius) const;
150 
151  Int_t GetNumberOfHitsInsideCylinder(const TVector3& x0, const TVector3& x1, Double_t radius) const;
152  Int_t GetNumberOfHitsInsideCylinder(Int_t i, Int_t j, Double_t radius) const;
153 
154  Double_t GetEnergyInCylinder(const TVector3& x0, const TVector3& x1, Double_t radius) const;
155  Double_t GetEnergyInCylinder(Int_t i, Int_t j, Double_t radius) const;
156  Double_t GetMeanPositionXInCylinder(const TVector3& x0, const TVector3& x1, Double_t radius) const;
157  Double_t GetMeanPositionYInCylinder(const TVector3& x0, const TVector3& x1, Double_t radius) const;
158  Double_t GetMeanPositionZInCylinder(const TVector3& x0, const TVector3& x1, Double_t radius) const;
159  TVector3 GetMeanPositionInCylinder(const TVector3& x0, const TVector3& x1, Double_t radius) const;
160 
161  Bool_t isHitNInsideSphere(Int_t n, const TVector3& pos0, Double_t radius) const;
162  Bool_t isHitNInsideSphere(Int_t n, Double_t x0, Double_t y0, Double_t z0, Double_t radius) const;
163 
164  Double_t GetEnergyInSphere(const TVector3& pos0, Double_t radius) const;
165  Double_t GetEnergyInSphere(Double_t x, Double_t y, Double_t z, Double_t radius) const;
166 
167  Double_t GetMaximumHitEnergy() const;
168  Double_t GetMinimumHitEnergy() const;
169  Double_t GetMeanHitEnergy() const;
170 
171  Double_t GetTotalEnergy() const;
172  Double_t GetDistance2(int n, int m) const;
173  inline Double_t GetDistance(int N, int M) const { return TMath::Sqrt(GetDistance2(N, M)); }
174  Double_t GetTotalDistance() const;
175 
176  Double_t GetHitsPathLength(Int_t n = 0, Int_t m = 0) const;
177 
178  Double_t GetHitsTwist(Int_t n, Int_t m) const;
179  Double_t GetHitsTwistWeighted(Int_t n, Int_t m) const;
180 
181  Int_t GetClosestHit(const TVector3& position) const;
182 
183  TVector2 GetProjection(Int_t n, Int_t m, const TVector3& position) const;
184 
185  Double_t GetTransversalProjection(const TVector3& p0, const TVector3& direction,
186  const TVector3& position) const;
187 
188  void WriteHitsToTextFile(TString filename);
189 
190  static void GetBoundaries(std::vector<double>& val, double& max, double& min, int& nBins,
191  double offset = 10);
192 
193  virtual void PrintHits(Int_t nHits = -1) const;
194 
196  public:
197  using iterator_category = std::random_access_iterator_tag;
199  using difference_type = int;
200  using pointer = void;
201  using reference = void;
202 
203  private:
204  int maxIndex = 0;
205  int index = 0;
206  TRestHits* fHits = nullptr;
207  bool isAccessor = false;
208  float _x;
209  float _y;
210  float _z;
211  float _t;
212  float _e;
213  REST_HitType _type;
214 
215  public:
216  float& x() { return isAccessor ? _x : fHits->fX[index]; }
217  float& y() { return isAccessor ? _y : fHits->fY[index]; }
218  float& z() { return isAccessor ? _z : fHits->fZ[index]; }
219  float& t() { return isAccessor ? _t : fHits->fTime[index]; }
220  float& e() { return isAccessor ? _e : fHits->fEnergy[index]; }
221  REST_HitType& type() { return isAccessor ? _type : fHits->fType[index]; }
222 
223  float x() const { return isAccessor ? _x : fHits->fX[index]; }
224  float y() const { return isAccessor ? _y : fHits->fY[index]; }
225  float z() const { return isAccessor ? _z : fHits->fZ[index]; }
226  float t() const { return isAccessor ? _t : fHits->fTime[index]; }
227  float e() const { return isAccessor ? _e : fHits->fEnergy[index]; }
228  REST_HitType type() const { return isAccessor ? _type : fHits->fType[index]; }
229 
230  // accessor: hit data is copied to self. The class acts like "TRestHit"
231  void toaccessor();
232 
233  TRestHits_Iterator operator*() const;
234  TRestHits_Iterator& operator++();
235  TRestHits_Iterator& operator+=(const int& n);
236  TRestHits_Iterator operator+(const int& n);
237  TRestHits_Iterator& operator--();
238  TRestHits_Iterator& operator-=(const int& n);
239  TRestHits_Iterator operator-(const int& n);
240  TRestHits_Iterator& operator=(const TRestHits_Iterator& iter);
241 
242  friend int operator-(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
243  return i1.index - i2.index;
244  }
245  friend bool operator==(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
246  return i1.fHits == i2.fHits && i1.index == i2.index;
247  }
248  friend bool operator!=(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
249  return i1.fHits != i2.fHits || i1.index != i2.index;
250  }
251  friend bool operator>(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
252  // default comparison logic
253  return i1.index > i2.index;
254  }
255  friend bool operator>=(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
256  // default comparison logic
257  return i1.index >= i2.index;
258  }
259  friend bool operator<(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
260  return i1.index < i2.index;
261  }
262  friend bool operator<=(const TRestHits_Iterator& i1, const TRestHits_Iterator& i2) {
263  return i1.index <= i2.index;
264  }
266  if (i1.fHits == i2.fHits) {
267  i1.fHits->SwapHits(i1.index, i2.index);
268  }
269  }
270 
271  TRestHits_Iterator(TRestHits* h, int _index);
272  };
273  inline TRestHits_Iterator begin() { return {this, 0}; }
274  inline TRestHits_Iterator end() { return {this, static_cast<int>(GetNumberOfHits())}; }
275  typedef TRestHits_Iterator iterator;
276 
279 
280  ClassDef(TRestHits, 6);
281 };
282 
283 #endif
It saves a 3-coordinate position and an energy for each punctual deposition.
Definition: TRestHits.h:39
TVector3 GetVector(int i, int j) const
It returns the vector that goes from hit j to hit i.
Definition: TRestHits.cxx:531
virtual Bool_t areXYZ() const
It will return true only if all the hits inside are of type XYZ.
Definition: TRestHits.cxx:146
Double_t GetEnergyX() const
It calculates the total energy of hits with a valid X coordinate.
Definition: TRestHits.cxx:564
Double_t GetDistanceToNode(Int_t n) const
It determines the distance required to travel from the first hit to the hit n adding all the distance...
Definition: TRestHits.cxx:1217
virtual Bool_t areYZ() const
It will return true only if all the hits inside are of type YZ.
Definition: TRestHits.cxx:131
void Rotate(Int_t n, Double_t alpha, const TVector3 &vAxis, const TVector3 &vMean)
It rotates hit n by an angle akpha along the vAxis with center at vMean.
Definition: TRestHits.cxx:409
virtual Bool_t areXY() const
It will return true only if all the hits inside are of type XY.
Definition: TRestHits.cxx:101
Double_t GetMaximumHitEnergy() const
It returns the maximum hit energy.
Definition: TRestHits.cxx:426
Int_t GetNumberOfHitsInsidePrism(const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines the total number of hits contained inside a prisma delimited between x0 and y0 vertex,...
Definition: TRestHits.cxx:216
Double_t GetMeanPositionZ() const
It calculates the mean Z position weighting with the energy of the hits with a valid Z coordinate.
Definition: TRestHits.cxx:637
Double_t GetMeanPositionX() const
It calculates the mean X position weighting with the energy of the hits with a valid X coordinate.
Definition: TRestHits.cxx:593
Double_t GetSkewXY() const
It returns the 2-dimensional skewness on the XY-plane which is a measure of the hits distribution asy...
Definition: TRestHits.cxx:979
Double_t GetHitsTwistWeighted(Int_t n, Int_t m) const
Same as GetHitsTwist but weighting with the energy.
Definition: TRestHits.cxx:1325
TVector3 GetMeanPosition() const
It calculates the mean position weighting with the energy of the hits. Each coordinate is calculated ...
Definition: TRestHits.cxx:658
Double_t GetMeanPositionY() const
It calculates the mean Y position weighting with the energy of the hits with a valid Y coordinate.
Definition: TRestHits.cxx:615
virtual void RemoveHits()
It removes all hits inside the class.
Definition: TRestHits.cxx:371
Double_t GetMeanHitEnergy() const
It returns the mean hits energy.
Definition: TRestHits.cxx:452
Double_t GetTotalDistance() const
It determines the distance required to travel from the first to the last hit adding all the distances...
Definition: TRestHits.cxx:1192
TVector3 GetMeanPositionInCylinder(const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines the mean position using the hits contained inside a cylinder with a given radius and de...
Definition: TRestHits.cxx:1169
Double_t GetGaussSigmaX(Double_t error=150.0, Int_t nHitsMin=100000)
It computes the gaussian sigma in the X-coordinate. It adds a hit to the right and a hit to the left,...
Definition: TRestHits.cxx:762
Double_t GetMeanPositionYInPrism(const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines the mean Y position of hits contained inside a prisma delimited between x0 and x1 verte...
Definition: TRestHits.cxx:1052
virtual void MergeHits(int n, int m)
It merges hits n and m being the resulting hit placed at the weighted center and being its final ener...
Definition: TRestHits.cxx:458
static void GetBoundaries(std::vector< double > &val, double &max, double &min, int &nBins, double offset=10)
TODO This method is not using any TRestHits member. This probably means that it should be placed some...
Definition: TRestHits.cxx:738
Bool_t isSortedByEnergy() const
It returns true if the hits are ordered in increasing energies.
Definition: TRestHits.cxx:490
Double_t GetSigmaX() const
It calculates the hits standard deviation in the X-coordinate.
Definition: TRestHits.cxx:685
Double_t GetTransversalProjection(const TVector3 &p0, const TVector3 &direction, const TVector3 &position) const
It returns the transversal projection of position to the line defined by position and direction.
Definition: TRestHits.cxx:1284
Double_t GetEnergyInCylinder(const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines the total energy contained inside a cylinder with a given radius and delimited between ...
Definition: TRestHits.cxx:262
virtual void RemoveHit(int n)
It removes the hit at position n from the list.
Definition: TRestHits.cxx:503
std::vector< REST_HitType > fType
The type of hit X,Y,XY,XYZ, ...
Definition: TRestHits.h:62
std::vector< Float_t > fZ
Position on Z axis for each punctual deposition (units mm)
Definition: TRestHits.h:53
Double_t GetEnergyY() const
It calculates the total energy of hits with a valid Y coordinate.
Definition: TRestHits.cxx:578
Bool_t isHitNInsidePrism(Int_t n, const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines if hit n is contained inside a prisma delimited between x0 and y0 vertex,...
Definition: TRestHits.cxx:176
Double_t GetMeanPositionZInPrism(const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines the mean Z position of hits contained inside a prisma delimited between x0 and x1 verte...
Definition: TRestHits.cxx:1074
Double_t GetMeanPositionXInCylinder(const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines the mean position X using the hits contained inside a cylinder with a given radius and ...
Definition: TRestHits.cxx:1107
Double_t GetHitsTwist(Int_t n, Int_t m) const
A parameter measuring how straight is a given sequence of hits. If the value is close to zero,...
Definition: TRestHits.cxx:1301
Double_t GetMeanPositionXInPrism(const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines the mean X position of hits contained inside a prisma delimited between x0 and x1 verte...
Definition: TRestHits.cxx:1030
std::vector< Float_t > fY
Position on Y axis for each punctual deposition (units mm)
Definition: TRestHits.h:50
std::vector< Float_t > fX
Position on X axis for each punctual deposition (units mm)
Definition: TRestHits.h:47
Double_t GetEnergyInSphere(const TVector3 &pos0, Double_t radius) const
It determines the total energy contained in a sphere with position pos0 for a given spherical radius.
Definition: TRestHits.cxx:296
Double_t GetGaussSigmaZ(Double_t error=150.0, Int_t nHitsMin=100000)
It computes the gaussian sigma in the Z-coordinate. It adds a hit to the right and a hit to the left,...
Definition: TRestHits.cxx:907
Int_t GetMostEnergeticHitInRange(Int_t n, Int_t m) const
It returns the most energetic hit found between hits n and m.
Definition: TRestHits.cxx:1229
Double_t GetEnergyInPrism(const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines the total hit energy contained inside a prisma delimited between x0 and y0 vertex,...
Definition: TRestHits.cxx:200
void WriteHitsToTextFile(TString filename)
It writes the hits to a plain text file.
Definition: TRestHits.cxx:721
~TRestHits()
Default destructor.
std::vector< Float_t > fEnergy
Energy deposited at each 3-coordinate position (units keV)
Definition: TRestHits.h:59
void AddHit(const TVector3 &position, Double_t energy, Double_t time=0, REST_HitType type=XYZ)
Adds a new hit to the list of hits using a TVector3.
Definition: TRestHits.cxx:345
TVector2 GetProjection(Int_t n, Int_t m, const TVector3 &position) const
It returns the longitudinal and transversal projections of position to the axis defined by the hits n...
Definition: TRestHits.cxx:1265
Double_t GetGaussSigmaY(Double_t error=150.0, Int_t nHitsMin=100000)
It computes the gaussian sigma in the Y-coordinate. It adds a hit to the right and a hit to the left,...
Definition: TRestHits.cxx:836
std::vector< Float_t > fTime
Absolute time information for each punctual deposition (units us, 0 is time of decay)
Definition: TRestHits.h:56
TRestHits()
Default constructor.
virtual Bool_t areXZ() const
It will return true only if all the hits inside are of type XZ.
Definition: TRestHits.cxx:116
Int_t GetClosestHit(const TVector3 &position) const
It returns the closest hit to a given position.
Definition: TRestHits.cxx:1244
size_t fNHits
Number of punctual energy depositions, it is the length for all the arrays.
Definition: TRestHits.h:42
void RotateIn3D(Int_t n, Double_t alpha, Double_t beta, Double_t gamma, const TVector3 &center)
It rotates hit n following rotations in Z, Y and X by angles gamma, beta and alpha....
Definition: TRestHits.cxx:393
Double_t fTotalEnergy
Event total energy.
Definition: TRestHits.h:44
Int_t GetNumberOfHitsInsideCylinder(const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines the total number of hits contained inside a cylinder with a given radius and delimited ...
Definition: TRestHits.cxx:283
Double_t GetSigmaZ2() const
It returns the hits distribution variance on the Z-axis.
Definition: TRestHits.cxx:997
Bool_t isHitNInsideCylinder(Int_t n, const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines if hit n is contained inside a cylinder with a given radius and delimited between x0 an...
Definition: TRestHits.cxx:230
Double_t GetSkewZ() const
It returns the hits distribution skewness, or asymmetry on the Z-axis.
Definition: TRestHits.cxx:1013
TVector3 GetMeanPositionInPrism(const TVector3 &x0, const TVector3 &x1, Double_t sizeX, Double_t sizeY, Double_t theta) const
It determines the mean position of hits contained inside a prisma delimited between x0 and x1 vertex,...
Definition: TRestHits.cxx:1095
Double_t GetSigmaY() const
It calculates the hits standard deviation in the Y-coordinate.
Definition: TRestHits.cxx:703
virtual void SwapHits(Int_t i, Int_t j)
It exchanges hits n and m affecting to the ordering of the hits inside the list of hits.
Definition: TRestHits.cxx:478
Bool_t isNaN(Int_t n) const
It will return true only if all the 3-coordinates of hit number n are not a number,...
Definition: TRestHits.cxx:162
Double_t GetMaximumHitDistance() const
It returns the maximum distance between 2-hits.
Definition: TRestHits.cxx:1352
Double_t GetDistance2(int n, int m) const
It returns the euclidian distance between hits n and m.
Definition: TRestHits.cxx:1201
TVector3 GetPosition(int n) const
It returns the position of hit number n.
Definition: TRestHits.cxx:515
virtual void PrintHits(Int_t nHits=-1) const
It prints on screen the first nHits from the list.
Definition: TRestHits.cxx:1380
Double_t GetMaximumHitDistance2() const
It returns the maximum squared distance between 2-hits.
Definition: TRestHits.cxx:1366
Double_t GetSigmaXY2() const
It calculates the 2-dimensional hits variance.
Definition: TRestHits.cxx:666
Double_t GetMinimumHitEnergy() const
It returns the minimum hit energy.
Definition: TRestHits.cxx:439
Int_t GetNumberOfHitsY() const
It returns the number of hits with a valid Y coordinate.
Definition: TRestHits.cxx:550
void Translate(Int_t n, Double_t x, Double_t y, Double_t z)
It moves hit n by a given amount (x,y,z).
Definition: TRestHits.cxx:383
Bool_t isHitNInsideSphere(Int_t n, const TVector3 &pos0, Double_t radius) const
It determines if the hit n is contained in a sphere with position pos0 for a given sphereical radius.
Definition: TRestHits.cxx:322
Int_t GetNumberOfHitsX() const
It returns the number of hits with a valid X coordinate.
Definition: TRestHits.cxx:536
Double_t GetHitsPathLength(Int_t n=0, Int_t m=0) const
It determines the distance required to travel from hit n to hit m adding all the distances of the hit...
Definition: TRestHits.cxx:1179
Double_t GetMeanPositionYInCylinder(const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines the mean position Y using the hits contained inside a cylinder with a given radius and ...
Definition: TRestHits.cxx:1128
Double_t GetMeanPositionZInCylinder(const TVector3 &x0, const TVector3 &x1, Double_t radius) const
It determines the mean position Z using the hits contained inside a cylinder with a given radius and ...
Definition: TRestHits.cxx:1149