]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenAfterBurnerFlow.h
Update timestamps for new AMANDA simulation (17/02/2015)
[u/mrichter/AliRoot.git] / EVGEN / AliGenAfterBurnerFlow.h
index f37515ac73ba4fe0f3e21a55c214dba038aa88d5..bb28760b40c009501832ef220e58de6f6ae47d00 100644 (file)
@@ -7,19 +7,11 @@
 // 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;
 
@@ -29,35 +21,43 @@ class AliGenAfterBurnerFlow : public AliGenerator {
 
   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