Adding histos for the LEGO train
[u/mrichter/AliRoot.git] / EVGEN / AliGenAfterBurnerFlow.h
CommitLineData
4966b266 1#ifndef AliGenAfterBurnerFlow_h
2#define AliGenAfterBurnerFlow_h
3
4////////////////////////////////////////////////////////////////////////////////////////////////////
5//
6// AliGenAfterBurnerFlow is a After Burner event generator applying flow.
7// The generator changes Phi coordinate of the particle momentum.
7e4131fc 8// Flow (directed and elliptic) can be defined on particle type level
4966b266 9//
4966b266 10////////////////////////////////////////////////////////////////////////////////////////////////////
11
12
13#include "AliGenerator.h"
f9f62d8e 14#include "AliStack.h"
4966b266 15
16class TObjArray;
17
18class AliGenAfterBurnerFlow : public AliGenerator {
19
20 public:
21
22 AliGenAfterBurnerFlow();
23 AliGenAfterBurnerFlow(Float_t reactionPlane);
4966b266 24 ~AliGenAfterBurnerFlow();
25
f9f62d8e 26 void AarbitraryReactionPlaneAngle() {fHow = 3;}
27 void SetDirectedSimple(Int_t pdg, Float_t v1);
28 void SetDirectedParam(Int_t pdg, Float_t v11, Float_t v12 = 0, Float_t v13 = 1, Float_t v14 = 0);
29 void SetEllipticSimple(Int_t pdg, Float_t v2);
30 void SetEllipticParamPion(Int_t pdg, Float_t v21, Float_t pTmax, Float_t v22=0.);
31 void SetEllipticParamOld(Int_t pdg, Float_t v21, Float_t v22, Float_t v23);
32 void SetEllipticParam(Int_t pdg, Float_t v00, Float_t v10, Float_t v11, Float_t v22);
33 void SetNpParams(Int_t order=-1, Float_t p0=-1, Float_t p1=-1, Float_t p2=-1, Float_t p3=-1);
34 void SetNpDefault() { SetNpParams(2,1,-5e-8,-5e-6); }
4a33c50d 35 Bool_t IsPrimary(Int_t pdg) const;
f9f62d8e 36 void Init();
37 void Generate();
38 void NeglectFlow(Int_t pdg) {fIsPrim[pdg]=kFALSE;}
4966b266 39
40 private:
f9f62d8e 41 AliGenAfterBurnerFlow(const AliGenAfterBurnerFlow&);
42 AliGenAfterBurnerFlow& operator=(const AliGenAfterBurnerFlow&);
43
44 static const Int_t fgkN = 300; // Size of array fParams
45 static const Int_t fgkPDG= 5226; // Size of PDG code array
46
47 Bool_t fIsPrim[fgkPDG]; // array of primaries
48 Float_t fReactionPlane; // Reaction plane angle (in rad)
49 Int_t fHow; // Choose reaction plane angle
50 Float_t fParams[fgkN][7]; // parameters (0: pdg, 1: order, 2: type, 3-6: actual parameters)
51 Float_t fNpParams[5]; // parameters (0: order, 1-4: actual parameters)
52 Int_t fCounter; // counter
53 AliStack *fStack; //!
54
55 Float_t GetCoefficient(Int_t pdg, Int_t n, Float_t Pt, Float_t Y) const;
4a33c50d 56 Float_t GetNpNorm(Int_t npart) const;
f9f62d8e 57 void InitPrimaries();
58 void Rotate(Int_t i, Double_t phi, Bool_t IsPrim=kTRUE);
59 void SetFlowParameters(Int_t pdg, Int_t order, Int_t type, Float_t v1, Float_t v2, Float_t v3, Float_t v4);
60
61 ClassDef(AliGenAfterBurnerFlow,4)
4966b266 62};
4966b266 63#endif