}
return y;
}
+
+Double_t AliGenMUONlib::PtJpsiBPbPb( Double_t *px, Double_t */*dummy*/)
+{
+// J/Psi pT spectrum
+// B -> J/Psi X
+ Double_t x0 = 4.0384;
+ Double_t n = 3.0288;
+
+ Double_t x = px[0];
+ Double_t y = x / TMath::Power((1. + (x/x0)*(x/x0)), n);
+
+ return y;
+}
+
+
Double_t AliGenMUONlib::PtJpsiPP( Double_t *px, Double_t */*dummy*/)
{
// J/Psi pT spectrum
return y;
}
+Double_t AliGenMUONlib::YJpsiBPbPb( Double_t *px, Double_t */*dummy*/)
+{
+
+//
+// J/Psi from B->J/Psi X
+//
+//
+
+
+ Double_t c[7] = {7.37025e-02, 0., -2.94487e-03, 0., 6.07953e-06, 0., 5.39219e-07};
+
+ Double_t x = TMath::Abs(px[0]);
+ Double_t y;
+
+ if (x > 6.) {
+ y = 0.;
+ } else {
+ Int_t j;
+ y = c[j = 6];
+ while (j > 0) y = y * x + c[--j];
+ }
+
+ return y;
+}
+
+
+
// particle composition
//
Int_t AliGenMUONlib::IpJpsi(TRandom *)
func=PtJpsi;
}
break;
+ case kJpsiFromB:
+ func = PtJpsiBPbPb;
+ break;
case kUpsilon:
if (sname == "Vogt" || sname == "Vogt PbPb") {
func=PtUpsilonPbPb;
func=YJpsi;
}
+ break;
+ case kJpsiFromB:
+ func = YJpsiBPbPb;
break;
case kUpsilon:
if (sname == "Vogt" || sname == "Vogt PbPb") {
func=IpOmega;
break;
case kJpsi:
+ case kJpsiFromB:
func=IpJpsi;
break;
case kUpsilon:
public AliGenLib
{
public:
- enum constants{kPhi, kOmega, kEta, kJpsi, kUpsilon,
+ enum constants{kPhi, kOmega, kEta, kJpsi, kJpsiFromB, kUpsilon,
kCharm, kBeauty, kPion, kKaon};
static Double_t PtJpsi( Double_t *px, Double_t *dummy);
static Double_t YJpsi(Double_t *py, Double_t *dummy);
static Double_t PtJpsiPbPb( Double_t *px, Double_t *dummy);
+ static Double_t PtJpsiBPbPb( Double_t *px, Double_t *dummy);
static Double_t YJpsiPbPb(Double_t *py, Double_t *dummy);
static Double_t PtJpsiPP( Double_t *px, Double_t *dummy);
static Double_t YJpsiPP(Double_t *py, Double_t *dummy);
+ static Double_t YJpsiBPbPb(Double_t *py, Double_t *dummy);
static Int_t IpJpsi(TRandom *ran);
// Upsilon
static Double_t PtUpsilon( Double_t *px, Double_t *dummy );