]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenMC.h
track matching macros from Alberto
[u/mrichter/AliRoot.git] / EVGEN / AliGenMC.h
index 09fab78a8f1c7d0a74af8118c07e722e699273ae..623c79ce55aedfd792570cfea1046507e4351e5c 100644 (file)
 // decay products and particle selection.
 // andreas.morsch@cern.ch
 
-#include "AliGenerator.h"
-#include "AliDecayer.h"
-#include "AliGeometry.h"
-#include <TArrayI.h>    
-#include <TClonesArray.h>
-
+class TClonesArray;
 class TParticle;
+#include <TArrayI.h>   
+#include <TString.h>
+
+class AliGeometry;
+#include "AliDecayer.h"
+#include "AliGenerator.h"
 
 class AliGenMC : public AliGenerator
 {
@@ -35,7 +36,7 @@ class AliGenMC : public AliGenerator
        {fChildPMin = pmin; fChildPMax = pmax;}
     virtual void SetChildPtRange(Float_t ptmin = 0, Float_t ptmax = 20.)
        {fChildPtMin = ptmin; fChildPtMax = ptmax;}
-    virtual void SetChildPhiRange(Float_t phimin = -180., Float_t phimax = 180)
+    virtual void SetChildPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
        {fChildPhiMin = TMath::Pi()*phimin/180;
        fChildPhiMax  = TMath::Pi()*phimax/180;}
     virtual void SetChildThetaRange(Float_t thetamin = 0, Float_t thetamax = 180)
@@ -51,8 +52,14 @@ class AliGenMC : public AliGenerator
     virtual void SetPdgCodeParticleforAcceptanceCut(Int_t PdgCodeParticleforAcceptanceCut=0) {fPdgCodeParticleforAcceptanceCut = PdgCodeParticleforAcceptanceCut;}
 
     virtual void SetNumberOfAcceptedParticles(Int_t NumberOfAcceptedParticles=2) {fNumberOfAcceptedParticles = NumberOfAcceptedParticles;}
-
+    
     virtual Bool_t CheckAcceptanceGeometry(Int_t np, TClonesArray* particles);
+    virtual void   SetProjectile(TString proj="P", Int_t a = 1, Int_t z = 1)
+       {fProjectile = proj; fAProjectile = a; fZProjectile = z;}    
+    virtual void   SetTarget(TString tar="P", Int_t a = 1, Int_t z = 1)
+       {fTarget = tar; fATarget = a; fZTarget = z;}
+    virtual void   SetCrossingAngle(Float_t phiX, Float_t phiY) {fXingAngleX = phiX; fXingAngleY = phiY;}
+    virtual void Boost();
 
  protected:
     // check if particle is selected as parent particle
@@ -62,8 +69,9 @@ class AliGenMC : public AliGenerator
     // all kinematic selection cuts go here 
     Bool_t KinematicSelection(TParticle *particle, Int_t flag) const;
     Int_t  CheckPDGCode(Int_t pdgcode) const;
-
+    void Copy(TObject&) const;
  protected:
+    TClonesArray* fParticles;   //!Particle  List
     TArrayI     fParentSelect;  //!Parent particles to be selected 
     TArrayI     fChildSelect;   //!Decay products to be selected
     Int_t       fCutOnChild;    // Cuts on decay products (children)  are enabled/disabled
@@ -77,13 +85,22 @@ class AliGenMC : public AliGenerator
     Float_t     fChildThetaMax; // Children maximum theta
     Float_t     fChildYMin;     // Children minimum y
     Float_t     fChildYMax;     // Children maximum y
+    Float_t     fXingAngleX;    // Crossing angle X
+    Float_t     fXingAngleY;    // Crossing angle Y    
     Decay_t     fForceDecay;    // Decay channel forced
     Float_t     fMaxLifeTime;   // Maximum lifetime for unstable particles
+    Int_t       fAProjectile;   // Projectile A
+    Int_t       fZProjectile;   // Projectile Z
+    Int_t       fATarget;       // Target A
+    Int_t       fZTarget;       // Target Z
+    TString     fProjectile;    // Projectile
+    TString     fTarget;        // Target
+    Double_t    fDyBoost;       // dy for boost into lab frame
     AliGeometry * fGeometryAcceptance; // Geometry to which particles must be simulated
     Int_t       fPdgCodeParticleforAcceptanceCut;  // Abs(PDG Code) of the particle to which the GeometryAcceptance must be applied
     Int_t       fNumberOfAcceptedParticles;  // Number of accepted particles in GeometryAcceptance with the right Abs(PdgCode) 
     
-    ClassDef(AliGenMC,4)       // AliGenerator implementation for generators using MC methods
+    ClassDef(AliGenMC,5)       // AliGenerator implementation for generators using MC methods
 };
 #endif