Changeset 3771 in Sophya for trunk/Cosmo/SimLSS/cmvrvloscor.cc
- Timestamp:
- May 8, 2010, 12:59:59 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/cmvrvloscor.cc
r3770 r3771 27 27 { 28 28 int nthread = 1; 29 int_8 ntfill = 100000;30 29 SophyaInit(); 31 30 InitTim(); … … 41 40 cout<<"> read vlos: "<<arg[2]<<endl; 42 41 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; 58 53 59 54 POutPersist pos("cmvrvloscor.ppf"); 60 55 61 GeneFluct3D fluct3d( nx,ny,nz,dx,dy,dz,nthread,2);56 GeneFluct3D fluct3d(Nx,Ny,Nz,Dx,Dy,Dz,nthread,2); 62 57 fluct3d.Print(); 63 58 TArray<GEN3D_TYPE>& rgen = fluct3d.GetRealArray(); 64 59 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); 72 61 73 62 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); 79 67 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; 88 77 } 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); 90 79 } 91 80 } 92 81 PrtTim(">>>> End filling redshift distorted cube"); 93 pos.PutObject(nt,"nt");94 82 95 83 fluct3d.ReComputeFourier(); … … 146 134 147 135 imag hpkrec2 136 addoval 0 0 0.05 0.05 "green" false 137 addoval 0 0 0.1 0.1 "green" false 138 addoval 0 0 0.25 0.25 "green" false 139 addoval 0 0 0.5 0.5 "green" false 140 x = ${hpkrec2.xmax} / 2. 141 addoval 0 0 $x $x "green" false 142 x = ${hpkrec2.ymax} / 2. 143 addoval 0 0 $x $x "green" false 148 144 149 145 # proj selon kT (black), selon kZ (red) 150 146 n/plot hpkrec2.val%sqrt(x*x+y*y) ! ! "nsta cpts" 151 152 147 */
Note:
See TracChangeset
for help on using the changeset viewer.