forked from wiechula/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPythia8Generator.h
More file actions
101 lines (75 loc) · 2.84 KB
/
Pythia8Generator.h
File metadata and controls
101 lines (75 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/********************************************************************************
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
* *
* This software is distributed under the terms of the *
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
* copied verbatim in the file "LICENSE" *
********************************************************************************/
// -------------------------------------------------------------------------
// ----- M. Al-Turany June 2014 -----
// -------------------------------------------------------------------------
#ifndef PNDP8GENERATOR_H
#define PNDP8GENERATOR_H 1
// Avoid the inclusion of dlfcn.h by Pyhtia.h that CINT is not able to process (avoid compile error on GCC > 5)
#ifdef __CLING__
#define _DLFCN_H_
#define _DLFCN_H
#endif
#include "Pythia8/Basics.h" // for RndmEngine
#include "FairGenerator.h" // for FairGenerator
#include "Pythia8/Pythia.h" // for Pythia
#include "Rtypes.h" // for Double_t, Bool_t, Int_t, etc
#include "TRandom.h" // for TRandom
#include "TRandom1.h" // for TRandom1
#include "TRandom3.h" // for TRandom3, gRandom
class FairPrimaryGenerator; // lines 22-22
class FairPrimaryGenerator;
using namespace Pythia8;
class PyTr1Rng : public RndmEngine
{
public:
PyTr1Rng() { rng = new TRandom1(gRandom->GetSeed()); };
virtual ~PyTr1Rng() {};
Double_t flat() { return rng->Rndm(); };
private:
TRandom1 *rng; //!
};
class PyTr3Rng : public RndmEngine
{
public:
PyTr3Rng() { rng = new TRandom3(gRandom->GetSeed()); };
virtual ~PyTr3Rng() {};
Double_t flat() { return rng->Rndm(); };
private:
TRandom3 *rng; //!
};
class Pythia8Generator : public FairGenerator
{
public:
/** default constructor **/
Pythia8Generator();
/** destructor **/
virtual ~Pythia8Generator();
/** public method ReadEvent **/
Bool_t ReadEvent(FairPrimaryGenerator*);
void SetParameters(char*);
void Print(); //!
virtual Bool_t Init(); //!
void SetMom(Double_t mom) { fMom = mom; };
void SetId(Double_t id) { fId = id; };
void SetHNLId(Int_t id) { fHNL = id; };
void UseRandom1() { fUseRandom1 = kTRUE; fUseRandom3 = kFALSE; };
void UseRandom3() { fUseRandom1 = kFALSE; fUseRandom3 = kTRUE; };
void GetPythiaInstance(int);
private:
Pythia fPythia; //!
RndmEngine* fRandomEngine; //!
protected:
Double_t fMom; // proton momentum
Int_t fHNL; // HNL ID
Int_t fId; // target type
Bool_t fUseRandom1; // flag to use TRandom1
Bool_t fUseRandom3; // flag to use TRandom3 (default)
ClassDef(Pythia8Generator,1);
};
#endif /* !PNDP8GENERATOR_H */