/* $Id$ */
-//----------------------------------------------------------------------------
-// Implementation of the class to calculate the parton energy loss
-// Based on the "BDMPS" quenching weights by C.A.Salgado and U.A.Wiedemann
-//
-// References:
-// C.A.Salgado and U.A.Wiedemann, Phys.Rev.D68 (2003) 014008 [hep-ph/0302184]
-// A.Dainese, Eur.Phys.J.C, in press, [nucl-ex/0312005]
+
+// Implementation of the class to calculate the parton energy loss
+// Based on the "BDMPS" quenching weights by C.A.Salgado and U.A.Wiedemann
+// References:
+// C.A.Salgado and U.A.Wiedemann, Phys.Rev.D68 (2003) 014008 [hep-ph/0302184]
+// A.Dainese, Eur.Phys.J.C, in press, [nucl-ex/0312005]
//
//
// Origin: C. Loizides constantinos.loizides@cern.ch
//
//=================== Added by C. Loizides 27/03/04 ===========================
//
-// Added support for k-Quenching, where wc=I1*k and R=2I1^2/I0*k
-// (see the AliFastGlauber class for definition of I0/I1)
+// Added support for k-Quenching, where wc=I1*k and R=2I1^2/I0*k
+// (see the AliFastGlauber class for definition of I0/I1)
//-----------------------------------------------------------------------------
#include <Riostream.h>
AliQuenchingWeights::AliQuenchingWeights()
- : TObject()
+ : TObject(),
+ fInstanceNumber(fgCounter++),
+ fMultSoft(kTRUE),
+ fECMethod(kDefault),
+ fQTransport(1.),
+ fMu(1.),
+ fK(4.e5),
+ fLengthMax(20),
+ fLengthMaxOld(0),
+ fHistos(0),
+ fHisto(0),
+ fTablesLoaded(kFALSE)
{
//default constructor
-
- fTablesLoaded=kFALSE;
- fMultSoft=kTRUE;
- fHistos=0;
- SetMu();
- SetQTransport();
- SetK();
- fECMethod=kDefault;
- SetLengthMax();
- fLengthMaxOld=0;
- fInstanceNumber=fgCounter++;
Char_t name[100];
sprintf(name,"hhistoqw_%d",fInstanceNumber);
fHisto = new TH1F(name,"",fgkBins,0.,fgkMaxBin);
}
AliQuenchingWeights::AliQuenchingWeights(const AliQuenchingWeights& a)
- : TObject()
+ : TObject(),
+ fInstanceNumber(fgCounter++),
+ fMultSoft(kTRUE),
+ fECMethod(kDefault),
+ fQTransport(1.),
+ fMu(1.),
+ fK(4.e5),
+ fLengthMax(20),
+ fLengthMaxOld(0),
+ fHistos(0),
+ fHisto(0),
+ fTablesLoaded(kFALSE)
{
// copy constructor
Double_t AliQuenchingWeights::CalcR(Double_t wc, Double_t l) const
{
- //calculate R value and
+ //calculate r value and
//check if it is less then maximum
- Double_t R = wc*l*fgkConvFmToInvGeV;
- if(R>=fgkRMax) {
- Warning("CalcR","Value of R = %.2f; should be less than %.2f",R,fgkRMax);
+ Double_t r = wc*l*fgkConvFmToInvGeV;
+ if(r >= fgkRMax) {
+ Warning("CalcR","Value of r = %.2f; should be less than %.2f", r, fgkRMax);
return fgkRMax-1;
}
- return R;
+ return r;
}
Double_t AliQuenchingWeights::CalcRk(Double_t k, Double_t I0, Double_t I1) const
//calculate R value and
//check if it is less then maximum
- Double_t R = fgkRMax-1;
+ Double_t r = fgkRMax-1;
if(I0>0)
- R = 2*I1*I1/I0*k;
- if(R>=fgkRMax) {
- Warning("CalcRk","Value of R = %.2f; should be less than %.2f",R,fgkRMax);
+ r = 2*I1*I1/I0*k;
+ if(r>=fgkRMax) {
+ Warning("CalcRk","Value of r = %.2f; should be less than %.2f",r,fgkRMax);
return fgkRMax-1;
}
- return R;
+ return r;
}
Double_t AliQuenchingWeights::GetELossRandom(Int_t ipart, Double_t length, Double_t e) const
if(kbinmax==1) return e; //maximum energy loss
if(fMultSoft) {
- for(Int_t bin=2; bin<=kbinmax; bin++) {
+ for(bin=2; bin<=kbinmax; bin++) {
xxxx = fHisto->GetBinCenter(bin);
CalcMult(ipart,r,xxxx,continuous,discrete);
fHisto->SetBinContent(bin,continuous);
}
} else {
- for(Int_t bin=2; bin<=kbinmax; bin++) {
+ for(bin=2; bin<=kbinmax; bin++) {
xxxx = fHisto->GetBinCenter(bin);
CalcSingleHard(ipart,r,xxxx,continuous,discrete);
fHisto->SetBinContent(bin,continuous);
fHisto->Fill(0.,val);
fHisto->SetBinContent(kbinmax+1,(1-discrete)*fgkBins/fgkMaxBin-kdelta);
}
- for(Int_t bin=kbinmax+2; bin<=fgkBins; bin++) {
+ for(bin=kbinmax+2; bin<=fgkBins; bin++) {
fHisto->SetBinContent(bin,0);
}
//cout << kbinmax << " " << discrete << " " << fHisto->Integral() << endl;
if(discrete>=1.) {
fHisto->SetBinContent(1,1.);
- for(Int_t bin=2;bin<=fgkBins;bin++)
+ for(bin=2;bin<=fgkBins;bin++)
fHisto->SetBinContent(bin,0.);
return 0;
}
fHisto->SetBinContent(bin,continuous);
- for(Int_t bin=2; bin<=fgkBins; bin++) {
+ for(bin=2; bin<=fgkBins; bin++) {
xxxx = fHisto->GetBinCenter(bin);
if(fMultSoft)
CalcMult(ipart,r,xxxx,continuous,discrete);
return ret;
}
-void AliQuenchingWeights::PlotDiscreteWeights(Double_t len) const
+void AliQuenchingWeights::PlotDiscreteWeights(Double_t len,Double_t qm) const
{
// plot discrete weights for given length
c = new TCanvas("cdiscsh","Discrete Weight for Single Hard Scattering",0,0,500,400);
c->cd();
- TH2F *hframe = new TH2F("hdisc","",2,0,5.1,2,0,1);
+ TH2F *hframe = new TH2F("hdisc","",2,0,qm+.1,2,0,1.25);
hframe->SetStats(0);
if(fMultSoft)
hframe->SetXTitle("#hat{q} [GeV^{2}/fm]");
else
hframe->SetXTitle("#mu [GeV]");
- hframe->SetYTitle("Probability #Delta E = 0 , p_{0}");
+ //hframe->SetYTitle("Probability #Delta E = 0 , p_{0}");
+ hframe->SetYTitle("p_{0} (discrete weight)");
hframe->Draw();
- TGraph *gq=new TGraph(20);
+ Int_t points=(Int_t)qm*4;
+ TGraph *gq=new TGraph(points);
Int_t i=0;
if(fMultSoft) {
- for(Double_t q=0.05;q<=5.05;q+=0.25){
+ for(Double_t q=0.05;q<=qm+.05;q+=0.25){
Double_t disc,cont;
CalcMult(1,1.0,q,len,cont,disc);
gq->SetPoint(i,q,disc);i++;
}
} else {
- for(Double_t m=0.05;m<=5.05;m+=0.25){
+ for(Double_t m=0.05;m<=qm+.05;m+=0.25){
Double_t disc,cont;
CalcSingleHard(1,1.0,m,len,cont, disc);
gq->SetPoint(i,m,disc);i++;
}
}
gq->SetMarkerStyle(20);
- gq->Draw("pl");
+ gq->SetMarkerColor(1);
+ gq->SetLineStyle(1);
+ gq->SetLineColor(1);
+ gq->Draw("l");
- TGraph *gg=new TGraph(20);
+ TGraph *gg=new TGraph(points);
i=0;
if(fMultSoft){
- for(Double_t q=0.05;q<=5.05;q+=0.25){
+ for(Double_t q=0.05;q<=qm+.05;q+=0.25){
Double_t disc,cont;
CalcMult(2,1.0,q,len,cont,disc);
gg->SetPoint(i,q,disc);i++;
}
} else {
- for(Double_t m=0.05;m<=5.05;m+=0.25){
+ for(Double_t m=0.05;m<=qm+.05;m+=0.25){
Double_t disc,cont;
CalcSingleHard(2,1.0,m,len,cont,disc);
gg->SetPoint(i,m,disc);i++;
}
}
gg->SetMarkerStyle(24);
- gg->Draw("pl");
+ gg->SetMarkerColor(2);
+ gg->SetLineStyle(2);
+ gg->SetLineColor(2);
+ gg->Draw("l");
TLegend *l1a = new TLegend(0.5,0.6,.95,0.8);
l1a->SetFillStyle(0);
Char_t label[100];
sprintf(label,"L = %.1f fm",len);
l1a->AddEntry(gq,label,"");
- l1a->AddEntry(gq,"quark","pl");
- l1a->AddEntry(gg,"gluon","pl");
+ l1a->AddEntry(gq,"quark projectile","l");
+ l1a->AddEntry(gg,"gluon projectile","l");
l1a->Draw();
c->Update();
c->Update();
}
-void AliQuenchingWeights::PlotAvgELoss(Double_t len,Double_t e) const
+void AliQuenchingWeights::PlotAvgELoss(Double_t len,Double_t qm,Double_t e) const
{
// plot average energy loss for given length
// and parton energy
TCanvas *c = new TCanvas(name,title,0,0,500,400);
c->cd();
- TH2F *hframe = new TH2F("avgloss",title,2,0,5.1,2,0,100);
+ TH2F *hframe = new TH2F("avgloss","",2,0,qm+.1,2,0,100);
hframe->SetStats(0);
if(fMultSoft)
hframe->SetXTitle("#hat{q} [GeV^{2}/fm]");
TGraph *gq=new TGraph(20);
Int_t i=0;
- for(Double_t v=0.05;v<=5.05;v+=0.25){
+ for(Double_t v=0.05;v<=qm+.05;v+=0.25){
TH1F *dummy=ComputeELossHisto(1,v,len,e);
Double_t avgloss=dummy->GetMean();
gq->SetPoint(i,v,avgloss);i++;
delete dummy;
}
- gq->SetMarkerStyle(20);
+ gq->SetMarkerStyle(21);
gq->Draw("pl");
- TGraph *gg=new TGraph(20);
+ Int_t points=(Int_t)qm*4;
+ TGraph *gg=new TGraph(points);
i=0;
- for(Double_t v=0.05;v<=5.05;v+=0.25){
+ for(Double_t v=0.05;v<=qm+.05;v+=0.25){
TH1F *dummy=ComputeELossHisto(2,v,len,e);
Double_t avgloss=dummy->GetMean();
gg->SetPoint(i,v,avgloss);i++;
delete dummy;
}
- gg->SetMarkerStyle(24);
+ gg->SetMarkerStyle(20);
+ gg->SetMarkerColor(2);
gg->Draw("pl");
- TGraph *gratio=new TGraph(20);
- for(Int_t i=0;i<20;i++){
+ TGraph *gratio=new TGraph(points);
+ for(i=0;i<points;i++){
Double_t x,y,x2,y2;
gg->GetPoint(i,x,y);
gq->GetPoint(i,x2,y2);
}
gratio->SetLineStyle(4);
gratio->Draw();
- TLegend *l1a = new TLegend(0.5,0.6,.95,0.8);
+ TLegend *l1a = new TLegend(0.15,0.60,0.50,0.90);
l1a->SetFillStyle(0);
l1a->SetBorderSize(0);
Char_t label[100];
sprintf(label,"L = %.1f fm",len);
l1a->AddEntry(gq,label,"");
- l1a->AddEntry(gq,"quark","pl");
- l1a->AddEntry(gg,"gluon","pl");
+ l1a->AddEntry(gq,"quark projectile","pl");
+ l1a->AddEntry(gg,"gluon projectile","pl");
l1a->AddEntry(gratio,"gluon/quark/2.25*10","pl");
l1a->Draw();
gg->Draw("pl");
TGraph *gratio=new TGraph(20);
- for(Int_t i=0;i<20;i++){
+ for(i=0;i<20;i++){
Double_t x,y,x2,y2;
gg->GetPoint(i,x,y);
gq->GetPoint(i,x2,y2);
else gratio->SetPoint(i,x,0);
}
gratio->SetLineStyle(4);
- gratio->Draw();
+ //gratio->Draw();
TLegend *l1a = new TLegend(0.5,0.6,.95,0.8);
l1a->SetFillStyle(0);
l1a->AddEntry(gq,label,"");
l1a->AddEntry(gq,"quark","pl");
l1a->AddEntry(gg,"gluon","pl");
- l1a->AddEntry(gratio,"gluon/quark/2.25*10","pl");
+ //l1a->AddEntry(gratio,"gluon/quark/2.25*10","pl");
l1a->Draw();
c->Update();
gg->Draw("pl");
TGraph *gratio=new TGraph((Int_t)fLengthMax*4);
- for(Int_t i=0;i<=(Int_t)fLengthMax*4;i++){
+ for(i=0;i<=(Int_t)fLengthMax*4;i++){
Double_t x,y,x2,y2;
gg->GetPoint(i,x,y);
gq->GetPoint(i,x2,y2);