]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVGEN/AliGenSlowNucleons.h
Add possibility to change proton direction.
[u/mrichter/AliRoot.git] / EVGEN / AliGenSlowNucleons.h
CommitLineData
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"
14class AliSlowNucleonModel;
15class TH2F;
16
17
18class AliGenSlowNucleons : public AliGenerator
19{
20public:
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;}
83b3cd6c 31 virtual void SetProtonDirection(Float_t dir = 1.);
c9a8628a 32 virtual void SetCharge(Int_t c = 1) {fCharge = c;}
33 virtual void SetTemperature(Double_t t1 = 0.04, Double_t t2 = 0.004)
34 {fTemperatureG = t1; fTemperatureB = t2;}
35 virtual void SetBetaSource(Double_t b1 = 0.05, Double_t b2 = 0.)
36 {fBetaSourceG = b1; fBetaSourceB = b2;}
37 //
38 virtual void SetSlowNucleonModel(AliSlowNucleonModel* model)
39 {fSlowNucleonModel = model;}
40 virtual Bool_t NeedsCollisionGeometry() const {return kTRUE;}
41 virtual void SetCollisionGeometry(AliCollisionGeometry* geom)
42 {fCollisionGeometry = geom;}
43 virtual void SetDebug(Int_t flag = 0) {fDebug = flag;}
1c22a81e 44 virtual void SetNumbersOfSlowNucleons(Int_t ngp, Int_t ngn, Int_t nbp, Int_t nbn)
45 {fNgp = ngp; fNgn = ngn; fNbp = nbp; fNbn = nbn;}
46
c9a8628a 47 protected:
48 void GenerateSlow(Int_t charge, Double_t T, Double_t beta, Float_t* q);
49 Double_t Maxwell(Double_t m, Double_t p, Double_t t);
50 void Lorentz(Double_t m, Double_t beta, Float_t* q);
dc1d768c 51 void Copy(TObject&) const;
f687abfe 52 AliGenSlowNucleons & operator=(const AliGenSlowNucleons & rhs);
c9a8628a 53 protected:
83b3cd6c 54 Float_t fCMS; // Center of mass energy
55 Float_t fMomentum; // Target nucleus momentum
56 Float_t fBeta; // Target nucleus beta
57 Float_t fPmax; // Maximum slow nucleon momentum
58 Float_t fATarget; // Target nucleus mass number
59 Float_t fZTarget; // Target nucleus charge number
60 Int_t fCharge; // Slow nucleon charge
61 Float_t fProtonDirection; // Direction of the proton
62 Float_t fTemperatureG; // Source Temperature for gray nucleons
63 Float_t fBetaSourceG; // Source beta for gray nucleons
64 Float_t fTemperatureB; // Source Temperature for black nucleons
65 Float_t fBetaSourceB; // Source beta for black nucleons
66 Int_t fNgp; // Number of gray protons
67 Int_t fNgn; // Number of gray neutrons
68 Int_t fNbp; // Number of black protons
69 Int_t fNbn; // Number of black neutrons
70 Int_t fDebug; // Debug flag
71 TH2F* fDebugHist1; // Histogram for debugging
72 TH2F* fDebugHist2; // Histogram for debugging
c9a8628a 73
74 //
75 AliSlowNucleonModel* fSlowNucleonModel; // The slow nucleon model
76 ClassDef(AliGenSlowNucleons,1) // Slow Nucleon Generator
77};
78#endif
79
80
81
82
83
84