Slow nucleon generator and model.
[u/mrichter/AliRoot.git] / EVGEN / AliGenSlowNucleons.h
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$ */
7
8 #include "AliGenerator.h"
9 class AliSlowNucleonModel;
10 class TH2F;
11
12
13 class AliGenSlowNucleons : public AliGenerator
14 {
15 public:
16     AliGenSlowNucleons();
17     AliGenSlowNucleons(Int_t npart);
18     virtual ~AliGenSlowNucleons();
19     virtual void Init();
20     virtual void FinishRun();
21     virtual void Generate();
22     virtual void SetPmax(Float_t pmax = 10.) {fPmax = pmax;}
23     virtual void SetNominalCmsEnergy(Float_t energy = 14000.) {fCMS = energy;}
24     virtual void SetTarget(Float_t a=208, Float_t z=82) {fATarget = a; fZTarget = z;}
25     virtual void SetCharge(Int_t c = 1) {fCharge = c;}
26     virtual void SetTemperature(Double_t t1 = 0.04, Double_t t2 = 0.004)
27         {fTemperatureG = t1; fTemperatureB = t2;}
28     virtual void SetBetaSource(Double_t b1 = 0.05, Double_t b2 = 0.)
29         {fBetaSourceG = b1; fBetaSourceB = b2;}
30     //
31     virtual void SetSlowNucleonModel(AliSlowNucleonModel* model) 
32         {fSlowNucleonModel = model;}
33     virtual Bool_t NeedsCollisionGeometry() const {return kTRUE;}
34     virtual void   SetCollisionGeometry(AliCollisionGeometry* geom)
35         {fCollisionGeometry = geom;}
36     virtual void   SetDebug(Int_t flag = 0) {fDebug = flag;}
37             
38  protected:
39     void     GenerateSlow(Int_t charge, Double_t T, Double_t beta, Float_t* q);
40     Double_t Maxwell(Double_t m, Double_t p, Double_t t);
41     void     Lorentz(Double_t m, Double_t beta, Float_t* q);
42  protected:
43     Float_t  fCMS;          // Center of mass energy
44     Float_t  fMomentum;     // Target nucleus momentum
45     Float_t  fBeta;         // Target nucleus beta
46     Float_t  fPmax;         // Maximum slow nucleon momentum
47     Float_t  fATarget;      // Target nucleus mass number
48     Float_t  fZTarget;      // Target nucleus charge number
49     Int_t    fCharge;       // Slow nucleon charge
50     Float_t  fTemperatureG; // Source Temperature for gray nucleons
51     Float_t  fBetaSourceG;  // Source beta for gray nucleons
52     Float_t  fTemperatureB; // Source Temperature for black nucleons
53     Float_t  fBetaSourceB;  // Source beta for black nucleons
54     Int_t    fDebug;        // Debug flag
55     TH2F*    fDebugHist;    // Histogram for debugging
56     
57     //
58     AliSlowNucleonModel* fSlowNucleonModel; // The slow nucleon model
59     ClassDef(AliGenSlowNucleons,1) // Slow Nucleon Generator
60 };
61 #endif
62
63
64
65
66
67