]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenMC.h
A pointer was set to zero in the default constructor to avoid memory management problems
[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
40  protected:
41     // check if particle is selected as parent particle
42     Bool_t ParentSelected(Int_t ip);
43     // check if particle is selected as child particle
44     Bool_t ChildSelected(Int_t ip);
45     // all kinematic selection cuts go here 
46     Bool_t KinematicSelection(TParticle *particle, Int_t flag);
47     Int_t  CheckPDGCode(Int_t pdgcode);
48
49  protected:
50     TArrayI     fParentSelect;  // Parent particles to be selected 
51     TArrayI     fChildSelect;   // Decay products to be selected
52     Int_t       fCutOnChild;    // Cuts on decay products (children)  are enabled/disabled
53     Float_t     fChildPtMin;    // Children minimum pT
54     Float_t     fChildPtMax;    // Children maximum pT
55     Float_t     fChildPMin;     // Children minimum p
56     Float_t     fChildPMax;     // Children maximum p
57     Float_t     fChildPhiMin;   // Children minimum phi
58     Float_t     fChildPhiMax;   // Children maximum phi
59     Float_t     fChildThetaMin; // Children minimum theta
60     Float_t     fChildThetaMax; // Children maximum theta
61     Float_t     fChildYMin;     // Children minimum y
62     Float_t     fChildYMax;     // Children maximum y
63     Decay_t     fForceDecay;    // Decay channel forced
64     ClassDef(AliGenMC,2)       // AliGenerator implementation for generators using MC methods
65 };
66 #endif
67
68
69
70
71