Logo coherent WaveBurst  
Library Reference Guide
Logo
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sseries.cc
Go to the documentation of this file.
1 /*
2 # Copyright (C) 2019 Sergey Klimenko, Gabriele Vedovato, Valentin Necula
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 #include "sseries.hh"
20 
21 ClassImp(SSeries<float>)
22 
23 
24 //______________________________________________________________________________
25 /* Begin_Html
26 <center><h2>SSeries class</h2></center>
27 SSeries is used to store the <font color="red">core+halo</font> pixels contained in the WSeries array<br>
28 The <font color="red">core</font> pixels are pixels selected according to some user criteria, see <a class="funcname" href="#SSeries_float_:AddCore">AddCore</a><br>
29 The <font color="red">halo</font> pixels are auxiliary pixels associated to each core pixel, see <a class="funcname" href="#SSeries_float_:SetHalo">SetHalo</a><br>
30 Note: WAT algorithms use halo pixels to compute the delayed amplitude.<br>
31 <p>
32 
33 <h3><a name="usage">Usage</a></h3>
34 create sseries
35 <pre>
36  <a class="funcname" href="#SSeries_float_:SSeries_float_">SSeries&lt;float&gt;</a> ss;
37 </pre>
38 associate TF map to sparse map
39 <pre>
40  ss.<a class="funcname" href="#SSeries_float_:SetMap">SetMap</a>(&tfmap);
41 </pre>
42 set halo parameters
43 <pre>
44  ss.<a class="funcname" href="#SSeries_float_:SetHalo">SetHalo</a>(network_time_delay);
45 </pre>
46 add core pixels index to sparse map table
47 <pre>
48  ss.<a class="funcname" href="#SSeries_float_:AddCore">AddCore</a>(ifoID,&netcluster);
49 </pre>
50 update sparse map : add TF core+halo pixels to sparse map tables
51 <pre>
52  ss.<a class="funcname" href="#SSeries_float_:UpdateSparseTable">UpdateSparseTable</a>();
53 </pre>
54 resize to 0 the TF map : leave only the sparse map tables
55 <pre>
56  ss.<a class="funcname" href="#SSeries_float_:Shrink">Shrink</a>();
57 </pre>
58 write sparse map to root file
59 <pre>
60  TFile ofile("file.root","RECREATE");
61  ss.Write("sparseMap");
62  ofile.Close();
63 </pre>
64 
65 <p>
66 <h3><a name="example">Example</a></h3>
67 <p>
68 The macro <a href="./tutorials/wat/SSeriesExample.C.html">SSeriesExample.C</a> is an example which shown how to use the SSeries class.<br>
69 The picture below gives the macro output plots.<br>
70 <p>
71 The <font color="red">TF Map : Signal</font> is the WDM transform of a SG100Q9 signal<br>
72 The <font color="red">TF Map : Signal + Noise</font> is the WDM transform of a SG100Q9 signal plus a random white noise<br>
73 The <font color="red">Sparse Map : Core Pixels</font> are the core pixels above the threshold energy 6<br>
74 The <font color="red">Sparse Map : Core+Halo Pixels</font> are the core pixels above the threshold + their associate halo pixels<br>
75 End_Html
76 Begin_Macro
77 SSeriesExample.C
78 End_Macro */
79 
80 
81 using namespace std;
82 
83 //______________________________________________________________________________
84 // destructor
85 template<class DataType_t>
87 {
88 }
89 
90 //______________________________________________________________________________
91 template<class DataType_t>
93 WSeries<DataType_t>() {this->Init();}
94 
95 //______________________________________________________________________________
96 template<class DataType_t>
98 WSeries<DataType_t>(w) {this->Init();}
99 
100 //______________________________________________________________________________
101 template<class DataType_t>
103 WSeries<DataType_t>(w) {this->Init();}
104 
105 //______________________________________________________________________________
106 template<class DataType_t>
108 WSeries<DataType_t>(value, w) {this->Init();}
109 
110 //______________________________________________________________________________
111 template<class DataType_t>
113 
114  WDM<double>* wdm;
115  if(reset) ResetSparseTable();
116 
117  if(pws && reset) { // initialize from external wavelet
118  if(this->pWavelet) { // delete default wavelet
119  this->pWavelet->release();
120  delete this->pWavelet;
121  }
122 
123  this->pWavelet = pws->pWavelet->Init(); // light-weight wavelet without TD filters
124  this->pWavelet->allocate(pws->size(), pws->data); // attach pws data
125 
126  wdm = (WDM<double>*)pws->pWavelet; // setup WDM pointer
127  this->rate(pws->rate()); // set time-series rate
128  this->wrate(pws->wrate()); // set wavelet rate
129  this->start(pws->start()); // set data start time
130  this->stop(pws->stop()); // set data stop time
131  this->edge(pws->edge()); // set data edge length
132  this->time_Halo = wdm->getTDFsize(); // store half size of TD filter
133  }
134  else if(pws) { // cross-check consistency if input pws
135  if(abs(pws->rate()-this->rate())) {
136  cout << "SSeries::Init : Inconsistent index rate " << pws->rate()
137  << " previously setted index rate : " << this->rate() << endl;
138  exit(1);
139  }
140  if(pws->maxLayer()!=this->maxLayer()) {
141  cout << "SSeries::Init : Inconsistent maxLayer " << pws->maxLayer()
142  << " previously setted maxLayer: " << this->maxLayer() << endl;
143  exit(1);
144  }
145  if(pws->size()!=this->pWavelet->nWWS) {
146  cout << "SSeries::Init : Inconsistent nWWS " << pws->size()
147  << " previously setted nWWS : " << this->pWavelet->nWWS << endl;
148  exit(1);
149  }
150  if(pws->start()!=this->start()) {
151  cout << "SSeries::Init : Inconsistent start " << pws->start()
152  << " previously setted start : " << this->start() << endl;
153  exit(1);
154  }
155  if(pws->pWavelet->getTDFsize() != this->time_Halo) {
156  cout << "SSeries::Init : Inconsistent time_Halo " << pws->pWavelet->getTDFsize()
157  << " previously setted time_Halo : " << this->time_Halo << endl;
158  exit(1);
159  }
160  }
161 
162  wdm = (WDM<double>*) this->pWavelet;
163 
164  if(this->pWavelet->m_WaveType==WDMT) {
165  wdm_BetaOrder = wdm->BetaOrder;
166  wdm_m_Layer = wdm->m_Layer;
167  wdm_KWDM = wdm->KWDM;
168  wdm_precision = wdm->precision;
169  wdm_rate = this->rate();
170  wdm_start = this->start();
171  wdm_nSTS = wdm->nSTS;
172  }
173  else {
174  wdm_BetaOrder = 0;
175  wdm_m_Layer = 0;
176  wdm_KWDM = 0;
177  wdm_precision = 0;
178  wdm_rate = 0;
179  wdm_start = 0;
180  wdm_nSTS = 0;
181  }
182 }
183 
184 //______________________________________________________________________________
185 template<class DataType_t>
187 //
188 // Reset the sparse tables
189 //
190 
191  sparseLookup.resize(0);
192  sparseType.ResetAllBits();
193  sparseType.Compact();
194  sparseIndex.resize(0);
195  sparseMap00.resize(0);
196  sparseMap90.resize(0);
197  core.ResetAllBits();
198  core.Compact();
199 }
200 
201 //______________________________________________________________________________
202 template<class DataType_t>
204 //
205 // Add core pixels of the detector ID=ifoID contained in the pwc netcluster with index ID
206 //
207 // ifoID : detector index
208 // pwc : pointer to netcluster
209 // ID : cluster index - if ID=0 all cluster are selected (default ID=0)
210 //
211 
212  CheckWaveletType("AddCore");
213 
214  int index;
215  int R = int(this->wrate()+0.1);
216 
217  wavearray<double> cid; // buffers for cluster ID
218  cid = pwc->get((char*)"ID",0,'S',0);
219  int K = cid.size();
220 
221  for(int ik=0; ik<K; ik++) { // loop over clusters
222 
223  int id = size_t(cid.data[ik]+0.1);
224 
225  if(ID && id!=ID) continue; // if ID>0 skip id!=ID
226  if(pwc->sCuts[id-1] == 1) continue; // skip rejected clusters
227 
228  vector<int>* vint = &(pwc->cList[id-1]);
229  int V = vint->size();
230  //cout << "CID " << id << " SIZE " << V << endl;
231 
232  for(int l=0; l<V; l++) { // loop over pixels
233  netpixel* pix = pwc->getPixel(id,l);
234  if(int(pix->rate+0.01)!=R) continue; // skip pixel with bad rate
235  index = (int)pix->data[ifoID].index;
236  core.SetBitNumber(index);
237  }
238  }
239 }
240 
241 //______________________________________________________________________________
242 template<class DataType_t>
243 void SSeries<DataType_t>::SetHalo(double maxTau, int lHalo, int tHalo) {
244 //
245 // maxTau : delay time (sec)
246 // is stored in net_Delay
247 // used to compute extraHalo = net_Delay*sparseRate
248 // lHalo : number of layers above and below each core pixel
249 // is stored in layerHalo
250 // the total number of layers in the halo is 2*layerHalo+1
251 // tHalo : number of slice on the right and on the left each core pixel
252 // is stored in timeHalo
253 // the total number of pixels on the time axis is 2*(timeHalo+extraHalo)+1
254 // The default value is -1 : the value is automatically selected from the
255 // associated TF map with WDM::getTDFsize() method.
256 //
257 // For each core pixels (if layerHalo = 1) the following pixels are saved
258 //
259 // core = '.'
260 // extraHalo = '++++++++'
261 // timeHalo = 'xxxx'
262 //
263 // ++++++++xxxx xxxx++++++++
264 // ++++++++xxxx.xxxx++++++++
265 // ++++++++xxxx xxxx++++++++
266 //
267 
269  this->layerHalo = lHalo;
270  this->net_Delay = maxTau;
271  if(tHalo>=0) this->time_Halo = tHalo; // override extraHalo
272 }
273 
274 //______________________________________________________________________________
275 template<class DataType_t>
277 //
278 // Use the core pixels and halo parameters to update the sparse maps with core+halo pixels
279 //
280 
281  CheckWaveletType("UpdateSparseTable");
282 
283  if(time_Halo==0 && layerHalo==0) return;
284 
285  extraHalo = int(net_Delay*this->wrate())+8; // init extra halo : WARNING value 8 ad hoc - to be fixed
286  int hSlice = time_Halo+extraHalo; // halo slices
287 
288  TBits cluster; // core+halo
289  int nLayer = this->maxLayer()+1; // number of WDM layers
290  int nSlice = this->sizeZero(); // number of samples in wavelet layer
291 
292  for(int i=0;i<nSlice;i++) {
293  for(int j=0;j<nLayer;j++) {
294  if(!Core(i,j)) continue;
295  int ib = i-hSlice<0 ? 0 : i-hSlice;
296  int ie = i+hSlice>nSlice-1 ? nSlice-1 : i+hSlice;
297  int jb = j-layerHalo<0 ? 0 : j-layerHalo;
298  int je = j+layerHalo>nLayer-1 ? nLayer-1 : j+layerHalo;
299  for(int ii=ib;ii<=ie;ii++)
300  for(int jj=jb;jj<=je;jj++) {
301  cluster.SetBitNumber(ii*nLayer+jj);
302  }
303  }
304  }
305 
306  // fill sparse tables
307  int csize=cluster.CountBits(); // is the number of non zero pixels
308  sparseLookup.resize(nLayer+1);
309  sparseType.ResetAllBits();sparseType.Compact();
310  sparseIndex.resize(csize);
311  sparseMap00.resize(csize);
312  sparseMap90.resize(csize);
313 
314  // data are sorted respect to index
315  int n=0;
316  for(short j=0;j<nLayer;j++) {
317  sparseLookup[j]=n;
318  for(int i=0;i<nSlice;i++) {
319  int index=i*nLayer+j;
320 
321  if(cluster.TestBitNumber(index)) {
322  if(Core(index)) sparseType.SetBitNumber(n);
323  sparseIndex.data[n] = index;
324  sparseMap00.data[n] = GetMap00(index);
325  sparseMap90.data[n] = GetMap90(index);
326  n++;
327  }
328  }
329  }
330  sparseLookup[nLayer]=n;
331 }
332 
333 //______________________________________________________________________________
334 template<class DataType_t>
336 
337 // CheckWaveletType("GetSparseSize");
338 
339  if(bcore) return sparseType.CountBits(); // return number of core pixels
340  else return sparseIndex.size(); // retun number of total pixels core+halo
341 }
342 
343 //______________________________________________________________________________
344 template<class DataType_t>
346 
347  CheckWaveletType("GetSparseIndex");
348 
349  if(!bcore) return sparseIndex;
350 
352  int isize=0;
353  for(int i=0;i<(int)sparseIndex.size();i++)
354  if(sparseType.TestBitNumber(i)) si[isize++]=sparseIndex[i];
355 
356  return si;
357 }
358 
359 
360 //______________________________________________________________________________
361 template<class DataType_t>
363 
364  CheckWaveletType("GetSTFdata");
365 
366  // if(!Core(index)) return false;
367 
368  // check consistency of input vector dimensions
369  int nL = 2*layerHalo+1; // number of layers in halo
370  int nS = 2*time_Halo+1; // number of time samples in halo
371  int nLayer = this->maxLayer()+1; // number of WDM layers
372 
373  if(pS[0].Last()!=time_Halo) {
374  cout << "SSeries<DataType_t>::GetSTFdata : Input Vector Error - wrong slice dimension" << endl;
375  cout << "Input dim : " << 2*pS[0].Last()+1 << " Sparse TF slices : " << nS;
376  exit(1);
377  }
378 
379  int layer = GetLayer(index);
380 
381  int jb = layer-layerHalo<0 ? 0 : layer-layerHalo;
382  int je = layer+layerHalo>nLayer-1 ? nLayer-1 : layer+layerHalo;
383  // set to zero layer outside of TF map
384  for(int j=0;j<nL;j++) {
385  int jp = j+layer-layerHalo;
386  if(jp>=jb && jp<=je) continue;
387  bzero(&pS[j][-time_Halo],nS*sizeof(float));
388  bzero(&pS[nL+j][-time_Halo],nS*sizeof(float));
389  }
390  // fill array with Map00/90
391  for(int j=jb;j<=je;j++) {
392  int start = sparseLookup[j]; // sparse table layer offset
393  int end = sparseLookup[j+1]-1; // sparse table layer+1 offset
394  int key = index+(j-layer);
395  int sindex = binarySearch(sparseIndex.data, start, end, key);
396  if(sindex<0)
397  {cout << "SSeries<DataType_t>::GetSTFdata : index not present in sparse table" << endl;exit(1);}
398  int ib = sindex-time_Halo;
399  int ie = sindex+time_Halo;
400  if((ib<start)||(ie>end)) {
401  cout << "SSeries<DataType_t>::GetSTFdata : Exceed TF map boundaries" << endl;
402  cout << "Check buffer scratch length : " <<
403  "probably it is non sufficient to get the correct number of samples" << endl;
404  exit(1);
405  }
406  int jp = j-layer+layerHalo;
407  memcpy(&pS[jp][-time_Halo], &(sparseMap00.data[ib]),nS*sizeof(float)); // copy Map00
408  memcpy(&pS[nL+jp][-time_Halo],&(sparseMap90.data[ib]),nS*sizeof(float)); // copy Map90
409  }
410  return true;
411 }
412 
413 //______________________________________________________________________________
414 template<class DataType_t>
415 void SSeries<DataType_t>::Expand(bool bcore) {
416 //
417 // rebuild wseries TF map from sparse table
418 //
419 // input - bcore : true -> only core pixels are used
420 //
421 
422  CheckWaveletType("Expand");
423  int nLayer = this->maxLayer()+1; // number of WDM layers
424  int nSlice = this->sizeZero(); // number of samples in wavelet layer
425 
427  x.rate(wdm_rate);
428  x.start(wdm_start);
431 
432  // rebuild TF map
433  for(int i=0;i<(int)sparseIndex.size();i++) {
434  if(bcore && !sparseType.TestBitNumber(i)) continue;
435  int index = sparseIndex[i];
436  SetMap00(index,sparseMap00[i]);
437  SetMap90(index,sparseMap90[i]);
438  }
439 }
440 
441 //______________________________________________________________________________
442 template<class DataType_t>
444 //
445 // set to 0 all TF map pixels which do not belong to core+halo
446 //
447 
448  CheckWaveletType("Clean");
449 
450  TBits cluster; // core+halo
451 
452  for(int i=0;i<(int)sparseIndex.size();i++)
453  cluster.SetBitNumber(sparseIndex[i]);
454 
455  for(int i=0;i<=this->maxIndex();i++)
456  if(!cluster.TestBitNumber(i)) {SetMap00(i,0);SetMap90(i,0);}
457 }
458 
459 //______________________________________________________________________________
460 template<class DataType_t>
461 int SSeries<DataType_t>::binarySearch(int array[], int start, int end, int key) {
462  // Determine the search point.
463  // int searchPos = end + ((start - end) >> 1);
464  // int searchPos = (start + end) / 2;
465  int searchPos = (start + end) >> 1;
466  // If we crossed over our bounds or met in the middle, then it is not here.
467  if (start > end)
468  return -1;
469  // Search the bottom half of the array if the query is smaller.
470  if (array[searchPos] > key)
471  return binarySearch (array, start, searchPos - 1, key);
472  // Search the top half of the array if the query is larger.
473  if (array[searchPos] < key)
474  return binarySearch (array, searchPos + 1, end, key);
475  // If we found it then we are done.
476  if (array[searchPos] == key)
477  return searchPos;
478 }
479 
480 //______________________________________________________________________________
481 template<class DataType_t>
482 int SSeries<DataType_t>::binarySearch(int array[], int size, int key) {
483  return binarySearch(array, 0, size - 1, key);
484 }
485 
486 //______________________________________________________________________________
487 template<class DataType_t>
488 void SSeries<DataType_t>::Streamer(TBuffer &R__b)
489 {
490  // Stream an object of class SSeries<DataType_t>.
491 
492  UInt_t R__s, R__c;
493  if (R__b.IsReading()) {
494  Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
496  sparseLookup.Streamer(R__b);
497  sparseIndex.Streamer(R__b);
498  sparseMap00.Streamer(R__b);
499  sparseMap90.Streamer(R__b);
500  //R__b >> nLayer;
501  //R__b >> nSlice;
502  R__b >> layerHalo;
503  R__b >> time_Halo;
504  R__b >> wdm_BetaOrder;
505  R__b >> wdm_m_Layer;
506  R__b >> wdm_KWDM;
507  R__b >> wdm_precision;
508  R__b >> wdm_rate;
509  R__b >> wdm_start;
510  if(R__v > 1) R__b >> wdm_nSTS;
511  // restore sparseIndex & sparseType & core
512  core.ResetAllBits();core.Compact();
513  sparseType.ResetAllBits();sparseType.Compact();
514  for(int i=0;i<(int)sparseIndex.size();i++) {
515  if(sparseIndex[i]<0) {
516  // restore index
517  sparseIndex[i]+=1;
518  sparseIndex[i]*=-1;
519  // restore indexType
520  sparseType.SetBitNumber(i);
521  }
522  // restore core
523  core.SetBitNumber(sparseIndex[i]);
524  }
525  R__b.CheckByteCount(R__s, R__c, SSeries<DataType_t>::IsA());
526  } else {
527  R__c = R__b.WriteVersion(SSeries<DataType_t>::IsA(), kTRUE);
528  // merge sparseIndex & sparseType
529  for(int i=0;i<(int)sparseIndex.size();i++) {
530  if(sparseType.TestBitNumber(i)) {
531  // add 1 to avoid 0 index
532  sparseIndex[i]+=1;
533  // set as negative index the core pixels
534  sparseIndex[i]*=-1;
535  }
536  }
538  sparseLookup.Streamer(R__b);
539  sparseIndex.Streamer(R__b);
540  sparseMap00.Streamer(R__b);
541  sparseMap90.Streamer(R__b);
542  //R__b << nLayer;
543  //R__b << nSlice;
544  R__b << layerHalo;
545  R__b << time_Halo;
546  R__b << wdm_BetaOrder;
547  R__b << wdm_m_Layer;
548  R__b << wdm_KWDM;
549  R__b << wdm_precision;
550  R__b << wdm_rate;
551  R__b << wdm_start;
552  R__b << wdm_nSTS;
553  R__b.SetByteCount(R__c, kTRUE);
554  }
555 }
556 
557 
558 // instantiations
559 
560 #define CLASS_INSTANTIATION(class_) template class SSeries< class_ >;
561 
562 //CLASS_INSTANTIATION(short)
563 //CLASS_INSTANTIATION(int)
564 //CLASS_INSTANTIATION(unsigned int)
565 //CLASS_INSTANTIATION(long)
566 //CLASS_INSTANTIATION(long long)
567 CLASS_INSTANTIATION(float)
568 CLASS_INSTANTIATION(double)
569 
short Core(int slice, int layer)
Definition: sseries.hh:155
TBits core
Definition: sseries.hh:175
void SetMap00(int index, DataType_t value)
Definition: sseries.hh:147
int layer(double f)
Definition: wseries.cc:167
virtual double stop() const
Definition: wavearray.hh:140
virtual size_t getTDFsize()
Definition: WDM.hh:161
float GetMap90(int index)
Definition: sseries.hh:140
par [0] value
int wdm_start
Definition: sseries.hh:196
virtual void rate(double r)
Definition: wavearray.hh:141
std::vector< pixel > cluster
Definition: wavepath.hh:61
virtual void edge(double s)
Definition: wavearray.hh:143
int n
Definition: cwb_net.C:28
wavearray< int > GetSparseIndex(bool bcore=true)
Definition: sseries.cc:345
int ID
Definition: TestMDC.C:70
size_t maxIndex()
Definition: wseries.hh:149
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\ layers : "<< nLAYERS<< "\ dF(hz) : "<< dF<< "\ dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1) *itime+ifreq;double time=itime *dT;double freq=(ifreq >0) ? ifreq *dF :dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
std::vector< pixdata > data
Definition: netpixel.hh:122
wavearray< double > get(char *name, size_t index=0, char atype='R', int type=1, bool=true)
param: string with parameter name param: index in the amplitude array, which define detector param: c...
Definition: netcluster.cc:2207
int wdm_nSTS
Definition: sseries.hh:197
WDM< double > wdm(nLAYERS, nLAYERS, 6, 10)
netpixel pix(nifo)
netcluster * pwc
Definition: cwb_job_obj.C:38
int GetLayer(int index)
Definition: sseries.hh:122
STL namespace.
int wdm_m_Layer
Definition: sseries.hh:192
void UpdateSparseTable()
Definition: sseries.cc:276
int wdm_rate
Definition: sseries.hh:195
std::vector< vector_int > cList
Definition: netcluster.hh:397
virtual void start(double s)
Definition: wavearray.hh:137
int j
Definition: cwb_net.C:28
i drho i
int BetaOrder
Definition: WDM.hh:164
int isize
wavearray< int > sparseIndex
Definition: sseries.hh:180
int layerHalo
Definition: sseries.hh:184
TBits sparseType
Definition: sseries.hh:179
wavearray< double > w
Definition: Test1.C:27
void wrate(double r)
Definition: wseries.hh:120
virtual size_t size() const
Definition: wavearray.hh:145
void Clean()
Definition: sseries.cc:443
SSeries()
Definition: sseries.cc:92
int wdm_KWDM
Definition: sseries.hh:193
int time_Halo
Definition: sseries.hh:185
bool GetSTFdata(int index, SymmArraySSE< float > *pS)
Definition: sseries.cc:362
virtual double rate() const
Definition: wavearray.hh:142
unsigned long nSTS
Definition: WaveDWT.hh:143
double wrate() const
Definition: wseries.hh:122
void Init(WSeries< DataType_t > *pws=NULL, bool reset=true)
Definition: sseries.cc:112
wavearray< int > sparseLookup
Definition: sseries.hh:178
i() int(T_cor *100))
void ResetSparseTable()
Definition: sseries.cc:186
int l
virtual ~SSeries()
Definition: sseries.cc:86
#define CLASS_INSTANTIATION(class_)
Definition: sseries.cc:560
Definition: Wavelet.hh:49
int GetSparseSize(bool bcore=true)
Definition: sseries.cc:335
virtual double start() const
Definition: wavearray.hh:138
int KWDM
Definition: WDM.hh:166
void SetMap90(int index, DataType_t value)
Definition: sseries.hh:148
virtual double edge() const
Definition: wavearray.hh:144
netpixel * getPixel(size_t n, size_t i)
Definition: netcluster.hh:413
void Expand(bool bcore=true)
Definition: sseries.cc:415
std::vector< int > sCuts
Definition: netcluster.hh:392
void CheckWaveletType(TString method)
Definition: sseries.hh:167
wavearray< int > index
void SetHalo(double maxTau=0.042, int lHalo=1, int tHalo=-1)
Definition: sseries.cc:243
virtual void stop(double s)
Definition: wavearray.hh:139
wavearray< float > sparseMap00
Definition: sseries.hh:181
wavearray< float > sparseMap90
Definition: sseries.hh:182
float GetMap00(int index)
Definition: sseries.hh:139
void Forward(int n=-1)
param: wavelet - n is number of steps (-1 means full decomposition)
Definition: wseries.cc:246
void AddCore(size_t ifoID, netcluster *pwc, int ID=0)
Definition: sseries.cc:203
DataType_t * data
Definition: wavearray.hh:319
int wdm_BetaOrder
Definition: sseries.hh:191
WaveDWT< DataType_t > * pWavelet
Definition: wseries.hh:456
int extraHalo
Definition: sseries.hh:186
float rate
Definition: netpixel.hh:113
int m_Layer
Definition: Wavelet.hh:118
virtual void resize(unsigned int)
Definition: wavearray.cc:463
int precision
Definition: WDM.hh:165
size_t sizeZero()
Definition: wseries.hh:144
int wdm_precision
Definition: sseries.hh:194
int maxLayer()
Definition: wseries.hh:139
int binarySearch(int array[], int start, int end, int key)
Definition: sseries.cc:461
exit(0)
double net_Delay
Definition: sseries.hh:187