]>
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; | |
5a9b7f8e | 16 | class TH1F; |
17 | class TF1; | |
c9a8628a | 18 | |
19 | class AliGenSlowNucleons : public AliGenerator | |
20 | { | |
21 | public: | |
22 | AliGenSlowNucleons(); | |
23 | AliGenSlowNucleons(Int_t npart); | |
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;} | |
271e6aae | 30 | virtual void SetTarget(Int_t a = 208, Int_t z = 82) {fATarget = a; fZTarget = z;} |
4523beaf | 31 | virtual void SetTarget(TString s, Int_t a, Int_t z) {AliGenerator::SetTarget(s, a, z);} |
83b3cd6c | 32 | virtual void SetProtonDirection(Float_t dir = 1.); |
c9a8628a | 33 | virtual void SetCharge(Int_t c = 1) {fCharge = c;} |
34 | virtual void SetTemperature(Double_t t1 = 0.04, Double_t t2 = 0.004) | |
35 | {fTemperatureG = t1; fTemperatureB = t2;} | |
36 | virtual void SetBetaSource(Double_t b1 = 0.05, Double_t b2 = 0.) | |
37 | {fBetaSourceG = b1; fBetaSourceB = b2;} | |
38 | // | |
39 | virtual void SetSlowNucleonModel(AliSlowNucleonModel* model) | |
40 | {fSlowNucleonModel = model;} | |
41 | virtual Bool_t NeedsCollisionGeometry() const {return kTRUE;} | |
42 | virtual void SetCollisionGeometry(AliCollisionGeometry* geom) | |
43 | {fCollisionGeometry = geom;} | |
44 | virtual void SetDebug(Int_t flag = 0) {fDebug = flag;} | |
1c22a81e | 45 | virtual void SetNumbersOfSlowNucleons(Int_t ngp, Int_t ngn, Int_t nbp, Int_t nbn) |
46 | {fNgp = ngp; fNgn = ngn; fNbp = nbp; fNbn = nbn;} | |
5a9b7f8e | 47 | // |
48 | // Added by Chiara to take into account angular distribution 4 gray tracks | |
49 | virtual void SetThetaDist(Int_t flag=0) {fThetaDistribution = flag;} | |
230d85c6 | 50 | // |
51 | virtual Int_t GetNGrayProtons() {return fNgp;} | |
52 | virtual Int_t GetNGrayNeutrons() {return fNgn;} | |
53 | virtual Int_t GetNBlackProtons() {return fNbp;} | |
54 | virtual Int_t GetNBlackNeutrons() {return fNbn;} | |
1c22a81e | 55 | |
c9a8628a | 56 | protected: |
5a9b7f8e | 57 | void GenerateSlow(Int_t charge, Double_t T, Double_t beta, Float_t* q, Float_t &theta); |
c9a8628a | 58 | Double_t Maxwell(Double_t m, Double_t p, Double_t t); |
59 | void Lorentz(Double_t m, Double_t beta, Float_t* q); | |
60 | protected: | |
83b3cd6c | 61 | Float_t fCMS; // Center of mass energy |
62 | Float_t fMomentum; // Target nucleus momentum | |
63 | Float_t fBeta; // Target nucleus beta | |
64 | Float_t fPmax; // Maximum slow nucleon momentum | |
83b3cd6c | 65 | Int_t fCharge; // Slow nucleon charge |
66 | Float_t fProtonDirection; // Direction of the proton | |
67 | Float_t fTemperatureG; // Source Temperature for gray nucleons | |
68 | Float_t fBetaSourceG; // Source beta for gray nucleons | |
69 | Float_t fTemperatureB; // Source Temperature for black nucleons | |
70 | Float_t fBetaSourceB; // Source beta for black nucleons | |
71 | Int_t fNgp; // Number of gray protons | |
72 | Int_t fNgn; // Number of gray neutrons | |
73 | Int_t fNbp; // Number of black protons | |
74 | Int_t fNbn; // Number of black neutrons | |
75 | Int_t fDebug; // Debug flag | |
76 | TH2F* fDebugHist1; // Histogram for debugging | |
77 | TH2F* fDebugHist2; // Histogram for debugging | |
5a9b7f8e | 78 | // Added by Chiara to take into account angular distribution 4 gray tracks |
79 | Int_t fThetaDistribution;// 0 -> flat dist., 1 -> fwd. peaked distribution | |
80 | TH1F* fCosThetaGrayHist; // Histogram for debugging | |
81 | TF1* fCosTheta; // Function for non-uniform cos(theta) distribution | |
c9a8628a | 82 | |
83 | // | |
84 | AliSlowNucleonModel* fSlowNucleonModel; // The slow nucleon model | |
93a2041b | 85 | |
86 | private: | |
87 | AliGenSlowNucleons(const AliGenSlowNucleons &sn); | |
88 | AliGenSlowNucleons & operator=(const AliGenSlowNucleons & rhs); | |
89 | ||
5a9b7f8e | 90 | ClassDef(AliGenSlowNucleons,2) // Slow Nucleon Generator |
c9a8628a | 91 | }; |
92 | #endif | |
93 | ||
94 | ||
95 | ||
96 | ||
97 | ||
98 | ||
230d85c6 | 99 |