Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Wavelet.cc
Go to the documentation of this file.
1 // $Id: Wavelet.cc,v 1.4 2002/01/01 23:18:08 sigg Exp $
2 
3 #define WAVEDWT_CC
4 
5 #include "Wavelet.hh"
6 
7 ClassImp(Wavelet)
8 
9 //namespace datacondAPI {
10 //namespace wat {
11 
12 // constructors
13 
14 Wavelet::Wavelet(int mH, int mL, int tree, enum BORDER border) :
15 m_WaveType(HAAR), m_Heterodine(false), m_Parity(true)
16 {
17  m_H = mH;
18  m_L = mL;
19  m_Border = border;
20  m_Level = 0;
21  m_Layer = 0;
22  m_TreeType = tree;
23 }
24 
26 {
27  m_H = w.m_H;
28  m_L = w.m_L;
29  m_Border = w.m_Border;
30  m_Level = w.m_Level;
31  m_Layer = w.m_Layer;
35  m_Parity = w.m_Parity;
36 }
37 
38 // destructor
40 { }
41 
43 {
44  return new Wavelet(*this);
45 }
46 
47 //*******************************
48 //* wavedata acess functions *
49 //*******************************
50 
51 int Wavelet::getOffset(int level, int layer)
52 {
53  if(m_Heterodine) return layer;
54  int n=0;
55 
56  for(int i=0; i<level; i++)
57  if((layer>>i)&1) n += 1<<(level-1-i);
58 
59  return n;
60 }
61 
62 int Wavelet::convertL2F(int level, int layer)
63 {
64  if(m_Heterodine) return layer;
65  int n = layer;
66  int j;
67  for(int i=1; i<level; i++) {
68  j = (1<<i) & (n);
69  if(j) n = ((1<<i)-1) ^ (n);
70  }
71 
72  return n;
73 }
74 
75 int Wavelet::convertF2L(int level, int index)
76 {
77  if(m_Heterodine) return index;
78  int n = index;
79  int j;
80  for(int i=level-1; i>=1; i--) {
81  j = ((1<<i) & (n));
82  if(j) n = ((1<<i)-1) ^ (n);
83  }
84  return n;
85 }
86 
87 int Wavelet::convertO2F(int level, int index)
88 {
89  return convertL2F(level,getOffset(level, index));
90 }
91 
92 int Wavelet::convertF2O(int level, int index)
93 {
94  return getOffset(level,convertF2L(level,index));
95 }
96 
98 {
99  cout << endl << endl;
100  cout.precision(14);
101  cout << "TreeType\t= " << this->m_TreeType << endl;
102  cout << "Level\t\t= " << this->m_Level << endl;
103  cout << "Layer\t\t= " << this->m_Layer << endl;
104  cout << "H\t\t= " << this->m_H << endl;
105  cout << "L\t\t= " << this->m_L << endl;
106  cout << "Heterodine\t= " << this->m_Heterodine << endl;
107  cout << "Parity\t\t= " << this->m_Parity << endl;
108  cout << endl;
109 
110  return;
111 }
112 
113 //} // namespace wat
114 //} // namespace datacondAPI
115 
TTree * tree
Definition: TimeSortTree.C:20
bool m_Parity
Definition: Wavelet.hh:109
Definition: Wavelet.hh:26
int n
Definition: cwb_net.C:10
int m_TreeType
Definition: Wavelet.hh:94
BORDER
Definition: Wavelet.hh:18
virtual int convertL2F(int, int)
Definition: Wavelet.cc:62
int j
Definition: cwb_net.C:10
i drho i
wavearray< double > w
Definition: Test1.C:27
virtual int convertF2O(int, int)
Definition: Wavelet.cc:92
int m_L
Definition: Wavelet.hh:106
virtual int convertF2L(int, int)
Definition: Wavelet.cc:75
enum BORDER m_Border
Definition: Wavelet.hh:91
virtual int convertO2F(int, int)
Definition: Wavelet.cc:87
int m_Level
Definition: Wavelet.hh:97
bool m_Heterodine
Definition: Wavelet.hh:108
void print()
Definition: Wavelet.cc:97
virtual Wavelet * Clone() const
return: Wavelet* - duplicate of *this, allocated on heap
Definition: Wavelet.cc:42
Wavelet(int mH=1, int mL=1, int tree=0, enum BORDER border=B_CYCLE)
Definition: Wavelet.cc:14
wavearray< int > index
virtual int getOffset(int, int)
Definition: Wavelet.cc:51
enum WAVETYPE m_WaveType
Definition: Wavelet.hh:88
int m_Layer
Definition: Wavelet.hh:100
virtual ~Wavelet()
Definition: Wavelet.cc:39
int m_H
Definition: Wavelet.hh:103