Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sseries.hh
Go to the documentation of this file.
1 /**********************************************************
2  * Package: Sparse WSeries Class
3  * File name: sseries.hh
4  * Author: Gabriele Vedovato (vedovato@lnl.infn.it)
5  **********************************************************/
6 
7 #ifndef SSERIES_HH
8 #define SSERIES_HH
9 
10 #ifndef WSERIES_HH
11 #include "wseries.hh"
12 #endif
13 #ifndef NETCLUSTER_HH
14 #include "netcluster.hh"
15 #endif
16 #include "TBits.h"
17 
18 template<class DataType_t>
19 class SSeries : public WSeries<DataType_t>
20 {
21 public:
22 
23  // Default constructor
24  SSeries();
25 
26  // Construct SSeries for specific wavelet type
27  // default constructor
28  SSeries(const Wavelet &w);
29 
30  // Construct from wavearray
31  // param: value - data to initialize the SSeries object
32  SSeries(const wavearray<DataType_t>& value, const Wavelet &w);
33 
34  // Copy constructor - SK: this is not a copy constructor
35  // param: value - object to copy from
36  SSeries(const WSeries<DataType_t>& value);
37 
38  //SK: Copy constructor
39  //SK: SSeries(const SSeries<DataType_t>& value);
40  //SK: also need an assignment operator
41 
42  //: destructor
43  virtual ~SSeries();
44 
45  //SK: we do not need Forward methods - just use those, which are in parent class
46  //SK: we need , though, the Inverse() method to reconstruct x(t) from sparse map
47  /*
48  void Forward(int n = -1)
49  {WSeries<DataType_t>::Forward(n);this->Init();}
50  void Forward(wavearray<DataType_t> &w, int n = -1)
51  {WSeries<DataType_t>::Forward(w,n);this->Init();}
52  void Forward(wavearray<DataType_t> &w, Wavelet &s, int n = -1)
53  {WSeries<DataType_t>::Forward(w,s,n);this->Init();}
54  */
55 
56  // set an external TF map used to fill Map00/90 sparse tables
57  void SetMap(WSeries<DataType_t>* pws) {Init(pws);}
58 
59  // add core pixels index to sparse map table
60  void AddCore(size_t ifoID, netcluster* pwc, int ID=0);
61 
62  // set the halo parameters
63  void SetHalo(double maxTau=0.042, int lHalo=1, int tHalo=-1);
64 
65  // get the halo slice parameter
66  // if eslice=false the extraHalo is returned othewise the time_Halo is returned
67  int GetHaloSlice(bool eslice=false) {return eslice ? extraHalo : time_Halo;}
68  // get the time halo parameter
69  int GetHaloLayer() {return layerHalo;}
70  // get the halo delay time parameter
71  double GetHaloDelay() {return net_Delay;}
72 
73  // Get Sparse Index Size
74  int GetSparseSize(bool bcore=true);
75 
76  // Get TF pixels : core+halo with index
77  // param: index - pixel index
78  // param: pS - pointer to where pixels are stored
79  bool GetSTFdata(int index, SymmArraySSE<float>* pS);
80 
81  // GetSparseIndex
82  // Get core index list
83  wavearray<int> GetSparseIndex(bool bcore=true);
84 
85  // Reset sparse table
86  void ResetSparseTable();
87 
88  // Add cluster=core+halo pixels to sparse tables
89  void UpdateSparseTable();
90 
91  // rebuild wseries from sparse table
92  void Expand(bool bcore=true);
93 
94  // set to 0 all TF map pixels which do not belong to core+halo
95  void Clean();
96 
97  // resize to 0 the TF map : leave only the sparse map tables
99 
100  // get slice from index
101  inline int GetSlice(int index) {int nLayer=this->maxLayer()+1;return (index-index%nLayer)/nLayer;}
102 
103  // get layer from index
104  inline int GetLayer(int index) {return index%(this->maxLayer()+1);}
105 
106  //private:
107 
108  void Init(WSeries<DataType_t>* pws=NULL, bool reset=true);
109 
110  // get number of WDM layers
111  inline int GetLayers() {return this->maxLayer()+1;}
112  // get number of samples in wavelet layer
113  inline int GetSlices() {return this->sizeZero();}
114 
115  // get frequency resolution (Hz)
116  inline float GetFreqResolution() {return (float)wdm_rate/this->getLevel()/2;}
117  // get time resolution (sec)
118  inline float GetTimeResolution() {return this->getLevel()/(float)wdm_rate;}
119 
120  // get map00/90 value from index
121  inline float GetMap00(int index) {return float(this->pWavelet->pWWS[index]);}
122  inline float GetMap90(int index) {return float(this->pWavelet->pWWS[index+this->maxIndex()+1]);}
123 
124  // get map00/90 value from slice and layer
125  inline float GetMap00(int slice, int layer) {return GetMap00(slice*(this->maxLayer()+1)+layer);}
126  inline float GetMap90(int slice, int layer) {return GetMap90(slice*(this->maxLayer()+1)+layer);}
127 
128  // set map00/90 value using index
129  inline void SetMap00(int index, DataType_t value) {this->pWavelet->pWWS[index] = value;}
130  inline void SetMap90(int index, DataType_t value) {this->pWavelet->pWWS[index+this->maxIndex()+1]=value;}
131 
132  // set map00/90 value using slice and layer
133  inline void SetMap00(int slice, int layer, DataType_t value) {SetMap00(slice*(this->maxLayer()+1)+layer,value);}
134  inline void SetMap90(int slice, int layer, DataType_t value) {SetMap90(slice*(this->maxLayer()+1)+layer,value);}
135 
136  // get core type using slice and layer
137  inline short Core(int slice, int layer)
138  {return core.TestBitNumber(slice*(this->maxLayer()+1)+layer);}
139 
140  // get core type using index
141  inline short Core(int index)
142  {return core.TestBitNumber(index);}
143 
144  // search methods to search elements in the sparse table
145  int binarySearch(int array[], int start, int end, int key);
146  int binarySearch(int array[], int size, int key);
147 
148  // check if Wavelet type is WDM
149  inline void CheckWaveletType(TString method) {
150  if(this->pWavelet->m_WaveType!=WDMT) {
151  cout << "SSeries<DataType_t>::"<<method.Data()
152  <<" : wavelet type not enabled " << endl; exit(1);}
153  }
154 
155  // data members
156 
157  TBits core; // core pixel array 1/0 : core/not-core
158 
159  // sparse table
160  wavearray<int> sparseLookup; // store the index pointer to the layers
161  TBits sparseType; // store pixel type 1/0 core/halo
162  wavearray<int> sparseIndex; // store pixel index
163  wavearray<float> sparseMap00; // store pixel 00 amp
164  wavearray<float> sparseMap90; // store pixel 90 amp;
165 
166  int layerHalo; // number of sparse layers associated to a pixel [+/- layerHalo]
167  int time_Halo; // typically half length of time-delay filter
168  int extraHalo; // number of extra sparse slices associated to a pixel [+/- (time_Halo+extraHalo)]
169  double net_Delay; // delay time (sec) used to compute extraHalo = net_Delay*this->wrate()
170 
171  // WDM params (used to Expand class after Shrink or after loading from file)
172  //SK: all parameters below are stored in pWavelet
175  int wdm_KWDM;
177  int wdm_rate;
179  int wdm_nSTS;
180 
181  ClassDef(SSeries,2)
182 };
183 
184 #endif
double GetHaloDelay()
Definition: sseries.hh:71
short Core(int slice, int layer)
Definition: sseries.hh:137
TBits core
Definition: sseries.hh:157
virtual size_t size() const
Definition: wavearray.hh:127
float GetFreqResolution()
Definition: sseries.hh:116
void SetMap00(int index, DataType_t value)
Definition: sseries.hh:129
int layer(double f)
Definition: wseries.cc:149
float GetMap90(int index)
Definition: sseries.hh:122
par[0] value
int wdm_start
Definition: sseries.hh:178
void SetMap90(int slice, int layer, DataType_t value)
Definition: sseries.hh:134
virtual double start() const
Definition: wavearray.hh:120
int GetLayers()
Definition: sseries.hh:111
wavearray< int > GetSparseIndex(bool bcore=true)
Definition: sseries.cc:327
TString("c")
int ID
Definition: TestMDC.C:70
size_t maxIndex()
Definition: wseries.hh:131
int wdm_nSTS
Definition: sseries.hh:179
netcluster * pwc
Definition: cwb_job_obj.C:20
int GetLayer(int index)
Definition: sseries.hh:104
int wdm_m_Layer
Definition: sseries.hh:174
void UpdateSparseTable()
Definition: sseries.cc:258
int wdm_rate
Definition: sseries.hh:177
wavearray< int > sparseIndex
Definition: sseries.hh:162
int layerHalo
Definition: sseries.hh:166
TBits sparseType
Definition: sseries.hh:161
void SetMap(WSeries< DataType_t > *pws)
Definition: sseries.hh:57
wavearray< double > w
Definition: Test1.C:27
void Clean()
Definition: sseries.cc:425
int getLevel()
Definition: wseries.hh:91
void Shrink()
Definition: sseries.hh:98
SSeries()
Definition: sseries.cc:74
int wdm_KWDM
Definition: sseries.hh:175
int time_Halo
Definition: sseries.hh:167
bool GetSTFdata(int index, SymmArraySSE< float > *pS)
Definition: sseries.cc:344
void Init(WSeries< DataType_t > *pws=NULL, bool reset=true)
Definition: sseries.cc:94
wavearray< int > sparseLookup
Definition: sseries.hh:160
void ResetSparseTable()
Definition: sseries.cc:168
virtual ~SSeries()
Definition: sseries.cc:68
Definition: Wavelet.hh:31
float GetMap90(int slice, int layer)
Definition: sseries.hh:126
int GetSparseSize(bool bcore=true)
Definition: sseries.cc:317
void SetMap90(int index, DataType_t value)
Definition: sseries.hh:130
int GetSlices()
Definition: sseries.hh:113
void SetMap00(int slice, int layer, DataType_t value)
Definition: sseries.hh:133
float GetTimeResolution()
Definition: sseries.hh:118
float GetMap00(int slice, int layer)
Definition: sseries.hh:125
int GetHaloLayer()
Definition: sseries.hh:69
void Expand(bool bcore=true)
Definition: sseries.cc:397
int GetHaloSlice(bool eslice=false)
Definition: sseries.hh:67
void CheckWaveletType(TString method)
Definition: sseries.hh:149
wavearray< int > index
void SetHalo(double maxTau=0.042, int lHalo=1, int tHalo=-1)
Definition: sseries.cc:225
wavearray< float > sparseMap00
Definition: sseries.hh:163
wavearray< float > sparseMap90
Definition: sseries.hh:164
float GetMap00(int index)
Definition: sseries.hh:121
int GetSlice(int index)
Definition: sseries.hh:101
void AddCore(size_t ifoID, netcluster *pwc, int ID=0)
Definition: sseries.cc:185
int wdm_BetaOrder
Definition: sseries.hh:173
WaveDWT< DataType_t > * pWavelet
Definition: wseries.hh:438
int extraHalo
Definition: sseries.hh:168
virtual void resize(unsigned int)
Definition: wavearray.cc:445
size_t sizeZero()
Definition: wseries.hh:126
int wdm_precision
Definition: sseries.hh:176
int maxLayer()
Definition: wseries.hh:121
int binarySearch(int array[], int start, int end, int key)
Definition: sseries.cc:443
exit(0)
short Core(int index)
Definition: sseries.hh:141
double net_Delay
Definition: sseries.hh:169