]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenAfterBurnerFlow.h
Pair generator
[u/mrichter/AliRoot.git] / EVGEN / AliGenAfterBurnerFlow.h
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   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