]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - EVGEN/AliGenAfterBurnerFlow.h
#97492 Request to: patch AliSimulation; port to Release; make tag on release; for...
[u/mrichter/AliRoot.git] / EVGEN / AliGenAfterBurnerFlow.h
... / ...
CommitLineData
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
16class TObjArray;
17
18class AliGenAfterBurnerFlow : public AliGenerator {
19
20 public:
21
22 AliGenAfterBurnerFlow();
23 AliGenAfterBurnerFlow(Float_t reactionPlane);
24 ~AliGenAfterBurnerFlow();
25
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;
36 void Init();
37 void Generate();
38 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 ClassDef(AliGenAfterBurnerFlow,4)
62};
63#endif