Logo coherent WaveBurst  
Library Reference Guide
Logo
Wavelet.cc
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 // $Id: Wavelet.cc,v 1.4 2002/01/01 23:18:08 sigg Exp $
20 
21 #define WAVEDWT_CC
22 
23 #include "Wavelet.hh"
24 
25 ClassImp(Wavelet)
26 
27 //namespace datacondAPI {
28 //namespace wat {
29 
30 // constructors
31 
32 Wavelet::Wavelet(int mH, int mL, int tree, enum BORDER border) :
33 m_WaveType(HAAR), m_Heterodine(false), m_Parity(true)
34 {
35  m_H = mH;
36  m_L = mL;
37  m_Border = border;
38  m_Level = 0;
39  m_Layer = 0;
40  m_TreeType = tree;
41 }
42 
44 {
45  m_H = w.m_H;
46  m_L = w.m_L;
47  m_Border = w.m_Border;
48  m_Level = w.m_Level;
49  m_Layer = w.m_Layer;
53  m_Parity = w.m_Parity;
54 }
55 
56 // destructor
58 { }
59 
61 {
62  return new Wavelet(*this);
63 }
64 
65 //*******************************
66 //* wavedata acess functions *
67 //*******************************
68 
69 int Wavelet::getOffset(int level, int layer)
70 {
71  if(m_Heterodine) return layer;
72  int n=0;
73 
74  for(int i=0; i<level; i++)
75  if((layer>>i)&1) n += 1<<(level-1-i);
76 
77  return n;
78 }
79 
80 int Wavelet::convertL2F(int level, int layer)
81 {
82  if(m_Heterodine) return layer;
83  int n = layer;
84  int j;
85  for(int i=1; i<level; i++) {
86  j = (1<<i) & (n);
87  if(j) n = ((1<<i)-1) ^ (n);
88  }
89 
90  return n;
91 }
92 
93 int Wavelet::convertF2L(int level, int index)
94 {
95  if(m_Heterodine) return index;
96  int n = index;
97  int j;
98  for(int i=level-1; i>=1; i--) {
99  j = ((1<<i) & (n));
100  if(j) n = ((1<<i)-1) ^ (n);
101  }
102  return n;
103 }
104 
105 int Wavelet::convertO2F(int level, int index)
106 {
107  return convertL2F(level,getOffset(level, index));
108 }
109 
110 int Wavelet::convertF2O(int level, int index)
111 {
112  return getOffset(level,convertF2L(level,index));
113 }
114 
116 {
117  cout << endl << endl;
118  cout.precision(14);
119  cout << "TreeType\t= " << this->m_TreeType << endl;
120  cout << "Level\t\t= " << this->m_Level << endl;
121  cout << "Layer\t\t= " << this->m_Layer << endl;
122  cout << "H\t\t= " << this->m_H << endl;
123  cout << "L\t\t= " << this->m_L << endl;
124  cout << "Heterodine\t= " << this->m_Heterodine << endl;
125  cout << "Parity\t\t= " << this->m_Parity << endl;
126  cout << endl;
127 
128  return;
129 }
130 
131 //} // namespace wat
132 //} // namespace datacondAPI
133 
TTree * tree
Definition: TimeSortTree.C:20
bool m_Parity
Definition: Wavelet.hh:127
Definition: Wavelet.hh:44
int n
Definition: cwb_net.C:28
int m_TreeType
Definition: Wavelet.hh:112
BORDER
Definition: Wavelet.hh:36
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
int j
Definition: cwb_net.C:28
i drho i
wavearray< double > w
Definition: Test1.C:27
virtual int convertF2O(int, int)
Definition: Wavelet.cc:110
int m_L
Definition: Wavelet.hh:124
virtual int convertF2L(int, int)
Definition: Wavelet.cc:93
enum BORDER m_Border
Definition: Wavelet.hh:109
virtual int convertO2F(int, int)
Definition: Wavelet.cc:105
int m_Level
Definition: Wavelet.hh:115
bool m_Heterodine
Definition: Wavelet.hh:126
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
wavearray< int > index
virtual int getOffset(int, int)
Definition: Wavelet.cc:69
enum WAVETYPE m_WaveType
Definition: Wavelet.hh:106
int m_Layer
Definition: Wavelet.hh:118
virtual ~Wavelet()
Definition: Wavelet.cc:57
int m_H
Definition: Wavelet.hh:121