#ifndef AliGenAfterBurnerFlow_h
#define AliGenAfterBurnerFlow_h
#include "AliGenerator.h"
#include "AliStack.h"
class TObjArray;
class AliGenAfterBurnerFlow : public AliGenerator {
public:
AliGenAfterBurnerFlow();
AliGenAfterBurnerFlow(Float_t reactionPlane);
~AliGenAfterBurnerFlow();
void AarbitraryReactionPlaneAngle() {fHow = 3;}
void SetDirectedSimple(Int_t pdg, Float_t v1);
void SetDirectedParam(Int_t pdg, Float_t v11, Float_t v12 = 0, Float_t v13 = 1, Float_t v14 = 0);
void SetEllipticSimple(Int_t pdg, Float_t v2);
void SetEllipticParamPion(Int_t pdg, Float_t v21, Float_t pTmax, Float_t v22=0.);
void SetEllipticParamOld(Int_t pdg, Float_t v21, Float_t v22, Float_t v23);
void SetEllipticParam(Int_t pdg, Float_t v00, Float_t v10, Float_t v11, Float_t v22);
void SetNpParams(Int_t order=-1, Float_t p0=-1, Float_t p1=-1, Float_t p2=-1, Float_t p3=-1);
void SetNpDefault() { SetNpParams(2,1,-5e-8,-5e-6); }
Bool_t IsPrimary(Int_t pdg) const;
void Init();
void Generate();
void NeglectFlow(Int_t pdg) {fIsPrim[pdg]=kFALSE;}
private:
AliGenAfterBurnerFlow(const AliGenAfterBurnerFlow&);
AliGenAfterBurnerFlow& operator=(const AliGenAfterBurnerFlow&);
static const Int_t fgkN = 300;
static const Int_t fgkPDG= 5226;
Bool_t fIsPrim[fgkPDG];
Float_t fReactionPlane;
Int_t fHow;
Float_t fParams[fgkN][7];
Float_t fNpParams[5];
Int_t fCounter;
AliStack *fStack;
Float_t GetCoefficient(Int_t pdg, Int_t n, Float_t Pt, Float_t Y) const;
Float_t GetNpNorm(Int_t npart) const;
void InitPrimaries();
void Rotate(Int_t i, Double_t phi, Bool_t IsPrim=kTRUE);
void SetFlowParameters(Int_t pdg, Int_t order, Int_t type, Float_t v1, Float_t v2, Float_t v3, Float_t v4);
ClassDef(AliGenAfterBurnerFlow,4)
};
#endif
AliGenAfterBurnerFlow.h:1 AliGenAfterBurnerFlow.h:2 AliGenAfterBurnerFlow.h:3 AliGenAfterBurnerFlow.h:4 AliGenAfterBurnerFlow.h:5 AliGenAfterBurnerFlow.h:6 AliGenAfterBurnerFlow.h:7 AliGenAfterBurnerFlow.h:8 AliGenAfterBurnerFlow.h:9 AliGenAfterBurnerFlow.h:10 AliGenAfterBurnerFlow.h:11 AliGenAfterBurnerFlow.h:12 AliGenAfterBurnerFlow.h:13 AliGenAfterBurnerFlow.h:14 AliGenAfterBurnerFlow.h:15 AliGenAfterBurnerFlow.h:16 AliGenAfterBurnerFlow.h:17 AliGenAfterBurnerFlow.h:18 AliGenAfterBurnerFlow.h:19 AliGenAfterBurnerFlow.h:20 AliGenAfterBurnerFlow.h:21 AliGenAfterBurnerFlow.h:22 AliGenAfterBurnerFlow.h:23 AliGenAfterBurnerFlow.h:24 AliGenAfterBurnerFlow.h:25 AliGenAfterBurnerFlow.h:26 AliGenAfterBurnerFlow.h:27 AliGenAfterBurnerFlow.h:28 AliGenAfterBurnerFlow.h:29 AliGenAfterBurnerFlow.h:30 AliGenAfterBurnerFlow.h:31 AliGenAfterBurnerFlow.h:32 AliGenAfterBurnerFlow.h:33 AliGenAfterBurnerFlow.h:34 AliGenAfterBurnerFlow.h:35 AliGenAfterBurnerFlow.h:36 AliGenAfterBurnerFlow.h:37 AliGenAfterBurnerFlow.h:38 AliGenAfterBurnerFlow.h:39 AliGenAfterBurnerFlow.h:40 AliGenAfterBurnerFlow.h:41 AliGenAfterBurnerFlow.h:42 AliGenAfterBurnerFlow.h:43 AliGenAfterBurnerFlow.h:44 AliGenAfterBurnerFlow.h:45 AliGenAfterBurnerFlow.h:46 AliGenAfterBurnerFlow.h:47 AliGenAfterBurnerFlow.h:48 AliGenAfterBurnerFlow.h:49 AliGenAfterBurnerFlow.h:50 AliGenAfterBurnerFlow.h:51 AliGenAfterBurnerFlow.h:52 AliGenAfterBurnerFlow.h:53 AliGenAfterBurnerFlow.h:54 AliGenAfterBurnerFlow.h:55 AliGenAfterBurnerFlow.h:56 AliGenAfterBurnerFlow.h:57 AliGenAfterBurnerFlow.h:58 AliGenAfterBurnerFlow.h:59 AliGenAfterBurnerFlow.h:60 AliGenAfterBurnerFlow.h:61 AliGenAfterBurnerFlow.h:62 AliGenAfterBurnerFlow.h:63