]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updates needed for production (Nicole Bastid)
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 May 2009 14:32:37 +0000 (14:32 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 May 2009 14:32:37 +0000 (14:32 +0000)
EVGEN/AliGenCorrHF.cxx
EVGEN/AliGenCorrHF.h
EVGEN/AliGenMUONlib.cxx
EVGEN/AliGenMUONlib.h

index 81bf8f4d7114b15d04045ed2ad2fa1cc1cf51b34..1927d74ed984ae78e57546a5b83046fc959e6696 100644 (file)
 // and quark fragmentation functions.
 // Is a generalisation of AliGenParam class for correlated pairs of hadrons.
 // In this version quark pairs and fragmentation functions are obtained from
 // and quark fragmentation functions.
 // Is a generalisation of AliGenParam class for correlated pairs of hadrons.
 // In this version quark pairs and fragmentation functions are obtained from
-// Pythia6.124 using 100K events generated with kCharmppMNRwmi&kBeautyppMNRwmi 
-// in pp collisions at 14 TeV.
-// Decays are performed by Pythia. Used AliRoot version: v4-04-Release
+// ~2.10^6 Pythia6.214 events generated with kCharmppMNRwmi & kBeautyppMNRwmi, 
+// CTEQ5L PDF and Pt_hard = 2.76 GeV/c in p-p collisions at 10 and 14 TeV.
+// Decays are performed by Pythia.
 // Author: S. Grigoryan, LPC Clermont-Fd & YerPhI, Smbat.Grigoryan@cern.ch
 // July 07: added quarks in the stack (B. Vulpescu)
 // Author: S. Grigoryan, LPC Clermont-Fd & YerPhI, Smbat.Grigoryan@cern.ch
 // July 07: added quarks in the stack (B. Vulpescu)
+// April 09: added energy choice between 10 and 14 TeV (S. Grigoryan)
 //-------------------------------------------------------------------------
 //-------------------------------------------------------------------------
-// How it works (for the given flavor):
+// How it works (for the given flavor and p-p energy):
 //
 // 1) Reads QQbar kinematical grid from the Input file and generates
 // quark pairs according to the weights of the cells.
 //
 // 1) Reads QQbar kinematical grid from the Input file and generates
 // quark pairs according to the weights of the cells.
@@ -39,7 +40,7 @@
 // on 2 variables - light cone energy-momentum fractions:
 //     z1=(E_H + Pz_H)/(E_Q + Pz_Q),  z2=(E_H - Pz_H)/(E_Q - Pz_Q).
 // "soft" & "hard" FFs correspond to "slower" & "faster" quark of a pair 
 // on 2 variables - light cone energy-momentum fractions:
 //     z1=(E_H + Pz_H)/(E_Q + Pz_Q),  z2=(E_H - Pz_H)/(E_Q - Pz_Q).
 // "soft" & "hard" FFs correspond to "slower" & "faster" quark of a pair 
-// (see details in GetHadronPair).
+// (see details in GetHadronPair). Fragmentation does not depend on p-p energy.
 // 3) Decays the hadrons and saves all the particles in the event stack in the
 // following order: HF hadron from Q, then its decay products, then HF hadron
 // from Qbar, then its decay productes, then next HF hadon pair (if any) 
 // 3) Decays the hadrons and saves all the particles in the event stack in the
 // following order: HF hadron from Q, then its decay products, then HF hadron
 // from Qbar, then its decay productes, then next HF hadon pair (if any) 
 // 4) It is fast, e.g., generates the same number of events with a beauty pair 
 //  ~15 times faster than AliGenPythia with kBeautyppMNRwmi (w/o tracking)
 //
 // 4) It is fast, e.g., generates the same number of events with a beauty pair 
 //  ~15 times faster than AliGenPythia with kBeautyppMNRwmi (w/o tracking)
 //
-// An Input file for each quark flavor is included in EVGEN/dataCorrHF/
+// An Input file for each quark flavor and p-p energy is in EVGEN/dataCorrHF/
 // One can use also user-defined Input files.
 //
 // More details could be found in my presentation at DiMuonNet Workshop, Dec 2006: 
 // One can use also user-defined Input files.
 //
 // More details could be found in my presentation at DiMuonNet Workshop, Dec 2006: 
-// http://www-dapnia.cea.fr/Sphn/Alice/DiMuonNet
-// and will be published in an Internal Note. 
+// http://www-dapnia.cea.fr/Sphn/Alice/DiMuonNet.
 //
 //-------------------------------------------------------------------------
 // How to use it:
 //
 //-------------------------------------------------------------------------
 // How to use it:
 // add the following typical lines in Config.C
 /*
   if (!strcmp(option,"corr")) {
 // add the following typical lines in Config.C
 /*
   if (!strcmp(option,"corr")) {
-    // Example for correlated charm or beauty hadron pair production 
+    // Example for correlated charm or beauty hadron pair production at 14 TeV
 
 
-    // AliGenCorrHF *gener = new AliGenCorrHF(1, 4);  // for charm, 1 pair per event
-    AliGenCorrHF *gener = new AliGenCorrHF(1, 5);  // for beauty, 1 pair per event
+    // AliGenCorrHF *gener = new AliGenCorrHF(1, 4, 14);  // for charm, 1 pair per event
+    AliGenCorrHF *gener = new AliGenCorrHF(1, 5, 14);  // for beauty, 1 pair per event
 
     gener->SetMomentumRange(0,9999);
     gener->SetCutOnChild(0);        // 1/0 means cuts on children enable/disable
 
     gener->SetMomentumRange(0,9999);
     gener->SetCutOnChild(0);        // 1/0 means cuts on children enable/disable
@@ -113,7 +113,7 @@ ClassImp(AliGenCorrHF)
 
 Double_t AliGenCorrHF::fgdph[19] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180};
 Double_t AliGenCorrHF::fgy[31] = {-10,-7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2,- 1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 10};
 
 Double_t AliGenCorrHF::fgdph[19] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180};
 Double_t AliGenCorrHF::fgy[31] = {-10,-7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2,- 1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 10};
-Double_t AliGenCorrHF::fgpt[33] = {0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.6, 7.2, 7.8, 8.4, 9, 9.6, 10.3, 11.1, 12, 13.1, 14.3, 15.6, 17.1, 19, 21, 24, 28, 35, 50, 100};
+Double_t AliGenCorrHF::fgpt[51] = {0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.6, 7.2, 7.8, 8.4, 9, 9.6, 10.3, 11.1, 12, 13, 14, 15, 16, 17, 18, 19, 20.1, 21.5, 23, 24.5, 26, 27.5, 29.1, 31, 33, 35, 37, 39.2, 42, 45, 48, 51, 55.2, 60, 65, 71, 81, 100};
 Int_t AliGenCorrHF::fgnptbins = 12;
 Double_t AliGenCorrHF::fgptbmin[12] = {0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 9};
 Double_t AliGenCorrHF::fgptbmax[12] = {0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 9, 100};
 Int_t AliGenCorrHF::fgnptbins = 12;
 Double_t AliGenCorrHF::fgptbmin[12] = {0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 9};
 Double_t AliGenCorrHF::fgptbmax[12] = {0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 7, 9, 100};
@@ -125,6 +125,7 @@ Double_t* AliGenCorrHF::fgIntegral = 0;
        fFileName(0),
        fFile(0),
        fQuark(0),
        fFileName(0),
        fFile(0),
        fQuark(0),
+       fEnergy(0),
        fBias(0.),
        fTrials(0),
        fDecayer(0)
        fBias(0.),
        fTrials(0),
        fDecayer(0)
@@ -133,22 +134,30 @@ Double_t* AliGenCorrHF::fgIntegral = 0;
 }
 
 //____________________________________________________________
 }
 
 //____________________________________________________________
-AliGenCorrHF::AliGenCorrHF(Int_t npart, Int_t param):
+AliGenCorrHF::AliGenCorrHF(Int_t npart, Int_t idquark, Int_t energy):
     AliGenMC(npart),
     fFileName(0),
     fFile(0),
     AliGenMC(npart),
     fFileName(0),
     fFile(0),
-    fQuark(param),
+    fQuark(idquark),
+    fEnergy(energy),
     fBias(0.),
     fTrials(0),
     //    fDecayer(new AliDecayerPythia())
     fDecayer(0)
 {
     fBias(0.),
     fTrials(0),
     //    fDecayer(new AliDecayerPythia())
     fDecayer(0)
 {
-// Constructor using number of particles, quark type & default InputFile
+// Constructor using particle number, quark type, energy & default InputFile
 //
 //
-    if (fQuark != 5) fQuark = 4;
-    fFileName = "$ALICE_ROOT/EVGEN/dataCorrHF/CharmppMNRwmiCorr100K.root";
-    if (fQuark == 5) fFileName = "$ALICE_ROOT/EVGEN/dataCorrHF/BeautyppMNRwmiCorr100K.root";
-
+    if (fQuark == 5) {
+      if (fEnergy == 10)
+           fFileName = "$ALICE_ROOT/EVGEN/dataCorrHF/Beautypp10MNRwmiCorr.root";
+      else fFileName = "$ALICE_ROOT/EVGEN/dataCorrHF/Beautypp14MNRwmiCorr.root";
+    }
+    else {
+      fQuark = 4;
+      if (fEnergy == 10)
+           fFileName = "$ALICE_ROOT/EVGEN/dataCorrHF/Charmpp10MNRwmiCorr.root";
+      else fFileName = "$ALICE_ROOT/EVGEN/dataCorrHF/Charmpp14MNRwmiCorr.root";
+    }
     fName = "Default";
     fTitle= "Generator for correlated pairs of HF hadrons";
       
     fName = "Default";
     fTitle= "Generator for correlated pairs of HF hadrons";
       
@@ -163,17 +172,18 @@ AliGenCorrHF::AliGenCorrHF(Int_t npart, Int_t param):
 }
 
 //___________________________________________________________________
 }
 
 //___________________________________________________________________
-AliGenCorrHF::AliGenCorrHF(char* tname, Int_t npart, Int_t param):
+AliGenCorrHF::AliGenCorrHF(char* tname, Int_t npart, Int_t idquark, Int_t energy):
     AliGenMC(npart),
     fFileName(tname),
     fFile(0),
     AliGenMC(npart),
     fFileName(tname),
     fFile(0),
-    fQuark(param),
+    fQuark(idquark),
+    fEnergy(energy),
     fBias(0.),
     fTrials(0),
     //    fDecayer(new AliDecayerPythia())
     fDecayer(0)
 {
     fBias(0.),
     fTrials(0),
     //    fDecayer(new AliDecayerPythia())
     fDecayer(0)
 {
-// Constructor using number of particles, quark type & user-defined InputFile
+// Constructor using particle number, quark type, energy & user-defined InputFile
 //
     if (fQuark != 5) fQuark = 4;
     fName = "UserDefined";
 //
     if (fQuark != 5) fQuark = 4;
     fName = "UserDefined";
@@ -270,7 +280,7 @@ void AliGenCorrHF::Generate()
   
   // Calculating vertex position per event
   for (j=0;j<3;j++) origin0[j]=fOrigin[j];
   
   // Calculating vertex position per event
   for (j=0;j<3;j++) origin0[j]=fOrigin[j];
-  if(fVertexSmear==kPerEvent) {
+  if (fVertexSmear==kPerEvent) {
     Vertex();
     for (j=0;j<3;j++) origin0[j]=fVertex[j];
   }
     Vertex();
     for (j=0;j<3;j++) origin0[j]=fVertex[j];
   }
@@ -290,9 +300,9 @@ void AliGenCorrHF::Generate()
     
     // Cut on theta
     theta=TMath::ATan2(pth[0],plh[0]);
     
     // Cut on theta
     theta=TMath::ATan2(pth[0],plh[0]);
-    if(theta<fThetaMin || theta>fThetaMax) continue;
+    if (theta<fThetaMin || theta>fThetaMax) continue;
     theta=TMath::ATan2(pth[1],plh[1]);
     theta=TMath::ATan2(pth[1],plh[1]);
-    if(theta<fThetaMin || theta>fThetaMax) continue;
+    if (theta<fThetaMin || theta>fThetaMax) continue;
     
     // Cut on momentum
     ph[0]=TMath::Sqrt(pth[0]*pth[0]+plh[0]*plh[0]);
     
     // Cut on momentum
     ph[0]=TMath::Sqrt(pth[0]*pth[0]+plh[0]*plh[0]);
@@ -431,7 +441,7 @@ void AliGenCorrHF::Generate()
                ipF = iparticle->GetFirstDaughter();
                ipL = iparticle->GetLastDaughter();     
                if (ipF > 0) for (j=ipF-1; j<ipL; j++) pFlag[j]=1;
                ipF = iparticle->GetFirstDaughter();
                ipL = iparticle->GetLastDaughter();     
                if (ipF > 0) for (j=ipF-1; j<ipL; j++) pFlag[j]=1;
-             } else{
+             } else {
                trackIt[i]     = 0;
                pSelected[i]   = 1;
              }
                trackIt[i]     = 0;
                pSelected[i]   = 1;
              }
@@ -694,7 +704,8 @@ void AliGenCorrHF::GetHadronPair(TFile* fG, Int_t idq, Double_t y1, Double_t y2,
       id3   = fIpParaFunc(gRandom);
       mh    = TDatabasePDG::Instance()->GetParticle(id3)->Mass();
       ptemp = z11*z21*(e1*e1-pz1*pz1) - mh*mh;
       id3   = fIpParaFunc(gRandom);
       mh    = TDatabasePDG::Instance()->GetParticle(id3)->Mass();
       ptemp = z11*z21*(e1*e1-pz1*pz1) - mh*mh;
-      pt3   = (idq-3)*rand[0];                // some smearing at low pt, try better
+      if (idq==5) pt3   = pt1;                // an approximation at low pt, try better
+      else        pt3   = rand[0];
       if (ptemp > 0) pt3 = TMath::Sqrt(ptemp);
       if (pz1 > 0)   pz3 = (z11*(e1 + pz1) - z21*(e1 - pz1)) / 2;
       else           pz3 = (z21*(e1 + pz1) - z11*(e1 - pz1)) / 2;
       if (ptemp > 0) pt3 = TMath::Sqrt(ptemp);
       if (pz1 > 0)   pz3 = (z11*(e1 + pz1) - z21*(e1 - pz1)) / 2;
       else           pz3 = (z21*(e1 + pz1) - z11*(e1 - pz1)) / 2;
@@ -703,7 +714,8 @@ void AliGenCorrHF::GetHadronPair(TFile* fG, Int_t idq, Double_t y1, Double_t y2,
       id4   = - fIpParaFunc(gRandom);
       mh    = TDatabasePDG::Instance()->GetParticle(id4)->Mass();
       ptemp = z12*z22*(e2*e2-pz2*pz2) - mh*mh;
       id4   = - fIpParaFunc(gRandom);
       mh    = TDatabasePDG::Instance()->GetParticle(id4)->Mass();
       ptemp = z12*z22*(e2*e2-pz2*pz2) - mh*mh;
-      pt4   = (idq-3)*rand[1];                // some smearing at low pt, try better
+      if (idq==5) pt4   = pt2;                // an approximation at low pt, try better
+      else        pt4   = rand[1];
       if (ptemp > 0) pt4 = TMath::Sqrt(ptemp);
       if (pz2 > 0)   pz4 = (z12*(e2 + pz2) - z22*(e2 - pz2)) / 2;
       else           pz4 = (z22*(e2 + pz2) - z12*(e2 - pz2)) / 2;
       if (ptemp > 0) pt4 = TMath::Sqrt(ptemp);
       if (pz2 > 0)   pz4 = (z12*(e2 + pz2) - z22*(e2 - pz2)) / 2;
       else           pz4 = (z22*(e2 + pz2) - z12*(e2 - pz2)) / 2;
index 5f9d6f4c4f8f3faa7ef39f3afa9a2be99bc6fea9..e03b5c6c66ce4b4e757a1351b552172918ec8a67 100644 (file)
@@ -25,8 +25,8 @@ class AliGenCorrHF : public AliGenMC
 {
  public:
     AliGenCorrHF();
 {
  public:
     AliGenCorrHF();
-    AliGenCorrHF(Int_t npart, Int_t param);
-    AliGenCorrHF(char* tname, Int_t npart, Int_t param);
+    AliGenCorrHF(Int_t npart, Int_t idquark, Int_t energy);
+    AliGenCorrHF(char* tname, Int_t npart, Int_t idquark, Int_t energy);
      
     virtual ~AliGenCorrHF();
     virtual void Generate();
      
     virtual ~AliGenCorrHF();
     virtual void Generate();
@@ -41,14 +41,15 @@ class AliGenCorrHF : public AliGenMC
     // Computation of cumulative sums of cell wght-s, needed by GetQuarkPair
     static Double_t ComputeIntegral(TFile* fG);
 
     // Computation of cumulative sums of cell wght-s, needed by GetQuarkPair
     static Double_t ComputeIntegral(TFile* fG);
 
-    // fG - input file w QQbar kinematical grid (TTree) and fragm. functions (24 TH2-s)
+    // fG - input file with QQbar kinematical grid (TTree) and fragm. functions (24 TH2-s)
     static void GetQuarkPair(TFile* fG, Double_t* fInt, Double_t &y1, Double_t &y2, Double_t &pt1, Double_t &pt2, Double_t &dphi);              
     static void GetHadronPair(TFile* fG, Int_t idq, Double_t y1, Double_t y2, Double_t pt1, Double_t pt2, Int_t &id3, Int_t &id4, Double_t &pz3, Double_t &pz4, Double_t &pt3, Double_t &pt4); 
 
  protected:
     TString     fFileName;    // Name of the input file
     TFile*      fFile;        //! Pointer to input file
     static void GetQuarkPair(TFile* fG, Double_t* fInt, Double_t &y1, Double_t &y2, Double_t &pt1, Double_t &pt2, Double_t &dphi);              
     static void GetHadronPair(TFile* fG, Int_t idq, Double_t y1, Double_t y2, Double_t pt1, Double_t pt2, Int_t &id3, Int_t &id4, Double_t &pz3, Double_t &pz4, Double_t &pt3, Double_t &pt4); 
 
  protected:
     TString     fFileName;    // Name of the input file
     TFile*      fFile;        //! Pointer to input file
-    Int_t       fQuark;       // Quark type 
+    Int_t       fQuark;       // Quark type
+    Int_t       fEnergy;      // p-p c.m.s. energy 
     Float_t     fBias;        // Biasing factor
     Int_t       fTrials;      // Number of trials
     AliDecayer* fDecayer;     //! Pointer to pythia object for decays
     Float_t     fBias;        // Biasing factor
     Int_t       fTrials;      // Number of trials
     AliDecayer* fDecayer;     //! Pointer to pythia object for decays
@@ -60,10 +61,10 @@ class AliGenCorrHF : public AliGenMC
     static Double_t* fgIntegral; //! Pointer to array of cumulative sums of wght-s
     static Int_t  fgnptbins;             // =12 Number of bins for the fragm. 
                                          //   function dependence on quark pt
     static Double_t* fgIntegral; //! Pointer to array of cumulative sums of wght-s
     static Int_t  fgnptbins;             // =12 Number of bins for the fragm. 
                                          //   function dependence on quark pt
-    // Number of the grid bins in deltaphi, y and pt:  18, 30 and 32
+    // Number of the grid bins in deltaphi, y and pt:  18, 30 and 50
     static Double_t fgdph[19];           // deltaphi bin coordinates  
     static Double_t fgy[31];             // y bin coordinates
     static Double_t fgdph[19];           // deltaphi bin coordinates  
     static Double_t fgy[31];             // y bin coordinates
-    static Double_t fgpt[33];            // pt bin coordinates
+    static Double_t fgpt[51];            // pt bin coordinates
     static Double_t fgptbmin[12];        // min & max coordinates of pt bins for
     static Double_t fgptbmax[12];        // the fragm. function
 
     static Double_t fgptbmin[12];        // min & max coordinates of pt bins for
     static Double_t fgptbmax[12];        // the fragm. function
 
index 7d03131dd4dab2f4a61e7b9bafe98186a137de9e..25017e0513ba8c629faef7bafd0bc5ca9c848e91 100644 (file)
@@ -178,21 +178,6 @@ Double_t AliGenMUONlib::PtJpsiCDFscaled( const Double_t *px, const Double_t */*d
   return x/TMath::Power(pass1,kxn);
 }
 
   return x/TMath::Power(pass1,kxn);
 }
 
