SND@LHC Software
Loading...
Searching...
No Matches
tPythia6Generator.cxx
Go to the documentation of this file.
1
#include <math.h>
2
#include "TROOT.h"
3
#include "TPythia6.h"
4
#include "FairPrimaryGenerator.h"
5
#include "
tPythia6Generator.h
"
6
#include "TRandom1.h"
7
using
std::cout;
8
using
std::endl;
9
// ----- Default constructor -------------------------------------------
10
tPythia6Generator::tPythia6Generator
()
11
{
12
fMom
= 400;
// muon
13
fDeepCopy
= kFALSE;
// copy complete pythia event
14
fPythia
= TPythia6::Instance();
15
fPionKaonDecay
= kFALSE;
16
fType
=
"gamma/mu-"
;
// muon proton scattering
17
fTarget
=
"p+"
;
18
}
19
// -------------------------------------------------------------------------
20
21
// ----- Default constructor -------------------------------------------
22
Bool_t
tPythia6Generator::Init
()
23
{
24
25
fPythia
->SetMRPY(1,gRandom->GetSeed());
26
27
cout<<
"Muon Momentum "
<<
fMom
<<endl;
28
29
if
(
fPionKaonDecay
) {
30
// let also pion and kaon decay
31
fPythia
->SetMDCY(
fPythia
->Pycomp(211),1,100);
32
fPythia
->SetMDCY(
fPythia
->Pycomp(321),1,100);
33
}
34
fPythia
->SetMSEL(1);
// msel 2 includes diffractive parts
35
// fPythia->SetMSUB(91,0); // elastic scattering
36
fPythia
->SetPARP(2,2);
// To get below 10 GeV, you have to change PARP(2)
37
38
/* compass settings
39
# CKIN(10) = 100
40
# MSEL = 2 # include elastic and diffractive to mbias
41
# MSTJ = 1 default, string fragmentation
42
*/
43
44
fPythia
->Initialize(
"FIXT"
,
fType
,
fTarget
,
fMom
);
45
46
return
kTRUE;
47
}
48
// -------------------------------------------------------------------------
49
50
51
// ----- Destructor ----------------------------------------------------
52
tPythia6Generator::~tPythia6Generator
()
53
{
54
}
55
// -------------------------------------------------------------------------
56
57
// ----- Passing the event ---------------------------------------------
58
Bool_t
tPythia6Generator::ReadEvent
(FairPrimaryGenerator* cpg)
59
{
60
Int_t npart = 0;
61
while
(npart == 0)
62
{
63
fPythia
->GenerateEvent();
64
// remove all unnecessary stuff
65
fPythia
->Pyedit(2);
66
npart =
fPythia
->GetN();
67
};
68
69
for
(Int_t ii=1; ii<
fPythia
->GetN()+1; ii++){
70
Bool_t wanttracking=
false
;
71
if
(
fPythia
->GetK(ii,1) == 1){ wanttracking=
true
;}
72
Int_t
id
=
fPythia
->GetK(ii,2);
73
Double_t z =
fPythia
->GetV(ii,3)/10.;
74
Double_t x =
fPythia
->GetV(ii,1)/10.;
75
Double_t y =
fPythia
->GetV(ii,2)/10.;
76
Double_t pz =
fPythia
->GetP(ii,3);
77
Double_t px =
fPythia
->GetP(ii,1);
78
Double_t py =
fPythia
->GetP(ii,2);
79
Double_t t =
fPythia
->GetP(ii,2);
// time of production, in mm/c (¼ 3.33 × 10−12 s).
80
Int_t im =
fPythia
->GetV(ii,4);
81
// cout << "debug p6 "<<id<<" "<< pz << endl;
82
// copy blind complete pythia event
83
if
(
fDeepCopy
|| wanttracking){ cpg->AddTrack(
id
,px,py,pz,x,y,z,im,wanttracking); }
84
}
85
return
kTRUE;
86
}
87
88
ClassImp
(
tPythia6Generator
)
tPythia6Generator
Definition
tPythia6Generator.h:13
tPythia6Generator::fPionKaonDecay
Bool_t fPionKaonDecay
Definition
tPythia6Generator.h:41
tPythia6Generator::fTarget
TString fTarget
Definition
tPythia6Generator.h:43
tPythia6Generator::fType
TString fType
Definition
tPythia6Generator.h:42
tPythia6Generator::fMom
Double_t fMom
Definition
tPythia6Generator.h:39
tPythia6Generator::fPythia
TPythia6 * fPythia
Definition
tPythia6Generator.h:35
tPythia6Generator::~tPythia6Generator
virtual ~tPythia6Generator()
Definition
tPythia6Generator.cxx:52
tPythia6Generator::fDeepCopy
Bool_t fDeepCopy
Definition
tPythia6Generator.h:40
tPythia6Generator::ReadEvent
Bool_t ReadEvent(FairPrimaryGenerator *)
Definition
tPythia6Generator.cxx:58
tPythia6Generator::Init
virtual Bool_t Init()
Definition
tPythia6Generator.cxx:22
tPythia6Generator::tPythia6Generator
tPythia6Generator()
Definition
tPythia6Generator.cxx:10
ClassImp
ClassImp(ecalContFact) ecalContFact
Definition
ecalContFact.cxx:8
tPythia6Generator.h
shipgen
tPythia6Generator.cxx
Generated by
1.9.8