Belle II Software  release-05-02-19
Track.h
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : Track.h
5 // Section : TRG CDC
6 // Owner : Yoshihito Iwasaki
7 // Email : yoshihito.iwasaki@kek.jp
8 //-----------------------------------------------------------------------------
9 // Description : A class to represent a reconstructed charged track in TRGCDC.
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #ifndef TRGCDCTrack_FLAG_
15 #define TRGCDCTrack_FLAG_
16 
17 #include "trg/cdc/TrackBase.h"
18 #include "trg/cdc/Helix.h"
19 
20 #ifdef TRGCDC_SHORT_NAMES
21 #define TCTrack TRGCDCTrack
22 #endif
23 
24 //...Definition of status...
25 #define TCTrack_2DTrack 1
26 #define TCTrack_2DTrackFitted 2
27 #define TCTrack_3DTrack 4
28 #define TCTrack_3DTrackFitted 8
29 
30 namespace Belle2 {
36  class TRGCDCCircle;
37 
39  class TRGCDCTrack : public TRGCDCTrackBase {
40 
41  public:
43  enum EDebugValueType { fit2D = 1 << 3,
44  find3D = 1 << 4,
45  fit3D = 1 << 5,
46  any = fit2D | find3D | fit3D
47  };
48 
49 
51  static std::vector<const TRGCDCTrack*> list(void);
52 
54  TRGCDCTrack();
55 
57  explicit TRGCDCTrack(const TRGCDCCircle&);
58 
60  virtual ~TRGCDCTrack();
61 
63  const TRGCDCHelix& helix(void) const;
64 
66  void setHelix(TRGCDCHelix& helix);
67 
69  int approach(TRGCDCLink&, bool sagCorrection = false) const;
70 
72  virtual const CLHEP::Hep3Vector& p(void) const override;
73 
75  virtual double pt(void) const override;
76 
78  virtual const CLHEP::Hep3Vector& x(void) const override;
79 
81  void set2DFitChi2(double);
82 
84  double get2DFitChi2(void) const;
85 
87  void set3DFitChi2(double);
88 
90  double get3DFitChi2(void) const;
91 
93  void setDebugValue(EDebugValueType const& moduleName, bool flag);
94 
96  int getDebugValue(EDebugValueType const& moduleName) const;
97 
98  public:
99 
101  std::vector<HepGeom::Point3D<double> > perfectPosition(void) const;
102 
103  private:// static members
104 
106  static std::vector<const TRGCDCTrack*> _list;
107 
108  private:
109 
112 
114  mutable CLHEP::Hep3Vector _p;
115 
117  mutable CLHEP::Hep3Vector _x;
118 
120  double m_2DFitChi2;
121 
123  double m_3DFitChi2;
124 
127  };
128 
129 //-----------------------------------------------------------------------------
130 
131 // inline
132 // unsigned
133 // TRGCDCTrack::id(void) const{
134 // if (_list.size()) {
135 // for (unsigned i = 0; i < _list.size(); i++)
136 // if (_list[i] == this)
137 // return unsigned(i);
138 // }
139 // return 999;
140 // }
141 
142  inline
143  const TRGCDCHelix&
144  TRGCDCTrack::helix(void) const
145  {
146  return _helix;
147  }
148 
149  inline
150  void
152  {
153  _helix = helix;
154  }
155 
156  inline
157  const CLHEP::Hep3Vector&
158  TRGCDCTrack::p(void) const
159  {
160  _p = _helix.momentum();
161  return _p;
162  }
163 
164  inline
165  double
166  TRGCDCTrack::pt(void) const
167  {
168  _p = _helix.momentum();
169  return _p.perp();
170  }
171 
172  inline
173  const CLHEP::Hep3Vector&
174  TRGCDCTrack::x(void) const
175  {
176  _x = _helix.x();
177  return _x;
178  }
179 
180  inline
181  void TRGCDCTrack::set2DFitChi2(double in2DFitChi2)
182  {
183  m_2DFitChi2 = in2DFitChi2;
184  }
185 
186  inline
187  double TRGCDCTrack::get2DFitChi2(void) const
188  {
189  return m_2DFitChi2;
190  }
191 
192  inline
193  void TRGCDCTrack::set3DFitChi2(double in3DFitChi2)
194  {
195  m_3DFitChi2 = in3DFitChi2;
196  }
197 
198  inline
199  double TRGCDCTrack::get3DFitChi2(void) const
200  {
201  return m_3DFitChi2;
202  }
203 
204  inline
205  void TRGCDCTrack::setDebugValue(EDebugValueType const& moduleName, bool flag)
206  {
207  if (flag) m_debugValue |= moduleName;
208  else m_debugValue &= ~moduleName;
209  }
210 
211  inline
212  int TRGCDCTrack::getDebugValue(EDebugValueType const& moduleName) const
213  {
214  return m_debugValue & moduleName;
215  }
216 
217 
218 
220 } // namespace Belle2
221 
222 #endif /* TRGCDCTrack_FLAG_ */
Belle2::TRGCDCTrack::setHelix
void setHelix(TRGCDCHelix &helix)
Set helix parameter.
Definition: Track.h:151
Belle2::TRGCDCTrack::p
virtual const CLHEP::Hep3Vector & p(void) const override
returns momentum vector.
Definition: Track.h:158
Belle2::TRGCDCTrack::approach
int approach(TRGCDCLink &, bool sagCorrection=false) const
calculates the closest approach to a wire in real space. Results are stored in TLink....
Definition: Track.cc:95
Belle2::TRGCDCTrack::_x
CLHEP::Hep3Vector _x
Position.
Definition: Track.h:117
Belle2::TRGCDCTrack::perfectPosition
std::vector< HepGeom::Point3D< double > > perfectPosition(void) const
returns perfect position from GEANT.
Definition: Track.cc:260
Belle2::TRGCDCTrack::set2DFitChi2
void set2DFitChi2(double)
Set 2D fit chi2.
Definition: Track.h:181
Belle2::TRGCDCTrack::_helix
TRGCDCHelix _helix
Helix parameter.
Definition: Track.h:111
Belle2::TRGCDCHelix::momentum
CLHEP::Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
Definition: Helix.cc:195
Belle2::TRGCDCTrack::helix
const TRGCDCHelix & helix(void) const
returns helix parameter.
Definition: Track.h:144
Belle2::TRGCDCHelix
TRGCDCHelix parameter class.
Definition: Helix.h:35
Belle2::TRGCDCTrack::_list
static std::vector< const TRGCDCTrack * > _list
a vector to keep all TRGCDCTrack objects.
Definition: Track.h:106
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGCDCTrack::~TRGCDCTrack
virtual ~TRGCDCTrack()
Destructor.
Definition: Track.cc:77
Belle2::TRGCDCTrack::list
static std::vector< const TRGCDCTrack * > list(void)
returns a list of TRGCDCTrack's.
Definition: Track.cc:87
Belle2::TRGCDCTrack::m_2DFitChi2
double m_2DFitChi2
2D fit chi2
Definition: Track.h:120
Belle2::TRGCDCTrack::_p
CLHEP::Hep3Vector _p
Momentum.
Definition: Track.h:114
Belle2::TRGCDCTrack::setDebugValue
void setDebugValue(EDebugValueType const &moduleName, bool flag)
Set debug value.
Definition: Track.h:205
Belle2::TRGCDCTrack::getDebugValue
int getDebugValue(EDebugValueType const &moduleName) const
Get debug value.
Definition: Track.h:212
Belle2::TRGCDCTrack::get2DFitChi2
double get2DFitChi2(void) const
Returns 2D fit chi2.
Definition: Track.h:187
Belle2::TRGCDCCircle
A class to represent a circle.
Definition: Circle.h:34
Belle2::TRGCDCTrack::m_3DFitChi2
double m_3DFitChi2
3D fit chi2
Definition: Track.h:123
Belle2::TRGCDCTrack::m_debugValue
int m_debugValue
Debugging variable.
Definition: Track.h:126
Belle2::TRGCDCTrack
A class to represent a reconstructed charged track in TRGCDC.
Definition: Track.h:39
Belle2::TRGCDCTrackBase
A class to represent a track object in TRGCDC.
Definition: TrackBase.h:41
Belle2::TRGCDCTrack::get3DFitChi2
double get3DFitChi2(void) const
Returns 3D fit chi2.
Definition: Track.h:199
Belle2::TRGCDCTrack::x
virtual const CLHEP::Hep3Vector & x(void) const override
returns position vector.
Definition: Track.h:174
Belle2::TRGCDCTrack::EDebugValueType
EDebugValueType
Enum for returnValue types.
Definition: Track.h:43
Belle2::TRGCDCHelix::x
HepGeom::Point3D< double > x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
Definition: Helix.cc:136
Belle2::TRGCDCTrack::pt
virtual double pt(void) const override
returns Pt.
Definition: Track.h:166
Belle2::TRGCDCTrack::TRGCDCTrack
TRGCDCTrack()
Constructor.
Definition: Track.cc:38
Belle2::TRGCDCTrack::set3DFitChi2
void set3DFitChi2(double)
Set 3D fit chi2.
Definition: Track.h:193