]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FASTSIM/AliQuenchingWeights.h
Test routines and example for use of AliFastGlauber and AliQuenchingWeights
[u/mrichter/AliRoot.git] / FASTSIM / AliQuenchingWeights.h
CommitLineData
b6d061b7 1#ifndef ALIQUENCHINGWEIGHTS_H
2#define ALIQUENCHINGWEIGHTS_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8//----------------------------------------------------------------------------
9// Implementation of the class to calculate the parton energy loss
10// Based on the "BDMPS" quenching weights by C.A.Salgado and U.A.Wiedemann
11//
12// References:
13// C.A.Salgado and U.A.Wiedemann, Phys.Rev.D68 (2003) 014008 [hep-ph/0302184]
14// A.Dainese, Eur.Phys.J.C, in press, [nucl-ex/0312005]
15//
16// Origin: C. Loizides constantin.loizides@cern.ch
17// A. Dainese andrea.dainese@pd.infn.it
18//----------------------------------------------------------------------------
19
20#include <TObject.h>
21class TH1F;
22
23class AliQuenchingWeights : public TObject {
24 public:
25 enum kECMethod {kDefault=0,kReweight=1};
26
27 AliQuenchingWeights();
28 AliQuenchingWeights(const AliQuenchingWeights& a);
29 virtual ~AliQuenchingWeights();
30
31 void Reset();
32 Int_t SampleEnergyLoss();
33 Double_t GetELossRandom(Int_t ipart, Double_t length, Double_t e=1.e6) const;
34 Double_t CalcQuenchedEnergy(Int_t ipart, Double_t length, Double_t e) const;
35 Double_t GetELossRandom(Int_t ipart, TH1F *hell, Double_t e=1.e6) const;
36 Double_t CalcQuenchedEnergy(Int_t ipart, TH1F *hell, Double_t e) const;
37
38 //multiple soft scattering approximation
39 Int_t InitMult(const Char_t *contall="$(ALICE_ROOT)/FASTSIM/data/cont_mult.all",
40 const Char_t *discall="$(ALICE_ROOT)/FASTSIM/data/disc_mult.all");
41
42 //single hard scattering approximation
43 Int_t InitSingleHard(const Char_t *contall="$(ALICE_ROOT)/FASTSIM/data/cont_lin.all",
44 const Char_t *discall="$(ALICE_ROOT)/FASTSIM/data/disc_lin.all");
45
46 Int_t CalcMult(Int_t ipart, Double_t rrrr,Double_t xxxx,
47 Double_t &continuous,Double_t &discrete) const;
48 Int_t CalcMult(Int_t ipart,
49 Double_t w, Double_t qtransp, Double_t length,
50 Double_t &continuous,Double_t &discrete) const;
51 Int_t CalcSingleHard(Int_t ipart, Double_t rrrr,Double_t xxxx,
52 Double_t &continuous,Double_t &discrete) const;
53 Int_t CalcSingleHard(Int_t ipart,
54 Double_t w, Double_t mu, Double_t length,
55 Double_t &continuous,Double_t &discrete) const;
56
57 Double_t CalcWC(Double_t q, Double_t l) const
58 {return 0.5*q*l*l*gkConvFmToInvGeV;}
59
60 Double_t CalcWCbar(Double_t mu, Double_t l) const
61 {return 0.5*mu*mu*l*gkConvFmToInvGeV;}
62
63 Double_t CalcWC(Double_t l) const
64 {if(fMultSoft) return CalcWC(fQTransport,l);
65 else return CalcWCbar(fMu,l);}
66
67 Double_t CalcR(Double_t wc, Double_t l) const;
68
69 Int_t CalcLengthMax(Double_t q) const
70 {Double_t l3max=gkRMax/.5/q/gkConvFmToInvGeV/gkConvFmToInvGeV;
71 return (Int_t)TMath::Power(l3max,1./3.);}
72
73 const TH1F* GetHisto(Int_t ipart,Int_t l) const;
74
75 void SetMu(Double_t m=1.) {fMu=m;}
76 void SetQTransport(Double_t q=1.) {fQTransport=q;}
77 void SetECMethod(kECMethod type=kDefault);
78 void SetLengthMax(Int_t l=20) {fLengthMax=l;}
79
80 Float_t GetMu() const {return fMu;}
81 Float_t GetQTransport() const {return fQTransport;}
82 Bool_t GetECMethod() const {return fECMethod;}
83 Bool_t GetTablesLoaded() const {return fTablesLoaded;}
84 Bool_t GetMultSoft() const {return fMultSoft;}
85 Int_t GetLengthMax() const {return fLengthMax;}
86
87 TH1F* ComputeQWHisto (Int_t ipart,Double_t medval,Double_t length) const;
88 TH1F* ComputeQWHistoX(Int_t ipart,Double_t medval,Double_t length) const;
89 TH1F* ComputeELossHisto (Int_t ipart,Double_t medval,Double_t l,Double_t e=1.e6) const;
90 TH1F* ComputeELossHisto (Int_t ipart,Double_t medval,TH1F *hEll,Double_t e=1.e6) const;
91
92 void PlotDiscreteWeights(Int_t len=4) const;
93 void PlotContWeights(Int_t itype,Int_t len) const;
94 void PlotContWeights(Int_t itype,Double_t medval) const;
95 void PlotAvgELoss(Int_t len ,Double_t e=1.e6) const;
96 void PlotAvgELoss(TH1F *hEll,Double_t e=1.e6) const;
97 void PlotAvgELossVsPt(Double_t medval,Int_t len) const;
98 void PlotAvgELossVsPt(Double_t medval,TH1F *hEll) const;
99
100 protected:
101 static const Double_t gkConvFmToInvGeV;
102 static const Double_t gkRMax;
103 static Int_t gCounter;//static instance counter
104 Int_t fInstanceNumber;//instance number of class
105
106 Bool_t fMultSoft; //approximation type
107 Bool_t fECMethod; //energy constraint method
108 Double_t fQTransport; //transport coefficient
109 Double_t fMu; //Debye screening mass
110 Int_t fLengthMax; //maximum length
111 Int_t fLengthMaxOld; //maximum length used for histos
112
113 //discrete and cont part of quenching for
114 //both parton type and different lengths
115 TH1F ***fHistos; //!
116
117 // data strucs for tables
118 Double_t fxx[400];
119 Double_t fxxg[400];
120 Double_t fdaq[30];
121 Double_t fdag[30];
122 Double_t fcaq[30][261];
123 Double_t fcag[30][261];
124 Double_t frrr[30];
125 Double_t frrrg[30];
126 Bool_t fTablesLoaded;
127
128 ClassDef(AliQuenchingWeights,1) // Base class for Quenching Weights
129};
130
131#endif