FEDRA emulsion software from the OPERA Collaboration
EdbView.h
Go to the documentation of this file.
1#ifndef ROOT_EdbView
2#define ROOT_EdbView
5
11
12#include "TClonesArray.h"
13#include "TObjArray.h"
14#include "TList.h"
15#include "TPolyMarker3D.h"
16#include "TArrayF.h"
17
18#include "EdbAffine.h"
19#include "EdbCluster.h"
20#include "EdbSegment.h"
21
22class EdbTrack;
23class EdbFrame;
24
26class EdbViewHeader : public TObject {
27
28private:
29
30 Int_t eViewID;
31 Int_t eAreaID;
32
33 Float_t eXview;
34 Float_t eYview;
35
36 Float_t eZ1; //
37 Float_t eZ2;
38 Float_t eZ3;
39 Float_t eZ4;
40
43
44 Int_t eTime;
45
46 Int_t eNclusters;
47 Int_t eNsegments;
48
50
51 TArrayF *eZlevels;
52
53 Int_t eCol;
54 Int_t eRow;
55
56 Int_t eStatus;
57 Int_t eEvent;
58 Int_t eTrack;
59
60public:
62 virtual ~EdbViewHeader();
63
64 void Set0();
65 void Copy(EdbViewHeader *h) { memcpy( (void*)this, (void*)h, sizeof(EdbViewHeader) ); }
66
67 void SetAffine( float a11, float a12,
68 float a21, float a22,
69 float b1, float b2 )
70 { eAff.Set(a11,a12,a21,a22,b1,b2); }
71
72 EdbAffine2D const *GetAffine() const { return &eAff; }
73
74 void SetZlevels(Int_t n, const Float_t *array) {
75 //dummy
76 //if(!eZlevels) eZlevels=new TArrayF(n);
77 //eZlevels->Set(n,array);
78 }
79
80 TArrayF *GetZlevels() const {return 0;} //eZlevels;}
81
82 Int_t GetTime() { return eTime; }
83 void SetTime( Int_t time ) { eTime = time; }
84
85 void SetNclusters(int nclu) { eNclusters=nclu; }
86 void SetNsegments(int nseg) { eNsegments=nseg; }
87 Int_t GetNclusters() const { return eNclusters; }
88 Int_t GetNsegments() const { return eNsegments; }
89
90 Int_t GetViewID() const { return eViewID; }
91 Int_t GetAreaID() const { return eAreaID; }
92
93 Float_t GetXview() const { return eXview; }
94 Float_t GetYview() const { return eYview; }
95
96 Float_t GetXviewAff() const { return eAff.B1(); }
97 Float_t GetYviewAff() const { return eAff.B2(); }
98
99 void SetViewID( int id ) { eViewID = id; }
100 void SetAreaID( int id ) { eAreaID = id; }
101 void SetCoordXY(float x, float y) { eXview = x; eYview=y; }
102 void SetCoordZ(float z1, float z2, float z3, float z4)
103 { eZ1=z1; eZ2=z2; eZ3=z3; eZ4=z4; }
104 void SetNframes( int top, int bot ) { eNframesTop=top; eNframesBot=bot; }
105 void SetColRow( int col, int row) { eCol=col; eRow=row; }
106 void SetStatus( int st) { eStatus=st; }
107 void SetTrack( int track) { eTrack=track; }
108 void SetEvent( int event) { eEvent=event; }
109
110 Float_t GetZ1() const { return eZ1; }
111 Float_t GetZ2() const { return eZ2; }
112 Float_t GetZ3() const { return eZ3; }
113 Float_t GetZ4() const { return eZ4; }
114
115 Float_t GetZ0top() const { return eZ1; }
116 Float_t GetZ0bot() const { return eZ3; }
117 Float_t GetDZtop() const { return eZ2-eZ1; }
118 Float_t GetDZbot() const { return eZ4-eZ3; }
119
120 Int_t GetNframesTop() const { return eNframesTop; }
121 Int_t GetNframesBot() const { return eNframesBot; }
122
123 Int_t GetCol() const { return eCol; }
124 Int_t GetRow() const { return eRow; }
125 Int_t GetStatus() const { return eStatus; }
126 Int_t GetTrack() const { return eTrack; }
127 Int_t GetEvent() const { return eEvent; }
128 void Print() const;
129
130 ClassDef(EdbViewHeader,5) // view identification
131};
132
134class EdbView : public TObject {
135
136private:
137
139
140 TClonesArray *eClusters;
141 TClonesArray *eSegments;
142 TClonesArray *eTracks;
143 TClonesArray *eFrames;
144
146
147public:
149 virtual ~EdbView();
150
151 void Clear();
152
153 void Scale(float zscale);
154 void Shift(float zshift);
155 void Transform( const EdbAffine2D *aff );
156
157 void GenerateClustersFog( float density );
158 void GenerateClustersSegment( EdbSegment *segment, int n0=25, float sigma=.1 );
159 void GenerateClustersTrack( EdbTrack *track, int n0=25, float sigma=.1 );
160 void Print( Option_t *opt=0 ) const;
161 void PrintClusters( Option_t *opt=0 ) const;
162
163 EdbViewHeader *GetHeader() const { return eHeader; }
164 TClonesArray *GetClusters() const { return eClusters; }
165 TClonesArray *GetSegments() const { return eSegments; }
166 TClonesArray *GetTracks() const { return eTracks; }
167 TClonesArray *GetFrames() const { return eFrames; }
168
169 void *GetHeaderAddr() { return &eHeader; }
170 void *GetClustersAddr() { return &eClusters; }
171 void *GetSegmentsAddr() { return &eSegments; }
172 void *GetTracksAddr() { return &eTracks; }
173 void *GetFramesAddr() { return &eFrames; }
174
176
180
181 TObjArray *GetSegmentsClusters() const;
182
183 void SetAreaID( int id ) { GetHeader()->SetAreaID(id); }
184 void SetNframes( int top, int bot) { GetHeader()->SetNframes(top,bot); }
185 void SetCoordXY(float x, float y) { GetHeader()->SetCoordXY(x,y); }
186 void SetCoordZ(float z1, float z2, float z3, float z4)
187 { GetHeader()->SetCoordZ(z1,z2,z3,z4); }
188
189
190 Int_t GetViewID() const { if(eHeader) return GetHeader()->GetViewID(); else return 0;}
191 Int_t GetAreaID() const { if(eHeader) return GetHeader()->GetAreaID(); else return 0;}
192
193 Float_t GetXview() const { if(eHeader) return GetHeader()->GetXview(); else return 0; }
194 Float_t GetYview() const { if(eHeader) return GetHeader()->GetYview(); else return 0; }
195
196 Float_t GetZ1() const { if(eHeader) return GetHeader()->GetZ1(); else return 0; }
197 Float_t GetZ2() const { if(eHeader) return GetHeader()->GetZ2(); else return 0; }
198 Float_t GetZ3() const { if(eHeader) return GetHeader()->GetZ3(); else return 0; }
199 Float_t GetZ4() const { if(eHeader) return GetHeader()->GetZ4(); else return 0; }
200
201 Float_t GetZ0top() const { if(eHeader) return GetHeader()->GetZ0top(); else return 0; }
202 Float_t GetZ0bot() const { if(eHeader) return GetHeader()->GetZ0bot(); else return 0; }
203 Float_t GetDZtop() const { if(eHeader) return GetHeader()->GetDZtop(); else return 0; }
204 Float_t GetDZbot() const { if(eHeader) return GetHeader()->GetDZbot(); else return 0; }
205
206 Int_t GetNframes() const { return GetNframesTop()+GetNframesBot(); }
207 Int_t GetNframesTop() const { if(eHeader) return GetHeader()->GetNframesTop(); else return 0; }
208 Int_t GetNframesBot() const { if(eHeader) return GetHeader()->GetNframesBot(); else return 0; }
209
210 Int_t GetTime() const { if(eHeader) return GetHeader()->GetTime(); else return 0; }
211 Long_t GetLastSystemTime() const { return eLastSystemTime; }
212 void SetLastSystemTime(Long_t time) { eLastSystemTime=time; }
213
214 TList *GetClustersFrame( int frame ) const;
215 Int_t Nclusters() const { return eClusters->GetLast()+1; }
216 Int_t Nsegments() const { return eSegments->GetLast()+1; }
217 Int_t Ntracks() const { return eTracks->GetLast()+1; }
218 EdbCluster *GetCluster(int i) const { return (EdbCluster*)eClusters->At(i); }
219 EdbSegment *GetSegment(int i) const { return (EdbSegment*)eSegments->At(i); }
220 EdbTrack *GetTrack(int i) const { return (EdbTrack*)eTracks->At(i); }
221 EdbFrame *GetFrame(int i) const { return (EdbFrame*)eFrames->At(i); }
222 float ZFrameMin() const;
223 float ZFrameMax() const;
224
226 {return (EdbCluster*)(new((*eClusters)[eClusters->GetLast()+1]) EdbCluster( *c )); }
227 EdbCluster *AddCluster( float x, float y, float z,
228 float a, float v, int f, int s, int seg=-1)
229 {return (EdbCluster*)(new((*eClusters)[eClusters->GetLast()+1]) EdbCluster(x,y,z, a,v,f,s,seg)); }
230
231 EdbSegment *AddSegment( float x, float y, float z, float tx, float ty,
232 float dz=0, int side=0, int puls=0, int id=-1)
233 {return (EdbSegment*)(new((*eSegments)[eSegments->GetLast()+1]) EdbSegment(x,y,z, tx,ty, dz, side, puls, id)); }
234
236 void AddSegment( EdbSegment *s );
237 void AddTrack( EdbTrack *t );
238 void AddFrame( int id, float z, int ncl=0, int npix=0 );
239 void AddFrame( EdbFrame *frame );
240
241 void GenerateFrames( int n=32 );
242 //TH2S *GetHist2() const;
243
244 void DeleteClustersFog();
245
246 TPolyMarker3D *DrawClustersFog(Option_t *opt=0) const;
247 TPolyMarker3D *DrawClustersSegments(Option_t *opt=0) const;
248
249 void Draw(Option_t *option="");
250
251 Int_t ReadView( char *fname );
252
253 float Xmin() const { return 0; }
254 float Ymin() const { return 0; }
255 float Zmin() const {return TMath::Min( GetZ1(), GetZ4() );}
256 float Zmax() const {return TMath::Max( GetZ1(), GetZ4() );}
257
258 ClassDef(EdbView,3) // Base scanning data object: entry into Run tree
259};
260
261#endif /* ROOT_EdbView */
262
263
264
brick dz
Definition: RecDispMC.C:107
FILE * f
Definition: RecDispMC.C:150
void a()
Definition: check_aligned.C:59
Definition: EdbAffine.h:17
Float_t B2() const
Definition: EdbAffine.h:48
Float_t B1() const
Definition: EdbAffine.h:47
void Set(EdbAffine2D &a)
Definition: EdbAffine.h:36
Definition: EdbCluster.h:19
Definition: EdbFrame.h:20
segment of the track
Definition: EdbSegment.h:63
Track linked from segments.
Definition: EdbSegment.h:128
view identification
Definition: EdbView.h:26
Float_t GetDZbot() const
Definition: EdbView.h:118
Int_t GetEvent() const
Definition: EdbView.h:127
void SetTrack(int track)
Definition: EdbView.h:107
void SetColRow(int col, int row)
Definition: EdbView.h:105
Int_t eNclusters
number of clusters saved in the view
Definition: EdbView.h:46
void SetZlevels(Int_t n, const Float_t *array)
Definition: EdbView.h:74
Int_t GetCol() const
Definition: EdbView.h:123
Int_t eAreaID
Area ID in Run (fragment id)
Definition: EdbView.h:31
Float_t GetXview() const
Definition: EdbView.h:93
void SetCoordZ(float z1, float z2, float z3, float z4)
Definition: EdbView.h:102
Int_t GetNclusters() const
Definition: EdbView.h:87
Int_t eTime
System time since last view saving in msec.
Definition: EdbView.h:44
Int_t eNsegments
number of segments saved in the view
Definition: EdbView.h:47
Float_t GetYview() const
Definition: EdbView.h:94
Int_t eTrack
optional: some view group may be associated with track. Setted via run->header->Flag(9)
Definition: EdbView.h:58
Int_t GetNframesTop() const
Definition: EdbView.h:120
Float_t eZ1
Definition: EdbView.h:36
void SetNsegments(int nseg)
Definition: EdbView.h:86
Int_t eNframesTop
top | number of frames in the view (0,1,2...16...)
Definition: EdbView.h:41
EdbAffine2D eAff
affine transformation for the view
Definition: EdbView.h:49
void SetEvent(int event)
Definition: EdbView.h:108
Float_t eYview
stage coord, top left corner
Definition: EdbView.h:34
void SetAreaID(int id)
Definition: EdbView.h:100
Int_t GetNsegments() const
Definition: EdbView.h:88
Float_t GetZ4() const
Definition: EdbView.h:113
Float_t GetZ0bot() const
Definition: EdbView.h:116
void SetViewID(int id)
Definition: EdbView.h:99
EdbAffine2D const * GetAffine() const
Definition: EdbView.h:72
void Copy(EdbViewHeader *h)
Definition: EdbView.h:65
Int_t GetTime()
Definition: EdbView.h:82
void Print() const
Definition: EdbView.cxx:749
Float_t eZ2
emulsion surfaces in absolute stage coordinates
Definition: EdbView.h:37
Int_t GetTrack() const
Definition: EdbView.h:126
void SetTime(Int_t time)
Definition: EdbView.h:83
Float_t GetXviewAff() const
Definition: EdbView.h:96
Float_t GetDZtop() const
Definition: EdbView.h:117
TArrayF * GetZlevels() const
Definition: EdbView.h:80
virtual ~EdbViewHeader()
Definition: EdbView.cxx:677
Int_t GetAreaID() const
Definition: EdbView.h:91
void SetNclusters(int nclu)
Definition: EdbView.h:85
Int_t GetNframesBot() const
Definition: EdbView.h:121
Int_t GetRow() const
Definition: EdbView.h:124
TArrayF * eZlevels
z of each taken view (frame) (obsolete!)
Definition: EdbView.h:51
void SetNframes(int top, int bot)
Definition: EdbView.h:104
Float_t GetZ2() const
Definition: EdbView.h:111
Float_t GetZ3() const
Definition: EdbView.h:112
void SetAffine(float a11, float a12, float a21, float a22, float b1, float b2)
Definition: EdbView.h:67
Float_t eZ4
Definition: EdbView.h:39
Int_t eEvent
optional: the part of the tree may be associated with event. Setted via run->header->Flag(8)
Definition: EdbView.h:57
Int_t GetStatus() const
Definition: EdbView.h:125
Int_t eRow
starting from the reference angle (typically up-left)
Definition: EdbView.h:54
Int_t GetViewID() const
Definition: EdbView.h:90
Float_t eXview
stage coord, top left corner
Definition: EdbView.h:33
Int_t eViewID
View ID in the Area.
Definition: EdbView.h:30
Float_t GetZ0top() const
Definition: EdbView.h:115
void SetCoordXY(float x, float y)
Definition: EdbView.h:101
Float_t eZ3
measured once per view
Definition: EdbView.h:38
Float_t GetZ1() const
Definition: EdbView.h:110
Float_t GetYviewAff() const
Definition: EdbView.h:97
void SetStatus(int st)
Definition: EdbView.h:106
Int_t eNframesBot
bottom | number of frames in the view (0,1,2...16...)
Definition: EdbView.h:42
void Set0()
Definition: EdbView.cxx:723
EdbViewHeader()
Definition: EdbView.cxx:671
Int_t eCol
the position of the view in the scanned area, measured in views,
Definition: EdbView.h:53
Int_t eStatus
View scanning status.
Definition: EdbView.h:56
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
TClonesArray * eClusters
array of Clusters
Definition: EdbView.h:140
TClonesArray * GetSegments() const
Definition: EdbView.h:165
TPolyMarker3D * DrawClustersSegments(Option_t *opt=0) const
Definition: EdbView.cxx:316
void AddTrack(EdbTrack *t)
Definition: EdbView.cxx:261
Float_t GetXview() const
Definition: EdbView.h:193
void * GetSegmentsAddr()
Definition: EdbView.h:171
EdbFrame * GetFrame(int i) const
Definition: EdbView.h:221
Int_t Ntracks() const
Definition: EdbView.h:217
void * GetClustersAddr()
Definition: EdbView.h:170
TClonesArray * eSegments
array of Segments
Definition: EdbView.h:141
Long_t GetLastSystemTime() const
Definition: EdbView.h:211
EdbCluster * AddCluster(float x, float y, float z, float a, float v, int f, int s, int seg=-1)
Definition: EdbView.h:227
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219
TClonesArray * GetClusters() const
Definition: EdbView.h:164
EdbSegment * AddSegment(float x, float y, float z, float tx, float ty, float dz=0, int side=0, int puls=0, int id=-1)
Definition: EdbView.h:231
Long_t eLastSystemTime
system time when view was saved
Definition: EdbView.h:145
Int_t GetNframesTop() const
Definition: EdbView.h:207
void GenerateFrames(int n=32)
Definition: EdbView.cxx:658
void * GetTracksAddr()
Definition: EdbView.h:172
void SetCoordZ(float z1, float z2, float z3, float z4)
Definition: EdbView.h:186
Float_t GetZ3() const
Definition: EdbView.h:198
TPolyMarker3D * DrawClustersFog(Option_t *opt=0) const
Definition: EdbView.cxx:300
Int_t GetViewID() const
Definition: EdbView.h:190
Float_t GetZ0bot() const
Definition: EdbView.h:202
void PrintClusters(Option_t *opt=0) const
Definition: EdbView.cxx:196
float ZFrameMin() const
Definition: EdbView.cxx:222
void GenerateClustersTrack(EdbTrack *track, int n0=25, float sigma=.1)
Definition: EdbView.cxx:539
int AttachClustersToSegments()
Definition: EdbView.cxx:360
Int_t GetNframesBot() const
Definition: EdbView.h:208
Int_t Nsegments() const
Definition: EdbView.h:216
float Zmin() const
Definition: EdbView.h:255
Int_t GetNframes() const
Definition: EdbView.h:206
float ZFrameMax() const
Definition: EdbView.cxx:234
TList * GetClustersFrame(int frame) const
Definition: EdbView.cxx:285
void SetAreaID(int id)
Definition: EdbView.h:183
Float_t GetDZtop() const
Definition: EdbView.h:203
float Zmax() const
Definition: EdbView.h:256
EdbViewHeader * eHeader
View header.
Definition: EdbView.h:138
EdbCluster * AddCluster(EdbCluster *c)
Definition: EdbView.h:225
void Draw(Option_t *option="")
Definition: EdbView.cxx:466
void SetCoordXY(float x, float y)
Definition: EdbView.h:185
Float_t GetDZbot() const
Definition: EdbView.h:204
Int_t GetAreaID() const
Definition: EdbView.h:191
void Print(Option_t *opt=0) const
Definition: EdbView.cxx:185
void Transform(const EdbAffine2D *aff)
Definition: EdbView.cxx:96
Float_t GetZ1() const
Definition: EdbView.h:196
void Scale(float zscale)
Definition: EdbView.cxx:113
EdbTrack * GetTrack(int i) const
Definition: EdbView.h:220
int AttachSegmentsToTracks()
Definition: EdbView.cxx:332
int AttachClustersToSegmentsFast()
Definition: EdbView.cxx:372
float Ymin() const
starting from 0
Definition: EdbView.h:254
Int_t Nclusters() const
Definition: EdbView.h:215
void AddFrame(int id, float z, int ncl=0, int npix=0)
Definition: EdbView.cxx:268
TClonesArray * GetFrames() const
Definition: EdbView.h:167
TClonesArray * GetTracks() const
Definition: EdbView.h:166
virtual ~EdbView()
Definition: EdbView.cxx:40
void GenerateClustersFog(float density)
Definition: EdbView.cxx:616
Float_t GetZ0top() const
Definition: EdbView.h:201
void * GetHeaderAddr()
Definition: EdbView.h:169
EdbCluster * GetCluster(int i) const
Definition: EdbView.h:218
Int_t GetTime() const
Definition: EdbView.h:210
TObjArray * GetSegmentsClusters() const
Definition: EdbView.cxx:434
void Shift(float zshift)
Definition: EdbView.cxx:147
void Clear()
Definition: EdbView.cxx:79
void GenerateClustersSegment(EdbSegment *segment, int n0=25, float sigma=.1)
Definition: EdbView.cxx:567
Float_t GetZ4() const
Definition: EdbView.h:199
float Xmin() const
View coordinates are in pixels.
Definition: EdbView.h:253
Int_t ReadView(char *fname)
Definition: EdbView.cxx:177
TClonesArray * eFrames
array of Frames (images)
Definition: EdbView.h:143
void * GetFramesAddr()
Definition: EdbView.h:173
void SetLastSystemTime(Long_t time)
Definition: EdbView.h:212
TClonesArray * eTracks
array of Tracks
Definition: EdbView.h:142
void SetNframes(int top, int bot)
Definition: EdbView.h:184
int AttachClustersToSegmentsSlow()
Definition: EdbView.cxx:409
void DeleteClustersFog()
Definition: EdbView.cxx:208
Float_t GetZ2() const
Definition: EdbView.h:197
Float_t GetYview() const
Definition: EdbView.h:194
Definition: bitview.h:14
TTree * t
Definition: check_shower.C:4
s
Definition: check_shower.C:55
const char * opt
Definition: mc2raw.cxx:42
const char * fname
Definition: mc2raw.cxx:41
UInt_t id
Definition: tlg2couples.C:117
int event
Definition: shower_tr.C:25