]>
Commit | Line | Data |
---|---|---|
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 | |
16 | class TObjArray; | |
17 | ||
18 | class 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 |