FEDRA emulsion software from the OPERA Collaboration
EdbIP.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbIP
2 #define ROOT_EdbIP
3 
5 // //
6 // EdbIP //
7 // //
8 // Image processing classes //
9 // //
11 
12 #include "TNamed.h"
13 #include "TArrayF.h"
14 #include "EdbCluster.h"
15 
16 class EdbImage;
17 class EdbFrame;
18 class TTree;
19 class EdbView;
20 
21 //______________________________________________________________________________
22 class EdbFIRF : public TNamed {
23 
24 private:
25 
26  TArrayF *eArr;
27  Int_t eColumns; // number of columns of the matrix (1 row length)
28  Int_t eRows; // number of rows of the matrix
29 
30  static const Float_t eg3x3A[];
31  static const Float_t egHP1[];
32  static const Float_t egHP2[];
33  static const Float_t egHP3[];
34  static const Float_t eg5x5A[];
35  static const Float_t eg5x5B[];
36  static const Float_t eg5x5C[];
37  static const Float_t eg6x6A[];
38 
39 public:
40  EdbFIRF(){};
41  EdbFIRF(int cols, int rows);
42  EdbFIRF( const char *firf );
43  virtual ~EdbFIRF();
44 
45  float Cell(int x, int y) { return eArr->At(eColumns*y + x); }
46  float *GetBuffer() const { return eArr->GetArray(); }
47  void SetArr(int n, float *arr){}
48  void SetAt(int x,int y, float a) { (eArr->GetArray())[eColumns*y + x]=a; }
49  void Reflect4(); // Copy left top corner to other quadrants with reflection
50  void Print();
51  static void PrintList();
52  TH2F* ApplyTo(EdbImage* img);
53 
54  ClassDef(EdbFIRF,1) // FIR filter
55 };
56 
57 //______________________________________________________________________________
58 class EdbClustP : public EdbCluster {
59 
60  private:
61 
62  Float_t eXcg, eYcg; // center of gravity with gray level
63  Float_t ePeak; // peak height (above threshold)
64  Float_t eXp, eYp; // peak position
65 
66  public:
67  EdbClustP();
68 
69  void SetCG( float x, float y ) {eXcg=x; eYcg=y;}
70  void SetPeak( float x, float y, float peak ) {eXp=x; eYp=y; ePeak=peak;}
71  float Xcg() const {return eXcg;}
72  float Ycg() const {return eYcg;}
73  float Peak() const {return ePeak;}
74  float Xp() const {return eXp;}
75  float Yp() const {return eYp;}
76  void AddPixel( float ic, float ir, float pix );
77  void AddPixelSum( float ic, float ir, float pix );
78  void AddClusterSum( EdbClustP *c );
79  void Normalize();
80  void Reset();
81  void Print();
82 
83  ClassDef(EdbClustP,1) // cluster reconstruction
84 };
85 
86 //______________________________________________________________________________
87 class EdbIP : public TObject {
88 
89  private:
91  Float_t eThr; // threshold
92 
93  public:
94  EdbIP();
95 
96  TTree *InitTree();
97  void SetFIR(EdbFIRF *fir) {eFIR = fir;}
98  void SetThr(Float_t thr) {eThr = thr;}
99 
100  static int Peak8 ( TH2F *h, float thr );
101  static int Peak12( TH2F *h, float thr );
102  int CutBG( EdbFrame *frame );
103  int Clusterize( EdbFrame *frame, TTree *tree );
104  static int Clusterize( TH2F *h, float thr, TTree *tree, float z, int ifr );
105  static float BurnPix( TH2F *h, int ic, int ir, float thr, EdbClustP &cl );
106 
107  int Clusterize2( EdbFrame *frame, TTree *tree );
108  static int Clusterize2( TH2F *h, float thr, TTree *tree, float z, int ifr );
109 
110  static int Clusterize( EdbFrame *f, unsigned char thr, EdbView &v );
111  static int BurnPix( unsigned char *img, int ic, int ir, int nc, unsigned char thr, EdbCluster &cl );
112 
113  ClassDef(EdbIP,1) // Image Processing
114 };
115 
116 #endif /* ROOT_EdbIP */
FILE * f
Definition: RecDispMC.C:150
void a()
Definition: check_aligned.C:59
Definition: EdbIP.h:58
Float_t eXp
Definition: EdbIP.h:64
void Normalize()
Definition: EdbIP.cxx:236
EdbClustP()
Definition: EdbIP.cxx:189
float Xcg() const
Definition: EdbIP.h:71
Float_t eYp
Definition: EdbIP.h:64
Float_t eXcg
Definition: EdbIP.h:62
float Ycg() const
Definition: EdbIP.h:72
void SetCG(float x, float y)
Definition: EdbIP.h:69
void Print()
Definition: EdbIP.cxx:210
float Yp() const
Definition: EdbIP.h:75
void AddPixelSum(float ic, float ir, float pix)
Definition: EdbIP.cxx:216
void SetPeak(float x, float y, float peak)
Definition: EdbIP.h:70
Float_t eYcg
Definition: EdbIP.h:62
void AddClusterSum(EdbClustP *c)
Definition: EdbIP.cxx:226
void AddPixel(float ic, float ir, float pix)
Definition: EdbIP.cxx:195
void Reset()
Definition: EdbIP.cxx:245
float Peak() const
Definition: EdbIP.h:73
float Xp() const
Definition: EdbIP.h:74
Float_t ePeak
Definition: EdbIP.h:63
Definition: EdbCluster.h:19
Definition: EdbIP.h:22
static void PrintList()
Definition: EdbIP.cxx:158
static const Float_t egHP3[]
Definition: EdbIP.h:33
void Print()
Definition: EdbIP.cxx:143
TH2F * ApplyTo(EdbImage *img)
Definition: EdbIP.cxx:166
void Reflect4()
Definition: EdbIP.cxx:127
void SetAt(int x, int y, float a)
Definition: EdbIP.h:48
void SetArr(int n, float *arr)
Definition: EdbIP.h:47
float Cell(int x, int y)
Definition: EdbIP.h:45
Int_t eColumns
Definition: EdbIP.h:27
static const Float_t egHP1[]
Definition: EdbIP.h:31
static const Float_t egHP2[]
Definition: EdbIP.h:32
Int_t eRows
Definition: EdbIP.h:28
static const Float_t eg5x5A[]
Definition: EdbIP.h:34
static const Float_t eg5x5C[]
Definition: EdbIP.h:36
virtual ~EdbFIRF()
Definition: EdbIP.cxx:121
TArrayF * eArr
Definition: EdbIP.h:26
static const Float_t eg3x3A[]
Definition: EdbIP.h:30
static const Float_t eg5x5B[]
Definition: EdbIP.h:35
EdbFIRF()
Definition: EdbIP.h:40
static const Float_t eg6x6A[]
Definition: EdbIP.h:37
float * GetBuffer() const
Definition: EdbIP.h:46
Definition: EdbFrame.h:20
Definition: EdbIP.h:87
void SetThr(Float_t thr)
Definition: EdbIP.h:98
static int Peak12(TH2F *h, float thr)
Definition: EdbIP.cxx:295
Float_t eThr
Definition: EdbIP.h:91
int Clusterize2(EdbFrame *frame, TTree *tree)
Definition: EdbIP.cxx:477
EdbFIRF * eFIR
Definition: EdbIP.h:90
TTree * InitTree()
Definition: EdbIP.cxx:347
EdbIP()
Definition: EdbIP.cxx:253
void SetFIR(EdbFIRF *fir)
Definition: EdbIP.h:97
int CutBG(EdbFrame *frame)
Definition: EdbIP.cxx:361
static float BurnPix(TH2F *h, int ic, int ir, float thr, EdbClustP &cl)
Definition: EdbIP.cxx:451
static int Peak8(TH2F *h, float thr)
Definition: EdbIP.cxx:261
int Clusterize(EdbFrame *frame, TTree *tree)
Definition: EdbIP.cxx:398
Definition: EdbImage.h:23
Definition: EdbView.h:134