// The generator changes Phi coordinate of the particle momentum.
// Flow (directed and elliptic) can be defined on particle type level
//
-// For examples, parameters and testing macros refer to:
-// http:/home.cern.ch/radomski
-//
-// Author:
-// Sylwester Radomski,
-// GSI, April 2002
-//
-// S.Radomski@gsi.de
-//
////////////////////////////////////////////////////////////////////////////////////////////////////
#include "AliGenerator.h"
+#include "AliStack.h"
class TObjArray;
AliGenAfterBurnerFlow();
AliGenAfterBurnerFlow(Float_t reactionPlane);
-
~AliGenAfterBurnerFlow();
- 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 Init();
- void Generate();
+ 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:
-
- static const Int_t fgkN = 30; // Size of array fParams
-
- Float_t GetCoefficient(Int_t pdg, Int_t n, Float_t Pt, Float_t Y);
- void SetFlowParameters(Int_t pdg, Int_t order, Int_t type, Float_t v1, Float_t v2, Float_t v3, Float_t v4);
-
- Float_t fReactionPlane; // Reaction plane angle (in rad)
- Float_t fParams[fgkN][7]; // parameters (0: pdg, 1: order, 2: type, 3-6: actual parameters)
- Int_t fCounter; // counter
-
-
- ClassDef(AliGenAfterBurnerFlow,3)
-
+ AliGenAfterBurnerFlow(const AliGenAfterBurnerFlow&);
+ AliGenAfterBurnerFlow& operator=(const AliGenAfterBurnerFlow&);
+
+ static const Int_t fgkN = 300; // Size of array fParams
+ static const Int_t fgkPDG= 5226; // Size of PDG code array
+
+ Bool_t fIsPrim[fgkPDG]; // array of primaries
+ Float_t fReactionPlane; // Reaction plane angle (in rad)
+ Int_t fHow; // Choose reaction plane angle
+ Float_t fParams[fgkN][7]; // parameters (0: pdg, 1: order, 2: type, 3-6: actual parameters)
+ Float_t fNpParams[5]; // parameters (0: order, 1-4: actual parameters)
+ Int_t fCounter; // counter
+ 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