e36044d6 |
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(); |
a0609231 |
23 | virtual void SetForceDecay(Decay_t decay = kAll) {fForceDecay = decay;} |
e36044d6 |
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 | |
65 | ClassDef(AliGenMC,1) // AliGenerator implementation for generators using MC methods |
66 | }; |
67 | #endif |
68 | |
69 | |
70 | |
71 | |
72 | |