]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muondep/AccEffTemplates/GenJPsi8TeVParaSet.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / muondep / AccEffTemplates / GenJPsi8TeVParaSet.C
1 /**********************************************************************
2  Created on : 21/11/2013
3  Purpose    : pp 8 TeV paraset for JPsi
4  Author     : Indranil Das, IPN Orsay
5  Email      : indranil.das@cern.ch | indra.ehep@gmail.com
6 **********************************************************************/
7
8 #if !defined(__CINT__) || defined(__MAKECINT__)
9 #include "TRandom.h"
10 #include "AliGenParam.h"
11 #include "AliGenMUONlib.h"
12 #endif 
13
14 //           generator functions
15 //
16
17
18 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
19
20
21 Double_t  V2Zero_M( const Double_t* /*px*/, const Double_t */*dummy*/ )
22 {
23
24   return 0.0;
25
26 }
27  
28
29 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
30
31
32 Double_t YJpsiPPdummy_M(Double_t x, Double_t energy)
33 {
34 // J/Psi y
35 // pp
36 // from the fit of RHIC + LHC data, see arXiv:1103.2394
37 //
38     x = x/TMath::Log(energy/3.097);
39     x = x*x;
40     Double_t y = TMath::Exp(-x/0.4/0.4/2);
41     if(x > 1) y=0;
42     return y;
43 }
44
45 //---------------------------------------------------------------------
46
47 Double_t YJpsiPPpoly_M(Double_t x, Double_t energy)
48 {
49 // J/Psi y
50 // pp
51 // from the fit of RHIC + LHC data, see arXiv:1103.2394
52 //
53     x = x/TMath::Log(energy/3.097);
54     x = x*x;
55     Double_t y = 1 - 6.9*x*x;
56     if(y < 0) y=0;
57     return y;
58 }
59
60 //---------------------------------------------------------------------
61
62 Double_t YJpsiPP8000_M(const Double_t *px, const Double_t */*dummy*/)
63 {
64 // J/Psi y
65 // pp 7 TeV
66 //
67   return YJpsiPPdummy_M(*px, 8000);
68 }
69
70 //---------------------------------------------------------------------
71
72 Double_t YJpsi_M(const Double_t *py, const Double_t */*dummy*/)
73 {
74 // J/psi y
75   const Double_t ky0 = 4.;
76   const Double_t kb=1.;
77   Double_t yj;
78   Double_t y=TMath::Abs(*py);
79   //
80   if (y < ky0)
81     yj=kb;
82   else
83     yj=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
84   return yj;
85 }
86
87 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
88
89 Int_t IpJpsi_M(TRandom *)
90 {
91 // J/Psi composition
92     return 443;
93 }
94
95 //---------------------------------------------------------------------
96
97 Int_t  IpMuon_M(TRandom* /*ran*/) {
98
99   //muon composition
100   // if (ran->Rndm() < 0.5 ) {
101   //   return 13;
102   // }
103   return 443;
104   
105 }
106
107 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
108
109 Double_t PtJpsiPPdummy_M(Double_t x, Double_t energy)
110 {
111 // J/Psi pT
112 // pp
113 // from the fit of RHIC, CDF & LHC data, see arXiv:1103.2394
114 //
115   const Double_t kpt0 = 1.04*TMath::Power(energy,0.101);
116   const Double_t kxn  = 3.9;
117   //
118   Double_t pass1 = 1.+0.363*(x/kpt0)*(x/kpt0);
119   return x/TMath::Power(pass1,kxn);
120 }
121
122 //---------------------------------------------------------------------
123
124 Double_t PtJpsiPP8000_M(const Double_t *px, const Double_t */*dummy*/)
125 {
126 // J/Psi pT
127 // pp 7 TeV
128 //
129   return PtJpsiPPdummy_M(*px,8000);
130 }
131
132 //---------------------------------------------------------------------
133
134 Double_t PtJpsi_M( const Double_t *px, const Double_t */*dummy*/)
135 {
136 // J/Psi pT
137   const Double_t kpt0 = 4.;
138   const Double_t kxn  = 3.6;
139   Double_t x=*px;
140   //
141   Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
142   return x/TMath::Power(pass1,kxn);
143 }
144
145
146 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
147
148
149 //           generators
150 //
151 AliGenerator* JPsi7TeV()
152 {
153   printf("\nProcessing config setup : JPsi7TeV\n\n");
154   AliGenParam *jpsi7TeV = new AliGenParam(1, AliGenMUONlib::kJpsi,"pp 8");
155   jpsi7TeV->SetMomentumRange(0,999);
156   //jpsi7TeV->SetPtRange(0.,999.);
157   //jpsi7TeV->SetYRange(-4.2, -2.3);
158   jpsi7TeV->SetPtRange(0,50.);
159   jpsi7TeV->SetYRange(-4.5,-2.);
160   jpsi7TeV->SetPhiRange(0., 360.);
161   jpsi7TeV->SetCutOnChild(1);
162   jpsi7TeV->SetChildPhiRange(0.,360.);
163   jpsi7TeV->SetChildThetaRange(0.,180.);
164   jpsi7TeV->SetForceDecay(kDiMuon);
165   jpsi7TeV->SetTrackingFlag(1);
166   
167   return jpsi7TeV;
168 }
169
170 AliGenerator* GenJPsi8TeVParaSet()
171 {
172   printf("\nProcessing config setup : JPsi8TeVParaSet1\n\n");
173   AliGenParam *genJpsi8TeV = new AliGenParam(1,-1, PtJpsiPP8000_M, YJpsiPP8000_M, V2Zero_M, IpJpsi_M);
174   genJpsi8TeV->SetMomentumRange(0,999);
175   genJpsi8TeV->SetPtRange(0,50.);
176   genJpsi8TeV->SetYRange(-4.5,-2.0);
177   genJpsi8TeV->SetPhiRange(0., 360.);
178   genJpsi8TeV->SetCutOnChild(1);
179   genJpsi8TeV->SetChildPhiRange(0.,360.);
180   genJpsi8TeV->SetChildThetaRange(0.0,180.0);
181   genJpsi8TeV->SetOrigin(0,0,0);
182   genJpsi8TeV->SetForceDecay(kDiMuon);
183   genJpsi8TeV->SetTrackingFlag(1);
184   //genJpsi8TeV->Init();
185
186   return genJpsi8TeV;
187 }