Line data Source code
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.
8 : // Flow (directed and elliptic) can be defined on particle type level
9 : //
10 : ////////////////////////////////////////////////////////////////////////////////////////////////////
11 :
12 :
13 : #include "AliGenerator.h"
14 : #include "AliStack.h"
15 :
16 : class TObjArray;
17 :
18 : class AliGenAfterBurnerFlow : public AliGenerator {
19 :
20 : public:
21 :
22 : AliGenAfterBurnerFlow();
23 : AliGenAfterBurnerFlow(Float_t reactionPlane);
24 : ~AliGenAfterBurnerFlow();
25 :
26 0 : 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 0 : void SetNpDefault() { SetNpParams(2,1,-5e-8,-5e-6); }
35 : Bool_t IsPrimary(Int_t pdg) const;
36 : void Init();
37 : void Generate();
38 0 : void NeglectFlow(Int_t pdg) {fIsPrim[pdg]=kFALSE;}
39 :
40 : private:
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;
56 : Float_t GetNpNorm(Int_t npart) const;
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 6 : ClassDef(AliGenAfterBurnerFlow,4)
62 : };
63 : #endif
|