Changeset 3339 in Sophya for trunk/Cosmo/SimLSS
- Timestamp:
- Oct 4, 2007, 4:03:07 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/cmvdefsurv.cc
r3336 r3339 90 90 double hifactor = 1.; 91 91 double vrot = 300.; // largeur en vitesse (km/s) pour elargissement doppler 92 bool ya2polar = false; 92 93 double facpolar = 0.5; // si on mesure les 2 polars -> 1.0 93 94 double lflux_agn = -3.; … … 131 132 break; 132 133 case '2' : 134 ya2polar = true; 133 135 facpolar = 1.0; 134 136 break; … … 360 362 361 363 // Signal 362 double psig = facpolar * fhi * surfeff; 363 double tsig = psig / k_Boltzman_Cst / (dnuhiz*1e9); 364 double ssig = psig / surfeff / (dnuhiz*1e9) / Jansky2Watt_cst; 364 double psig_2polar = fhi * surfeff; 365 double tsig_2polar = psig_2polar / k_Boltzman_Cst / (dnuhiz*1e9); 366 double ssig_2polar = psig_2polar / surfeff / (dnuhiz*1e9) / Jansky2Watt_cst; 367 double psig = facpolar * psig_2polar; 368 double tsig = facpolar * tsig_2polar; 369 double ssig = facpolar * ssig_2polar; 365 370 cout<<"\nSignal("<<mhiref<<" Msol): P="<<psig<<" W"<<endl; 366 371 cout<<" flux density = "<<ssig<<" Jy (for Dnu="<<dnuhiz<<" GHz)"<<endl; … … 379 384 if(fabs(indnu)>1.e-50) tsynch *= pow(nuhiz/nuhaslam,indnu); 380 385 planck.SetTemperature(tsynch); 381 double psynch = facpolar * planck(nuhiz*1.e+9) * surfeff * angsol * (dnuhiz*1e9); 382 double ssynch = psynch / surfeff / (dnuhiz*1e9) / Jansky2Watt_cst; 386 double psynch_2polar = planck(nuhiz*1.e+9) * surfeff * angsol * (dnuhiz*1e9); 387 double ssynch_2polar = psynch_2polar / surfeff / (dnuhiz*1e9) / Jansky2Watt_cst; 388 double psynch = facpolar * psynch_2polar; 389 double ssynch = facpolar * ssynch_2polar; 383 390 cout<<"\nSynchrotron: T="<<Tsynch408<<" K ("<<nuhaslam<<" GHz), " 384 391 <<tsynch<<" K ("<<nuhiz<<" GHz)"<<endl … … 389 396 double tcmb = T_CMB_Par; 390 397 planck.SetTemperature(tcmb); 391 double pcmb = facpolar * planck(nuhiz*1.e+9) * surfeff * angsol * (dnuhiz*1e9); 392 double scmb = pcmb / surfeff / (dnuhiz*1.e+9) / Jansky2Watt_cst; 398 double pcmb_2polar = planck(nuhiz*1.e+9) * surfeff * angsol * (dnuhiz*1e9); 399 double scmb_2polar = pcmb_2polar / surfeff / (dnuhiz*1.e+9) / Jansky2Watt_cst; 400 double pcmb = facpolar * pcmb_2polar; 401 double scmb = facpolar * scmb_2polar; 393 402 cout<<"\nCMB: T="<<tcmb<<" K -> P="<<pcmb<<" W for pixel"<<endl; 394 403 cout<<" flux density = "<<scmb<<" Jy for pixel solid angle"<<endl; … … 405 414 <<" -> "<<mass_agn_pix<<" Msol -> log10 = "<<lmass_agn_pix<<endl; 406 415 416 // ===================================================================== 407 417 // --- 408 418 // --- Noise analysis 409 419 // --- 420 // --- Puissance du bruit pour un telescope de surface Ae et de BW dNu 421 // Par definition la puissance du bruit est: 422 // Pb = k * Tsys * dNu (W) 423 // Pour une source (non-polarisee) de densite de flux (totale 2 polars) 424 // St (exprimee en Jy=W/m^2/Hz) 425 // Pt = St * Ae * dNu (puissance totale emise en W pour 2 polars) 426 // P1 = 1/2 * St * Ae * dNu (puissance emise en W pour une polar) 427 // la SEFD (system equivalent flux density en Jy) est definie comme 428 // la densite de flux total (2 polars) "St" d'une source (non-polarisee) 429 // dont la puissance P1 mesuree pour une seule polarisation 430 // serait egale a la puissance du bruit. De P1 = Pb on deduit: 431 // SEFD = 2 * k * Tsys / Ae (en Jy) 432 // la puissance du bruit est: Pb = 1/2 * SEFD * Ae * dNu (en W) 433 // la sensibilite Slim tient compte du temps d'integration et de la BW: 434 // le nombre de mesures independantes est "2*dNu*Tobs" donc 435 // Slim = SEFD / sqrt(2*dNu*Tobs) = 2*k*Tsys/[Ae*sqrt(2*dNu*Tobs) (en Jy) 436 // --- Puissance du bruit pour un interferometre 410 437 // Ae = surface d'un telescope elementaire 411 438 // N = nombre de telescopes dans l'interferometre (Atot = N*Ae) 439 // La sensibilite Slim en Jy est: 412 440 // Slim = 2 * k * Tsys / [ Ae * Sqrt(2*N(N-1)/2 *dnu*Tobs) ] 413 441 // = 2 * k * Tsys / [ Atot/N * Sqrt(2*N(N-1)/2*dnu*Tobs) ] 414 442 // = 2 * k * Tsys / [ Atot * Sqrt((N-1)/N *dnu*Tobs) ] 415 // Interferometre a deux antennes:443 // - Interferometre a deux antennes: 416 444 // Slim = 2 * k * Tsys / [ Atot * Sqrt(1/2 *dnu*Tobs) ] 417 // Interferometre a N antennes (N grand):445 // - Interferometre a N antennes (N grand): 418 446 // Slim -> 2 * k * Tsys / [ Atot * Sqrt(dnu*Tobs) ] 419 447 // C'est aussi la formule pour un telescope unique 420 // - 421 // Ces formules sont valables si on mesure 1 polarisation. 422 // Si on mesure 2 polarisations: 423 // le signal (ssig) est multiplie par 2 (facpolar=1 au lieu de 0.5) 424 // mais on le lit avec 2 chaines electroniques differentes 425 // -> le gain n'est que de sqrt(2) 448 // --- On ne mesure qu'une seule polarisation 449 // Ces formules sont valables si on mesure 1 polarisation: 450 // Slim est la densite de flux total "St" (2 polars) d'une source (non-polarisee) 451 // qui donne la meme puissance que le bruit dans un detecteur qui ne 452 // mesure qu'une seule polarisation: 453 // Le rapport S/N pour une source de densite de flux St (totale 2 polars): 454 // S/N = St / Slim 455 // La puissance de bruit est, par definition: 456 // Pb = 1/2 *Slim*Atot*dNu 457 // = k*Tsys*sqrt(2*dNu/Tobs) pour N=2 458 // = k*Tsys*sqrt(dNu/Tobs) pour N>>grand 459 // La densite de flux d'une source a S/N=1 est: 460 // St = Slim 461 // La puissance d'une source a S/N=1 mesuree par un detecteur 462 // qui ne mesure qu'une polar est: 463 // P1_lim = 1/2 *Slim*Atot*dNu 464 // --- On mesure les 2 polarisations avec deux voies d'electronique distinctes 465 // la puissance du signal mesure est multipliee par 2 466 // la puissance du bruit est multipliee par sqrt(2) 467 // on a donc un gain d'un facteur sqrt(2) sur le rapport S/N 468 // (cela revient d'ailleur a doubler le temps de pose: Tobs -> 2*Tobs) 469 // En notant arbitrairement: Slim' = Slim / sqrt(2) 470 // ou Slim est defini par les formules ci-dessus 471 // Le rapport S/N pour une source de densite de flux St (totale 2 polars): 472 // (S/N)_2 = (S/N)_1 * sqrt(2) = (St / Slim) * sqrt(2) = St / Slim' 473 // La densite de flux d'une source a S/N=1 est: 474 // St = Slim' = Slim / sqrt(2) 475 // La puissance d'une source a S/N=1 cumulee par les 2 detecteurs est: 476 // P_lim = St*Atot*dNu = Slim'*Atot*dNu = 1/sqrt(2) *Slim*Atot*dNu 477 // = P1_lim * sqrt(2) 478 // La puissance de bruit cumulee par les 2 detecteurs est, par definition: 479 // Pb = P_lim = Slim'*Atot*dNu = P1_lim * sqrt(2) 480 // = 2*k*Tsys*sqrt(dNu/Tobs) pour N=2 481 // = k*Tsys*sqrt(2*dNu/Tobs) pour N>>grand 482 // ===================================================================== 483 426 484 cout<<"\n---\n--- Noise analysis \n---"<<endl; 427 485 double psys = k_Boltzman_Cst * Tsys * (dnuhiz*1.e+9); 428 486 cout<<"Noise: T="<<Tsys<<" K, P="<<psys<<" W (for Dnu="<<dnuhiz<<" GHz)"<<endl; 429 487 488 cout<<"...Computation assume that noise dominate the signal."<<endl; 489 if(ya2polar) 490 cout<<"...Assuming 2 polarisations measurements with 2 different electronics."<<endl; 491 430 492 double slim,slim_nl,SsN,SsN_nl,smass,smass_nl; 431 cout<<"...Computation assume that noise dominate the signal."<<endl; 432 433 double facpolarbruit = 1.; 434 if(fabs(facpolar-1.)<0.01) { 435 facpolarbruit = sqrt(2.); 436 cout<<"...Assuming 2 polarisations measurements with 2 different electronics."<<endl; 493 494 //--- 495 for(unsigned short it=0;it<2;it++) { 496 497 double fac = 1.; 498 if(it==0) { // Interferometre a 2 telescopes 499 fac = 0.5; 500 cout<<"\n...Observation limits for a 2 telescope interferometer (with complex correlator)"<<endl 501 <<" (sensitivity is given for real or complex correlator output)"<<endl; 502 } else if (it==1) { // Interferometre a N>> telescopes 503 fac = 1.; 504 cout<<"\n...Observation limits for a N (large) telescope interferometer (with complex correlator)"<<endl 505 <<" (weak source limit sensitivity in a synthetised image)"<<endl; 506 } else continue; 507 508 slim = 2. * k_Boltzman_Cst * Tsys / surfeff 509 / sqrt(fac*(dnuhiz*1.e+9)*tobs) /Jansky2Watt_cst; 510 if(ya2polar) slim /= sqrt(2.); 511 SsN = ssig_2polar/slim; 512 smass = mhiref / ssig_2polar * slim; 513 cout<<"for 1 lobe:"<<endl 514 <<" Slim = "<<slim<<" Jy"<<endl 515 <<" S/N = "<<SsN<<endl 516 <<" Mass HI = "<<smass<<" Msol"<<endl; 517 slim_nl = slim * sqrt(nlobes); 518 SsN_nl = ssig/slim_nl; 519 smass_nl = mhiref/ssig*slim_nl; 520 cout<<"for "<<nlobes<<" lobes:"<<endl 521 <<" Flux = "<<slim_nl<<" Jy"<<endl 522 <<" S/N = "<<SsN_nl<<endl 523 <<" Mass HI = "<<smass_nl<<" Msol"<<endl; 524 437 525 } 438 439 //---440 cout<<"\n...Observation limits for a 2 telescope interferometer (with complex correlator)"<<endl441 <<" (sensitivity is given for real or complex correlator output)"<<endl;442 slim = 2. * k_Boltzman_Cst * Tsys / surfeff443 / sqrt(0.5*(dnuhiz*1.e+9)*tobs) /Jansky2Watt_cst;444 slim *= facpolarbruit;445 SsN = ssig/slim;446 smass = mhiref/ssig*slim;447 cout<<"for 1 lobe:"<<endl448 <<" Flux = "<<slim<<" Jy"<<endl449 <<" S/N = "<<SsN<<endl450 <<" Mass HI = "<<smass<<" Msol"<<endl;451 slim_nl = slim * sqrt(nlobes);452 SsN_nl = ssig/slim_nl;453 smass_nl = mhiref/ssig*slim_nl;454 cout<<"for "<<nlobes<<" lobes:"<<endl455 <<" Flux = "<<slim_nl<<" Jy"<<endl456 <<" S/N = "<<SsN_nl<<endl457 <<" Mass HI = "<<smass_nl<<" Msol"<<endl;458 459 //---460 cout<<"\n...Observation limits for a N (large) telescope interferometer (with complex correlator)"<<endl461 <<" (weak source limit sensitivity in a synthetised image)"<<endl462 <<" (Also valid for 1 single antenna telescope)"<<endl;463 slim = 2. * k_Boltzman_Cst * Tsys / surfeff464 / sqrt((dnuhiz*1.e+9)*tobs) /Jansky2Watt_cst;465 slim *= facpolarbruit;466 SsN = ssig/slim;467 smass = mhiref/ssig*slim;468 cout<<"for 1 lobe:"<<endl469 <<" Flux = "<<slim<<" Jy"<<endl470 <<" S/N = "<<SsN<<endl471 <<" Mass HI = "<<smass<<" Msol"<<endl;472 slim_nl = slim * sqrt(nlobes);473 SsN_nl = ssig/slim_nl;474 smass_nl = mhiref/ssig*slim_nl;475 cout<<"for "<<nlobes<<" lobes:"<<endl476 <<" Flux = "<<slim_nl<<" Jy"<<endl477 <<" S/N = "<<SsN_nl<<endl478 <<" Mass HI = "<<smass_nl<<" Msol"<<endl;479 526 480 527 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.