AliGenSTRANGElib.cxx first commit.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 4 Dec 2001 18:06:39 +0000 (18:06 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 4 Dec 2001 18:06:39 +0000 (18:06 +0000)
EVGEN/AliGenSTRANGElib.cxx [new file with mode: 0644]
EVGEN/AliGenSTRANGElib.h [new file with mode: 0644]
EVGEN/EVGENLinkDef.h
EVGEN/Makefile

diff --git a/EVGEN/AliGenSTRANGElib.cxx b/EVGEN/AliGenSTRANGElib.cxx
new file mode 100644 (file)
index 0000000..ec4e179
--- /dev/null
@@ -0,0 +1,396 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+
+//======================================================================
+//  AliGenSTRANGElib class contains parameterizations of the
+//  kaon, phi and hyperon (Lambda, Anti-Lambda, Xi, anti-Xi, Omega,
+//  anti-Omega)  for the PPR study of the strange particle production. 
+//  These parameterizations are used by the 
+//  AliGenParam  class:
+//  AliGenParam(npar, param,  AliGenSTRANGElib::GetPt(param),
+//                            AliGenSTRANGElib::GetY(param),
+//                            AliGenSTRANGElib::GetIp(param) )
+//  param represents the particle to be simulated. 
+//  ?????????
+//  Pt distributions are calculated from the transverse mass scaling 
+//  with Pions, using the PtScal function taken from AliGenMUONlib 
+//  version aliroot 3.01
+//
+//     Rocco CALIANDRO. Rosa Anna FINI, Tiziano VIRGILI
+//     Rocco.Caliandro@cern.ch Rosanna.Fini@ba.infn.it, 
+//     Tiziano.Virgili@roma1.infn.it
+//======================================================================
+
+/*
+$Log$
+*/
+
+#include "TMath.h"
+#include "TRandom.h"
+
+#include "AliGenSTRANGElib.h"
+
+ClassImp(AliGenSTRANGElib)
+
+//============================================================= 
+//
+ Double_t AliGenSTRANGElib::PtScal(Double_t pt, Int_t np)
+{
+// Mt-scaling
+// Function for the calculation of the Pt distribution for a 
+// given particle np, from the pion Pt distribution using the 
+// mt scaling. This function was taken from AliGenMUONlib 
+// aliroot version 3.01, and was extended for hyperons.
+// np = 1=>Pions 2=>Kaons 3=>Etas 4=>Omegas 5=>ETA' 6=>PHI
+//      7=>BARYONS-BARYONBARS
+//      8=>Lambda-antiLambda
+//      9=>Xi-antiXi
+//     10=>Omega-antiOmega
+
+  //    MASS SCALING RESPECT TO PIONS
+  //    MASS                1=>PI,  2=>K, 3=>ETA,4=>OMEGA,5=>ETA',6=>PHI 
+  const Double_t khm[10] = {0.1396, 0.494,0.547, 0.782,   0.957,  1.02, 
+  //    MASS               7=>BARYON-BARYONBAR  
+                                 0.938, 
+  //    MASS               8=>Lambda-antiLambda  
+                                  1.1157,
+  //    MASS               9=>Xi-antiXi  
+                                  1.3213, 
+  //    MASS              10=>Omega-antiOmega  
+                                  1.6725};
+  //     VALUE MESON/PI AT 5 GEV
+  const Double_t kfmax[10]={1., 1., 1., 1., 1., 1., 1., 1., 1., 1.};
+  np--;
+  Double_t f5=TMath::Power(((sqrt(100.018215)+2.)/(sqrt(100.+khm[np]*khm[np])+2.0)),12.3);
+  Double_t kfmax2=f5/kfmax[np];
+  // PIONS
+  Double_t ptpion=100.*PtPion(&pt, (Double_t*) 0);
+  Double_t fmtscal=TMath::Power(((sqrt(pt*pt+0.018215)+2.)/
+                                 (sqrt(pt*pt+khm[np]*khm[np])+2.0)),12.3)/ kfmax2;
+  return fmtscal*ptpion;
+}
+//============================================================= 
+//
+ Double_t AliGenSTRANGElib::PtPion(Double_t *px, Double_t *)
+{
+//     Pion transverse momentum distribtuion taken 
+//     from AliGenMUONlib class, version 3.01 of aliroot
+//     PT-PARAMETERIZATION CDF, PRL 61(88) 1819
+//     POWER LAW FOR PT > 500 MEV
+//     MT SCALING BELOW (T=160 MEV)
+//
+  const Double_t kp0 = 1.3;
+  const Double_t kxn = 8.28;
+  const Double_t kxlim=0.5;
+  const Double_t kt=0.160;
+  const Double_t kxmpi=0.139;
+  const Double_t kb=1.;
+  Double_t y, y1, kxmpi2, ynorm, a;
+  Double_t x=*px;
+  //
+  y1=TMath::Power(kp0/(kp0+kxlim),kxn);
+  kxmpi2=kxmpi*kxmpi;
+  ynorm=kb*(TMath::Exp(-sqrt(kxlim*kxlim+kxmpi2)/kt));
+  a=ynorm/y1;
+  if (x > kxlim)
+    y=a*TMath::Power(kp0/(kp0+x),kxn);
+  else
+    y=kb*TMath::Exp(-sqrt(x*x+kxmpi2)/kt);
+  return y*x;
+}
+// End Scaling
+//============================================================================
+//    K  A  O  N  
+ Double_t AliGenSTRANGElib::PtKaon( Double_t *px, Double_t *)
+{
+//                kaon
+//                pt-distribution
+//____________________________________________________________
+
+  return PtScal(*px,2);  //  2==> Kaon in the PtScal function
+}
+
+ Double_t AliGenSTRANGElib::YKaon( Double_t *py, Double_t *)
+{
+// y-distribution
+//____________________________________________________________
+
+  const Double_t ka    = 1000.;
+  const Double_t kdy   = 4.;
+
+
+  Double_t y=TMath::Abs(*py);
+  //
+  Double_t ex = y*y/(2*kdy*kdy);
+  return ka*TMath::Exp(-ex);
+}
+
+ Int_t AliGenSTRANGElib::IpKaon(TRandom *ran)
+{
+//                 particle composition
+//
+
+    Float_t random = ran->Rndm();
+    Float_t random2 = ran->Rndm();
+    if (random2 < 0.5) 
+    {
+      if (random < 0.5) {       
+        return  321;   //   K+
+      } else {
+        return -321;   // K-
+      }
+    }
+    else
+    {  
+      if (random < 0.5) {       
+        return  130;   // K^0 short
+      } else {  
+        return  310;   // K^0 long
+      }
+    }
+}
+// End Kaons
+//============================================================================
+//============================================================================
+//    P  H  I   
+ Double_t AliGenSTRANGElib::PtPhi( Double_t *px, Double_t *)
+{
+// phi
+//                pt-distribution
+//____________________________________________________________
+
+  return PtScal(*px,6);  //  6==> Phi in the PtScal function
+}
+
+ Double_t AliGenSTRANGElib::YPhi( Double_t *py, Double_t *)
+{
+// y-distribution
+//____________________________________________________________
+
+  const Double_t ka    = 1000.;
+  const Double_t kdy   = 4.;
+
+
+  Double_t y=TMath::Abs(*py);
+  //
+  Double_t ex = y*y/(2*kdy*kdy);
+  return ka*TMath::Exp(-ex);
+}
+
+ Int_t AliGenSTRANGElib::IpPhi(TRandom *)
+{
+//                 particle composition
+//
+    
+        return  333;   //   Phi      
+}
+// End Phis
+//===================================================================
+//============================================================================
+//    Lambda
+ Double_t AliGenSTRANGElib::PtLambda( Double_t *px, Double_t *)
+{
+// Lambda
+//                pt-distribution
+//____________________________________________________________
+
+  return PtScal(*px,8);  //  8==> Lambda-antiLambda in the PtScal function
+}
+
+ Double_t AliGenSTRANGElib::YLambda( Double_t *py, Double_t *)
+{
+// y-distribution
+//____________________________________________________________
+
+  const Double_t ka    = 1000.;
+  const Double_t kdy   = 4.;
+
+
+  Double_t y=TMath::Abs(*py);
+  //
+  Double_t ex = y*y/(2*kdy*kdy);
+  return ka*TMath::Exp(-ex);
+}
+
+ Int_t AliGenSTRANGElib::IpLambda(TRandom *)
+{
+//                 particle composition
+//                 generation of fixed type of particle
+//
+
+        return  3122; //   Lambda 
+}
+// End Lambda
+//============================================================================
+//    XIminus
+ Double_t AliGenSTRANGElib::PtXiMinus( Double_t *px, Double_t *)
+{
+// Xi
+//                pt-distribution
+//____________________________________________________________
+
+  return PtScal(*px,9);  //  9==> Xi-antiXi in the PtScal function
+}
+
+ Double_t AliGenSTRANGElib::YXiMinus( Double_t *py, Double_t *)
+{
+// y-distribution
+//____________________________________________________________
+
+  const Double_t ka    = 1000.;
+  const Double_t kdy   = 4.;
+
+
+  Double_t y=TMath::Abs(*py);
+  //
+  Double_t ex = y*y/(2*kdy*kdy);
+  return ka*TMath::Exp(-ex);
+}
+
+ Int_t AliGenSTRANGElib::IpXiMinus(TRandom *)
+{
+//                 particle composition
+//                 generation of fixed type of particle
+//
+
+        return  3312; //   Xi- (only)
+//        return  -3312; //   Xi+
+}
+// End Ximinus
+//============================================================================
+//    Omegaminus
+ Double_t AliGenSTRANGElib::PtOmegaMinus( Double_t *px, Double_t *)
+{
+// Omega
+//                pt-distribution
+//____________________________________________________________
+
+  return PtScal(*px,10);  //  10==> Omega-antiOmega in the PtScal function
+}
+
+ Double_t AliGenSTRANGElib::YOmegaMinus( Double_t *py, Double_t *)
+{
+// y-distribution
+//____________________________________________________________
+
+  const Double_t ka    = 1000.;
+  const Double_t kdy   = 4.;
+
+
+  Double_t y=TMath::Abs(*py);
+  //
+  Double_t ex = y*y/(2*kdy*kdy);
+  return ka*TMath::Exp(-ex);
+}
+
+ Int_t AliGenSTRANGElib::IpOmegaMinus(TRandom *)
+{
+//                 particle composition
+//                 generation of fixed type of particle
+//
+
+        return  3334; //   Omega- 
+}
+// End Omegaminus
+//============================================================================
+
+
+typedef Double_t (*GenFunc) (Double_t*,  Double_t*);
+ GenFunc AliGenSTRANGElib::GetPt(Int_t param, const char* tname)
+{
+// Return pinter to pT parameterisation
+    GenFunc func;
+    
+    switch (param)
+    {
+    case kKaon:
+        func=PtKaon;
+        break;
+    case kPhi:
+        func=PtPhi;
+        break;
+    case kLambda:
+        func=PtLambda;
+        break;
+    case kXiMinus:
+        func=PtXiMinus;
+        break;
+    case kOmegaMinus:
+        func=PtOmegaMinus;
+        break;
+    default:
+        func=0;
+        printf("<AliGenSTRANGElib::GetPt> unknown parametrisationn");
+    }
+    return func;
+}
+
+ GenFunc AliGenSTRANGElib::GetY(Int_t param, const char* tname)
+{
+// Return pointer to Y parameterisation
+    GenFunc func;
+    switch (param)
+    {
+    case kKaon:
+        func=YKaon;
+        break;
+    case kPhi:
+        func=YPhi;
+        break;
+    case kLambda:
+        func=YLambda;
+        break;
+    case kXiMinus:
+        func=YXiMinus;
+        break;
+    case kOmegaMinus:
+        func=YOmegaMinus;
+        break;
+    default:
+        func=0;
+        printf("<AliGenSTRANGElib::GetY> unknown parametrisationn");
+    }
+    return func;
+}
+typedef Int_t (*GenFuncIp) (TRandom *);
+ GenFuncIp AliGenSTRANGElib::GetIp(Int_t param,  const char* tname)
+{
+// Return pointer to particle composition
+    GenFuncIp func;
+    switch (param)
+    {
+    case kKaon:
+        func=IpKaon;
+        break;
+    case kPhi:
+        func=IpPhi;
+        break;
+    case kLambda:
+        func=IpLambda;
+        break;
+    case kXiMinus:
+        func=IpXiMinus;
+        break;
+    case kOmegaMinus:
+        func=IpOmegaMinus;
+        break;
+    default:
+        func=0;
+        printf("<AliGenSTRANGElib::GetIp> unknown parametrisationn");
+    }
+    return func;
+}
+
diff --git a/EVGEN/AliGenSTRANGElib.h b/EVGEN/AliGenSTRANGElib.h
new file mode 100644 (file)
index 0000000..5cb26dd
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef ALIGENSTRANGELIB_H
+#define ALIGENSTRANGELIB_H
+#include "AliGenLib.h"
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+
+/* $Id$ */
+
+class TRandom;
+
+class AliGenSTRANGElib :
+public AliGenLib
+{
+ public:
+    enum constants{kKaon, kPhi, kLambda, kXiMinus, kOmegaMinus};
+// pions
+    static Double_t PtPion(Double_t *px, Double_t *dummy);
+    static Double_t PtScal(Double_t pt, Int_t np);
+// kaons
+    static Double_t PtKaon(Double_t *px, Double_t *dummy);
+    static Double_t YKaon( Double_t *py, Double_t *dummy);
+    static Int_t    IpKaon(TRandom* ran);
+// phis
+    static Double_t PtPhi(Double_t *px, Double_t *dummy);
+    static Double_t YPhi( Double_t *py, Double_t *dummy);
+    static Int_t    IpPhi(TRandom* ran);
+// lambda
+    static Double_t PtLambda(Double_t *px, Double_t *dummy);
+    static Double_t YLambda( Double_t *py, Double_t *dummy);
+    static Int_t    IpLambda(TRandom *ran);
+// Ximinus
+    static Double_t PtXiMinus(Double_t *px, Double_t *dummy);
+    static Double_t YXiMinus( Double_t *py, Double_t *dummy);
+    static Int_t    IpXiMinus(TRandom *ran);
+// Omegaminus
+    static Double_t PtOmegaMinus(Double_t *px, Double_t *dummy);
+    static Double_t YOmegaMinus( Double_t *py, Double_t *dummy);
+    static Int_t    IpOmegaMinus(TRandom *ran);
+    
+    GenFunc   GetPt(Int_t param, const char* tname=0);
+    GenFunc   GetY (Int_t param, const char* tname=0);
+    GenFuncIp GetIp(Int_t param, const char* tname=0);    
+    ClassDef(AliGenSTRANGElib,0) // Library providing y and pT parameterisations
+};
+#endif
+
+
+
+
+
+
+
index b97df76..ba859df 100644 (file)
@@ -33,6 +33,7 @@
 #pragma link C++ class  AliGenPHOSlib+;
 #pragma link C++ class  AliGenGSIlib+;
 #pragma link C++ class  AliGenPMDlib+;
+#pragma link C++ class  AliGenSTRANGElib+;
 #pragma link C++ class  AliGenHijingEventHeader+;
 #pragma link C++ class  AliGenPythiaEventHeader+;
 #pragma link C++ class  AliGenHijing+;
index 03ad180..3e4ac3b 100644 (file)
@@ -17,7 +17,7 @@ SRCS          = AliGenHIJINGpara.cxx AliGenBox.cxx AliGenFixed.cxx \
                 AliGenHaloProtvino.cxx \
                 AliGenExtFile.cxx AliGenScan.cxx AliGenPHOSlib.cxx \
                AliGenDoubleScan.cxx AliGenCocktailEntry.cxx \
-               AliGenGSIlib.cxx AliGenPMDlib.cxx\
+               AliGenGSIlib.cxx AliGenPMDlib.cxx AliGenSTRANGElib.cxx \
                AliGenHijing.cxx \
                AliGenHijingEventHeader.cxx AliGenPythiaEventHeader.cxx \
                AliDecayer.cxx AliDecayerPythia.cxx \