7 #define PCA_NRES 7 // number of resolutions 8 #define PCA_IRES 4 // initial resolution 10 #define PCA_MAX 60 // number of max PC extractions 11 #define PCA_PREC 0.01 // precision = Eresidual/Esignal 13 #define ACORE 1.7 // set selection threshold : Ethr = 2*ACORE*ACORE 24 #define WAVE_TYPE "INSPIRAL" // inspiral 29 #define WAVE_LENGTH 6 // Is effective only for WAVE_TYPE = SGE,WNB,GA (def=1sec) 31 #define WAVE_POL "hp" // select hp,hx component 33 #define WAVE_SNR 30 // signal SNR 39 #define WDM_NU 6 // WDM mayer order 41 #define WDM_PREC 10 // WDM precision 42 #define WDM_TDSIZE 12 // Time Delay filter size 44 #define WDM_SCRATCH 27.0 // WDM TF segment scratch (sec) 49 #define XTALK_CATALOG "wdmXTalk/OverlapCatalog-ilLev4-hLev10-iNu6-P10.bin" // WDM_NU = 6 55 #define NWP 4 // number of WP types used in the PCA 57 #define WP_SINGLE // enable/disable (uncomment/comment) single wavelet 96 #define PLOT_REC_VS_INJ // enable/disable (uncomment/comment) show time rec vs inj waveform 99 #define PLOT_TFRES 6 // TF frequency resolution showed 100 #define PLOT_MINFREQ 0 // min freq shoed in the TF plots 101 #define PLOT_MAXFREQ 256 // max freq shoed in the TF plots 102 #define PLOT_TFTYPE 2 126 #ifdef LOAD_XTALK_CATALOG 144 cout <<
"Error - Bad WAVE_POL value : must be hp or hx" << endl;
148 if(PLOT_TFRES<0 || PLOT_TFRES>=
PCA_NRES) {
149 cout <<
"Error - Bad PLOT_TFRES value : must be >=0 && < " <<
PCA_NRES << endl;
185 inspOptions =
"--time-step 60.0 --time-interval 0 ";
186 inspOptions+=
"--l-distr random ";
187 inspOptions+=
"--gps-start-time 931072160 --gps-end-time 931072235 ";
188 inspOptions+=
"--d-distr volume --m-distr totalMassRatio --i-distr uniform ";
193 inspOptions+=
"--f-lower 30.000000 ";
196 inspOptions+=
"--min-mass1 5.0 --max-mass1 5.0 ";
197 inspOptions+=
"--min-mass2 5.0 --max-mass2 5.0 ";
198 inspOptions+=
"--min-mtotal 10.0 --max-mtotal 10.0 ";
219 inspOptions+=
"--m-distr componentMass ";
220 inspOptions+=
"--min-distance 1000000.0 --max-distance 1500000.0 ";
221 inspOptions+=
"--approximant EOBNRv2pseudoFourPN --disable-spin ";
222 inspOptions+=
"--taper-injection start --seed 123456789 ";
223 inspOptions+=
"--dir ./ ";
224 inspOptions+=
"--output inspirals.xml ";
226 MDC.SetInspiral(
"EOBNRv2",inspOptions);
229 sig = MDC.GetInspiral(
WAVE_POL,931072160,931072235);
233 vector<mdcpar>
par(2);
234 par[0].name=
"frequency"; par[0].value=100.;
235 par[1].name=
"Q"; par[1].value=8.9;
244 vector<mdcpar>
par(6);
245 par[0].name=
"frequency"; par[0].value=250;
246 par[1].name=
"bandwidth"; par[1].value=100;
247 par[2].name=
"duration"; par[2].value=0.1;
248 par[3].name=
"pseed"; par[3].value=111;
249 par[4].name=
"xseed"; par[4].value=222;
250 par[5].name=
"mode"; par[5].value=1;
259 vector<mdcpar>
par(1);
260 par[0].name=
"duration"; par[0].value=0.004;
266 cout <<
"Error - WAVE=GA -> hx=0" << endl;
271 cout << endl <<
"sig size : " << sig.
size() <<
" sig rate : " 273 <<
" sig length : " << sig.
size()/sig.
rate() <<
" sec" << endl;
280 X=0.;
for(
int i=0;
i<sig.
size();
i++) X[
i+iscratch]=sig[
i];
293 double Esig=0.;
for(
int i=0;
i<sig.
size();
i++) Esig+=sig[
i]*sig[
i];
301 int layers = level>0 ? 1<<level : 0;
302 int rate = rateANA>>level;
303 cout <<
"level : " << level <<
"\t rate(hz) : " << rate <<
"\t layers : " << layers
304 <<
"\t df(hz) : " << rateANA/2./double(1<<level)
305 <<
"\t dt(ms) : " << 1000./rate << endl;
310 cout << endl <<
"find best wavelet time shift ENABLED" << endl << endl;
312 cout << endl <<
"find best wavelet time shift DISABLED" << endl << endl;
314 bool wpEnabled=
false;
318 if(
wp_mask[0]) cout <<
"wavelet packet single ENABLED" << endl;
319 if(
wp_mask[1]) cout <<
"wavelet packet diagonal ENABLED" << endl;
320 if(
wp_mask[2]) cout <<
"wavelet packet horizontal ENABLED" << endl;
321 if(
wp_mask[3]) cout <<
"wavelet packet vertical ENABLED" << endl;
322 if(
wp_mask[4]) cout <<
"wavelet packet back-diagonal ENABLED" << endl;
325 cout << endl <<
"Error : all WP options are disabled !!!" << endl << endl;
330 cout <<
"Init WDM ..." << endl;
336 double wdmFLen = double(wdm[
i]->m_H)/sig.
rate();
339 cout <<
"Error - filter length must be <= WDM_SCRATCH !!!" <<
" RES = " << j << endl;
340 cout <<
"filter length : " << wdmFLen <<
" sec" << endl;
341 cout <<
"cwb scratch : " <<
WDM_SCRATCH <<
" sec" << endl;
346 #ifdef LOAD_XTALK_CATALOG 349 if(gSystem->Getenv(
"HOME_WAT_FILTERS")==NULL) {
350 cout <<
"Error : environment HOME_WAT_FILTERS is not defined!!!" << endl;
exit(1);
352 strcpy(filter_dir,
TString(gSystem->Getenv(
"HOME_WAT_FILTERS")).Data());
355 char MRAcatalog[1024];
357 cout <<
"cwb2G::Init - Loading catalog of WDM cross-talk coefficients ... " << endl;
358 cout << MRAcatalog << endl;
361 wdmMRA.
read(MRAcatalog);
371 for(
int level=l_high; level>=
l_low; level--) {
372 int layers = level>0 ? 1<<level : 0;
373 for(
int j=0;
j<wdmMRA.
nRes;
j++)
if(layers==wdmMRA.
layers[
j]) check_layers++;
376 if(check_layers!=PCA_NRES) {
377 cout <<
"Error : analysis layers do not match the MRA catalog" << endl;
378 cout << endl <<
"analysis layers : " << endl;
379 for(
int level=l_high; level>=
l_low; level--) {
380 int layers = level>0 ? 1<<level : 0;
381 cout <<
"level : " << level <<
" layers : " << layers << endl;
383 cout << endl <<
"MRA catalog layers : " << endl;
385 cout <<
"layers : " << wdmMRA.
layers[
i] << endl;
393 cout <<
"Apply WDM Transform to signal ..." << endl;
403 WTS[0] =
new watplot(const_cast<char*>(
"wts0"));
406 double hist2D_MAX = WTS[0]->
hist2D->GetMaximum();
419 float crate = sig.
rate();
422 std::vector<int>
list;
423 std::vector<int> vtof(1);
424 std::vector<int> vtmp;
425 std::vector<float> varea;
426 std::vector<float> vpmap;
430 cout <<
"Start PC extraction ..." << endl;
435 int nWP[
NWP+1];
for(
int l=0;l<=
NWP;l++) nWP[l]=0;
448 if(amax*amax<Ethr)
break;
450 #ifdef LOAD_XTALK_CATALOG 455 cout << endl <<
"--------------------------------------------------------" << endl;
456 cout <<
"Principal Component # " <<
k << endl;
457 cout <<
"--------------------------------------------------------" << endl;
459 if(isWP) cout <<
"---> WAVELET PACKET : " << isWP << endl;
460 else cout <<
"---> wavelet pixel" << endl;
461 cout <<
" amax : " << amax <<
" nmax : " << nmax
462 <<
" mmax : " << mmax <<
" rmax : " << rmax << endl;
466 a00[0] = wsig[rmax].
getSample(nmax,mmax);
467 a90[0] = wsig[rmax].
getSample(nmax,-mmax);
471 if(isWP==1) {nn=nmax+1; mm=mmax+1;}
472 if(isWP==2) {nn=nmax-1; mm=
mmax; }
473 if(isWP==3) {nn=nmax; mm=mmax+1;}
474 if(isWP==4) {nn=nmax-1; mm=mmax+1;}
479 if(isWP==1) {nn=nmax-1; mm=mmax-1;}
480 if(isWP==2) {nn=nmax+1; mm=
mmax; }
481 if(isWP==3) {nn=nmax; mm=mmax-1;}
482 if(isWP==4) {nn=nmax+1; mm=mmax-1;}
494 double Emax=a00[0]*a00[0]+a90[0]*a90[0];
496 Emax+=(a00[1]*a00[1]+a90[1]*a90[1]);
497 Emax+=(a00[2]*a00[2]+a90[2]*a90[2]);
501 A00[0]=a00[0]; A90[0]=a90[0];
503 A00[1]=a00[1]; A90[1]=a90[1];
504 A00[2]=a00[2]; A90[2]=a90[2];
509 for(
int i=-nsmp;
i<=nsmp;
i++) {
512 EMAX = d00[0]*d00[0]+d90[0]*d90[0];
513 if(EMAX>Emax) {Emax=EMAX;ishift=
i;A00[0]=d00[0];A90[0]=d90[0];}
517 if(isWP==1) {nn=nmax+1; mm=mmax+1;}
518 if(isWP==2) {nn=nmax-1; mm=
mmax; }
519 if(isWP==3) {nn=nmax; mm=mmax+1;}
520 if(isWP==4) {nn=nmax-1; mm=mmax+1;}
525 if(isWP==1) {nn=nmax-1; mm=mmax-1;}
526 if(isWP==2) {nn=nmax+1; mm=
mmax; }
527 if(isWP==3) {nn=nmax; mm=mmax-1;}
528 if(isWP==4) {nn=nmax+1; mm=mmax-1;}
535 if(isWP==1) sign = mmax%2 ? 1 :-1;
536 if(isWP==2) sign = mmax%2 ? -1 : 1;
537 if(isWP==3) sign = mmax%2 ? -1 : 1;
538 if(isWP==4) sign = mmax%2 ? -1 : 1;
546 D00 = a00[0]+a90[1]+a90[2];
547 D90 = -a90[0]+a00[1]+a00[2];
549 D00 = -a00[0]+a90[1]+a90[2];
550 D90 = a90[0]+a00[1]+a00[2];
565 EMAX = (D00*D00+D90*D90);
569 A00[0]=d00[0];A90[0]=d90[0];
570 A00[1]=d00[1];A90[1]=d90[1];
571 A00[2]=d00[2];A90[2]=d90[2];
575 cout << 0 <<
" a00[0] : " << a00[0] <<
" a90[0] : " << a90[0] << endl;
576 cout << ishift <<
" A00[0] : " << A00[0] <<
" A90[0] : " << A90[0] << endl;
577 cout <<
"tshift : " << 1000*ishift/wsig[rmax].
rate() <<
" msec" << endl;
578 cout <<
"tmax : " << 1000*nsmp/wsig[rmax].
rate() <<
" msec" << endl;
579 a00[0]=A00[0];a90[0]=A90[0];
581 a00[1]=A00[1];a90[1]=A90[1];
582 a00[2]=A00[2];a90[2]=A90[2];
599 j00[0] = wdm[rmax]->
getBaseWave(itime,w00[0],
false)-ishift;
600 j90[0] = wdm[rmax]->
getBaseWave(itime,w90[0],
true)-ishift;
610 if(isWP==1) {nn=nmax+1; mm=mmax+1;}
611 if(isWP==2) {nn=nmax-1; mm=
mmax; }
612 if(isWP==3) {nn=nmax; mm=mmax+1;}
613 if(isWP==4) {nn=nmax-1; mm=mmax+1;}
615 itime = nn*layers + mm;
616 j00[1] = wdm[rmax]->
getBaseWave(itime,w00[1],
false)-ishift;
617 j90[1] = wdm[rmax]->
getBaseWave(itime,w90[1],
true)-ishift;
619 if(isWP==1) {nn=nmax-1; mm=mmax-1;}
620 if(isWP==2) {nn=nmax+1; mm=
mmax; }
621 if(isWP==3) {nn=nmax; mm=mmax-1;}
622 if(isWP==4) {nn=nmax+1; mm=mmax-1;}
624 itime = nn*layers + mm;
625 j00[2] = wdm[rmax]->
getBaseWave(itime,w00[2],
false)-ishift;
626 j90[2] = wdm[rmax]->
getBaseWave(itime,w90[2],
true)-ishift;
636 if(isWP==1) sign = mmax%2 ? 1 :-1;
637 if(isWP==2) sign = mmax%2 ? -1 : 1;
638 if(isWP==3) sign = mmax%2 ? -1 : 1;
639 if(isWP==4) sign = mmax%2 ? -1 : 1;
640 cout <<
" parity : " << sign << endl;
647 D00 = a00[0]+a90[1]+a90[2];
648 D90 = -a90[0]+a00[1]+a00[2];
650 D00 = -a00[0]+a90[1]+a90[2];
651 D90 = a90[0]+a00[1]+a00[2];
659 for(
int i=0;
i<w90[1].
size();
i++){
660 if(j90[1]+
i<0 || j90[1]+
i>=
x.size())
continue;
661 x.data[j90[1]+
i] += D00*w90[1][
i];
663 for(
int i=0;
i<w00[0].
size();
i++){
664 if(j00[0]+
i<0 || j00[0]+
i>=
x.size())
continue;
665 x.data[j00[0]+
i] += sign*D00*w00[0][
i];
667 for(
int i=0;
i<w90[2].
size();
i++){
668 if(j90[2]+
i<0 || j90[2]+
i>=
x.size())
continue;
669 x.data[j90[2]+
i] += D00*w90[2][
i];
675 for(
int i=0;
i<w00[1].
size();
i++){
676 if(j00[1]+
i<0 || j00[1]+
i>=
x.size())
continue;
677 x.data[j00[1]+
i] += D90*w00[1][
i];
679 for(
int i=0;
i<w90[0].
size();
i++){
680 if(j90[0]+
i<0 || j90[0]+
i>=
x.size())
continue;
681 x.data[j90[0]+
i] -= sign*D90*w90[0][
i];
683 for(
int i=0;
i<w00[2].
size();
i++){
684 if(j00[2]+
i<0 || j00[2]+
i>=
x.size())
continue;
685 x.data[j00[2]+
i] += D90*w00[2][
i];
690 for(
int i=0;
i<w00[0].
size();
i++){
691 if(j00[0]+
i<0 || j00[0]+
i>=
x.size())
continue;
692 x.data[j00[0]+
i] += factor*a00[0]*w00[0][
i];
694 for(
int i=0;
i<w90[0].
size();
i++){
695 if(j90[0]+
i<0 || j90[0]+
i>=
x.size())
continue;
696 x.data[j90[0]+
i] += factor*a90[0]*w90[0][
i];
714 pix->
data.push_back(pdata);
715 pwc->
pList.push_back(*pix);
718 for(
int i=0;
i<
x.size();
i++) rec.data[
i] +=
x[
i];
719 Erec=0.;
for(
int i=0;
i<rec.size();
i++) Erec+=rec[
i]*rec[
i];
734 cout <<
" Erec " << Erec <<
" Esig " << Esig
735 <<
" fabs(Esig-Erec)/Esig : " <<
fabs(Esig-Erec)/Esig
736 <<
" precision " << precision << endl;
738 out << Erec <<
" " << Esig <<
" " <<
fabs(Esig-Erec)/Esig <<
" " << precision << endl;
746 cout <<
"-----------------------------------------------------" << endl;
747 cout <<
"number of SW/nPC used in the PCA : " << nWP[0] <<
"/" << nPC << endl;
748 cout <<
"number of diagonal_WP/nPC used in the PCA : " << nWP[1] <<
"/" << nPC << endl;
749 cout <<
"number of horizontal_WP/nPC used in the PCA : " << nWP[2] <<
"/" << nPC << endl;
750 cout <<
"number of vertical_WP/nPC used in the PCA : " << nWP[3] <<
"/" << nPC << endl;
751 cout <<
"number of back-diagonal_WP/nPC used in the PCA : " << nWP[4] <<
"/" << nPC << endl;
753 cout <<
"output file : " << OUTPUT_FILE << endl;
755 cout <<
"-----------------------------------------------------" << endl;
763 WTS[1] =
new watplot(const_cast<char*>(
"wts1"));
764 WTS[1]->
plot(&wsig[PLOT_TFRES],
PLOT_TFTYPE, tbeg1, tend1, const_cast<char*>(
"COLZ"));
766 WTS[1]->
hist2D->GetZaxis()->SetRangeUser(0, hist2D_MAX);
771 for(
int i=0;
i<
npix;
i++) list.push_back(
i);
774 pwc->
cList.push_back(list);
775 pwc->
cRate.push_back(crate);
776 pwc->
cTime.push_back(ctime);
777 pwc->
cFreq.push_back(cfreq);
778 pwc->
sArea.push_back(varea);
779 pwc->
p_Map.push_back(vpmap);
780 pwc->
nTofF.push_back(vtof);
781 pwc->
p_Ind.push_back(vtmp);
782 pwc->
cData.push_back(cd);
784 WTS[2] =
new watplot(const_cast<char*>(
"wts2"));
785 WTS[2]->
plot(pwc, 1, 1,
'L', 0, const_cast<char*>(
"COLZ"));
788 #ifdef PLOT_REC_VS_INJ 827 for(
int n=iscratch;
n<slices-iscratch;
n++) {
828 for(
int m=2;
m<layers-2;
m++) {
832 double E = (a00[0]*a00[0]+a90[0]*a90[0]);
836 if(A>amax) {amax=
A; nmax=
n; mmax=
m; rmax=
i; isWP=0;}
837 if(A>Amax) {Amax=
A; Nmax=
n; Mmax=
m; Rmax=
i; A00=a00[0]; A90=a90[0];}
844 if(
l==0) {nn=
n+1; mm=
m+1;}
845 if(
l==1) {nn=
n-1; mm=
m; }
846 if(
l==2) {nn=
n; mm=
m+1;}
847 if(
l==3) {nn=
n-1; mm=
m+1;}
852 if(
l==0) {nn=
n-1; mm=
m-1;}
853 if(
l==1) {nn=
n+1; mm=
m; }
854 if(
l==2) {nn=
n; mm=
m-1;}
855 if(
l==3) {nn=
n+1; mm=
m-1;}
862 if(
l==0) sign =
m%2 ? 1 :-1;
863 if(
l==1) sign =
m%2 ? -1 : 1;
864 if(
l==2) sign =
m%2 ? -1 : 1;
865 if(
l==3) sign =
m%2 ? -1 : 1;
880 D00 = a00[0]+a90[1]+a90[2];
881 D90 = -a90[0]+a00[1]+a00[2];
883 D00 = -a00[0]+a90[1]+a90[2];
884 D90 = a90[0]+a00[1]+a00[2];
897 double E = (D00*D00+D90*D90);
901 if(A>amax) {amax=
A; nmax=
n; mmax=
m; rmax=
i; isWP=l+1;}
912 #ifdef LOAD_XTALK_CATALOG 915 for(
int level=l_high; level>=
l_low; level--) {
916 int layers = level>0 ? (1<<level)+1 : 0;
917 cout <<
"layers : " << layers << endl;
940 struct xtalk xt = wdmMRA.
getXTalk(layers, _n*layers+_m, layers, _nn*layers+_mm);
941 cout <<
"xtalk catalog : " <<
" (v,w) : " << xt.
CC[0] <<
" (v,W) : " << xt.
CC[1]
942 <<
" (V,w) : " << xt.
CC[2] <<
" (V,W) : " << xt.
CC[3] << endl;
956 for(
int k=0;
k<2;
k++) {
957 W00[
k]=
sig; W00[
k]=0;
959 if(
i+j00[
k]<0 ||
i+j00[
k]>W00[
k].
size())
continue;
960 W00[
k][
i+j00[
k]] = w00[
k][
i];
962 W90[
k]=
sig; W90[
k]=0;
964 if(
i+j90[
k]<0 ||
i+j90[
k]>W90[
k].
size())
continue;
965 W90[
k][
i+j90[
k]] = w90[
k][
i];
973 for(
int i=0;
i<W90[0].
size();
i++) {
974 vw+=W00[0][
i]*W00[1][
i];
975 vW+=W00[0][
i]*W90[1][
i];
976 Vw+=W90[0][
i]*W00[1][
i];
977 VW+=W90[0][
i]*W90[1][
i];
980 cout <<
"xtalk base waves : " <<
" (v,w) : " << vw <<
" (v,W) : " << vW
981 <<
" (V,w) : " << Vw <<
" (V,W) : " << VW << endl << endl;
982 cout <<
"wp_xtalk : " <<
" (v,w) : " << 0 <<
" (v,W) : " <<
wp_xtalk[0]
983 <<
" (V,w) : " << -
wp_xtalk[0] <<
" (V,W) : " << 0 << endl << endl;
1007 for(
int n=iscratch;
n<slices-iscratch;
n++) {
1008 for(
int m=2;
m<layers-2;
m++) {
1012 double E = (a00*a00+a90*a90);
1014 if(E<Ethr)
continue;
1023 vL.push_back(layers);
1033 int lmax = wsig[rmax].
maxLayer()+1;
1040 for(
int k=0;
k<vb.size();
k++) {
1046 xt = wdmMRA.
getXTalk(lmax, nmax*lmax+mmax, l, n*l+m);
1047 if(xt.
CC[0]>2)
continue;
1053 num+=b*(xt.
CC[0]*a+xt.
CC[2]*
A)+B*(xt.
CC[1]*a+xt.
CC[3]*A);
1054 den+=pow(xt.
CC[0]*a+xt.
CC[2]*A,2)+pow(xt.
CC[1]*a+xt.
CC[3]*A,2);
1059 cout <<
"q = " << q << endl;
1129 cout << endl <<
"Error : wp_xtalk coefficients are defined only for WDM_NU=2,4,6 !!!" << endl << endl;
int getBaseWave(int m, int n, SymmArray< double > &w)
gwavearray< double > * gsig
std::vector< vector_int > cRate
std::vector< WSeries< double > > vN[NIFO_MAX]
virtual void rate(double r)
wavearray< double > a(hp.size())
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
std::vector< vector_float > sArea
void SetInjLength(double inj_length=MDC_INJ_LENGTH)
std::vector< vector_int > cList
virtual void start(double s)
void setTDFilter(int nCoeffs, int L=1)
void plot(wavearray< double > &, char *=NULL, int=1, double=0., double=0., bool=false, float=0., float=0., bool=false, float=0., bool=false)
mdcid AddWaveform(MDC_TYPE mdc_type, vector< mdcpar > par, TString uname="")
double getPixelAmplitude(int, int, int, bool=false)
std::vector< vector_float > p_Map
virtual size_t size() const
int GetPrincipalComponent(double &amax, int &nmax, int &mmax, int &rmax)
xtalk getXTalk(int nLay1, size_t indx1, int nLay2, size_t indx2)
param: numbers of layers identifying the resolution of the first pixel param: TF map index of the fir...
std::vector< netpixel > pList
std::vector< vector_int > p_Ind
double GetPrincipalFactor(int nmax, int mmax, int rmax)
std::vector< float > cFreq
void read(char *filename)
param: file name
void SetTimeRange(double tMin, double tMax)
WSeries< double > wsig[PCA_NRES]
WDM< double > * wdm[PCA_NRES]
std::vector< float > cTime
virtual double mean() const
double fabs(const Complex &x)
waveform GetWaveform(int ID, int id=0)
void Forward(int n=-1)
param: wavelet - n is number of steps (-1 means full decomposition)
strcpy(RunLabel, RUN_LABEL)
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
std::vector< clusterdata > cData
DataType_t getSample(int n, double m)
virtual void resize(unsigned int)
gwavearray< double > * grec
void Draw(GWAT_DRAW type=GWAT_TIME, TString options="ALP", Color_t color=kBlack)
std::vector< vector_int > nTofF