Line data Source code
1 : #ifndef ALIPYTHIA_H
2 : #define ALIPYTHIA_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : /* $Id$ */
7 :
8 : #include <TPythia6.h>
9 : #include <AliRndm.h>
10 : #include <AliStructFuncType.h>
11 : #include "PythiaProcesses.h"
12 : #include "AliOmegaDalitz.h"
13 : #include "AliDecayerExodus.h"
14 : class AliFastGlauber;
15 : class AliQuenchingWeights;
16 :
17 : class AliPythia : public TPythia6, public AliRndm
18 : {
19 :
20 : public:
21 0 : virtual ~AliPythia(){;}
22 : // convert to compressed code and print result (for debugging only)
23 : virtual Int_t CheckedLuComp(Int_t kf);
24 : // Pythia initialisation for selected processes
25 : virtual void ProcInit
26 : (Process_t process, Float_t energy, StrucFunc_t strucfunc, Int_t itune = -1);
27 : // treat protons as inside nuclei
28 : virtual void SetNuclei(Int_t a1, Int_t a2, Int_t pdf);
29 : // Set colliding nuclei ("p","n",...)
30 0 : virtual void SetCollisionSystem(TString projectile, TString target) { fProjectile = projectile; fTarget = target; }
31 : // Print particle properties
32 : virtual void PrintParticles();
33 : virtual void ResetDecayTable();
34 : virtual void SetDecayTable();
35 : virtual void SetWeightPower(Double_t pow); // use weighted cross sections
36 : virtual void Pyevnw();
37 : virtual void Pycell(Int_t& nclus);
38 : virtual void Pyclus(Int_t& nclus);
39 : virtual void Pyshow(Int_t ip1, Int_t ip2, Double_t qmax);
40 : virtual void Pyshowq(Int_t ip1, Int_t ip2, Double_t qmax);
41 : virtual void Pyrobo(Int_t imi, Int_t ima, Double_t the, Double_t phi, Double_t bex, Double_t bey, Double_t bez);
42 : virtual void Pytune(Int_t itune);
43 : virtual void Py2ent(Int_t idx, Int_t pdg1, Int_t pdg2, Double_t p);
44 : virtual void InitQuenching(Float_t bmin, Float_t bmax, Float_t k, Int_t iECMethod, Float_t zmax = 0.97, Int_t ngmax = 30);
45 : virtual void SetPyquenParameters(Double_t t0, Double_t tau0, Int_t nf, Int_t iengl, Int_t iangl);
46 : virtual void Pyquen(Double_t a, Int_t ibf, Double_t b);
47 : virtual void Qpygin0();
48 : virtual void GetQuenchingParameters(Double_t& xp, Double_t& yp, Double_t z[4]);
49 : virtual Int_t GetNMPI();
50 : // return instance of the singleton
51 : static AliPythia* Instance();
52 : virtual void Quench();
53 : void DalitzDecays();
54 : // Dalitz and resonance decays from EXODUS
55 : void PizeroDalitz();
56 : void EtaDalitz();
57 : void RhoDirect();
58 : void OmegaDalitz();
59 : void OmegaDirect();
60 : void EtaprimeDalitz();
61 : void PhiDalitz();
62 : void PhiDirect();
63 : void JPsiDirect();
64 : // Assignment Operator
65 : AliPythia & operator=(const AliPythia & rhs);
66 : void Copy(TObject&) const;
67 : protected:
68 : Process_t fProcess; // Process type
69 : Float_t fEcms; // Centre of mass energy
70 : StrucFunc_t fStrucFunc; // Structure function
71 : TString fProjectile; // Projectile
72 : TString fTarget; // Target
73 : Int_t fDefMDCY[501]; // ! Default decay switches per particle
74 : Int_t fDefMDME[2001]; // ! Default decay switches per mode
75 : Double_t fZQuench[4]; // ! Quenching fractions for this even
76 : Double_t fXJet; // ! Jet production point X
77 : Double_t fYJet; // ! Jet production point Y
78 : Int_t fNGmax; // Maximum number of radiated gluons in quenching
79 : Float_t fZmax; // Maximum energy loss in quenching
80 : AliFastGlauber* fGlauber; // ! The Glauber model
81 : AliQuenchingWeights* fQuenchingWeights; // ! The Quenching Weights model
82 : Int_t fItune; // ! Pythia tune
83 : AliOmegaDalitz fOmegaDalitz; // ! omega dalitz decayer
84 : AliDecayerExodus fExodus; // ! EXODUS decayer
85 : static AliPythia* fgAliPythia; // Pointer to single instance
86 : private:
87 : AliPythia();
88 : AliPythia(const AliPythia& pythia);
89 : void ConfigHeavyFlavor();
90 : void AtlasTuning();
91 : void AtlasTuningMC09();
92 2 : ClassDef(AliPythia,1) //ALICE UI to PYTHIA
93 : };
94 :
95 : #endif
96 :
97 :
98 :
99 :
100 :
|