FEDRA emulsion software from the OPERA Collaboration
EdbCluster.h
Go to the documentation of this file.
1#ifndef ROOT_EdbCluster
2#define ROOT_EdbCluster
5
11
12#include "TClonesArray.h"
13
14#ifndef ROOT_EdbVirtual
15#include "EdbVirtual.h"
16#endif
17
18//______________________________________________________________________________
19class EdbCluster : public TObject, public EdbPoint3D {
20
21public:
22
23 Float_t eX;
24 Float_t eY;
25 Float_t eZ;
26 Float_t eArea;
27 Float_t eVolume;
28 Int_t eFrame;
29 Int_t eSide;
30 Int_t eSegment;
31
32public:
34 EdbCluster( float x, float y, float z,
35 float a, float v, int f, int s, int seg=-1 ) :
36 eX(x), eY(y), eZ(z),
37 eArea(a),eVolume(v), eFrame(f), eSide(s), eSegment(seg) {}
38 virtual ~EdbCluster() { }
39
40 void Print( Option_t *opt=0 ) const;
41
42 void Set0();
43 void Set(float x, float y, float z, float a, float v, int f, int s, int seg=-1)
44 {eX=x; eY=y; eZ=z; eArea=a; eVolume=v; eFrame=f; eSide=s; eSegment=seg;}
45 void SetArea(float a) { eArea=a;}
46 void SetVolume(float v) { eVolume=v;}
47 void SetFrame(int f) { eFrame=f;}
48 void SetSide(int s) { eSide=s;}
49 void SetSegment(int seg) { eSegment=seg;}
50
51 Float_t GetX() const { return eX ;}
52 Float_t GetY() const { return eY ;}
53 Float_t GetZ() const { return eZ ;}
54 Float_t GetArea() const { return eArea ;}
55 Float_t GetVolume() const { return eVolume ;}
56 Int_t GetFrame() const { return eFrame ;}
57 Int_t GetSide() const { return eSide ;}
58 Int_t GetSegment() const { return eSegment;}
59
60 void AddPixelSum( int x, int y, unsigned char pix )
61 {
63 eArea++;
64 eVolume += pix ;
65 eX += x;
66 eY += y;
67 }
68
69 void Normalize()
70 {
72 eX = eX/eArea - 0.5;
73 eY = eY/eArea - 0.5;
74 }
75
76 //mandatory virtual functions
77
78 virtual Float_t X() const { return eX; }
79 virtual Float_t Y() const { return eY; }
80 virtual Float_t Z() const { return eZ; }
81 virtual void SetX( float x ) { eX=x; }
82 virtual void SetY( float y ) { eY=y; }
83 virtual void SetZ( float z ) { eZ=z; }
84
85 //other functions
86 void Draw(Option_t *opt="") const;
87
88 void TT() const { Test(); }
89
90 Bool_t IsSortable() const { return kTRUE; }
91 Bool_t IsEqual(const TObject *obj) const
92 {
93 const EdbCluster *c=(EdbCluster*)obj;
94 if(c->eFrame != eFrame) return false;
95 if(c->eX != eX) return false;
96 if(c->eY != eY) return false;
97 return true;
98 }
99
100 Int_t Compare(const TObject *obj) const
101 {
102 const EdbCluster *c=(EdbCluster*)obj;
103 Long_t f1=0, f2=0;
104 f1 = eFrame*1000000+int(eX)*10000+int(eY);
105 f2 = c->eFrame*1000000+int(c->eX)*10000+int(c->eY);
106 if (f1>f2)
107 return 1;
108 else if (f1<f2)
109 return -1;
110 else
111 return 0;
112 }
113
114 ClassDef(EdbCluster,2) // single cluster
115};
116
117//______________________________________________________________________________
118class EdbClustersBox : public TObject, public EdbPointsBox3D {
119
120 private:
121
122 TClonesArray *eClusters;
123
124 public:
126 EdbClustersBox( int n );
127 virtual ~EdbClustersBox();
128
129 //members access functions
130 void AddCluster( EdbCluster *c );
131 void AddCluster( float x, float y, float z,
132 float a, float v, int f, int s, int seg );
133
134 Int_t GetN() const;
135 EdbCluster *GetCluster(int i) const;
136 TClonesArray *GetClusters() const { return eClusters; }
137
138 // mandatory virtual functions:
139 Int_t N() const { return GetN(); }
140 EdbPoint *At(int i) { return (EdbPoint*)GetCluster(i); }
141
142 // void Draw(int style=23, int col=4, float size=1. ){}
143
144 // other finctions
145 // void Print( Option_t *opt="") const;
146
147 ClassDef(EdbClustersBox,2) // collection of clusters
148};
149
150
151#endif /* ROOT_EdbCluster */
152
FILE * f
Definition: RecDispMC.C:150
void a()
Definition: check_aligned.C:59
Definition: EdbCluster.h:19
Bool_t IsEqual(const TObject *obj) const
Definition: EdbCluster.h:91
Int_t GetSegment() const
Definition: EdbCluster.h:58
virtual ~EdbCluster()
Definition: EdbCluster.h:38
void SetArea(float a)
Definition: EdbCluster.h:45
EdbCluster()
Definition: EdbCluster.h:33
void SetSide(int s)
Definition: EdbCluster.h:48
Float_t eZ
cluster coordinates in pixels(?)
Definition: EdbCluster.h:25
void Draw(Option_t *opt="") const
Definition: EdbCluster.cxx:65
Int_t eFrame
frame index
Definition: EdbCluster.h:28
void TT() const
Definition: EdbCluster.h:88
void Set(float x, float y, float z, float a, float v, int f, int s, int seg=-1)
Definition: EdbCluster.h:43
Bool_t IsSortable() const
Definition: EdbCluster.h:90
void SetSegment(int seg)
Definition: EdbCluster.h:49
virtual Float_t Y() const
Definition: EdbCluster.h:79
Int_t GetFrame() const
Definition: EdbCluster.h:56
void Print(Option_t *opt=0) const
Definition: EdbCluster.cxx:58
virtual Float_t X() const
Definition: EdbCluster.h:78
Float_t eY
cluster coordinates in pixels(?)
Definition: EdbCluster.h:24
Int_t Compare(const TObject *obj) const
Definition: EdbCluster.h:100
void SetFrame(int f)
Definition: EdbCluster.h:47
Int_t eSegment
segment id to be attached (-1 if no segment)
Definition: EdbCluster.h:30
void Normalize()
Definition: EdbCluster.h:69
Float_t GetVolume() const
Definition: EdbCluster.h:55
virtual void SetX(float x)
Definition: EdbCluster.h:81
virtual void SetY(float y)
Definition: EdbCluster.h:82
EdbCluster(float x, float y, float z, float a, float v, int f, int s, int seg=-1)
Definition: EdbCluster.h:34
Float_t GetX() const
Definition: EdbCluster.h:51
void AddPixelSum(int x, int y, unsigned char pix)
Definition: EdbCluster.h:60
Float_t GetY() const
Definition: EdbCluster.h:52
Float_t eArea
Cluster area: number of pixels.
Definition: EdbCluster.h:26
virtual Float_t Z() const
Definition: EdbCluster.h:80
void SetVolume(float v)
Definition: EdbCluster.h:46
Int_t GetSide() const
Definition: EdbCluster.h:57
Float_t eX
cluster coordinates in pixels(?)
Definition: EdbCluster.h:23
Int_t eSide
emulsion side index
Definition: EdbCluster.h:29
Float_t GetArea() const
Definition: EdbCluster.h:54
virtual void SetZ(float z)
Definition: EdbCluster.h:83
Float_t eVolume
Cluster volume - in case of greyscale pixels.
Definition: EdbCluster.h:27
void Set0()
Definition: EdbCluster.cxx:50
Float_t GetZ() const
Definition: EdbCluster.h:53
Definition: EdbCluster.h:118
void AddCluster(EdbCluster *c)
Definition: EdbCluster.cxx:113
TClonesArray * GetClusters() const
Definition: EdbCluster.h:136
Int_t GetN() const
Definition: EdbCluster.cxx:128
Int_t N() const
Definition: EdbCluster.h:139
EdbPoint * At(int i)
Definition: EdbCluster.h:140
TClonesArray * eClusters
collection of clusters
Definition: EdbCluster.h:122
EdbCluster * GetCluster(int i) const
Definition: EdbCluster.cxx:134
EdbClustersBox()
Definition: EdbCluster.cxx:72
virtual ~EdbClustersBox()
Definition: EdbCluster.cxx:84
virtual 3D point
Definition: EdbVirtual.h:101
virtual void Test() const
Definition: EdbVirtual.h:115
protocol class for point (virtual point)
Definition: EdbVirtual.h:28
collection of 3D points
Definition: EdbVirtual.h:206
s
Definition: check_shower.C:55
const char * opt
Definition: mc2raw.cxx:42