FEDRA emulsion software from the OPERA Collaboration
EdbSegment.h
Go to the documentation of this file.
1#ifndef ROOT_EdbSegment
2#define ROOT_EdbSegment
5
11
12#include "TArrayI.h"
13#include "TObjArray.h"
14#include "EdbCluster.h"
15
16class EdbAffine2D;
17
18//______________________________________________________________________________
20class EdbSeg3D : public TObject {
21
22private:
23
24 Float_t eX0;
25 Float_t eY0;
26 Float_t eZ0;
27 Float_t eTx;
28 Float_t eTy;
29
30 Float_t eDz;
31
32public:
34 EdbSeg3D( float x, float y, float z, float tx, float ty, float dz=0 ):
35 eX0(x), eY0(y), eZ0(z), eTx(tx), eTy(ty), eDz(dz) {}
36 virtual ~EdbSeg3D() { }
37
38 virtual Float_t GetX0() const { return eX0; }
39 virtual Float_t GetY0() const { return eY0; }
40 virtual Float_t GetZ0() const { return eZ0; }
41 virtual Float_t GetTx() const { return eTx; }
42 virtual Float_t GetTy() const { return eTy; }
43 virtual Float_t GetDz() const { return eDz; }
44
45 virtual void SetX0( float x ) { eX0 = x; }
46 virtual void SetY0( float y ) { eY0 = y; }
47 virtual void SetZ0( float z ) { eZ0 = z; }
48 virtual void SetTx( float tx ) { eTx = tx; }
49 virtual void SetTy( float ty ) { eTy = ty; }
50 virtual void SetDz( float dz ) { eDz = dz; }
51
52 virtual void Set(float x, float y, float z, float tx, float ty, float dz=0);
53
54 virtual void Transform( const EdbAffine2D *aff );
55
56 // virtual void Print( Option_t *opt=0) const;
57
58 ClassDef(EdbSeg3D,2) // base class with geometrical data for segments
59};
60
61//______________________________________________________________________________
63class EdbSegment : public EdbSeg3D {
64
65private:
66
67 Int_t eSide;
68 Int_t ePuls;
69 Int_t eID;
70 Float_t eSigmaX;
71 Float_t eSigmaY;
72
73 TObjArray *eElements;
74
75public:
76 EdbSegment();
77 EdbSegment( float x, float y, float z, float tx, float ty, float dz=0,
78 int side=0, int puls=0, int id=0 );
79 virtual ~EdbSegment();
80
81 void Set(float x, float y, float z, float tx, float ty,
82 float dz=0, int side=0, int puls=0, int id=0);
83
84 void Copy( EdbSegment &s);
85 void SetSigma(float sx, float sy) { eSigmaX=sx; eSigmaY=sy; }
86 float GetSigmaX() const { return eSigmaX; }
87 float GetSigmaY() const { return eSigmaY; }
88
89 Int_t GetSide() const { return eSide; }
90 Int_t GetPuls() const { return ePuls%1000; }
91 Int_t GetVolume() const { return ePuls/1000; }
92 Int_t GetID() const { return eID; }
93
94 void SetSide(int side) { eSide = side; }
95 void SetPuls(int puls) { ePuls = puls; }
96 void SetID(int id) { eID = id; }
97 void SetIDE(int id) {
98 eID = id;
99 if(eElements)
100 for(int i=0; i<eElements->GetLast()+1; i++)
101 ((EdbCluster*)eElements->At(i))->SetSegment(eID);
102 }
103 void SetIDE() { SetIDE(GetID()); }
104 void UnSetIDE() {
105 if(eElements) {
106 for(int i=0; i<eElements->GetLast()+1; i++)
107 if( ((EdbCluster*)eElements->UncheckedAt(i))->GetSegment() == eID )
108 ((EdbCluster*)eElements->UncheckedAt(i))->SetSegment(-1);
109 eElements->Clear();
110 }
111 }
112
113
114 Int_t GetNelements() const { if(eElements) return eElements->GetLast()+1;
115 else return 0; }
116
117 TObjArray *GetElements() const { return eElements; }
118
119 void AddElement( TObject *element );
120
121 void Print( Option_t *opt=0) const;
122
123 ClassDef(EdbSegment,3)
124};
125
126//______________________________________________________________________________
128class EdbTrack : public EdbSeg3D {
129
130 private:
131
132 Int_t eID;
133
134 TObjArray *eElements;
135
136 public:
137 EdbTrack();
138 EdbTrack( float x, float y, float z, float tx, float ty, float dz=0, int id=0 );
139 virtual ~EdbTrack();
140
141 void Set(float x, float y, float z, float tx, float ty,
142 float dz, int id=0);
143
144 Int_t GetID() const { return eID; }
145
146 Int_t GetNelements() const { if(eElements) return eElements->GetLast()+1;
147 else return 0; }
148 TObjArray *GetElements() const { return eElements; }
149
150 void AddElement( TObject *element );
151
152 void Print( Option_t *opt=0) const;
153
154 ClassDef(EdbTrack,3)
155};
156
157#endif /* ROOT_EdbSegment */
brick dz
Definition: RecDispMC.C:107
Definition: EdbAffine.h:17
Definition: EdbCluster.h:19
base class with geometrical data for segments
Definition: EdbSegment.h:20
virtual Float_t GetDz() const
Definition: EdbSegment.h:43
Float_t eX0
|_coordinates of the segment's initial point
Definition: EdbSegment.h:24
virtual void SetX0(float x)
Definition: EdbSegment.h:45
EdbSeg3D(float x, float y, float z, float tx, float ty, float dz=0)
Definition: EdbSegment.h:34
virtual void Set(float x, float y, float z, float tx, float ty, float dz=0)
virtual ~EdbSeg3D()
Definition: EdbSegment.h:36
Float_t eTx
tanX: deltaX/deltaZ
Definition: EdbSegment.h:27
virtual Float_t GetX0() const
Definition: EdbSegment.h:38
virtual void SetDz(float dz)
Definition: EdbSegment.h:50
virtual void Transform(const EdbAffine2D *aff)
Definition: EdbSegment.cxx:59
Float_t eDz
length of the segment along Z with sign
Definition: EdbSegment.h:30
virtual Float_t GetTx() const
Definition: EdbSegment.h:41
virtual void SetTy(float ty)
Definition: EdbSegment.h:49
Float_t eZ0
|
Definition: EdbSegment.h:26
virtual Float_t GetZ0() const
Definition: EdbSegment.h:40
virtual void SetTx(float tx)
Definition: EdbSegment.h:48
EdbSeg3D()
Definition: EdbSegment.h:33
virtual Float_t GetY0() const
Definition: EdbSegment.h:39
virtual Float_t GetTy() const
Definition: EdbSegment.h:42
Float_t eTy
tanY: deltaY/deltaZ
Definition: EdbSegment.h:28
virtual void SetZ0(float z)
Definition: EdbSegment.h:47
virtual void SetY0(float y)
Definition: EdbSegment.h:46
Float_t eY0
| in the SAME FOR ALL SEGMENTS stage coordinate system
Definition: EdbSegment.h:25
segment of the track
Definition: EdbSegment.h:63
Int_t GetVolume() const
Definition: EdbSegment.h:91
Int_t GetPuls() const
Definition: EdbSegment.h:90
void AddElement(TObject *element)
Definition: EdbSegment.cxx:150
Int_t GetNelements() const
Definition: EdbSegment.h:114
void Set(float x, float y, float z, float tx, float ty, float dz=0, int side=0, int puls=0, int id=0)
Definition: EdbSegment.cxx:93
void SetSigma(float sx, float sy)
Definition: EdbSegment.h:85
void SetIDE()
Definition: EdbSegment.h:103
Int_t ePuls
puls height (number of grains)
Definition: EdbSegment.h:68
void SetSide(int side)
Definition: EdbSegment.h:94
EdbSegment()
array of clusters (transient!)
Definition: EdbSegment.cxx:72
void Copy(EdbSegment &s)
Definition: EdbSegment.cxx:129
float GetSigmaX() const
Definition: EdbSegment.h:86
Int_t eSide
side of the segment location (0-up, 1-down)
Definition: EdbSegment.h:67
Float_t eSigmaX
dispersion parameter of grains around track line
Definition: EdbSegment.h:70
TObjArray * GetElements() const
Definition: EdbSegment.h:117
Int_t eID
segment identifier
Definition: EdbSegment.h:69
Int_t GetID() const
Definition: EdbSegment.h:92
virtual ~EdbSegment()
Definition: EdbSegment.cxx:87
TObjArray * eElements
Definition: EdbSegment.h:73
void Print(Option_t *opt=0) const
Definition: EdbSegment.cxx:140
void SetPuls(int puls)
Definition: EdbSegment.h:95
void SetID(int id)
Definition: EdbSegment.h:96
void UnSetIDE()
Definition: EdbSegment.h:104
void SetIDE(int id)
Definition: EdbSegment.h:97
Float_t eSigmaY
dispersion parameter of grains around track line
Definition: EdbSegment.h:71
Int_t GetSide() const
Definition: EdbSegment.h:89
float GetSigmaY() const
Definition: EdbSegment.h:87
Track linked from segments.
Definition: EdbSegment.h:128
Int_t GetID() const
Definition: EdbSegment.h:144
void Set(float x, float y, float z, float tx, float ty, float dz, int id=0)
Definition: EdbSegment.cxx:178
TObjArray * eElements
array of segments (transient!)
Definition: EdbSegment.h:134
EdbTrack()
Definition: EdbSegment.cxx:158
Int_t GetNelements() const
Definition: EdbSegment.h:146
TObjArray * GetElements() const
Definition: EdbSegment.h:148
void AddElement(TObject *element)
Definition: EdbSegment.cxx:217
void Print(Option_t *opt=0) const
Definition: EdbSegment.cxx:208
virtual ~EdbTrack()
Definition: EdbSegment.cxx:172
Int_t eID
Track identifier.
Definition: EdbSegment.h:132
s
Definition: check_shower.C:55
const char * opt
Definition: mc2raw.cxx:42
UInt_t id
Definition: tlg2couples.C:117