Update timestamps for new AMANDA simulation (17/02/2015)
[u/mrichter/AliRoot.git] / EVGEN / AliGeVSimParticle.h
index 9fa1a67..2355a63 100644 (file)
 #ifndef ALIGEVSIMPARTICLE_H
 #define ALIGEVSIMPARTICLE_H
 
-#include "TObject.h"
-
-
-class AliGeVSimParticle : public TObject {
-
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// AliGeVSimParticle is a helper class for GeVSim (AliGenGeVSim) event generator.
+// An object of this class represents one particle type and contain 
+// information about particle type thermal parameters.
+//
+//////////////////////////////////////////////////////////////////////////////
+//
+// For examples, parameters and testing macros refer to:
+// http:/home.cern.ch/radomski
+// 
+// for more detailed description refer to ALICE NOTE
+// "GeVSim Monte-Carlo Event Generator"
+// S.Radosmki, P. Foka.
+//  
+// Author:
+// Sylwester Radomski,
+// GSI, March 2002
+//  
+// S.Radomski@gsi.de
+//
+//////////////////////////////////////////////////////////////////////////////
+//
+// Updated and revised: September 2002, S. Radomski, GSI
+//
+////////////////////////////////////////////////////////////////////////////////
 
-  Int_t fPDG;            // Particle type code
 
-  Float_t fN;            // Multiplicity (subject to scalling)
-  Float_t fT;            // Slope Parameter (subject to scalling)
-  Float_t fSigmaY;       // Rapidity Width
-  Float_t fExpansion;    // Expansion Velocity in c units (subject to scalling)
+#include "TObject.h"
 
-  Float_t fV1;           // Direct Flow coefficient (subject to scalling)
-  Float_t fV2;           // Elliptical flow coefficient (subject to scalling)
+class AliGeVSimParticle : public TObject {
 
  public:
-
+  
   ////////////////////////////////////////////////////////////////////////////
 
-  AliGeVSimParticle() {}
-  AliGeVSimParticle(Int_t pdg); 
-  AliGeVSimParticle(Int_t pdg, Int_t n, 
+    AliGeVSimParticle();
+    AliGeVSimParticle(Int_t pdg, Int_t model, Float_t multiplicity); 
+    AliGeVSimParticle(Int_t pdg, Int_t model, Float_t multiplicity, 
                    Float_t T, Float_t dY = 1., Float_t exp=0.);
+  
+    ~AliGeVSimParticle() {}
+  
+  ////////////////////////////////////////////////////////////////////////////
+  
+  Int_t GetPdgCode() const {return fPDG;}
+  Int_t GetModel() const {return fModel;}
 
-  ~AliGeVSimParticle() {}
+  Float_t GetTemperature() const {return fT;}
+  Float_t GetSigmaY() const {return fSigmaY;}
+  Float_t GetExpansionVelocity() const {return fExpansion;}
 
-  ////////////////////////////////////////////////////////////////////////////
+  void SetModel(Int_t model);
+  void SetTemperature(Float_t T) {fT = T;}
+  void SetSigmaY(Float_t sigma) {fSigmaY = sigma;}
+  void SetExpansionVelocity(Float_t vel) {fExpansion = vel;}
+  
 
-  Int_t GetPdgCode() {return fPDG;}
+  // Multiplicity
 
+  void    SetMultiplicity(Float_t mult);
+  Float_t GetMultiplicity() const {return fN;}
 
-  Float_t GetMultiplicity() {return fN;}
-  Float_t GetTemperature() {return fT;}
-  Float_t GetSigmaY() {return fSigmaY;}
-  Float_t GetExpansionVelocity() {return fExpansion;}
-  
-  void SetMultiplicity(Float_t n) {fN = n;}
-  void SetExpansionVelocity(Float_t vel) {fExpansion = vel;}
+  void   SetMultTotal(Bool_t isTotal = kTRUE);
 
+  Bool_t IsMultTotal() const {return fMultTotal;}
+  Bool_t IsMultForced() const {return fIsSetMult;}
+  
   // Flow
+  
+  void SetDirectedSimple(Float_t v1);
+  void SetEllipticSimple(Float_t v2);
 
-  void SetDirectFlow(Float_t v1) {fV1 = v1;}
-  void SetEllipticalFlow(Float_t v2) {fV2 = v2;}
-
-  Float_t GetDirectFlow() {return fV1;}
-  Float_t GetEllipticalFlow() {return fV2;}
+  void SetDirectedParam(Float_t v11, Float_t v12=0, Float_t v13=1, Float_t v14=0);
+  void SetEllipticParam(Float_t v21, Float_t pTmax, Float_t v22=0.);
+  void SetEllipticOld(Float_t v21, Float_t v22, Float_t v23);
 
+  Bool_t IsFlowSimple() const;
 
+  Float_t GetDirectedFlow(Float_t pt, Float_t y);
+  Float_t GetEllipticFlow(Float_t pt, Float_t y);
+  
   ////////////////////////////////////////////////////////////////////////////
+  
+ private:
+  
+  Int_t fPDG;            // Particle type code
+  Int_t fModel;          // Transverse momentum model
 
-  ClassDef(AliGeVSimParticle, 1)
+  Float_t fN;            // Multiplicity (subject to scalling)
+  Bool_t  fMultTotal;    // multiplicity mode: Total or dN/dY
+  Bool_t  fIsSetMult;    // force multiplicity mode or use from AliGenGeVSim
+
+  Float_t fT;            // Slope Parameter (subject to scalling)
+  Float_t fSigmaY;       // Rapidity Width
+  Float_t fExpansion;    // Expansion Velocity in c units (subject to scalling)
+  
+  Float_t fV1[4];        // Directed Flow coefficient parameters
+  Float_t fV2[3];        // Elliptic Flow coefficient parameters
+  
+  Bool_t fIsDirectedSimple;  // indicate use constant value for directed (v1) 
+  Bool_t fIsEllipticSimple;  // indicate use constant value for elliptic (v2)
+  Bool_t fIsEllipticOld;     // linear / quadratical pT parametrisation
 
+  ClassDef(AliGeVSimParticle, 3)
+    
 };
 
+////////////////////////////////////////////////////////////////////////////////
 
 #endif