/***************************************************************************
* Author: Dominik Flierl, flierl@ikf.uni-frankfurt.de
***************************************************************************/
using namespace std ;
#include <iostream>
#include <stdlib.h>
#include "T49HbtCoulomb.h"
#include "TMath.h"
ClassImp(T49HbtCoulomb)
//--------------------------------
T49HbtCoulomb::T49HbtCoulomb()
{
// constants of nature
f_hbc = 0.197327 ; // [GeV fm]
fBohrRadius = 388.0 ; // [fm] for like sign pions only !
fBohrRadiusUSP = (-1.0) * fBohrRadius ; // [fm] for UNlike sign pions !
// constants used in the paper
f_d2 = 3*TMath::Pi()/8.0 ; // d2 in equation 8 in the paper
// default MeanSeparation = 10 fm
fMeanSeparation = 10.0 ;
CalculateConstants() ;
CalculateConstantsUSP() ;
}
//--------------------------------
T49HbtCoulomb::~T49HbtCoulomb()
{
// empty
}
//--------------------------------
void T49HbtCoulomb::SetMeanSeparation(Double_t MeanSeparation)
{
fMeanSeparation = MeanSeparation ;
CalculateConstants() ;
CalculateConstantsUSP() ;
}
//--------------------------------
void T49HbtCoulomb::CalculateConstants()
{
// in equation 8 in the paper
fConstant1 = 1 + (2*fMeanSeparation/fBohrRadius) * ( 1+f_d2*fMeanSeparation/fBohrRadius) ;
// equation 9 in 'the paper (attention k = q/2)
fCriticalMomentum = f_hbc * 2.0 * TMath::Pi()/(4.0*fMeanSeparation) * fConstant1 ; // crossover momentum in [GeV/c]
fCriticalMomentum2 = fCriticalMomentum * fCriticalMomentum ; // square it
// equation 10 in the paper
fConstant2 = fBohrRadius * fMeanSeparation * fCriticalMomentum2 * ( 1.0 - Ac(fCriticalMomentum) * fConstant1 ) / ( f_hbc * f_hbc );
}
//--------------------------------
Double_t T49HbtCoulomb::Ac(Double_t qinv)
{
// The gamov function
// in the paper: 2 pi eta = (2 * pi) / (k*a) = (2 * pi) / ( a * ( qinv/2 ) ) = 4*pi*hbc/(a*qinv)
Double_t TwoPiEta = 4.0*TMath::Pi()*f_hbc/(fBohrRadius*qinv) ;
return TwoPiEta/(exp(TwoPiEta)-1.0) ;
}
//--------------------------------
Double_t T49HbtCoulomb::Weight(Double_t qinv)
{
// depending on qinv use quantum mechanical or classical solution: equation 8 in the paper
// qinv = 2 * k : k is used in the paper, here we use qinv
if(qinv<=fCriticalMomentum)
{
return (Ac(qinv) * fConstant1) ;
}
else
{
return (1.0 - fConstant2 / (fBohrRadius * fMeanSeparation * pow(qinv,2) / ( f_hbc * f_hbc ) ) ) ;
}
}
///////////////////////////////////////////////////////////////////////////////
// Unlike sign pairs
///////////////////////////////////////////////////////////////////////////////
Double_t T49HbtCoulomb::WeightUnlikeSignPairs(Double_t qinv)
{
// depending on qinv use quantum mechanical or classical solution: equation 8 in the paper
// now for unlike sign pairs (USP), i.e. : negative Bohrradius ! (see page 250 in the paper)
// qinv = 2 * k : k is used in the paper, here we use qinv
if(qinv <= fCriticalMomentumUSP)
{
return (AcUSP(qinv) * fConstant1USP) ;
}
else
{
return (1.0 - (fConstant2USP * f_hbc * f_hbc) / (fBohrRadiusUSP * fMeanSeparation * pow(qinv,2))) ;
}
}
//--------------------------------
Double_t T49HbtCoulomb::AcUSP(Double_t qinv)
{
// The gamov function, now for unlike sign pairs
// in the paper: 2 pi eta = (2 * pi) / (k*a) = (2 * pi) / ( a * ( qinv/2 ) ) = 4*pi*hbc/(a*qinv)
Double_t TwoPiEta = 4.0*TMath::Pi()*f_hbc/(fBohrRadiusUSP*qinv) ;
return TwoPiEta/(exp(TwoPiEta)-1.0) ;
}
//--------------------------------
void T49HbtCoulomb::CalculateConstantsUSP()
{
// equation 8 in the paper for unlike sign pairs
fConstant1USP = 1 + (2*fMeanSeparation/fBohrRadiusUSP) * ( 1+f_d2*fMeanSeparation/fBohrRadiusUSP) ;
// equation 9 in 'the paper (attention k = q/2)
fCriticalMomentumUSP = f_hbc * 2.0 * TMath::Pi()/(4.0*fMeanSeparation) * fConstant1USP ; // crossover momentum in [GeV/c]
fCriticalMomentumUSP2 = fCriticalMomentumUSP * fCriticalMomentumUSP ; // square it
//cout << "critical momentum : " << fCriticalMomentumUSP << endl ;
// equation 10 in the paper for unlike sign pairs
fConstant2USP = fBohrRadiusUSP * fMeanSeparation * fCriticalMomentumUSP2 * ( 1.0 - AcUSP(fCriticalMomentumUSP) * fConstant1USP ) / ( f_hbc * f_hbc );
}
////////////////////////////////////////////////////////////////////////////////
// Classical approximation according to PBM in Nucl. Phys. A610 (1996) 286c-296c
/////////////////////////////////////////////////////////////////////////////////
Double_t T49HbtCoulomb::ClassicalWeight(Double_t qinv)
{
// the coulomb correction derived in a simple toy model derived in
// G. Baym & PBM, Nucl. Phys. A610 (1996) 286c-296c
// electron charge in natural units = 0.0854245
// reduced mass m1*m2+(m1+m2) with pion mass (m1=m2=0.139 GeV) m(reduced) = 0.069 [GeV]
// fMeanSeparation must be positive !
Double_t arg = 1.0 - 2.0 * 0.069785 * 0.0854245 * 0.0854245 * f_hbc / ( fabs(fMeanSeparation) * qinv * qinv ) ;
if(arg<0.0)
{
cout << "In T49HbtCoulomb::ClassicalWeight(Double_t qinv) qinv = " << qinv << " too small !" << endl ;
return 0.1 ;
}
//cout << "hat geklapt" << endl;
Double_t weight = TMath::Sqrt(arg) ;
return weight ;
}
//-----------------------------------
Double_t T49HbtCoulomb::ClassicalWeightUnlikeSignPairs(Double_t qinv)
{
// the coulomb correction derived in a simple toy model derived in
// G. Baym & PBM, Nucl. Phys. A610 (1996) 286c-296c
// electron charge in natural units = 0.0854245
// reduced mass m1*m2+(m1+m2) with pion mass (m1=m2=0.139 GeV) m(reduced) = 0.069 [GeV]
// fMeanSeparation must be positive !
Double_t arg = 1.0 + 2.0 * 0.069785 * 0.0854245 * 0.0854245 * f_hbc / ( fabs(fMeanSeparation) * qinv * qinv ) ;
Double_t weight = TMath::Sqrt(arg) ;
return weight ;
}
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.