Changeset 3339 in Sophya for trunk/Cosmo/SimLSS


Ignore:
Timestamp:
Oct 4, 2007, 4:03:07 PM (18 years ago)
Author:
cmv
Message:

encore mise au point du calcul du bruit cmv 04/10/2007

File:
1 edited

Legend:

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

    r3336 r3339  
    9090 double hifactor = 1.;
    9191 double vrot = 300.; // largeur en vitesse (km/s) pour elargissement doppler
     92 bool ya2polar = false;
    9293 double facpolar = 0.5; // si on mesure les 2 polars -> 1.0
    9394 double lflux_agn = -3.;
     
    131132    break;
    132133  case '2' :
     134    ya2polar = true;
    133135    facpolar = 1.0;
    134136    break;
     
    360362
    361363 // 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;
    365370 cout<<"\nSignal("<<mhiref<<" Msol): P="<<psig<<" W"<<endl;
    366371 cout<<"     flux density = "<<ssig<<" Jy  (for Dnu="<<dnuhiz<<" GHz)"<<endl;
     
    379384        if(fabs(indnu)>1.e-50) tsynch *= pow(nuhiz/nuhaslam,indnu);
    380385 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;
    383390 cout<<"\nSynchrotron: T="<<Tsynch408<<" K ("<<nuhaslam<<" GHz), "
    384391     <<tsynch<<" K ("<<nuhiz<<" GHz)"<<endl
     
    389396 double tcmb = T_CMB_Par;
    390397 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;
    393402 cout<<"\nCMB: T="<<tcmb<<" K -> P="<<pcmb<<" W for pixel"<<endl;
    394403 cout<<"                       flux density = "<<scmb<<" Jy for pixel solid angle"<<endl;
     
    405414     <<" -> "<<mass_agn_pix<<" Msol -> log10 = "<<lmass_agn_pix<<endl;
    406415
     416 // =====================================================================
    407417 // ---
    408418 // --- Noise analysis
    409419 // ---
     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
    410437 // Ae = surface d'un telescope elementaire
    411438 // N  = nombre de telescopes dans l'interferometre (Atot = N*Ae)
     439 // La sensibilite Slim en Jy est:
    412440 // Slim = 2 * k * Tsys / [ Ae * Sqrt(2*N(N-1)/2 *dnu*Tobs) ]
    413441 //      = 2 * k * Tsys / [ Atot/N * Sqrt(2*N(N-1)/2*dnu*Tobs) ]
    414442 //      = 2 * k * Tsys / [ Atot * Sqrt((N-1)/N *dnu*Tobs) ]
    415  // Interferometre a deux antennes:
     443 // - Interferometre a deux antennes:
    416444 // Slim =  2 * k * Tsys / [ Atot * Sqrt(1/2 *dnu*Tobs) ]
    417  // Interferometre a N antennes (N grand):
     445 // - Interferometre a N antennes (N grand):
    418446 // Slim ->  2 * k * Tsys / [ Atot * Sqrt(dnu*Tobs) ]
    419447 //      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
    426484 cout<<"\n---\n--- Noise analysis \n---"<<endl;
    427485 double psys = k_Boltzman_Cst * Tsys * (dnuhiz*1.e+9);
    428486 cout<<"Noise: T="<<Tsys<<" K, P="<<psys<<" W  (for Dnu="<<dnuhiz<<" GHz)"<<endl;
    429487
     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
    430492 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
    437525 }
    438 
    439  //---
    440  cout<<"\n...Observation limits for a 2 telescope interferometer (with complex correlator)"<<endl
    441      <<"   (sensitivity is given for real or complex correlator output)"<<endl;
    442  slim = 2. * k_Boltzman_Cst * Tsys / surfeff
    443                / 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:"<<endl
    448      <<"   Flux    = "<<slim<<" Jy"<<endl
    449      <<"   S/N     = "<<SsN<<endl
    450      <<"   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:"<<endl
    455      <<"   Flux    = "<<slim_nl<<" Jy"<<endl
    456      <<"   S/N     = "<<SsN_nl<<endl
    457      <<"   Mass HI = "<<smass_nl<<" Msol"<<endl;
    458 
    459  //---
    460  cout<<"\n...Observation limits for a N (large) telescope interferometer (with complex correlator)"<<endl
    461      <<"     (weak source limit sensitivity in a synthetised image)"<<endl
    462      <<"     (Also valid for 1 single antenna telescope)"<<endl;
    463  slim = 2. * k_Boltzman_Cst * Tsys / surfeff
    464                / 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:"<<endl
    469      <<"   Flux    = "<<slim<<" Jy"<<endl
    470      <<"   S/N     = "<<SsN<<endl
    471      <<"   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:"<<endl
    476      <<"   Flux    = "<<slim_nl<<" Jy"<<endl
    477      <<"   S/N     = "<<SsN_nl<<endl
    478      <<"   Mass HI = "<<smass_nl<<" Msol"<<endl;
    479526
    480527 return 0;
Note: See TracChangeset for help on using the changeset viewer.