105 size_t nj = w.
size()/ni;
108 size_t nl = size_t(2.*low*ni/w.wavearray<double>::rate());
109 size_t nh = size_t(2.*high*ni/w.wavearray<double>::rate());
111 if(nh>=ni) nh = ni-1;
114 int* TF =
new int[ni*nj];
126 cout<<
"wavecluster::constructor() size error: "<<nj<<endl;
129 if(a.
data[j]==0. || i<nl || i>nh) p[
j]=0;
133 if(!k) {
delete [] TF;
return 0; }
144 pix.
rate = float(w.wavearray<double>::rate()/
L);
147 size_t &
t = pix.
time;
158 if(p[j] != -1)
continue;
162 pList.push_back(pix);
174 for(f = i>0 ? i-1 : i; f<=
F; f++) {
176 for(t = j>0 ? j-1 : j; t<=
T; t++) {
177 if(!q[t]) {pList.push_back(pix); q[
t] = ++
L;}
185 std::vector<int>* pN;
186 size_t nL = pList.size();
191 i = pList[
k].frequency;
193 if(
int(i)>w.
maxLayer()) cout<<
"wavecluster::constructor() maxLayer error: "<<i<<endl;
202 pN = &(pList[
k].neighbors);
207 for(f = i>0 ? i-1 : i; f<=
F; f++) {
209 for(t = j>0 ? j-1 : j; t<=
T; t++) {
210 L = (f==i && t==
j) ? 0 : q[t];
211 if(L) pN->push_back(L-1);
230 size_t n = pList.size();
232 if(!pList.size())
return 0;
239 if(pList[i].clusterID)
continue;
240 pList[
i].clusterID = ++nCluster;
243 cRate.push_back(refMask);
244 refMask.resize(volume);
245 cList.push_back(refMask);
246 sCuts.push_back(
false);
249 list<vector_int>::iterator it;
251 if(!cList.size())
return 0;
253 for(it=cList.begin(); it != cList.end(); it++) {
258 if(pList[i].clusterID == nCluster) (*it)[m++] =
i;
261 if(it->size() !=
m) {
262 cout<<
"cluster::cluster() size mismatch error: ";
263 cout<<m<<
" size="<<it->size()<<
" "<<nCluster<<endl;
265 if(m==1 && !pList[(*it)[0]].
core) {
266 cout<<
"cluster::cluster() : empty cluster. \n";
267 cout<<pList[(*it)[0]].time<<
" "<<pList[(*it)[0]].frequency<<endl;
295 if(!pList.size() || !cList.size())
return 0;
302 list<vector_int>::iterator it;
311 for(it=x.
cList.begin(); it != x.
cList.end(); it++) {
313 pix = &(x.
pList[((*it)[0])]);
318 for(i=0; i<it->size(); i++) {
319 pix = &(x.
pList[((*it)[
i])]);
324 pList.push_back(*pix);
329 if(!i) cout<<
"wavecluster::cleanhalo() error: empty cluster.";
333 sCuts.push_back(
false);
339 pList[
id[i-1]].neighbors.push_back(
id[i]);
340 pList[
id[
i]].neighbors.push_back(
id[i-1]);
355 size_t N = w.
size()-1;
356 size_t M = pList.size();
365 offset =
fabs(offset);
367 printf(
"wavecluster::apush: start time mismatch: dT=%16.13f",
start-w.
start());
382 rate = w.wavearray<double>::rate()/
m;
383 ofFSet = size_t(offset*w.wavearray<double>::rate()+0.5);
385 if(
int(p->
rate+0.1) !=
int(rate+0.1)) {
390 if((ofFSet/m)*m != ofFSet)
391 cout<<
"wavecluster::apush(): illegal offset "<<ofFSet<<
" m="<<m<<
"\n";
394 a = j>N ? 0. : w.
data[
j];
398 return pList[0].amplitude.size();
408 size_t on = pList.size();
409 size_t im = w.
cList.size();
410 size_t om = cList.size();
412 if(!in) {
return on; }
413 if(!on) { *
this =
w;
return in; }
419 printf(
"\n wavecluster::append(): cluster type mismatch");
427 for(i=0; i<
in; i++) w.
pList[i].clusterID=0;
430 sCuts.clear(); cList.clear(); om=0;
431 for(i=0; i<on; i++) pList[i].clusterID=0;
439 for(k=0; k<
n; k++) (*v)[
k] += on;
444 if(!im)
return pList.size();
446 list<vector_int>::iterator it;
449 for(it=w.
cList.begin(); it != w.
cList.end(); it++) {
451 for(i=0; i<it->size(); i++) {
455 cList.push_back(*it);
456 sCuts.push_back(w.
sCuts[n++]);
468 size_t n = pList.size();
487 for(i=0; i<
n; i++) { pp[
i] = &(pList[
i]); pp[
i]->
index =
i; }
495 if(!p->
core)
continue;
499 for(j=i+1; j<
n; j++){
505 if(qtime<ptime) cout<<
"wavecluster::merge() error"<<endl;
507 if(qtime-ptime > 1.)
break;
508 if(qtime-ptime > eps)
continue;
514 if(
fabs(pfreq-qfreq) > eps)
continue;
523 if((*v)[k] == l) {insert=
false;
break;}
525 if(insert) v->push_back(l);
534 if((*v)[k] == l) {insert=
false;
break;}
536 if(insert) v->push_back(l);
546 std::list<vector_int>::iterator it;
548 std::vector<int>
rate;
549 std::vector<int> temp;
550 std::vector<int> sIZe;
551 std::vector<bool> cuts;
552 std::vector<double> ampl;
553 std::vector<double> amax;
554 std::vector<double> sigf;
555 std::vector<double>* pa;
563 for(it=cList.begin(); it != cList.end(); it++) {
565 if(!k) cout<<
"wavecluster::merge() error: empty cluster.\n";
578 ID = pList[((*it)[0])].clusterID;
581 pix = &(pList[((*it)[
i])]);
582 if(!pix->
core)
continue;
584 a = pa->size()>1 ? pow((*pa)[1],2) : (*pa)[0];
587 for(j=0; j<rate.size(); j++) {
588 if(rate[j] ==
int(pix->
rate+0.1)) {
593 if(a>amax[j]) amax[
j] =
a;
598 rate.push_back(
int(pix->
rate+0.1));
602 cuts.push_back(
true);
603 sigf.push_back((*pa)[0]);
609 cout<<
"wavecluster::merge() error: cluster ID mismatch.\n";
614 if(!rate.size()) { cout<<
"k="<<k<<
" id="<<ID<<endl;
continue; }
615 if(rate.size()<2 || m<=2){ sCuts[ID-1] =
true;
continue; }
617 sCuts[ID-1] = (
gammaCL(E,m) >
S) ?
false :
true;
621 for(i=0; i<rate.size(); i++) {
622 for(j=0; j<rate.size(); j++) {
623 if(rate[i]/2==rate[j] || rate[j]/2==rate[i]) {
624 cuts[
i] = cuts[
j] = cut =
false;
628 if(cut || sCuts[ID-1]) { sCuts[ID-1] =
true;
continue; }
633 for(j=0; j<rate.size(); j++) {
634 if(ampl[j]-sIZe[j]>a && !cuts[j]) {max=
j; a=ampl[
j]-sIZe[
j];}
638 for(j=0; j<rate.size(); j++) {
640 if(ampl[j]-sIZe[j]>a && !cuts[j]) {min=
j; a=ampl[
j]-sIZe[
j];}
643 temp.push_back(rate[max]);
644 temp.push_back(rate[min]);
660 size_t ik = w.
asize();
663 if(!ik || !ok)
return 0;
675 size_t on = tou.
size();
684 window = 0.5/rou[
i]+0.5/rin[
j];
685 if(window<T) window =
T;
686 if(
fabs(tou.
data[i]-tin.
data[j])<window) { cut=
false;
break; }
688 if(cut) sCuts[
int(cid[i]-0.5)] =
true;
702 size_t M = pList.size();
707 int wsize = w.
size()/max_layer;
708 double wstart = w.
start();
709 double wrate = w.wavearray<double>::rate();
710 double deltaF = w.
gethigh()/max_layer;
717 if(!M || !w.
size())
return;
725 C = f<fl ?
true :
false;
727 n = size_t(f/deltaF);
729 m =
size_t(f/deltaF);
731 k =
int((t-wstart)*wrate);
733 if(k>=wsize) k -= k ? 1 : 0;
734 if(k<0 || n>=m || k>=wsize) {
735 cout<<
"wavecluster::setrms() - invalid input\n";
746 r /= double(m)-double(n);
759 size_t M = pList.size();
763 int wsize = w.
size();
764 double wstart = w.
start();
767 if(!M || !w.
size())
return;
775 if(f>=fh && f+p->
rate/2. >fh)
continue;
776 if(f <fl && f+p->
rate/2.<=fl)
continue;
781 if(k>=wsize) k -= k ? 1 : 0;
782 if(k<0 || k>=wsize) {
783 cout<<
"wavecluster::setvar() - invalid input\n";
795 if(!nRMS.size())
return 1.;
798 size_t M = nRMS.maxLayer()+1;
799 size_t n = size_t(fl/(nRMS.gethigh()/
M));
800 size_t m = size_t(fh/(nRMS.gethigh()/
M));
806 int inRMS =
int((t-nRMS.start())*nRMS.rate());
807 int inVAR = nVAR.size() ?
int((t-nVAR.start())*nVAR.rate()) : 0;
809 if(inRMS>=
int(nRMS.size()/
M)) inRMS -= inRMS ? 1 : 0;
810 if(inVAR>=
int(nVAR.size())) inVAR -= inVAR ? 1 : 0;
812 if(inRMS<0 || inVAR<0 || n>=m ||
813 inRMS >=
int(nRMS.size()/
M) ||
814 inVAR >=
int(nVAR.size()))
816 cout<<
"wavecluster::getNoiseRMS() - invalid pixel time\n";
821 S = nRMS.getSlice(i);
825 rms /= double(m)-double(n);
828 if(!nVAR.size() || fh<low || fl>high)
return rms;
830 return rms*double(nVAR.data[inVAR]);
839 if(!cList.size())
return out;
853 list<vector_int>::iterator it;
855 size_t M = pList.size();
856 size_t m = abs(index);
866 if(strstr(name,
"ID")) c =
'i';
867 if(strstr(name,
"size")) c =
'k';
868 if(strstr(name,
"volume")) c =
'v';
869 if(strstr(name,
"start")) c =
's';
870 if(strstr(name,
"stop")) c =
'd';
871 if(strstr(name,
"low")) c =
'l';
872 if(strstr(name,
"high")) c =
'h';
873 if(strstr(name,
"time")) c =
't';
874 if(strstr(name,
"TIME")) c =
'T';
875 if(strstr(name,
"freq")) c =
'f';
876 if(strstr(name,
"FREQ")) c =
'F';
877 if(strstr(name,
"energy")) c =
'e';
878 if(strstr(name,
"like")) c =
'Y';
879 if(strstr(name,
"sign")) c =
'z';
880 if(strstr(name,
"corr")) c =
'x';
881 if(strstr(name,
"asym")) c =
'a';
882 if(strstr(name,
"grand")) c =
'g';
883 if(strstr(name,
"rate")) c =
'r';
884 if(strstr(name,
"SNR")) c =
'S';
885 if(strstr(name,
"hrss")) c =
'H';
886 if(strstr(name,
"noise")) c =
'n';
888 if(c==
'0')
return out;
892 for(it=cList.begin(); it!=cList.end(); it++){
894 ID = pList[((*it)[0])].clusterID;
895 if(sCuts[ID-1])
continue;
897 it_size = it->size();
902 rate = type && type<=pv->size()? (*pv)[type-1] : 0;
906 for(k=0; k<it_size; k++) {
909 if(!pList[M].
core)
continue;
910 if(rate &&
int(pList[M].rate+0.1)!=rate)
continue;
915 if(!it_core)
continue;
921 out.
data[out_size++] = pList[
M].clusterID;
925 out.
data[out_size++] = float(it_core);
929 for(k=0; k<it_size; k++){
931 if(!skip.
data[k])
break;
933 out.
data[out_size++] = pList[
M].rate;
939 for(k=0; k<it_size; k++){
942 if(skip.
data[k])
continue;
945 x = pList[
M].amplitude[m-1];
949 if(c ==
'a') out.
data[out_size++] = (float(mp)-float(mm))/(mp+mm);
958 for(k=0; k<it_size; k++){
961 if(skip.
data[k])
continue;
964 x = pList[
M].amplitude[m-1];
966 if(c==
'Y' || c==
'z') y += pow(
fabs(x)+1.11/2,2)/2./1.07 +
log(
bpp);
967 else if(c==
'S') y += x*x-1.;
968 else if(c==
'e') y += x*
x;
971 if(c==
'Y' || c==
'z') y +=
fabs(x);
972 else if(c==
'S') y += pow(sqrt(2*1.07*(
fabs(x)-
log(
bpp)))-1.11/2.,2)-1.;
973 else if(c==
'e') y += pow(sqrt(2*1.07*(
fabs(x)-
log(
bpp)))-1.11/2.,2);
981 for(k=0; k<it_size; k++){
984 if(skip.
data[k])
continue;
990 out.
data[out_size++] =
y;
997 for(k=0; k<it_size; k++){
999 if(skip.
data[k])
continue;
1000 y = 1./pList[
M].
rate;
1001 x = y * pList[
M].time;
1005 out.
data[out_size++] = (c==
's') ? a : b;
1012 for(k=0; k<it_size; k++){
1014 if(skip.
data[k])
continue;
1015 y = pList[
M].rate/2.;
1016 x = y * pList[
M].frequency;
1020 out.
data[out_size++] = (c==
'l') ? a : b;
1029 for(k=0; k<it_size; k++) {
1032 if(skip.
data[k])
continue;
1035 r = pList[
M].variability;
1036 if(c ==
'T' || c ==
'F') {
1040 r *= pList[
M].noiserms;
1043 x = pList[
M].amplitude[m-1];
1044 t = 1./pList[
M].rate;
1049 x = pow(sqrt(2*1.07*(
fabs(x)-
log(
bpp)))-1.11/2.,2)-1.;
1053 if(c ==
't' || c ==
'T'){
1055 a += (pList[
M].time+0.5)*
x;
1056 b += x*pList[
M].rate;
1060 a += (pList[
M].frequency+0.5)*
x;
1061 b += x*2./pList[
M].rate;
1065 out.
data[out_size++] = b>0. ? a/b : -1.;
1073 out.
data[out_size] = 0.;
1076 for(k=0; k<it_size; k++) {
1079 if(skip.
data[k])
continue;
1088 r = pList[
M].variability*pList[
M].noiserms;
1093 sum += a<0. ? 0. : a*r*
r;
1101 if(c ==
'n') { sum = double(mp)/sum; }
1102 out.
data[out_size++] = float(
log(sum)/2./
log(10.));
1107 out.
data[out_size++] = it_size;
1119 #if !defined (__SUNPRO_CC)
1123 register int* q = NULL;
1124 register int* p = NULL;
1137 int nj = w.
size()/ni;
1145 for(i=0; i<ni; i++){
1151 for(j=0; j<nj; j++){
1152 p[
j] = (a.
data[
j]!=0) ? 1 : 0;
1162 if(!nc || ni<3 || nPixel<2)
return double(nPixel)/double(
size());
1167 if(FT[0][0]) XY[0][0] = FT[0][1] + FT[1][0] + FT[1][1];
1168 if(FT[0][m]) XY[0][
m] = FT[1][
m] + FT[1][m-1] + FT[0][m-1];
1169 if(FT[n][0]) XY[
n][0] = FT[n-1][0] + FT[n-1][1] + FT[
n][1];
1170 if(FT[n][m]) XY[
n][
m] = FT[
n][m-1] + FT[n-1][
m] + FT[n-1][m-1];
1179 XY[0][
j] = p[j-1]+p[j+1] + pp[j-1]+pp[
j]+pp[j+1];
1183 XY[
n][
j] = q[j-1]+q[j+1] + pm[j-1]+pm[
j]+pm[j+1];
1188 pm = FT[i-1]; p = FT[
i]; pp = FT[i+1]; q = XY[
i];
1191 q[0] = p[1] + pm[0]+pm[1] + pp[0]+pp[1];
1194 q[
m] = p[m-1] + pm[
m]+pm[m-1] + pp[
m]+pp[m-1];
1198 q[
j] = pm[j-1]+pm[
j]+pm[j+1] + pp[j-1]+pp[
j]+pp[j+1] + p[j-1]+p[j+1];
1210 x = XY[0][1] + XY[1][0] + XY[1][1];
1211 if(x==1 || x==4) XY[0][0]=XY[0][1]=XY[1][0]=XY[1][1]=0;
1214 x = XY[1][
m] + XY[1][m-1] + XY[0][m-1];
1215 if(x==1 || x==4) XY[0][
m]=XY[1][
m]=XY[1][m-1]=XY[0][m-1]=0;
1218 x = XY[n-1][0] + XY[n-1][1] + XY[
n][1];
1219 if(x==1 || x==4) XY[
n][0]=XY[n-1][0]=XY[n-1][1]=XY[
n][1]=0;
1222 x = XY[n-1][
m] + XY[
n][m-1] + XY[n-1][m-1];
1223 if(x==1 || x==4) XY[
n][
m]=XY[n-1][
m]=XY[
n][m-1]=XY[n-1][m-1]=0;
1231 if(p[j]==1 || p[j]==2){
1232 if(p[j-1]+p[j+1] < 4){
1234 L = p[j-1]+p[j+1] + pp[
j];
1235 x = pp[j-1] + pp[j+1] +
L;
1237 if(x==1 || (p[j]==2 && nc>2 && (x==2 || (x==4 && L==4))))
1238 p[
j]=p[j-1]=p[j+1]=pp[j-1]=pp[
j]=pp[j+1]=0;
1242 if(q[j]==1 || q[j]==2){
1243 if(q[j-1]+q[j+1] < 4){
1245 L = q[j-1]+q[j+1] + pm[
j];
1246 x = pm[j-1] + pm[j+1] +
L;
1248 if(x==1 || (q[j]==2 && nc>2 && (x==2 || (x==4 && L==4))))
1249 q[
j]=q[j-1]=q[j+1]=pm[j-1]=pm[
j]=pm[j+1]=0;
1261 if(p[0]==1 || p[0]==2){
1262 if(pm[0]+pp[0] < 4){
1263 L = p[1] + pm[0] + pp[0];
1264 x = pm[1] + pp[1] +
L;
1266 if(x==1 || (p[0]==2 && nc>2 && (x==2 || (x==4 && L==4))))
1267 p[0]=pm[0]=pp[0]=pm[1]=pp[1]=p[1]=0;;
1271 if(p[m]==1 || p[m]==2){
1272 if(pm[m]+pp[m] < 4){
1273 L = p[m-1] + pm[
m] + pp[
m];
1274 x = pm[m-1] + pp[m-1] +
L;
1276 if(x==1 || (p[m]==2 && nc>2 && (x==2 || (x==4 && L==4))))
1277 p[
m]=pm[
m]=pp[
m]=pm[m-1]=pp[m-1]=p[m-1]=0;
1283 if(y == 1 || y == 2){
1284 if(pm[j]+pp[j] >3)
continue;
1285 if(p[j-1]+p[j+1] >3)
continue;
1287 L = pm[
j]+pp[
j] + p[j-1]+p[j+1];
1288 x = pm[j-1]+pm[j+1] + pp[j-1]+pp[j+1] +
L;
1290 if(x==1 || (y==2 && nc>2 && (x==2 || (x==4 && L==4))))
1291 p[
j]=p[j-1]=p[j+1]=pm[j-1]=pm[
j]=pm[j+1]=pp[j-1]=pp[
j]=pp[j+1]=0;
1305 pix.
rate = float(w.wavearray<double>::rate()/
L);
1308 size_t &
t = pix.
time;
1312 for(i=0; i<ni; i++){
1313 p = FT[
i]; q = XY[
i];
1318 for(i=0; i<ni; i++){
1321 for(j=0; j<nj; j++){
1325 pList.push_back(pix);
1332 t=j-1; f=i-1;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1335 t=
j; f=i-1;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1338 t=j+1; f=i-1;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1341 t=j-1; f=
i;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1344 t=j+1; f=
i;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1347 t=j-1; f=i+1;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1350 t=
j; f=i+1;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1353 t=j+1; f=i+1;
if(!FT[f][t]) {pList.push_back(pix); FT[
f][
t] = ++
L;}
1361 register std::vector<int>* pN;
1362 int nM = pList.size();
1365 for(k=0; k<nM; k++){
1368 i = pList[
k].frequency;
1370 if(
int(i)>w.
maxLayer()) cout<<
"cluster::setMask() maxLayer error: "<<i<<endl;
1372 pList[
k].amplitude.clear();
1376 pN = &(pList[
k].neighbors);
1380 if(i==0){ p = FT[0]; q = FT[1];}
1381 if(i==n){ p = FT[
n]; q = FT[n-1];}
1384 if(p[1]) pN->push_back(p[1]-1);
1385 if(q[1]) pN->push_back(q[1]-1);
1386 if(q[0]) pN->push_back(q[0]-1);
1389 if(p[m-1]) pN->push_back(p[m-1]-1);
1390 if(q[m-1]) pN->push_back(q[m-1]-1);
1391 if(q[m]<0) pN->push_back(q[m]-1);
1394 if(p[j-1]) pN->push_back(p[j-1]-1);
1395 if(p[j+1]) pN->push_back(p[j+1]-1);
1396 if(q[j-1]) pN->push_back(q[j-1]-1);
1397 if(q[j]) pN->push_back(q[j]-1);
1398 if(q[j+1]) pN->push_back(q[j+1]-1);
1408 if(pm[0]) pN->push_back(pm[0]-1);
1409 if(pp[0]) pN->push_back(pp[0]-1);
1410 if( p[1]) pN->push_back(p[1]-1);
1411 if(pm[1]) pN->push_back(pm[1]-1);
1412 if(pp[1]) pN->push_back(pp[1]-1);
1415 if(pm[m]) pN->push_back(pm[m]-1);
1416 if(pp[m]) pN->push_back(pp[m]-1);
1417 if( p[m-1]) pN->push_back(p[m-1]-1);
1418 if(pm[m-1]) pN->push_back(pm[m-1]-1);
1419 if(pp[m-1]) pN->push_back(pp[m-1]-1);
1422 if(pm[j-1]) pN->push_back(pm[j-1]-1);
1423 if(pm[j]) pN->push_back(pm[j]-1);
1424 if(pm[j+1]) pN->push_back(pm[j+1]-1);
1425 if( p[j-1]) pN->push_back(p[j-1]-1);
1426 if( p[j+1]) pN->push_back(p[j+1]-1);
1427 if(pp[j-1]) pN->push_back(pp[j-1]-1);
1428 if(pp[j]) pN->push_back(pp[j]-1);
1429 if(pp[j+1]) pN->push_back(pp[j+1]-1);
1433 L = pList[
k].neighbors.size();
1434 x = pList[
k].core ? XY[
i][
j] :
L;
1435 if((x != L && !halo) || L>8){
1436 cout<<
"cluster::getMask() vector size error: "<<L<<
" reserved: "<<x<<endl;
1437 cout<<
"k="<<k<<
" i="<<i<<
" j="<<j<<endl;
1441 return double(pList.size())/
double(
size());
wavearray< double > t(hp.size())
std::vector< vector_int > cRate
std::vector< int > vector_int
virtual size_t size() const
virtual size_t append(wavecluster &)
param: input cluster list return size of appended list
double gammaCL(double x, double n)
virtual size_t cluster()
return number of clusters
printf("total live time: non-zero lags = %10.1f \n", liveTot)
double min(double x, double y)
virtual void rate(double r)
std::vector< pixel > cluster
wavearray< double > a(hp.size())
wavearray< float > get(char *, int=0, size_t=0)
param: string with parameter name param: amplitude field index param: rate index, if 0 ignore rate fo...
std::vector< wavepixel > pList
wavecluster & operator=(const wavecluster &)
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<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t 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
virtual double setMask(WSeries< double > &, int=1, bool=false)
param: max number of pixels in clusters to be cleaned (<4); param: false - core only, true - core + halo return pixel occupancy
std::slice getSlice(double n)
virtual size_t init(WSeries< double > &, bool=false)
param: false - core only, true - core + halo return cluster list size
virtual void start(double s)
double signPDF(const size_t m, const size_t k)
virtual size_t coincidence(wavecluster &, double=1.)
param: input cluster list return size of the coincidence list
void setvar(wavearray< float > &, double=-1., double=-1.)
int compare_pix(const void *x, const void *y)
int getLayer(wavearray< DataType_t > &w, double n)
param: n - layer number
virtual size_t merge(double=0.)
param: non return size of merged list
void setrms(WSeries< double > &, double=-1., double=-1.)
virtual size_t apush(WSeries< double > &a, double=0.)
param: this and WSeries objects should have the same tree type and the approximation level size param...
virtual size_t cleanhalo(bool=false)
param: if true - de-cluster pixels return size of the list
double fabs(const Complex &x)
Meyer< double > S(1024, 2)
WaveDWT< DataType_t > * pWavelet
std::vector< double > amplitude
double getNoiseRMS(double, double, double)
param: pixel time, sec param: pixel low frequency param: pixel high frequency
virtual void resize(unsigned int)
std::vector< int > neighbors
std::list< vector_int > cList
std::vector< bool > sCuts