示例#1
0
static double pbarPropRate(double ek)
{
  double fluxDM, dFluxDM;
  double i2,i3;
  ek_=ek; 

  Kdif=pbar_beta(ek)*K_dif*pow(pbar_rig(ek),Delta_dif);
//printf("Kdif=%E\n",Kdif);
  switch(Gtot_style)
  { case 0: Gtot=0; break;
    case 1: Gtot= ( DensityH*sigma_inelastic_ANN_pbarH_TAN_and_NG(ek) 
                  + DensityHe*sigma_inelastic_ANN_pbarHe_TAN_and_NG(ek) );
            break;
            
   default: Gtot= 0.8*sigma_inelastic_pbarH_TAN_and_NG(ek)*(DensityH + DensityHe*2.519842);

  }   
  
  Gtot*= pbar_beta(ek)*c_light/cmpers_to_kpcperMyr/s_to_Myr * mb_to_cm2;

  Vdif=Vc_dif*kmpers_to_kpcperMyr;

  { double kv,kd,knL;
    int i;
    kv=Vdif/(2.*Kdif);
    kd= (2.*h*Gtot/Kdif    + 2.*kv);
    if(kd)
    { int nn;
      knL= (0.5)*M_PI;
      if(kd>0) nn=1; else nn=0; 		
      for(i=0; i<10; ++i) knL = nn*M_PI - atan(2.*knL/(kd*L_dif));
    } else knL= (0.5)*M_PI;
//    lastK=0;
//    kn[0]=knL;
    Leff=1/sqrt(SQR(knL/L_dif)+SQR(kv)); 
  }  
          
  fluxDM=4*simpson(zIntegrandP,0.,sqrt(L_dif),Eps);

  i2=simpson(rhoQ_2,rHaloMin, rHalo1, 1.E-2) -rHalo1*rhoQ_2(rHalo1)/3;
  i3=simpson(rhoQ_3,rHaloMin, rHalo1, 1.E-2) -rHalo1*rhoQ_3(rHalo1)/4; 
    
  dFluxDM=4*M_PI*i2*pbar_PropagatorInfiniteR(Rsun,0.5*i3/i2,ek);
  fluxDM+=dFluxDM;   
  return fluxDM*pbar_beta(ek)*c_light/cm_to_kpc/(4.*M_PI);
}
示例#2
0
static double rIntegrandP(double r)
{
  double fluxDM_r_z;
  double thetaMin,thetaMax,sinMax;
  double drQ  = rHalo1*rHalo1-z_*z_ -(Rsun-r)*(Rsun-r);
  double RQ = Rdisk*Rdisk  -z_*z_ -(Rsun-r)*(Rsun-r);
  double prQ;
  if(r==0)  return 0;  
  if(RQ<=0) return 0;
  if(drQ>0) thetaMin= 2*asin(sqrt(drQ/(4*Rsun*r))); else thetaMin=0;
  sinMax=sqrt(RQ/(4*Rsun*r));
  if(sinMax>=1) thetaMax=M_PI; else thetaMax=2*asin(sinMax);

  r_=r;
  prQ=hProfile_(rHalo1); prQ*=prQ*cProfile_(rHalo1);
  
  fluxDM_r_z=2*2*simpson(thetaIntegrandP,sqrt(thetaMin),sqrt(thetaMax),
  0.1*Eps)+2*thetaMin*prQ;   	

  return r*fluxDM_r_z*pbar_PropagatorInfiniteR(r,z_,ek_);
}