Changeset 3771 in Sophya


Ignore:
Timestamp:
May 8, 2010, 12:59:59 AM (15 years ago)
Author:
cmv
Message:

add proportionnal filling in pixels, cmv 08/05/2010

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cosmo/SimLSS/cmvrvloscor.cc

    r3770 r3771  
    2727{
    2828 int nthread = 1;
    29  int_8 ntfill = 100000;
    3029 SophyaInit();
    3130 InitTim();
     
    4140 cout<<"> read vlos: "<<arg[2]<<endl;
    4241 FitsImg3DRead f3dv(arg[2],0,5);
    43  long naxis1 = f3dr.ReadKeyL("NAXIS1");
    44  long naxis2 = f3dr.ReadKeyL("NAXIS2");
    45  long naxis3 = f3dr.ReadKeyL("NAXIS3");
    46  cout<<"Naxis: 1="<<naxis1<<" 2="<<naxis2<<" 3="<<naxis3<<endl;
    47  long nx = f3dr.ReadKeyL("Nx");
    48  long ny = f3dr.ReadKeyL("Ny");;
    49  long nz = f3dr.ReadKeyL("Nz");;
    50  cout<<"N: x="<<nx<<" y="<<ny<<" z="<<nz<<endl;
    51  double dx = f3dr.ReadKey("Dx");
    52  double dy = f3dr.ReadKey("Dy");
    53  double dz = f3dr.ReadKey("Dz");
    54  cout<<"D: x="<<dx<<" y="<<dy<<" z="<<dz<<endl;
    55  double zref = f3dr.ReadKey("ZREF");
    56  double href = f3dr.ReadKey("HREF");
    57  cout<<"Zref="<<zref<<" Href="<<href<<endl;
     42 long Nx = f3dr.ReadKeyL("Nx");
     43 long Ny = f3dr.ReadKeyL("Ny");;
     44 long Nz = f3dr.ReadKeyL("Nz");;
     45 cout<<"N: x="<<Nx<<" y="<<Ny<<" z="<<Nz<<endl;
     46 double Dx = f3dr.ReadKey("Dx");
     47 double Dy = f3dr.ReadKey("Dy");
     48 double Dz = f3dr.ReadKey("Dz");
     49 cout<<"D: x="<<Dx<<" y="<<Dy<<" z="<<Dz<<endl;
     50 double Zref = f3dr.ReadKey("ZREF");
     51 double Href = f3dr.ReadKey("HREF");
     52 cout<<"Zref="<<Zref<<" Href="<<Href<<endl;
    5853
    5954 POutPersist pos("cmvrvloscor.ppf");
    6055
    61  GeneFluct3D fluct3d(nx,ny,nz,dx,dy,dz,nthread,2);
     56 GeneFluct3D fluct3d(Nx,Ny,Nz,Dx,Dy,Dz,nthread,2);
    6257 fluct3d.Print();
    6358 TArray<GEN3D_TYPE>& rgen = fluct3d.GetRealArray();
    6459 rgen = 0.;
    65  TVector<r_8> R(nz), Rdis(nz);
    66 
    67  const int nvar = 3;
    68  const char *vname[nvar] = {"l","ll","d"};
    69  NTuple nt(nvar,vname);
    70  r_4 xnt[nvar];
    71  int_8 ntmod = fluct3d.NPix()/ntfill; if(ntmod==0) ntmod = 1;
     60 TVector<r_8> R(Nz), Rdis(Nz);
    7261
    7362 cout<<"> filling redshift distorted cube"<<endl;
    74  int_8 nf = 0;
    75  for(int i=0;i<nx;i++) {
    76    if(i%(nx/10)==0) cout<<"i="<<i<<endl;
    77  for(int j=0;j<ny;j++) {
    78    for(int l=0;l<nz;l++) R(l) = f3dr.Read(l,j,i);
     63 for(int i=0;i<Nx;i++) {
     64   if(i%(Nx/10)==0) cout<<"i="<<i<<endl;
     65 for(int j=0;j<Ny;j++) {
     66   for(int l=0;l<Nz;l++) R(l) = f3dr.Read(l,j,i);
    7967   Rdis = 0.;
    80    for(int l=0;l<nz;l++) {
    81      double d = (1.+zref) / href * f3dv.Read(l,j,i);
    82      int ll = int((double)l + d/dz + 0.5);
    83      if(ll<0 || ll>=nz) continue;
    84      Rdis(ll) += R(l);
    85      if(ntfill>0 && nf%ntmod==0)
    86        {xnt[0]=l; xnt[1]=ll; xnt[2]=d; nt.Fill(xnt);}
    87      nf++;
     68   for(int l=0;l<Nz;l++) {
     69     double d = (1.+Zref) / Href * f3dv.Read(l,j,i);
     70     double lpd = (double)l + d/Dz; // valeur du deplacee
     71     // on repartit proportionnelement au recouvrement sur 2 pixels
     72     int l1 = int(lpd); // pixel de droite
     73     int l2 = l1 + 1;  // pixel de gauche
     74     lpd -= (double)l1;  // recouvrement du pixel du dessus
     75     if(l1>=0 && l1<Nz) Rdis(l1) += R(l) * (1.-lpd);
     76     if(l2>=0 && l2<Nz) Rdis(l2) += R(l) * lpd;
    8877   }
    89    for(int l=0;l<nz;l++) rgen(l,j,i) += Rdis(l);
     78   for(int l=0;l<Nz;l++) rgen(l,j,i) += Rdis(l);
    9079 }
    9180 }
    9281 PrtTim(">>>> End filling redshift distorted cube");
    93  pos.PutObject(nt,"nt");
    9482
    9583 fluct3d.ReComputeFourier();
     
    146134
    147135imag hpkrec2
     136addoval 0 0 0.05 0.05 "green" false
     137addoval 0 0 0.1 0.1 "green" false
     138addoval 0 0 0.25 0.25 "green" false
     139addoval 0 0 0.5 0.5 "green" false
     140x = ${hpkrec2.xmax} / 2.
     141addoval 0 0 $x $x "green" false
     142x = ${hpkrec2.ymax} / 2.
     143addoval 0 0 $x $x "green" false
    148144
    149145# proj selon kT (black), selon kZ (red)
    150146n/plot hpkrec2.val%sqrt(x*x+y*y) ! ! "nsta cpts"
    151 
    152147 */
Note: See TracChangeset for help on using the changeset viewer.