ROOT
6.07/01
Reference Guide
ROOT Home Page
Main Page
Tutorials
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
montecarlo
pythia8
src
TPythia8Decayer.cxx
Go to the documentation of this file.
1
// @(#)root/pythia8:$Name$:$Id$
2
// Author: Andreas Morsch 04/07/2008
3
4
/**************************************************************************
5
* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
6
* *
7
* Author: The ALICE Off-line Project. *
8
* Contributors are mentioned in the code where appropriate. *
9
* *
10
* Permission to use, copy, modify and distribute this software and its *
11
* documentation strictly for non-commercial purposes is hereby granted *
12
* without fee, provided that the above copyright notice appears in all *
13
* copies and that both the copyright notice and this permission notice *
14
* appear in the supporting documentation. The authors make no claims *
15
* about the suitability of this software for any purpose. It is *
16
* provided "as is" without express or implied warranty. *
17
**************************************************************************/
18
19
/** \class TPythia8Decayer
20
\ingroup pythia8
21
22
This class implements the TVirtualMCDecayer interface using TPythia8.
23
24
Author: Andreas Morsch 04/07/2008
25
*/
26
27
#include "
TLorentzVector.h
"
28
#include "
TPythia8.h
"
29
#include "
TPythia8Decayer.h
"
30
31
ClassImp
(
TPythia8Decayer
)
32
33
////////////////////////////////////////////////////////////////////////////////
34
///constructor
35
36
TPythia8Decayer
::
TPythia8Decayer
():
37
fPythia8(new
TPythia8
()),
38
fDebug(0)
39
{
40
fPythia8->Pythia8()->readString(
"SoftQCD:elastic = on"
);
41
fPythia8->Pythia8()->init();
42
}
43
44
////////////////////////////////////////////////////////////////////////////////
45
/// Initialize the decayer
46
47
void
TPythia8Decayer::Init
()
48
{
49
}
50
51
////////////////////////////////////////////////////////////////////////////////
52
/// Decay a single particle
53
54
void
TPythia8Decayer::Decay
(
Int_t
pdg,
TLorentzVector
* p)
55
{
56
ClearEvent
();
57
AppendParticle
(pdg, p);
58
Int_t
idPart =
fPythia8
->
Pythia8
()->event[0].id();
59
fPythia8
->
Pythia8
()->particleData.mayDecay(idPart,
kTRUE
);
60
fPythia8
->
Pythia8
()->moreDecays();
61
if
(
fDebug
> 0)
fPythia8
->
EventListing
();
62
}
63
64
////////////////////////////////////////////////////////////////////////////////
65
///import the decay products into particles array
66
67
Int_t
TPythia8Decayer::ImportParticles
(
TClonesArray
*particles)
68
{
69
return
(
fPythia8
->
ImportParticles
(particles,
"All"
));
70
}
71
72
////////////////////////////////////////////////////////////////////////////////
73
/// Set forced decay mode
74
75
void
TPythia8Decayer::SetForceDecay
(
Int_t
/*type*/
)
76
{
77
printf
(
"SetForceDecay not yet implemented !\n"
);
78
}
79
////////////////////////////////////////////////////////////////////////////////
80
/// ForceDecay not yet implemented
81
82
void
TPythia8Decayer::ForceDecay
()
83
{
84
printf
(
"ForceDecay not yet implemented !\n"
);
85
}
86
////////////////////////////////////////////////////////////////////////////////
87
88
Float_t
TPythia8Decayer::GetPartialBranchingRatio
(
Int_t
/*ipart*/
)
89
{
90
return
0.0;
91
}
92
////////////////////////////////////////////////////////////////////////////////
93
///return lifetime in seconds of teh particle with PDG number pdg
94
95
Float_t
TPythia8Decayer::GetLifetime
(
Int_t
pdg)
96
{
97
return
(
fPythia8
->
Pythia8
()->particleData.tau0(pdg) * 3.3333e-12) ;
98
}
99
100
////////////////////////////////////////////////////////////////////////////////
101
///to read a decay table (not yet implemented)
102
103
void
TPythia8Decayer::ReadDecayTable
()
104
{
105
}
106
107
108
////////////////////////////////////////////////////////////////////////////////
109
/// Append a particle to the stack
110
111
void
TPythia8Decayer::AppendParticle
(
Int_t
pdg,
TLorentzVector
* p)
112
{
113
fPythia8
->
Pythia8
()->event.append(pdg, 11, 0, 0, p->
Px
(), p->
Py
(), p->
Pz
(), p->
E
(), p->
M
());
114
}
115
116
117
////////////////////////////////////////////////////////////////////////////////
118
/// Clear the event stack
119
120
void
TPythia8Decayer::ClearEvent
()
121
{
122
fPythia8
->
Pythia8
()->event.clear();
123
}
124
TPythia8::ImportParticles
virtual Int_t ImportParticles(TClonesArray *particles, Option_t *option="")
Import particles from Pythia stack.
Definition:
TPythia8.cxx:193
TPythia8Decayer::ReadDecayTable
virtual void ReadDecayTable()
to read a decay table (not yet implemented)
Definition:
TPythia8Decayer.cxx:103
Float_t
float Float_t
Definition:
RtypesCore.h:53
TPythia8Decayer::fDebug
Int_t fDebug
Definition:
TPythia8Decayer.h:35
Int_t
int Int_t
Definition:
RtypesCore.h:41
TPythia8Decayer::Decay
virtual void Decay(Int_t pdg, TLorentzVector *p)
Decay a single particle.
Definition:
TPythia8Decayer.cxx:54
TPythia8Decayer::ClearEvent
void ClearEvent()
Clear the event stack.
Definition:
TPythia8Decayer.cxx:120
TLorentzVector::M
Double_t M() const
Definition:
TLorentzVector.h:498
TPythia8Decayer.h
TPythia8Decayer::GetPartialBranchingRatio
virtual Float_t GetPartialBranchingRatio(Int_t ipart)
Get the partial branching ratio for a particle of type IPART (a PDG code).
Definition:
TPythia8Decayer.cxx:88
TPythia8Decayer::Init
virtual void Init()
Initialize the decayer.
Definition:
TPythia8Decayer.cxx:47
TPythia8Decayer::SetForceDecay
virtual void SetForceDecay(Int_t type)
Set forced decay mode.
Definition:
TPythia8Decayer.cxx:75
TPythia8Decayer::GetLifetime
virtual Float_t GetLifetime(Int_t kf)
return lifetime in seconds of teh particle with PDG number pdg
Definition:
TPythia8Decayer.cxx:95
TPythia8Decayer::ImportParticles
virtual Int_t ImportParticles(TClonesArray *particles)
import the decay products into particles array
Definition:
TPythia8Decayer.cxx:67
TPythia8Decayer::AppendParticle
void AppendParticle(Int_t pdg, TLorentzVector *p)
Append a particle to the stack.
Definition:
TPythia8Decayer.cxx:111
TPythia8Decayer::ForceDecay
virtual void ForceDecay()
ForceDecay not yet implemented.
Definition:
TPythia8Decayer.cxx:82
TLorentzVector
Definition:
TLorentzVector.h:38
TPythia8Decayer::fPythia8
TPythia8 * fPythia8
Definition:
TPythia8Decayer.h:34
ClassImp
ClassImp(TPythia8Decayer) TPythia8Decayer
constructor
Definition:
TPythia8Decayer.cxx:31
TPythia8::EventListing
void EventListing() const
Event listing.
Definition:
TPythia8.cxx:363
TLorentzVector::Px
Double_t Px() const
Definition:
TLorentzVector.h:287
TLorentzVector::Py
Double_t Py() const
Definition:
TLorentzVector.h:288
TPythia8.h
TPythia8
TPythia8 is an interface class to C++ version of Pythia 8.1 event generators, written by T...
Definition:
TPythia8.h:76
printf
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
TLorentzVector::E
Double_t E() const
Definition:
TLorentzVector.h:291
TPythia8Decayer
This class implements the TVirtualMCDecayer interface using TPythia8.
Definition:
TPythia8Decayer.h:16
TPythia8::Pythia8
Pythia8::Pythia * Pythia8()
Definition:
TPythia8.h:89
TClonesArray
An array of clone (identical) objects.
Definition:
TClonesArray.h:32
TLorentzVector::Pz
Double_t Pz() const
Definition:
TLorentzVector.h:289
TLorentzVector.h
kTRUE
const Bool_t kTRUE
Definition:
Rtypes.h:91