ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
Pythia8Generator.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence version 3 (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 // -------------------------------------------------------------------------
9 // ----- M. Al-Turany June 2014 -----
10 // -------------------------------------------------------------------------
11 
12 #ifndef PNDP8GENERAtOR_H
13 #define PNDP8GENERAtOR_H 1
14 
15 #include <FairGenerator.h>
16 
17 #include <TROOT.h>
18 #include <TRandom1.h>
19 #include <TRandom3.h>
20 
21 #include "Pythia.h"
22 
23 class FairPrimaryGenerator;
24 using namespace Pythia8;
25 
26 class PyTr1Rng : public RndmEngine {
27 public:
28  PyTr1Rng() { rng = new TRandom1(gRandom->GetSeed()); };
29  virtual ~PyTr1Rng(){};
30 
31  Double_t flat() { return rng->Rndm(); };
32 
33 private:
34  TRandom1 *rng;
35 };
36 
37 class PyTr3Rng : public RndmEngine {
38 public:
39  PyTr3Rng() { rng = new TRandom3(gRandom->GetSeed()); };
40  virtual ~PyTr3Rng(){};
41 
42  Double_t flat() { return rng->Rndm(); };
43 
44 private:
45  TRandom3 *rng;
46 };
47 
48 class Pythia8Generator : public FairGenerator {
49 public:
52 
54  virtual ~Pythia8Generator();
55 
57  Bool_t ReadEvent(FairPrimaryGenerator *);
58  void SetParameters(char *);
59  void Print();
60 
61  virtual Bool_t Init();
62 
63  void SetMom(Double_t mom) { fMom = mom; };
64  void SetId(Double_t id) { fId = id; };
65  void SetHNLId(Int_t id) { fHNL = id; };
66  void UseRandom1()
67  {
68  fUseRandom1 = kTRUE;
69  fUseRandom3 = kFALSE;
70  };
71  void UseRandom3()
72  {
73  fUseRandom1 = kFALSE;
74  fUseRandom3 = kTRUE;
75  };
76  void GetPythiaInstance(int);
77 
78 private:
79  Pythia fPythia;
80  RndmEngine *fRandomEngine;
81 
82 protected:
83  Double_t fMom; // proton momentum
84  Int_t fHNL; // HNL ID
85  Int_t fId; // target type
86  Bool_t fUseRandom1; // flag to use TRandom1
87  Bool_t fUseRandom3; // flag to use TRandom3 (default)
88 
90 };
91 
92 #endif /* !PNDP8GENERAtOR_H */
Pythia8Generator
Definition: Pythia8Generator.h:48
Pythia8Generator::SetId
void SetId(Double_t id)
Definition: Pythia8Generator.h:64
Pythia8Generator::fId
Int_t fId
Definition: Pythia8Generator.h:85
Pythia8Generator::UseRandom1
void UseRandom1()
Definition: Pythia8Generator.h:66
Pythia8Generator::SetMom
void SetMom(Double_t mom)
Definition: Pythia8Generator.h:63
PyTr1Rng::flat
Double_t flat()
Definition: Pythia8Generator.h:31
Pythia8Generator::fUseRandom3
Bool_t fUseRandom3
Definition: Pythia8Generator.h:87
Pythia8Generator::SetHNLId
void SetHNLId(Int_t id)
Definition: Pythia8Generator.h:65
PyTr3Rng::flat
Double_t flat()
Definition: Pythia8Generator.h:42
PyTr1Rng::~PyTr1Rng
virtual ~PyTr1Rng()
Definition: Pythia8Generator.h:29
Pythia8Generator::ClassDef
ClassDef(Pythia8Generator, 1)
Pythia8Generator::fUseRandom1
Bool_t fUseRandom1
Definition: Pythia8Generator.h:86
PyTr3Rng::PyTr3Rng
PyTr3Rng()
Definition: Pythia8Generator.h:39
Pythia8Generator::UseRandom3
void UseRandom3()
Definition: Pythia8Generator.h:71
PyTr3Rng::~PyTr3Rng
virtual ~PyTr3Rng()
Definition: Pythia8Generator.h:40
PyTr1Rng::PyTr1Rng
PyTr1Rng()
Definition: Pythia8Generator.h:28
PyTr1Rng
Definition: Pythia8Generator.h:26
PyTr3Rng
Definition: Pythia8Generator.h:37
Pythia8Generator::fMom
Double_t fMom
Definition: Pythia8Generator.h:83
Pythia8Generator::fHNL
Int_t fHNL
Definition: Pythia8Generator.h:84