All vertex truncation and event vertex moved here.
[u/mrichter/AliRoot.git] / EVGEN / AliGenMC.h
1 #ifndef ALIGENMC_H
2 #define ALIGENMC_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8
9 #include "AliGenerator.h"
10 #include "AliDecayer.h"
11 #include <TArrayI.h>    
12
13 class TParticle;
14
15 class AliGenMC : public AliGenerator
16 {
17  public:
18     AliGenMC();
19     AliGenMC(Int_t npart);
20     AliGenMC(const AliGenMC &MC);
21     virtual ~AliGenMC();
22     void Init();
23     virtual void SetForceDecay(Decay_t decay = kAll) {fForceDecay = decay;}
24     AliGenMC & operator=(const AliGenMC & rhs);
25         virtual void SetCutOnChild(Int_t flag = 0) {fCutOnChild = flag;}
26     virtual void SetChildMomentumRange(Float_t pmin = 0, Float_t pmax = 1.e10)
27         {fChildPMin = pmin; fChildPMax = pmax;}
28     virtual void SetChildPtRange(Float_t ptmin = 0, Float_t ptmax = 20.)
29         {fChildPtMin = ptmin; fChildPtMax = ptmax;}
30     virtual void SetChildPhiRange(Float_t phimin = -180., Float_t phimax = 180)
31         {fChildPhiMin = TMath::Pi()*phimin/180;
32         fChildPhiMax  = TMath::Pi()*phimax/180;}
33     virtual void SetChildThetaRange(Float_t thetamin = 0, Float_t thetamax = 180)
34         {fChildThetaMin = TMath::Pi()*thetamin/180;
35         fChildThetaMax  = TMath::Pi()*thetamax/180;}
36     virtual void SetChildYRange(Float_t ymin = -12, Float_t ymax = 12)
37         {fChildYMin = ymin;
38         fChildYMax  = ymax;}
39     virtual void    SetCutVertexZ(Float_t cut=999999.) {fCutVertexZ = cut;}
40
41
42  protected:
43     // check if particle is selected as parent particle
44     Bool_t ParentSelected(Int_t ip);
45     // check if particle is selected as child particle
46     Bool_t ChildSelected(Int_t ip);
47     // all kinematic selection cuts go here 
48     Bool_t KinematicSelection(TParticle *particle, Int_t flag);
49     Int_t  CheckPDGCode(Int_t pdgcode);
50
51  protected:
52     TArrayI     fParentSelect;  // Parent particles to be selected 
53     TArrayI     fChildSelect;   // Decay products to be selected
54     Int_t       fCutOnChild;    // Cuts on decay products (children)  are enabled/disabled
55     Float_t     fChildPtMin;    // Children minimum pT
56     Float_t     fChildPtMax;    // Children maximum pT
57     Float_t     fChildPMin;     // Children minimum p
58     Float_t     fChildPMax;     // Children maximum p
59     Float_t     fChildPhiMin;   // Children minimum phi
60     Float_t     fChildPhiMax;   // Children maximum phi
61     Float_t     fChildThetaMin; // Children minimum theta
62     Float_t     fChildThetaMax; // Children maximum theta
63     Float_t     fChildYMin;     // Children minimum y
64     Float_t     fChildYMax;     // Children maximum y
65     Decay_t     fForceDecay;    // Decay channel forced
66     TArrayF     fEventVertex;   //!The current event vertex
67     Float_t     fCutVertexZ;    // Vertex cut in units of sigma_z
68         
69     ClassDef(AliGenMC,1)       // AliGenerator implementation for generators using MC methods
70 };
71 #endif
72
73
74
75
76