48 printf(
"WDMOverlap::WDMOverlap : layers not ordered properly, exit\n");
56 catalog =
new (
struct ovlArray (**[nRes])[2] );
57 for(i=0; i<nRes; ++
i) catalog[i] =
new (
struct ovlArray (*[i+1])[2]);
58 for(i=0; i<nRes; ++
i)
for(j=0; j<=
i; ++
j){
59 catalog[
i][
j] =
new struct ovlArray [layers[i]+1][2];
62 int step1 = wdm[
i]->getTDFunction(1, 1, td1A);
63 int last1 = td1A.
Last();
65 int step2 = wdm[
j]->getTDFunction(1, 1, td2A_odd);
66 int last2 = td2A_odd.
Last();
68 int maxN = (last1 + last2 + step1 + 1)/step2 + 1;
69 for(k=0; k<=layers[
i]; ++
k)
for(
int l=0;
l<2; ++
l){
70 wdm[
i]->getTDFunction(k ,
l, td1A);
71 wdm[
i]->getTDFunctionQ(k ,
l, td1Q);
74 for(
int m = 0;
m<=layers[
j]; ++
m){
75 wdm[
j]->getTDFunction(
m, 0, td2A_even);
76 wdm[
j]->getTDFunction(
m, 1, td2A_odd);
77 wdm[
j]->getTDFunctionQ(
m, 0, td2Q_even);
78 wdm[
j]->getTDFunctionQ(
m, 1, td2Q_odd);
80 for(
int n = -maxN;
n<=maxN; ++
n){
84 if(shift - last2> left) left = shift - last2;
86 if(shift + last2<right)right = shift + last2;
87 if(left>right)
continue;
99 T ovlpAA = 0, ovlpAQ = 0, ovlpQA = 0, ovlpQQ = 0;
101 for(
int q=left; q<=right; ++q){
102 ovlpAA += td1A[q]*(*ptd2A)[q-
shift];
103 ovlpQA += td1Q[q]*(*ptd2A)[q-
shift];
104 ovlpAQ += td1A[q]*(*ptd2Q)[q-
shift];
105 ovlpQQ += td1Q[q]*(*ptd2Q)[q-
shift];
118 if(
fabs(ovlpAA)> minOvlp ||
fabs(ovlpAQ)> minOvlp ||
119 fabs(ovlpQA)> minOvlp ||
fabs(ovlpQQ)> minOvlp ){
120 tmp[nOvlp].
ovlpAA = ovlpAA;
123 tmp[nOvlp].
ovlpAQ = ovlpAQ;
124 tmp[nOvlp].
ovlpQA = ovlpQA;
125 tmp[nOvlp].
ovlpQQ = ovlpQQ;
126 tmp[nOvlp].
index =
n*(layers[
j]+1) +
m;
131 if(nOvlp>10000)
printf(
"ERROR, tmp array too small\n");
134 for(
int n = 0;
n<nOvlp; ++
n) catalog[i][j][k][
l].data[
n] = tmp[
n];
135 catalog[
i][
j][
k][
l].size = nOvlp;
140 printf(
"total stored overlaps = %d\n", totOvlps);
141 for(
int i=0; i<nRes; ++
i)
delete wdm[i];
156 catalog = new (
struct ovlArray (**[nRes])[2] );
157 for(
int i=0;
i<nRes; ++
i){
158 catalog[
i] =
new (
struct ovlArray (*[
i+1])[2]);
159 for(
int j=0;
j<=
i; ++
j){
160 catalog[
i][
j] =
new struct ovlArray [layers[i]+1][2];
161 for(
int k = 0;
k<=layers[
i]; ++
k)
for(
int l=0;
l<2; ++
l){
166 for(
int kk = 0; kk< oa.size ; ++kk)oa.data[kk] = xoa.
data[kk];
181 if(nRes)deallocate();
182 FILE*
f = fopen(fn,
"r");
184 fread(&tmp,
sizeof(
float), 1, f);
187 for(
int i=0;
i<nRes; ++
i){
188 fread(&tmp,
sizeof(
float), 1, f);
193 catalog =
new (
struct ovlArray (**[nRes])[2] );
194 for(
int i=0;
i<nRes; ++
i){
195 catalog[
i] =
new (
struct ovlArray (*[
i+1])[2]);
196 for(
int j=0;
j<=
i; ++
j){
197 catalog[
i][
j] =
new struct ovlArray [layers[i]+1][2];
198 for(
int k = 0;
k<=layers[
i]; ++
k)
for(
int l=0;
l<2; ++
l){
200 fread(&tmp,
sizeof(
float), 1, f);
203 fread(oa.data,
sizeof(
struct overlaps), oa.size, f);
213 FILE*
f = fopen(fn,
"w");
215 fwrite(&aux,
sizeof(
float), 1, f);
216 for(
int i=0;
i<nRes; ++
i){
218 fwrite(&aux,
sizeof(
float), 1, f);
221 for(
int i=0;
i<nRes; ++
i)
for(
int j=0;
j<=
i; ++
j)
225 fwrite(&aux,
sizeof(
float), 1, f);
235 for(
int i=0;
i<nRes; ++
i){
236 for(
int j=0;
j<=
i; ++
j){
238 delete [] catalog[
i][
j][
k][0].data;
239 delete [] catalog[
i][
j][
k][1].data;
241 delete [] catalog[
i][
j];
243 delete [] catalog[
i];
259 for(r1 = 0; r1<nRes; ++r1)
if(nLayer1 ==
layers[r1]+1)
break;
260 for(r2 = 0; r2<nRes; ++
r2)
if(nLayer2 ==
layers[r2]+1)
break;
261 if(r1==nRes || r2 == nRes)
printf(
"WDMOverlap::getOverlap : resolution not found\n");
273 int freq1 = indx1%(
layers[r1]+1);
278 int32_t
index = (int32_t)indx2;
281 struct ovlArray& vector = catalog[r1][
r2][freq1][odd];
283 ret = vector.
data[
i];
300 struct overlaps res = getOverlap(nLayer1, indx1, nLayer2, indx2);
303 if(quad2)
return res.
ovlpQQ;
306 if(quad2)
return res.
ovlpAQ;
314 vector<int>& pIndex = pwc->
cList[clIndex];
315 vector<vector<struct overlaps> >* qq = (vector<vector<struct overlaps> >*)q;
316 for(
int j=0;
j<V; ++
j){
318 size_t indx1 = pix.
time;
321 std::vector<struct overlaps>
tmp;
322 for(
int k = 0;
k<V; ++
k){
325 if(tmpOvlps.
ovlpAA>2)
continue;
327 tmp.push_back(tmpOvlps);
370 #define CLASS_INSTANTIATION(class_) template class WDMOverlap< class_ >; 375 #undef CLASS_INSTANTIATION
struct overlaps getOverlap(int nLay1, size_t indx1, int nLay2, size_t indx2)
param: defines resolution 1 (by number of layers) param: defines pixel 1 at resolution 1 param: defin...
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
WDM< double > wdm(nLAYERS, nLAYERS, 6, 10)
std::vector< vector_int > cList
cout<< "SNR "<< xsnr<< endl;wavearray< double > f
std::vector< netpixel > pList
void read(char *filename)
param: filename
printf("total live time: non-zero lags = %10.1f \, liveTot)
void write(char *filename)
param: filename
void getClusterOverlaps(netcluster *pwc, int clIndex, int nPix, void *q)
param: pointer to netcluster structure param: which cluster to process param: number of pixels to pro...
double fabs(const Complex &x)
struct ovlArray(*** catalog)[2]
#define CLASS_INSTANTIATION(class_)