BOSS 7.1.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ZHelix.h
Go to the documentation of this file.
1//
2// ZHelix.h
3//
4// $Author: maqm $
5// $Date: 2022/03/04 04:44:37 $
6// $Revision: 1.3 $
7//
8
9#ifndef ZEVIS_ZHelix
10#define ZEVIS_ZHelix
11
12#include <TPolyLine3D.h>
13#include <TString.h>
14#include <TMath.h>
15#include <TPad.h>
16#include "BesView.h"
17
18#ifndef ZEVIS_EZHelixRangeType
19#define ZEVIS_EZHelixRangeType
26};
27#endif
28
29#ifndef ZEVIS_TrackType
30#define ZEVIS_TrackType
39};
40#endif
41
42class ZHelix : public TPolyLine3D {
43
44 protected:
45 TrackType fTrackType; // Type of track
46 Double_t fAzim; // Azimuth
47 Double_t fQovR; // Q/R
48 Double_t fQxDh; // Q*D_h
49 Double_t fTDip; // tan(Dip)
50 Double_t fRefX; // Helix reference point x coordinate
51 Double_t fRefY; // Helix reference point y coordinate
52 Double_t fRefZ; // Helix reference point z coordinate
53 Double_t fRange[2]; // Range of helix (in phi)
54 EZHelixRangeType fRType; // Helix range type
55 Float_t fChi2; // Chi2 of the fit
56 Int_t fNDoF; // Degrees of freedom
57 Double_t fSinAzim; // Sin(Azimuth)
58 Double_t fCosAzim; // Cos(Azimuth)
59 // Transient data members
60 Int_t fRSign; //! sign of radius
61 Double_t fPhiI; // phi inner
62 Double_t fPhiO; // phi outer
63 Bool_t fEnable; // enable of drawing of helix, could be set false for bad tracks
64
65
66 public:
68 ZHelix(Double_t Azim, Double_t QovR, Double_t QxDh, Double_t refx,
69 Double_t refy, Double_t refz, Double_t TDip, Double_t phii,
70 Double_t phio, Float_t Chi2, Int_t NDoF,
72 Double_t RangeMin = 0, Double_t RangeMax = 2*TMath::Pi());
73 virtual ~ZHelix();
74
75 void Phi2XYZ(Double_t phi, Double_t& x, Double_t& y, Double_t& z);
76 void Phi2ZR(Double_t phi, Double_t& z, Double_t& r);
77 void SetRange(EZHelixRangeType RangeType,
78 Double_t RangeMin, Double_t RangeMax);
80 virtual void SetPoints(Option_t *option = "3D");
81 Double_t X2Phi(Double_t x);
82 Double_t Y2Phi(Double_t y);
83 Double_t Z2Phi(Double_t z);
84 Double_t R2Phi(Double_t r);
85 Double_t Phi2S(Double_t phi);
86 virtual void Print(Option_t *option = "") const; // *MENU*
87 virtual void Draw(Option_t *option = "3D");
88 virtual void Paint(Option_t *option = "3D");
89
90 // Dummies
91 inline virtual Int_t SetNextPoint(Double_t x, Double_t y, Double_t z) {
92 return TPolyLine3D::SetNextPoint(x, y, z);
93 }
94 inline virtual void SetPoint(Int_t point, Double_t x, Double_t y, Double_t z) {
95 TPolyLine3D::SetPoint(point, x, y, z);
96 }
97 inline virtual void Delete(Option_t *option) { TObject::Delete(option); }
98 inline virtual void DrawClass() { TObject::DrawClass(); }
99 inline virtual void DrawClone(Option_t *option) { TObject::DrawClone(option); }
100 inline virtual void SetDrawOption(Option_t *option) { TObject::SetDrawOption(option); }
101 inline virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) {;}
102
103 ClassDef(ZHelix,8) // ZeVis Helix
104};
105
106#endif
legend Draw()
Double_t x[10]
EZHelixRangeType
Definition: ZHelix.h:20
@ kBesHelixY
Definition: ZHelix.h:23
@ kBesHelixR
Definition: ZHelix.h:25
@ kBesHelixX
Definition: ZHelix.h:22
@ kBesHelixZ
Definition: ZHelix.h:24
@ kBesHelixPhi
Definition: ZHelix.h:21
TrackType
Definition: ZHelix.h:31
@ kVcparsec
Definition: ZHelix.h:34
@ kZttrhl
Definition: ZHelix.h:36
@ kVctrhl
Definition: ZHelix.h:32
@ kVctpar
Definition: ZHelix.h:33
@ kZtprhl
Definition: ZHelix.h:35
@ kZttrsec
Definition: ZHelix.h:38
@ kZttrprm
Definition: ZHelix.h:37
Definition: ZHelix.h:42
Double_t fRefZ
Definition: ZHelix.h:52
Double_t R2Phi(Double_t r)
Definition: ZHelix.cxx:296
void Phi2ZR(Double_t phi, Double_t &z, Double_t &r)
Definition: ZHelix.cxx:256
virtual void DrawClone(Option_t *option)
Definition: ZHelix.h:99
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Definition: ZHelix.h:101
virtual Int_t SetNextPoint(Double_t x, Double_t y, Double_t z)
Definition: ZHelix.h:91
void SetRange(EZHelixRangeType RangeType, Double_t RangeMin, Double_t RangeMax)
Definition: ZHelix.cxx:97
Double_t fTDip
Definition: ZHelix.h:49
Double_t Y2Phi(Double_t y)
Definition: ZHelix.cxx:276
Double_t fSinAzim
Definition: ZHelix.h:57
virtual void Print(Option_t *option="") const
Definition: ZHelix.cxx:342
void SetTrackType(TrackType tt)
Definition: ZHelix.h:79
Double_t fRange[2]
Definition: ZHelix.h:53
Double_t fQxDh
Definition: ZHelix.h:48
Double_t fPhiI
sign of radius
Definition: ZHelix.h:61
Double_t fRefX
Definition: ZHelix.h:50
Double_t fCosAzim
Definition: ZHelix.h:58
TrackType fTrackType
Definition: ZHelix.h:45
virtual void SetPoints(Option_t *option="3D")
Definition: ZHelix.cxx:127
Int_t fRSign
Definition: ZHelix.h:60
Float_t fChi2
Definition: ZHelix.h:55
Double_t fAzim
Definition: ZHelix.h:46
Double_t X2Phi(Double_t x)
Definition: ZHelix.cxx:266
virtual void Paint(Option_t *option="3D")
Definition: ZHelix.cxx:375
void Phi2XYZ(Double_t phi, Double_t &x, Double_t &y, Double_t &z)
Definition: ZHelix.cxx:246
Double_t fRefY
Definition: ZHelix.h:51
Double_t fPhiO
Definition: ZHelix.h:62
Bool_t fEnable
Definition: ZHelix.h:63
Double_t Phi2S(Double_t phi)
Definition: ZHelix.cxx:389
virtual void SetDrawOption(Option_t *option)
Definition: ZHelix.h:100
virtual void Delete(Option_t *option)
Definition: ZHelix.h:97
virtual ~ZHelix()
Definition: ZHelix.cxx:87
virtual void SetPoint(Int_t point, Double_t x, Double_t y, Double_t z)
Definition: ZHelix.h:94
Int_t fNDoF
Definition: ZHelix.h:56
Double_t Z2Phi(Double_t z)
Definition: ZHelix.cxx:286
Double_t fQovR
Definition: ZHelix.h:47
EZHelixRangeType fRType
Definition: ZHelix.h:54
virtual void DrawClass()
Definition: ZHelix.h:98
double y[1000]