-Double_t AliGenMUONlib::PtJpsiCDFscaledold( const Double_t *px, const Double_t */*dummy*/)
-{
-// J/Psi pT
-//
-// PbPb 5.5 TeV
-// scaled from CDF "old" data at 2 TeV
-
-  const Double_t kpt0 = 4.703;
-  const Double_t kxn  = 3.826;
-  Double_t x=*px;
-  //
-  Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
-  return x/TMath::Power(pass1,kxn);
-}
-
 Double_t AliGenMUONlib::PtJpsiCDFscaledPP( const Double_t *px, const Double_t */*dummy*/)
 {
 // J/Psi pT
 Double_t AliGenMUONlib::PtJpsiCDFscaledPP( const Double_t *px, const Double_t */*dummy*/)
 {
 // J/Psi pT
@@ -208,21 +193,6 @@ Double_t AliGenMUONlib::PtJpsiCDFscaledPP( const Double_t *px, const Double_t */
   return x/TMath::Power(pass1,kxn);
 }
 
   return x/TMath::Power(pass1,kxn);
 }
 
-Double_t AliGenMUONlib::PtJpsiCDFscaledPPold( const Double_t *px, const Double_t */*dummy*/)
-{
-// J/Psi pT
-//
-// pp 14 TeV
-// scaled from CDF "old" data at 2 TeV
-
-  const Double_t kpt0 = 5.355;
-  const Double_t kxn  = 3.821;
-  Double_t x=*px;
-  //
-  Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
-  return x/TMath::Power(pass1,kxn);
-}
-
 Double_t AliGenMUONlib::PtJpsiCDFscaledPP10( const Double_t *px, const Double_t */*dummy*/)
 {
 // J/Psi pT
 Double_t AliGenMUONlib::PtJpsiCDFscaledPP10( const Double_t *px, const Double_t */*dummy*/)
 {
 // J/Psi pT
@@ -367,24 +337,12 @@ Double_t AliGenMUONlib::YJpsiCDFscaled( const Double_t *px, const Double_t* dumm
     return AliGenMUONlib::YJpsiPbPb(px, dummy);
 }
 
     return AliGenMUONlib::YJpsiPbPb(px, dummy);
 }
 
-Double_t AliGenMUONlib::YJpsiCDFscaledold( const Double_t *px, const Double_t* dummy)
-{
-    // J/Psi y 
-    return AliGenMUONlib::YJpsiPbPb(px, dummy);
-}
-
 Double_t AliGenMUONlib::YJpsiCDFscaledPP( const Double_t *px, const Double_t* dummy)
 {
     // J/Psi y 
     return AliGenMUONlib::YJpsiPP(px, dummy);
 }
 
 Double_t AliGenMUONlib::YJpsiCDFscaledPP( const Double_t *px, const Double_t* dummy)
 {
     // J/Psi y 
     return AliGenMUONlib::YJpsiPP(px, dummy);
 }
 
-Double_t AliGenMUONlib::YJpsiCDFscaledPPold( const Double_t *px, const Double_t* dummy)
-{
-    // J/Psi y 
-    return AliGenMUONlib::YJpsiPP(px, dummy);
-}
-
 Double_t AliGenMUONlib::YJpsiCDFscaledPP10( const Double_t *px, const Double_t */*dummy*/)
 {
 
 Double_t AliGenMUONlib::YJpsiCDFscaledPP10( const Double_t *px, const Double_t */*dummy*/)
 {
 
@@ -543,6 +501,22 @@ Double_t AliGenMUONlib::PtUpsilonCDFscaledPP( const Double_t *px, const Double_t
   return x/TMath::Power(pass1,kxn);
 }
 
   return x/TMath::Power(pass1,kxn);
 }
 
+Double_t AliGenMUONlib::PtUpsilonCDFscaledPP10( const Double_t *px, const Double_t */*dummy*/)
+{
+// Upsilon pT
+//
+// pp 10 TeV
+//
+// scaled from CDF data at 2 TeV
+
+  const Double_t kpt0 = 8.235;
+  const Double_t kxn  = 3.051;
+  Double_t x=*px;
+  //
+  Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
+  return x/TMath::Power(pass1,kxn);
+}
+
 Double_t AliGenMUONlib::PtUpsilonFlat( const Double_t */*px*/, const Double_t */*dummy*/ )
 {
   return 1.;
 Double_t AliGenMUONlib::PtUpsilonFlat( const Double_t */*px*/, const Double_t */*dummy*/ )
 {
   return 1.;
@@ -550,7 +524,6 @@ Double_t AliGenMUONlib::PtUpsilonFlat( const Double_t */*px*/, const Double_t */
 
 Double_t AliGenMUONlib::PtUpsilonPbPb( const Double_t *px, const Double_t */*dummy*/)
 {
 
 Double_t AliGenMUONlib::PtUpsilonPbPb( const Double_t *px, const Double_t */*dummy*/)
 {
-
 //
 // Upsilon pT
 //
 //
 // Upsilon pT
 //
@@ -579,7 +552,6 @@ Double_t AliGenMUONlib::PtUpsilonPbPb( const Double_t *px, const Double_t */*dum
 
 Double_t AliGenMUONlib::PtUpsilonPP( const Double_t *px, const Double_t */*dummy*/)
 {
 
 Double_t AliGenMUONlib::PtUpsilonPP( const Double_t *px, const Double_t */*dummy*/)
 {
-
 //
 // Upsilon pT
 //
 //
 // Upsilon pT
 //
@@ -640,9 +612,8 @@ Double_t AliGenMUONlib::YUpsilonPbPb( const Double_t *px, const Double_t */*dumm
 
     Double_t c[7] = {3.40036e-01, -3.98882e-07, -4.48398e-03, 8.46411e-08, -6.10854e-04,
                     -2.99753e-09, 1.28895e-05};
 
     Double_t c[7] = {3.40036e-01, -3.98882e-07, -4.48398e-03, 8.46411e-08, -6.10854e-04,
                     -2.99753e-09, 1.28895e-05};
-        
-    Double_t x = px[0];
-    if (TMath::Abs(x) > 5.55) return 0.;
+    Double_t x = TMath::Abs(px[0]);
+    if (x > 5.55) return 0.;
     Int_t j;
     Double_t y = c[j = 6];
     while (j > 0) y  = y * x +c[--j];
     Int_t j;
     Double_t y = c[j = 6];
     while (j > 0) y  = y * x +c[--j];
@@ -670,6 +641,25 @@ Double_t AliGenMUONlib::YUpsilonFlat( const Double_t */*px*/, const Double_t */*
     
 }
 
     
 }
 
+Double_t AliGenMUONlib::YUpsilonCDFscaledPP10( const Double_t *px, const Double_t */*dummy*/)
+{
+
+//
+// Upsilon y
+//
+// pp 10 TeV
+// scaled from YUpsilonPP(14 TeV) using 10 TeV / 14 TeV ratio of y-spectra in LO pQCD. 
+// see S.Grigoryan, PWG3 Meeting, 27th Oct 2008
+//
+    Double_t c[4] = {1.12979e+00, -2.46155e-02, -7.37561e-04, 1.58824e-05};
+    Double_t x = TMath::Abs(px[0]);
+    if (x > 6.1) return 0.;
+    Int_t j;
+    Double_t y = c[j = 3];
+    while (j > 0) y  = y * x*x +c[--j];
+    return y;
+}
+
 Double_t AliGenMUONlib::YUpsilonPP( const Double_t *px, const Double_t */*dummy*/)
 {
 
 Double_t AliGenMUONlib::YUpsilonPP( const Double_t *px, const Double_t */*dummy*/)
 {
 
@@ -684,9 +674,8 @@ Double_t AliGenMUONlib::YUpsilonPP( const Double_t *px, const Double_t */*dummy*
 //
     Double_t c[7] = {8.91936e-01, -6.46645e-07, -1.52774e-02, 4.28677e-08, -7.01517e-04, 
                     -6.20539e-10, 1.29943e-05};
 //
     Double_t c[7] = {8.91936e-01, -6.46645e-07, -1.52774e-02, 4.28677e-08, -7.01517e-04, 
                     -6.20539e-10, 1.29943e-05};
-                
-    Double_t x = px[0];
-    if (TMath::Abs(x) > 6.2) return 0.;
+    Double_t x = TMath::Abs(px[0]);
+    if (x > 6.2) return 0.;
     Int_t j;
     Double_t y = c[j = 6];
     while (j > 0) y  = y * x +c[--j];
     Int_t j;
     Double_t y = c[j = 6];
     while (j > 0) y  = y * x +c[--j];
@@ -1723,10 +1712,6 @@ GenFunc AliGenMUONlib::GetPt(Int_t param,  const char* tname) const
            func=PtJpsiCDFscaledPP;
        } else if (sname == "CDF pp 10") {
            func=PtJpsiCDFscaledPP10;
            func=PtJpsiCDFscaledPP;
        } else if (sname == "CDF pp 10") {
            func=PtJpsiCDFscaledPP10;
-       } else if (sname == "CDF scaled old") {
-           func=PtJpsiCDFscaledold;
-       } else if (sname == "CDF pp old") {
-           func=PtJpsiCDFscaledPPold;
        } else if (sname == "Flat") {
            func=PtJpsiFlat;
        } else {
        } else if (sname == "Flat") {
            func=PtJpsiFlat;
        } else {
@@ -1748,6 +1733,8 @@ GenFunc AliGenMUONlib::GetPt(Int_t param,  const char* tname) const
            func=PtUpsilonCDFscaled;
        } else if (sname == "CDF pp") {
            func=PtUpsilonCDFscaledPP;
            func=PtUpsilonCDFscaled;
        } else if (sname == "CDF pp") {
            func=PtUpsilonCDFscaledPP;
+       } else if (sname == "CDF pp 10") {
+           func=PtUpsilonCDFscaledPP10;
        } else if (sname == "Flat") {
            func=PtUpsilonFlat;
        } else {
        } else if (sname == "Flat") {
            func=PtUpsilonFlat;
        } else {
@@ -1868,10 +1855,6 @@ GenFunc AliGenMUONlib::GetY(Int_t param, const char* tname) const
            func=YJpsiCDFscaledPP;
        } else if (sname == "CDF pp 10") {
            func=YJpsiCDFscaledPP10;
            func=YJpsiCDFscaledPP;
        } else if (sname == "CDF pp 10") {
            func=YJpsiCDFscaledPP10;
-       } else if (sname == "CDF scaled old") {
-           func=YJpsiCDFscaledold;
-       } else if (sname == "CDF pp old") {
-           func=YJpsiCDFscaledPPold;
        } else if (sname == "Flat") {
            func=YJpsiFlat;
        } else {
        } else if (sname == "Flat") {
            func=YJpsiFlat;
        } else {
@@ -1893,6 +1876,8 @@ GenFunc AliGenMUONlib::GetY(Int_t param, const char* tname) const
            func=YUpsilonCDFscaled;
        } else if (sname == "CDF pp") {
            func=YUpsilonCDFscaledPP;
            func=YUpsilonCDFscaled;
        } else if (sname == "CDF pp") {
            func=YUpsilonCDFscaledPP;
+       } else if (sname == "CDF pp 10") {
+           func=YUpsilonCDFscaledPP10;
        } else if (sname == "Flat") {
            func=YUpsilonFlat;
        } else {
        } else if (sname == "Flat") {
            func=YUpsilonFlat;
        } else {
index c609ad96839860ebf4b439be0ec7f581962c0da6..8efd99561c3f5b4e057305326a4727b0e4bbdb1e 100644 (file)
@@ -51,8 +51,6 @@ class AliGenMUONlib :
     static Double_t PtJpsiCDFscaled( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiCDFscaledPP( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiCDFscaledPP10( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiCDFscaled( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiCDFscaledPP( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiCDFscaledPP10( const Double_t *px, const Double_t *dummy);
-    static Double_t PtJpsiCDFscaledold( const Double_t *px, const Double_t *dummy);
-    static Double_t PtJpsiCDFscaledPPold( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsi(const Double_t *py, const Double_t *dummy);
     static Double_t PtJpsiPbPb( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiBPbPb( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsi(const Double_t *py, const Double_t *dummy);
     static Double_t PtJpsiPbPb( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiBPbPb( const Double_t *px, const Double_t *dummy);
@@ -60,8 +58,6 @@ class AliGenMUONlib :
     static Double_t YJpsiCDFscaled(const Double_t *py, const Double_t *dummy);
     static Double_t YJpsiCDFscaledPP( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsiCDFscaledPP10( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsiCDFscaled(const Double_t *py, const Double_t *dummy);
     static Double_t YJpsiCDFscaledPP( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsiCDFscaledPP10( const Double_t *px, const Double_t *dummy);
-    static Double_t YJpsiCDFscaledold(const Double_t *py, const Double_t *dummy);
-    static Double_t YJpsiCDFscaledPPold( const Double_t *px, const Double_t *dummy);
     static Double_t PtJpsiPP( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsiPP(const Double_t *py, const Double_t *dummy);
     static Double_t YJpsiBPbPb(const Double_t *py, const Double_t *dummy);
     static Double_t PtJpsiPP( const Double_t *px, const Double_t *dummy);
     static Double_t YJpsiPP(const Double_t *py, const Double_t *dummy);
     static Double_t YJpsiBPbPb(const Double_t *py, const Double_t *dummy);
@@ -75,9 +71,11 @@ class AliGenMUONlib :
     static Double_t PtUpsilon( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilonCDFscaled( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilonCDFscaledPP( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilon( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilonCDFscaled( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilonCDFscaledPP( const Double_t *px, const Double_t *dummy );
+    static Double_t PtUpsilonCDFscaledPP10( const Double_t *px, const Double_t *dummy );
     static Double_t YUpsilon(const Double_t *py, const Double_t *dummy);
     static Double_t YUpsilonCDFscaled(const Double_t *py, const Double_t *dummy);
     static Double_t YUpsilonCDFscaledPP( const Double_t *px, const Double_t *dummy );
     static Double_t YUpsilon(const Double_t *py, const Double_t *dummy);
     static Double_t YUpsilonCDFscaled(const Double_t *py, const Double_t *dummy);
     static Double_t YUpsilonCDFscaledPP( const Double_t *px, const Double_t *dummy );
+    static Double_t YUpsilonCDFscaledPP10( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilonPbPb( const Double_t *px, const Double_t *dummy );
     static Double_t YUpsilonPbPb(const Double_t *py, const Double_t *dummy);
     static Double_t PtUpsilonPP( const Double_t *px, const Double_t *dummy );
     static Double_t PtUpsilonPbPb( const Double_t *px, const Double_t *dummy );
     static Double_t YUpsilonPbPb(const Double_t *py, const Double_t *dummy);
     static Double_t PtUpsilonPP( const Double_t *px, const Double_t *dummy );