]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FASTSIM/AliQuenchingWeights.h
Changes needed by the new TOF reconstruction. Minor improvement in GetP (Yu.Belikov)
[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();
7258586f 33 Int_t SampleEnergyLoss(Int_t ipart, Double_t R);
34
35 Double_t GetELossRandom(Int_t ipart, Double_t length, Double_t e=1.e10) const;
b6d061b7 36 Double_t CalcQuenchedEnergy(Int_t ipart, Double_t length, Double_t e) const;
7258586f 37 Double_t GetELossRandom(Int_t ipart, TH1F *hell, Double_t e=1.e10) const;
b6d061b7 38 Double_t CalcQuenchedEnergy(Int_t ipart, TH1F *hell, Double_t e) const;
39
7258586f 40 Double_t GetELossRandomK(Int_t ipart, Double_t I0, Double_t I1, Double_t e=1.e10);
41 Double_t CalcQuenchedEnergyK(Int_t ipart, Double_t I0, Double_t I1, Double_t e);
42
b6d061b7 43 //multiple soft scattering approximation
44 Int_t InitMult(const Char_t *contall="$(ALICE_ROOT)/FASTSIM/data/cont_mult.all",
45 const Char_t *discall="$(ALICE_ROOT)/FASTSIM/data/disc_mult.all");
46
47 //single hard scattering approximation
48 Int_t InitSingleHard(const Char_t *contall="$(ALICE_ROOT)/FASTSIM/data/cont_lin.all",
49 const Char_t *discall="$(ALICE_ROOT)/FASTSIM/data/disc_lin.all");
50
51 Int_t CalcMult(Int_t ipart, Double_t rrrr,Double_t xxxx,
52 Double_t &continuous,Double_t &discrete) const;
53 Int_t CalcMult(Int_t ipart,
54 Double_t w, Double_t qtransp, Double_t length,
55 Double_t &continuous,Double_t &discrete) const;
56 Int_t CalcSingleHard(Int_t ipart, Double_t rrrr,Double_t xxxx,
57 Double_t &continuous,Double_t &discrete) const;
58 Int_t CalcSingleHard(Int_t ipart,
59 Double_t w, Double_t mu, Double_t length,
60 Double_t &continuous,Double_t &discrete) const;
61
62 Double_t CalcWC(Double_t q, Double_t l) const
7a76a12e 63 {return 0.5*q*l*l*fgkConvFmToInvGeV;}
b6d061b7 64
65 Double_t CalcWCbar(Double_t mu, Double_t l) const
7a76a12e 66 {return 0.5*mu*mu*l*fgkConvFmToInvGeV;}
b6d061b7 67
68 Double_t CalcWC(Double_t l) const
69 {if(fMultSoft) return CalcWC(fQTransport,l);
70 else return CalcWCbar(fMu,l);}
71
7258586f 72 Double_t CalcWCk(Double_t I1) const
73 {if(fMultSoft) return CalcWCk(fK,I1);
74 else return -1;} //not implemented!
75
76 Double_t CalcWCk(Double_t k, Double_t I1) const
77 {if(fMultSoft) return k*I1/fgkConvFmToInvGeV;
78 else return -1;} //not implemented!
79
b6d061b7 80 Double_t CalcR(Double_t wc, Double_t l) const;
81
7258586f 82 Double_t CalcRk(Double_t I0, Double_t I1) const
83 {return CalcRk(fK,I0,I1);}
84
85 Double_t CalcRk(Double_t k, Double_t I0, Double_t I1) const;
86
87 Double_t CalcQk(Double_t I0, Double_t I1) const
88 {return CalcQk(fK,I0,I1);}
89
90 Double_t CalcQk(Double_t k, Double_t I0, Double_t I1) const
6bd26c4a 91 {return I0*I0/2/I1/fgkConvFmToInvGeV/fgkConvFmToInvGeV*k;}
92
93 Double_t CalcLk(Double_t i0, Double_t i1) const
94 {return 2.*i1/i0;}
7258586f 95
b6d061b7 96 Int_t CalcLengthMax(Double_t q) const
7a76a12e 97 {Double_t l3max=fgkRMax/.5/q/fgkConvFmToInvGeV/fgkConvFmToInvGeV;
b6d061b7 98 return (Int_t)TMath::Power(l3max,1./3.);}
99
7258586f 100 const TH1F* GetHisto(Int_t ipart,Double_t length) const;
b6d061b7 101
102 void SetMu(Double_t m=1.) {fMu=m;}
103 void SetQTransport(Double_t q=1.) {fQTransport=q;}
7258586f 104 void SetK(Double_t k=4.e5) {fK=k;} //about 1 GeV^2/fm
b6d061b7 105 void SetECMethod(kECMethod type=kDefault);
106 void SetLengthMax(Int_t l=20) {fLengthMax=l;}
107
108 Float_t GetMu() const {return fMu;}
109 Float_t GetQTransport() const {return fQTransport;}
7258586f 110 Float_t GetK() const {return fK;}
b6d061b7 111 Bool_t GetECMethod() const {return fECMethod;}
112 Bool_t GetTablesLoaded() const {return fTablesLoaded;}
113 Bool_t GetMultSoft() const {return fMultSoft;}
114 Int_t GetLengthMax() const {return fLengthMax;}
115
116 TH1F* ComputeQWHisto (Int_t ipart,Double_t medval,Double_t length) const;
117 TH1F* ComputeQWHistoX(Int_t ipart,Double_t medval,Double_t length) const;
7258586f 118 TH1F* ComputeQWHistoX(Int_t ipart,Double_t R) const;
119 TH1F* ComputeELossHisto(Int_t ipart,Double_t medval,Double_t l,Double_t e=1.e10) const;
120 TH1F* ComputeELossHisto(Int_t ipart,Double_t medval,TH1F *hEll,Double_t e=1.e10) const;
121 TH1F* ComputeELossHisto(Int_t ipart,Double_t R) const;
122
123 Double_t GetMeanELoss(Int_t ipart,Double_t medval,Double_t l) const;
124 Double_t GetMeanELoss(Int_t ipart,Double_t medval,TH1F *hEll) const;
125 Double_t GetMeanELoss(Int_t ipart,Double_t R) const;
b6d061b7 126
7258586f 127 void PlotDiscreteWeights(Double_t len=4) const;
128 void PlotContWeights(Int_t itype,Double_t len) const;
129 void PlotContWeightsVsL(Int_t itype,Double_t medval) const;
130 void PlotAvgELoss(Double_t len ,Double_t e=1.e10) const;
131 void PlotAvgELoss(TH1F *hEll,Double_t e=1.e10) const;
9d851d20 132 void PlotAvgELossVsL(Double_t e=1.e10) const;
7258586f 133 void PlotAvgELossVsPt(Double_t medval,Double_t len) const;
134 void PlotAvgELossVsPt(Double_t medval,TH1F *hEll) const;
b6d061b7 135
136 protected:
7258586f 137 Int_t GetIndex(Double_t len) const;
138
7a76a12e 139 static const Double_t fgkConvFmToInvGeV; //conversion factor
7258586f 140 static const Int_t fgBins; //number of bins for hists
141 static const Double_t fgMaxBin; //max. value of wc
142 static const Double_t fgkRMax; //max. tabled value of R
143
7a76a12e 144 static Int_t fgCounter;//static instance counter
145 Int_t fInstanceNumber; //instance number of class
b6d061b7 146
147 Bool_t fMultSoft; //approximation type
148 Bool_t fECMethod; //energy constraint method
7258586f 149 Double_t fQTransport; //transport coefficient [GeV^2/fm]]
b6d061b7 150 Double_t fMu; //Debye screening mass
7258586f 151 Double_t fK; //proportional constant [fm]
b6d061b7 152 Int_t fLengthMax; //maximum length
153 Int_t fLengthMaxOld; //maximum length used for histos
154
155 //discrete and cont part of quenching for
156 //both parton type and different lengths
157 TH1F ***fHistos; //!
7258586f 158 TH1F *fHisto; //!
b6d061b7 159
160 // data strucs for tables
7a76a12e 161 Double_t fxx[400]; //sampled energy quark
162 Double_t fxxg[400]; //sampled energy gluon
163 Double_t fdaq[34]; //discrete weight quark
164 Double_t fdag[34]; //discrete weight gluon
165 Double_t fcaq[34][261]; //continuous weights quarks
166 Double_t fcag[34][261]; //continuous weights gluons
167 Double_t frrr[34]; //r value quark
168 Double_t frrrg[34]; //r value gluon
169 Bool_t fTablesLoaded; //tables loaded
b6d061b7 170
171 ClassDef(AliQuenchingWeights,1) // Base class for Quenching Weights
172};
173
174#endif