1 #ifndef AliGenAfterBurnerFlow_h
2 #define AliGenAfterBurnerFlow_h
4 ////////////////////////////////////////////////////////////////////////////////////////////////////
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
10 ////////////////////////////////////////////////////////////////////////////////////////////////////
13 #include "AliGenerator.h"
18 class AliGenAfterBurnerFlow : public AliGenerator {
22 AliGenAfterBurnerFlow();
23 AliGenAfterBurnerFlow(Float_t reactionPlane);
24 ~AliGenAfterBurnerFlow();
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); }
35 Bool_t IsPrimary(Int_t pdg) const;
38 void NeglectFlow(Int_t pdg) {fIsPrim[pdg]=kFALSE;}
41 AliGenAfterBurnerFlow(const AliGenAfterBurnerFlow&);
42 AliGenAfterBurnerFlow& operator=(const AliGenAfterBurnerFlow&);
44 static const Int_t fgkN = 300; // Size of array fParams
45 static const Int_t fgkPDG= 5226; // Size of PDG code array
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
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;
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);
61 ClassDef(AliGenAfterBurnerFlow,4)