Logo coherent WaveBurst  
Library Reference Guide
Logo
Wavelet.hh
Go to the documentation of this file.
1 /*
2 # Copyright (C) 2019 Sergey Klimenko
3 #
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17 
18 
19 // Wavelet Analysis Tool
20 //$Id: Wavelet.hh,v 1.2 2001/12/18 18:50:13 klimenko Exp $
21 
22 #ifndef WAVELET_HH
23 #define WAVELET_HH
24 
25 #include "watfun.hh"
26 #include <iostream>
27 #include "TNamed.h"
28 
29 using std::cout;
30 using std::endl;
31 
32 //namespace datacondAPIwat {
33 //namespace wat {
34 
35 //: constants which rule the boundary processing
41 
42 
43 //: wavelet types
44 enum WAVETYPE {HAAR,
49  WDMT};
50 
51 class Wavelet : public TNamed // Wavelet base class
52 {
53  public:
54 
55 // constructors
56 
57  //: constructor
58  Wavelet(int mH=1, int mL=1, int tree=0, enum BORDER border=B_CYCLE);
59 
60  //: copy constructor
61  Wavelet(const Wavelet &);
62 
63  //: Virtual destructor
64  virtual ~Wavelet();
65 
66  //: duplicate on heap
67  //!return: Wavelet* - duplicate of *this, allocated on heap
68  virtual Wavelet* Clone() const;
69 
70 // access functions
71 
72  //: get array index of the first sample for (level,layer)
73  virtual int getOffset(int,int);
74  //: get offset from level and frequency index
75  virtual int convertF2O(int,int);
76  //: get frequency index from level and offset
77  virtual int convertO2F(int,int);
78  //: get frequency index for (level,layer)
79  virtual int convertL2F(int,int);
80  //: get layer index for (level,frequency index)
81  virtual int convertF2L(int,int);
82 
83 // mutators
84 
85  //: set level
86  inline virtual void reset() { m_Level = 0; }
87  inline virtual void setLevel(int level) { m_Level = level; };
88  inline virtual int getLevel() { return m_Level; };
89  inline virtual int maxLayer() { return m_Layer; };
90  inline virtual void parity(bool f) { m_Parity = f; };
91  inline virtual void heterodine(bool f) { m_Heterodine = f; };
92  inline virtual bool parity() { return m_Parity; };
93  inline virtual bool heterodine() { return m_Heterodine; };
94  inline virtual int getMaxLevel(int);
95 
96  //: check type of wavelet tree
97  inline bool BinaryTree(){ return (m_TreeType) ? true : false; }
98 
99  // print wavelet parameters
100  void print(); // *MENU*
101  virtual void Browse(TBrowser *b) {print();}
102 
103 // data members
104 
105  //: wavelet type
107 
108  //: borders handling: see BORDER constants definitions above
110 
111  //: wavelet tree type: 0-diadic, 1-binary tree
113 
114  //: current level of decomposition
115  int m_Level;
116 
117  //: number of layers
118  int m_Layer;
119 
120  //: number of highpass wavelet filter coefficients
121  int m_H;
122 
123  //: number of lowpass wavelet filter coefficients
124  int m_L;
125 
126  bool m_Heterodine; // default is false
127  bool m_Parity; // default is true (0 delay for symmetric wavelets)
128 
129  ClassDef(Wavelet,1)
130 
131 }; // class Wavelet
132 
133 // inlines
134 inline int Wavelet::getMaxLevel(int n)
135 {
136  int maxLevel = 0;
137  for(; (n>=2*m_H) && (n>=2*m_L) && !(n&1); n/=2) maxLevel++;
138  return maxLevel;
139 }
140 
141 
142 //}; // namespace wat
143 //}; // namespace datacondAPI
144 
145 #endif // WAVELET_HH
146 
147 
148 
149 
150 
151 
152 
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 
TTree * tree
Definition: TimeSortTree.C:20
bool m_Parity
Definition: Wavelet.hh:127
Definition: Wavelet.hh:44
virtual void parity(bool f)
Definition: Wavelet.hh:90
virtual int getLevel()
Definition: Wavelet.hh:88
int n
Definition: cwb_net.C:28
int m_TreeType
Definition: Wavelet.hh:112
BORDER
Definition: Wavelet.hh:36
virtual void setLevel(int level)
Definition: Wavelet.hh:87
virtual int convertL2F(int, int)
Definition: Wavelet.cc:80
virtual Wavelet * Clone() const
return: Wavelet* - duplicate of *this, allocated on heap
Definition: Wavelet.cc:60
virtual void reset()
Definition: Wavelet.hh:86
cout<< "SNR "<< xsnr<< endl;wavearray< double > f
Definition: ComputeSNR.C:75
virtual int maxLayer()
Definition: Wavelet.hh:89
virtual void Browse(TBrowser *b)
Definition: Wavelet.hh:101
virtual int convertF2O(int, int)
Definition: Wavelet.cc:110
int m_L
Definition: Wavelet.hh:124
virtual bool heterodine()
Definition: Wavelet.hh:93
virtual void heterodine(bool f)
Definition: Wavelet.hh:91
virtual bool parity()
Definition: Wavelet.hh:92
virtual int convertF2L(int, int)
Definition: Wavelet.cc:93
enum BORDER m_Border
Definition: Wavelet.hh:109
Definition: Wavelet.hh:49
Definition: Wavelet.hh:48
virtual int convertO2F(int, int)
Definition: Wavelet.cc:105
int m_Level
Definition: Wavelet.hh:115
bool m_Heterodine
Definition: Wavelet.hh:126
bool BinaryTree()
Definition: Wavelet.hh:97
void print()
Definition: Wavelet.cc:115
Wavelet(int mH=1, int mL=1, int tree=0, enum BORDER border=B_CYCLE)
Definition: Wavelet.cc:32
virtual int getOffset(int, int)
Definition: Wavelet.cc:69
WAVETYPE
Definition: Wavelet.hh:44
enum WAVETYPE m_WaveType
Definition: Wavelet.hh:106
virtual int getMaxLevel(int)
Definition: Wavelet.hh:134
int m_Layer
Definition: Wavelet.hh:118
virtual ~Wavelet()
Definition: Wavelet.cc:57
int m_H
Definition: Wavelet.hh:121