+ Double_t GetRandomImpactParameter(Double_t bmin, Double_t bmax);
+
+ void StoreFunctions() const;
+ void StoreAlmonds() const;
+
+ void SetLengthDefinition(Int_t def=1) {fEllDef=def;}
+ Int_t GetLengthDef() const {return fEllDef;}
+ void SetCentralityClass(Double_t xsecFrLow=0.0,Double_t xsecFrUp=0.1);
+ void GetRandomBHard(Double_t& b);
+ void GetRandomXY(Double_t& x,Double_t& y);
+ void GetRandomPhi(Double_t& phi);
+ Double_t CalculateLength(Double_t b=0.,Double_t x0=0.,Double_t y0=0.,
+ Double_t phi0=0.);
+ void GetLengthAndPhi(Double_t& ell,Double_t &phi,Double_t b=-1.);
+ void GetLength(Double_t& ell,Double_t b=-1.);
+ void GetLengthsBackToBackAndPhi(Double_t& ell1,Double_t& ell2,
+ Double_t &phi,
+ Double_t b=-1.);
+ void GetLengthsBackToBack(Double_t& ell1,Double_t& ell2,
+ Double_t b=-1.);
+ void GetLengthsForPythia(Int_t n,Double_t* phi,Double_t* ell,
+ Double_t b=-1.);
+ void PlotBDistr(Int_t n=1000);
+ void PlotLengthDistr(Int_t n=1000,Bool_t save=kFALSE,
+ const char *fname="length.root");
+ void PlotLengthB2BDistr(Int_t n=1000,Bool_t save=kFALSE,
+ const char *fname="lengthB2B.root");
+ void CalculateI0I1(Double_t& integral0,Double_t& integral1,
+ Double_t b=0.,
+ Double_t x0=0.,Double_t y0=0.,Double_t phi0=0.,
+ Double_t ellCut=20.) const;
+ void GetI0I1AndPhi(Double_t& integral0,Double_t& integral1,Double_t &phi,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void GetI0I1(Double_t& integral0,Double_t& integral1,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void GetI0I1BackToBackAndPhi(Double_t& integral01,Double_t& integral11,
+ Double_t& integral02,Double_t& integral12,
+ Double_t& phi,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void GetI0I1BackToBackAndPhiAndXY(Double_t& integral01,Double_t& integral11,
+ Double_t& integral02,Double_t& integral12,
+ Double_t& phi,Double_t& x,Double_t&y,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void GetI0I1BackToBack(Double_t& integral01,Double_t& integral11,
+ Double_t& integral02,Double_t& integral12,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void GetI0I1ForPythia(Int_t n,Double_t* phi,
+ Double_t* integral0,Double_t* integral1,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void GetI0I1ForPythiaAndXY(Int_t n,Double_t* phi,
+ Double_t* integral0,Double_t* integral1,
+ Double_t&x, Double_t &y,
+ Double_t ellCut=20.,Double_t b=-1.);
+ void PlotI0I1Distr(Int_t n=1000,Double_t ellCut=20.,Bool_t save=kFALSE,
+ const char *fname="i0i1.root");
+ void PlotI0I1B2BDistr(Int_t n=1000,Double_t ellCut=20.,Bool_t save=kFALSE,
+ const char *fname="i0i1B2B.root");
+ void PlotAlmonds() const;
+ // Copy
+ AliFastGlauber& operator=(const AliFastGlauber & rhs);
+ void Copy(TObject&) const;