]>
Commit | Line | Data |
---|---|---|
c9a8628a | 1 | #ifndef ALIGENSLOWNUCLEONS_H |
2 | #define ALIGENSLOWNUCLEONS_H | |
3 | /* Copyright(c) 198-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
f687abfe | 7 | // |
8 | // Generator for slow nucleons in pA interactions. | |
9 | // Source is modelled by a relativistic Maxwell distributions. | |
10 | // Original code by Ferenc Sikler <sikler@rmki.kfki.hu> | |
11 | // This class: andreas.morsch@cern.ch | |
12 | // | |
c9a8628a | 13 | #include "AliGenerator.h" |
14 | class AliSlowNucleonModel; | |
15 | class TH2F; | |
16 | ||
17 | ||
18 | class AliGenSlowNucleons : public AliGenerator | |
19 | { | |
20 | public: | |
21 | AliGenSlowNucleons(); | |
22 | AliGenSlowNucleons(Int_t npart); | |
f687abfe | 23 | AliGenSlowNucleons(const AliGenSlowNucleons &sn); |
c9a8628a | 24 | virtual ~AliGenSlowNucleons(); |
25 | virtual void Init(); | |
26 | virtual void FinishRun(); | |
27 | virtual void Generate(); | |
28 | virtual void SetPmax(Float_t pmax = 10.) {fPmax = pmax;} | |
29 | virtual void SetNominalCmsEnergy(Float_t energy = 14000.) {fCMS = energy;} | |
30 | virtual void SetTarget(Float_t a=208, Float_t z=82) {fATarget = a; fZTarget = z;} | |
31 | virtual void SetCharge(Int_t c = 1) {fCharge = c;} | |
32 | virtual void SetTemperature(Double_t t1 = 0.04, Double_t t2 = 0.004) | |
33 | {fTemperatureG = t1; fTemperatureB = t2;} | |
34 | virtual void SetBetaSource(Double_t b1 = 0.05, Double_t b2 = 0.) | |
35 | {fBetaSourceG = b1; fBetaSourceB = b2;} | |
36 | // | |
37 | virtual void SetSlowNucleonModel(AliSlowNucleonModel* model) | |
38 | {fSlowNucleonModel = model;} | |
39 | virtual Bool_t NeedsCollisionGeometry() const {return kTRUE;} | |
40 | virtual void SetCollisionGeometry(AliCollisionGeometry* geom) | |
41 | {fCollisionGeometry = geom;} | |
42 | virtual void SetDebug(Int_t flag = 0) {fDebug = flag;} | |
1c22a81e | 43 | virtual void SetNumbersOfSlowNucleons(Int_t ngp, Int_t ngn, Int_t nbp, Int_t nbn) |
44 | {fNgp = ngp; fNgn = ngn; fNbp = nbp; fNbn = nbn;} | |
45 | ||
c9a8628a | 46 | protected: |
47 | void GenerateSlow(Int_t charge, Double_t T, Double_t beta, Float_t* q); | |
48 | Double_t Maxwell(Double_t m, Double_t p, Double_t t); | |
49 | void Lorentz(Double_t m, Double_t beta, Float_t* q); | |
f687abfe | 50 | void Copy(AliGenSlowNucleons&) const; |
51 | AliGenSlowNucleons & operator=(const AliGenSlowNucleons & rhs); | |
c9a8628a | 52 | protected: |
53 | Float_t fCMS; // Center of mass energy | |
54 | Float_t fMomentum; // Target nucleus momentum | |
55 | Float_t fBeta; // Target nucleus beta | |
56 | Float_t fPmax; // Maximum slow nucleon momentum | |
57 | Float_t fATarget; // Target nucleus mass number | |
58 | Float_t fZTarget; // Target nucleus charge number | |
59 | Int_t fCharge; // Slow nucleon charge | |
60 | Float_t fTemperatureG; // Source Temperature for gray nucleons | |
61 | Float_t fBetaSourceG; // Source beta for gray nucleons | |
62 | Float_t fTemperatureB; // Source Temperature for black nucleons | |
63 | Float_t fBetaSourceB; // Source beta for black nucleons | |
1c22a81e | 64 | Int_t fNgp; // Number of gray protons |
65 | Int_t fNgn; // Number of gray neutrons | |
66 | Int_t fNbp; // Number of black protons | |
67 | Int_t fNbn; // Number of black neutrons | |
c9a8628a | 68 | Int_t fDebug; // Debug flag |
c8f7f6f9 | 69 | TH2F* fDebugHist1; // Histogram for debugging |
70 | TH2F* fDebugHist2; // Histogram for debugging | |
c9a8628a | 71 | |
72 | // | |
73 | AliSlowNucleonModel* fSlowNucleonModel; // The slow nucleon model | |
74 | ClassDef(AliGenSlowNucleons,1) // Slow Nucleon Generator | |
75 | }; | |
76 | #endif | |
77 | ||
78 | ||
79 | ||
80 | ||
81 | ||
82 |