30 printf(
"WDMOverlap::WDMOverlap : layers not ordered properly, exit\n");
38 catalog =
new (
struct ovlArray (**[nRes])[2] );
39 for(i=0; i<nRes; ++
i) catalog[i] =
new (
struct ovlArray (*[i+1])[2]);
40 for(i=0; i<nRes; ++
i)
for(j=0; j<=
i; ++
j){
41 catalog[
i][
j] =
new struct ovlArray [layers[i]+1][2];
44 int step1 = wdm[
i]->getTDFunction(1, 1, td1A);
45 int last1 = td1A.
Last();
47 int step2 = wdm[
j]->getTDFunction(1, 1, td2A_odd);
48 int last2 = td2A_odd.
Last();
50 int maxN = (last1 + last2 + step1 + 1)/step2 + 1;
51 for(k=0; k<=layers[
i]; ++
k)
for(
int l=0;
l<2; ++
l){
52 wdm[
i]->getTDFunction(k ,
l, td1A);
53 wdm[
i]->getTDFunctionQ(k ,
l, td1Q);
56 for(
int m = 0;
m<=layers[
j]; ++
m){
57 wdm[
j]->getTDFunction(
m, 0, td2A_even);
58 wdm[
j]->getTDFunction(
m, 1, td2A_odd);
59 wdm[
j]->getTDFunctionQ(
m, 0, td2Q_even);
60 wdm[
j]->getTDFunctionQ(
m, 1, td2Q_odd);
62 for(
int n = -maxN;
n<=maxN; ++
n){
66 if(shift - last2> left) left = shift - last2;
68 if(shift + last2<right)right = shift + last2;
69 if(left>right)
continue;
81 T ovlpAA = 0, ovlpAQ = 0, ovlpQA = 0, ovlpQQ = 0;
83 for(
int q=left; q<=right; ++q){
84 ovlpAA += td1A[q]*(*ptd2A)[q-
shift];
85 ovlpQA += td1Q[q]*(*ptd2A)[q-
shift];
86 ovlpAQ += td1A[q]*(*ptd2Q)[q-
shift];
87 ovlpQQ += td1Q[q]*(*ptd2Q)[q-
shift];
100 if(
fabs(ovlpAA)> minOvlp ||
fabs(ovlpAQ)> minOvlp ||
101 fabs(ovlpQA)> minOvlp ||
fabs(ovlpQQ)> minOvlp ){
102 tmp[nOvlp].
ovlpAA = ovlpAA;
105 tmp[nOvlp].
ovlpAQ = ovlpAQ;
106 tmp[nOvlp].
ovlpQA = ovlpQA;
107 tmp[nOvlp].
ovlpQQ = ovlpQQ;
108 tmp[nOvlp].
index =
n*(layers[
j]+1) +
m;
113 if(nOvlp>10000)
printf(
"ERROR, tmp array too small\n");
116 for(
int n = 0;
n<nOvlp; ++
n) catalog[i][j][k][
l].data[
n] = tmp[
n];
117 catalog[
i][
j][
k][
l].size = nOvlp;
122 printf(
"total stored overlaps = %d\n", totOvlps);
123 for(
int i=0; i<nRes; ++
i)
delete wdm[i];
138 catalog = new (
struct ovlArray (**[nRes])[2] );
139 for(
int i=0;
i<nRes; ++
i){
140 catalog[
i] =
new (
struct ovlArray (*[
i+1])[2]);
141 for(
int j=0;
j<=
i; ++
j){
142 catalog[
i][
j] =
new struct ovlArray [layers[i]+1][2];
143 for(
int k = 0;
k<=layers[
i]; ++
k)
for(
int l=0;
l<2; ++
l){
148 for(
int kk = 0; kk< oa.size ; ++kk)oa.data[kk] = xoa.
data[kk];
163 if(nRes)deallocate();
164 FILE*
f = fopen(fn,
"r");
166 fread(&tmp,
sizeof(
float), 1, f);
169 for(
int i=0;
i<nRes; ++
i){
170 fread(&tmp,
sizeof(
float), 1, f);
175 catalog =
new (
struct ovlArray (**[nRes])[2] );
176 for(
int i=0;
i<nRes; ++
i){
177 catalog[
i] =
new (
struct ovlArray (*[
i+1])[2]);
178 for(
int j=0;
j<=
i; ++
j){
179 catalog[
i][
j] =
new struct ovlArray [layers[i]+1][2];
180 for(
int k = 0;
k<=layers[
i]; ++
k)
for(
int l=0;
l<2; ++
l){
182 fread(&tmp,
sizeof(
float), 1, f);
185 fread(oa.data,
sizeof(
struct overlaps), oa.size, f);
195 FILE*
f = fopen(fn,
"w");
197 fwrite(&aux,
sizeof(
float), 1, f);
198 for(
int i=0;
i<nRes; ++
i){
200 fwrite(&aux,
sizeof(
float), 1, f);
203 for(
int i=0;
i<nRes; ++
i)
for(
int j=0;
j<=
i; ++
j)
207 fwrite(&aux,
sizeof(
float), 1, f);
217 for(
int i=0;
i<nRes; ++
i){
218 for(
int j=0;
j<=
i; ++
j){
220 delete [] catalog[
i][
j][
k][0].data;
221 delete [] catalog[
i][
j][
k][1].data;
223 delete [] catalog[
i][
j];
225 delete [] catalog[
i];
241 for(r1 = 0; r1<nRes; ++r1)
if(nLayer1 ==
layers[r1]+1)
break;
242 for(r2 = 0; r2<nRes; ++
r2)
if(nLayer2 ==
layers[r2]+1)
break;
243 if(r1==nRes || r2 == nRes)
printf(
"WDMOverlap::getOverlap : resolution not found\n");
255 int freq1 = indx1%(
layers[r1]+1);
260 int32_t
index = (int32_t)indx2;
263 struct ovlArray& vector = catalog[r1][
r2][freq1][odd];
265 ret = vector.
data[
i];
282 struct overlaps res = getOverlap(nLayer1, indx1, nLayer2, indx2);
285 if(quad2)
return res.
ovlpQQ;
288 if(quad2)
return res.
ovlpAQ;
296 vector<int>& pIndex = pwc->
cList[clIndex];
297 vector<vector<struct overlaps> >* qq = (vector<vector<struct overlaps> >*)q;
298 for(
int j=0;
j<V; ++
j){
300 size_t indx1 = pix.
time;
303 std::vector<struct overlaps>
tmp;
304 for(
int k = 0;
k<V; ++
k){
307 if(tmpOvlps.
ovlpAA>2)
continue;
309 tmp.push_back(tmpOvlps);
352 #define CLASS_INSTANTIATION(class_) template class WDMOverlap< class_ >;
357 #undef CLASS_INSTANTIATION
printf("total live time: non-zero lags = %10.1f \n", liveTot)
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<< "\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
WDM< double > wdm(nLAYERS, nLAYERS, 6, 10)
std::vector< vector_int > cList
std::vector< netpixel > pList
void read(char *filename)
param: filename
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_)