1a52e0ed |
1 | #ifndef ALIGENDPMJET_H |
2 | #define ALIGENDPMJET_H |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ |
5 | |
6 | // Generator using DPMJET as an external generator |
7 | // The main DPMJET options are accessable for the user through this interface. |
8 | |
9 | #include "AliGenMC.h" |
e67e0fb7 |
10 | #include "TDPMjet.h" |
1a52e0ed |
11 | #include <TString.h> |
12 | #include <TArrayI.h> |
13 | |
14 | class TDPMjet; |
15 | class TArrayI; |
16 | class TParticle; |
17 | class TClonesArray; |
18 | class TGraph; |
9dcc0beb |
19 | class AliGenEventHeader; |
20 | class AliStack; |
21 | class AliRunLoader; |
22 | class AliGenDPMjetEventHeader; |
23 | |
24 | |
1a52e0ed |
25 | |
26 | class AliGenDPMjet : public AliGenMC |
27 | { |
28 | |
29 | public: |
30 | AliGenDPMjet(); |
31 | AliGenDPMjet(Int_t npart); |
ba758f5a |
32 | AliGenDPMjet(const AliGenDPMjet &Dpmjet); |
1a52e0ed |
33 | virtual ~AliGenDPMjet(); |
34 | virtual void Generate(); |
35 | virtual void Init(); |
4e5c2fd7 |
36 | virtual void FinishRun(); |
e67e0fb7 |
37 | virtual void SetEnergyCMS(Float_t energy = 14000.) {fEnergyCMS = energy; fBeamEn = energy / 2.;} |
9dcc0beb |
38 | virtual void SetImpactParameterRange(Float_t bmin=0., Float_t bmax=1.) |
1a52e0ed |
39 | {fMinImpactParam=bmin; fMaxImpactParam=bmax;} |
e67e0fb7 |
40 | virtual void SetProcess(DpmProcess_t iproc) {fProcess = iproc;} |
1a52e0ed |
41 | virtual void SetCentral(Int_t icentr=-2) {fICentr = icentr;} |
1a52e0ed |
42 | virtual void SetFlavor(Int_t flag=0) {fFlavor = flag;} |
1a52e0ed |
43 | virtual void SetSelectAll(Int_t flag=0) {fSelectAll = flag;} |
44 | virtual void SetSpectators(Int_t spects=1) {fSpectators = spects;} |
45 | virtual void SetBoostLHC(Int_t flag=0) {fLHC = flag;} |
f97d4a8e |
46 | virtual void SetPi0Decay(Int_t iPi0) {fPi0Decay = iPi0;} |
717765ce |
47 | virtual void SetDecayAll(Int_t iDec) {fDecayAll = iDec;} |
1a52e0ed |
48 | virtual void GetImpactParameterRange(Float_t& bmin, Float_t& bmax) |
49 | {bmin = fMinImpactParam; bmax = fMaxImpactParam;} |
ba758f5a |
50 | virtual Int_t GetSpectators() {return fSpectators;} |
51 | virtual Int_t GetFlavor() {return fFlavor;} |
1a52e0ed |
52 | |
1a52e0ed |
53 | virtual void SetGenImpPar(Float_t bValue) {fGenImpPar=bValue;} |
54 | virtual Float_t GetGenImpPar() {return fGenImpPar;} |
3b50c39e |
55 | virtual void SetTriggerChargedMultiplicity(Int_t multiplicity, |
56 | Float_t etamax = 0, Float_t ptmin = -1.) |
57 | {fTriggerMultiplicity = multiplicity; fTriggerMultiplicityEta = etamax; |
58 | fTriggerMultiplicityPtMin = ptmin;} |
59 | |
1a52e0ed |
60 | AliGenDPMjet & operator=(const AliGenDPMjet & rhs); |
9dcc0beb |
61 | void AddHeader(AliGenEventHeader* header); |
1a52e0ed |
62 | |
19896767 |
63 | void SetTuneForDiff(Bool_t a=kTRUE) {fkTuneForDiff=a;} |
64 | |
1a52e0ed |
65 | protected: |
66 | Bool_t SelectFlavor(Int_t pid); |
67 | void MakeHeader(); |
68 | |
69 | protected: |
1a52e0ed |
70 | Float_t fBeamEn; // beam energy |
1a52e0ed |
71 | Float_t fMinImpactParam; // minimum impact parameter |
72 | Float_t fMaxImpactParam; // maximum impact parameter |
73 | Int_t fICentr; // Flag to force central production |
1a52e0ed |
74 | Int_t fSelectAll; // Flag to write the full event |
75 | Int_t fFlavor; // Selected particle flavor 4: charm+beauty 5: beauty |
76 | Int_t fTrials; // Number of trials |
1a52e0ed |
77 | Int_t fSpectators; // put spectators on stack |
78 | Int_t fSpecn; // Num. of spectator neutrons |
79 | Int_t fSpecp; // Num. of spectator protons |
80 | TDPMjet *fDPMjet; // DPMjet |
1a52e0ed |
81 | Int_t fNoGammas; // Don't write gammas if flag "on" |
82 | Int_t fLHC; // Assume LHC as lab frame |
f97d4a8e |
83 | Int_t fPi0Decay; // Flag for pi0 decays |
717765ce |
84 | Int_t fDecayAll; // Flag to switch on long-lived particle decays |
1a52e0ed |
85 | Float_t fGenImpPar; // GeneratedImpactParameter |
e67e0fb7 |
86 | DpmProcess_t fProcess; // Process type |
3b50c39e |
87 | // Multiplicity Trigger |
88 | Int_t fTriggerMultiplicity; // Triggered multiplicity |
89 | Float_t fTriggerMultiplicityEta; // Triggered multiplicity eta cut |
90 | Float_t fTriggerMultiplicityPtMin; // Triggered multiplicity min pt |
91 | |
19896767 |
92 | Bool_t fkTuneForDiff; // Phojet tune |
93 | Int_t fProcDiff; |
94 | |
1a52e0ed |
95 | private: |
96 | // adjust the weight from kinematic cuts |
97 | void AdjustWeights(); |
98 | // check seleted daughters |
99 | Bool_t DaughtersSelection(TParticle* iparticle); |
100 | // check if stable |
101 | Bool_t Stable(TParticle* particle); |
19896767 |
102 | |
103 | Bool_t CheckDiffraction(); |
c5dfa3e4 |
104 | Bool_t GetWeightsDiffraction(Double_t M, Double_t &Mmin, Double_t &Mmax, |
105 | Double_t &wSD, Double_t &wDD, Double_t &wND); |
19896767 |
106 | |
c5dfa3e4 |
107 | ClassDef(AliGenDPMjet,4) // AliGenerator interface to DPMJET |
1a52e0ed |
108 | }; |
109 | #endif |
110 | |
111 | |
112 | |
113 | |
114 | |