* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-*/
+/* $Id$ */
-#include "AliLhcProcessIBS.h"
-#include "AliLHC.h"
-#include "AliLhcIRegion.h"
-#include "AliLhcBeam.h"
+//
+// Realisation of AliLhcProcess for the fast simulation of the
+// Intra Beam Scattering process
+// in transverse and longitudinal direction.
+// Author: Andreas Morsch
+// andreas.morsch@cern.ch
+//
-#include <TF1.h>
-#include <TMath.h>
#include <TCanvas.h>
+#include <TF1.h>
#include <TGraph.h>
+#include <TH1F.h>
+#include <TMath.h>
#include <TMultiGraph.h>
+#include "AliLhcProcessIBS.h"
+#include "AliLHC.h"
+#include "AliLhcIRegion.h"
+#include "AliLhcBeam.h"
+
ClassImp(AliLhcProcessIBS)
Double_t func(Double_t *x, Double_t *par);
AliLhcProcessIBS::AliLhcProcessIBS(AliLHC* lhc, const char* name, const char* title)
- :AliLhcProcess(lhc,name,title)
+ :AliLhcProcess(lhc,name,title),
+ fCrossSection(0.),
+ fIRegions(0),
+ fTaux(0.),
+ fTaue(0.),
+ fTauxArray(0),
+ fTaueArray(0)
{
// Constructor
}
+AliLhcProcessIBS::AliLhcProcessIBS(const AliLhcProcessIBS& ibs):
+ AliLhcProcess(ibs),
+ fCrossSection(0.),
+ fIRegions(0),
+ fTaux(0.),
+ fTaue(0.),
+ fTauxArray(0),
+ fTaueArray(0)
+{
+// Copy Constructor
+}
+
AliLhcProcessIBS::~AliLhcProcessIBS()
{
void AliLhcProcessIBS::Evolve(Float_t dt)
{
+//
+// Evolve by one time step dt
printf("\n Here process %s %f:", GetName(), dt);
for (Int_t i=0; i<2; i++) {
// Density
// impact parameter
Float_t d = sige*avd/sigx;
//
- Float_t at = sige*TMath::Sqrt(1.-d*d)/(gamma*ssigx);
- Float_t bt = sige*TMath::Sqrt(1.-d*d)/(gamma*ssigy);
- Float_t ct = sige*TMath::Sqrt(1.-d*d)*TMath::Sqrt(4.*sigy/fR[i]);
+ Float_t at = sige*TMath::Sqrt((1.-d)*(1.+d))/(gamma*ssigx);
+ Float_t bt = sige*TMath::Sqrt((1.-d)*(1.+d))/(gamma*ssigy);
+ Float_t ct = sige*TMath::Sqrt((1.-d)*(1.+d))*TMath::Sqrt(4.*sigy/fR[i]);
//
Double_t par[3];
par[0] = at;
Float_t f = (Float_t) 8.0*TMath::Pi()*
fct->Integral(0., 1., par, 1.e-5);
//
- fTaux = 1./(asd*f*(d*d-at*at/2.));
- fTaue = 1./(asd*f*(1.-d*d));
+ const Double_t osq2=1./TMath::Sqrt(2.);
+ fTaux = 1./(asd*f*(d-osq2*at)*(d+osq2*at));
+ fTaue = 1./(asd*f*((1.-d)*(1.+d)));
// printf("\n taux, taue %f %f", taux, taue);
// Float_t tauy = -2./at*at/asd/f;
fBeam[i]->IncreaseEmittance(dt/fTaux, dt/fTaue);
-AliLhcProcessIBS& AliLhcProcessIBS::operator=(const AliLhcProcessIBS & rhs)
+AliLhcProcessIBS& AliLhcProcessIBS::operator=(const AliLhcProcessIBS & /*rhs*/)
{
// Assignment operator
return *this;
Double_t b = par[1];
Double_t cc = par[2];
- const Double_t bc = 0.5772;
+ const Double_t kbc = 0.5772;
Double_t xx = x[0];
Double_t x2=xx*xx;
Double_t x1=1.0-x2;
Double_t p=1.0/TMath::Sqrt(x2+a*a*x1);
Double_t q=1.0/TMath::Sqrt(x2+b*b*x1);
- return (1.0-3.0*x2)*p*q*(2.0*TMath::Log(0.5*cc*(p+q))-bc);
+ return (1.0-3.0*x2)*p*q*(2.0*TMath::Log(0.5*cc*(p+q))-kbc);
}