BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
MpdDecayerPyt8.h
Go to the documentation of this file.
1
// -------------------------------------------------------------------------
2
// ----- MpdDecayerPyt8 header file -----
3
// ----- Created 23/07/2020 -----
4
// ----- A. Zinchenko -----
5
// ----- External decayer for MPD using Pythia8 -----
6
// ----- (adapted from TPythia8Decayer) -----
7
// -------------------------------------------------------------------------
8
9
#ifndef MPDDECAYERPYT8_H
10
#define MPDDECAYERPYT8_H
11
12
#include <Pythia8/Pythia.h>
13
#include <
TLorentzVector.h
>
14
#include <
TRotation.h
>
15
#include <
TVirtualMCDecayer.h
>
16
17
class
TClonesArrray;
18
class
TObjArrray;
19
class
TParticle
;
20
class
TPythia8
;
21
class
TRandom
;
22
23
#include <set>
24
#if PYTHIA_VERSION_INTEGER < 8304
25
typedef
Pythia8::ParticleDataEntry*
ParticleDataEntryPtr
;
26
#else
27
typedef
Pythia8::ParticleDataEntryPtr
ParticleDataEntryPtr
;
28
#endif
29
30
class
MpdDecayerPyt8
:
public
TVirtualMCDecayer
31
{
32
33
public
:
34
enum
SourceFlag
35
{
36
kPythia
,
37
kCustom
38
};
// particle container source
39
40
virtual
~MpdDecayerPyt8
() { ; }
41
42
virtual
void
Init
();
43
virtual
void
Decay
(
Int_t
pdg,
TLorentzVector
* p);
44
virtual
Int_t
ImportParticles
(
TClonesArray
* particles);
45
virtual
void
SetForceDecay
(
Int_t
type);
46
virtual
void
ForceDecay
();
47
virtual
Float_t
GetPartialBranchingRatio
(
Int_t
ipart);
48
virtual
Float_t
GetLifetime
(
Int_t
kf);
49
virtual
void
ReadDecayTable
();
50
51
virtual
void
SetDebugLevel
(
Int_t
debug) {
fDebug
= debug; }
52
virtual
void
SetGlobalPolar
(
Int_t
glob
= 1) {
fGlobalPolar
=
glob
; }
53
54
static
MpdDecayerPyt8
*
Instance
();
55
void
Decay
(
TParticle
* part);
56
void
AddMotherPdg
(
Int_t
pdg);
57
// using TPythia8Decayer::Decay; // makes base class function visible
58
59
protected
:
60
MpdDecayerPyt8
();
61
void
AppendParticle
(
Int_t
pdg,
TLorentzVector
* p);
62
void
ClearEvent
();
63
64
private
:
65
void
Gdecay
(
Int_t
idpart,
TLorentzVector
* p);
66
void
Gdeca2
(
Double_t
xm0,
Double_t
xm1,
Double_t
xm2,
Double_t
pcm[2][4]);
67
// void Anisotropy (Double_t* pvert, Double_t *rndm, Double_t polar, Double_t &phi, Double_t &costh);
68
void
Anisotropy
(
Double_t
* pvert,
Double_t
* rndm,
TVector3
& polar,
Double_t
& phi,
Double_t
& costh);
69
void
ChangeBranchings
();
70
void
ChangeParticleBr
(
TObjArray
* tokens,
Bool_t
exclusive);
71
72
static
MpdDecayerPyt8
*
fgInstance
;
// singleton instance
73
74
TPythia8
*
fPythia8
;
// Pointer to pythia8
75
Int_t
fDebug
;
// Debug level
76
Int_t
fGlobalPolar
;
// global polarization flag
77
78
Float_t
fBranch
;
// branching of lambda to p + \pi-
79
ParticleDataEntryPtr
fLambda
;
// pointer to Lambda in Pythia8 database
80
TLorentzVector
fMother
;
// mother decay point position
81
TClonesArray
*
fParticles
;
82
TRotation
fRotation
;
83
SourceFlag
fSourceFlag
;
84
std::set<Int_t>
fMothersPdg
;
85
TRandom
*
fRandom
;
86
87
ClassDef
(
MpdDecayerPyt8
, 0);
// MPD Particle Decayer using Pythia8
88
};
89
#endif
Bool_t
bool Bool_t
Int_t
int Int_t
Float_t
float Float_t
Double_t
double Double_t
ClassDef
#define ClassDef(name, id)
TLorentzVector.h
TRotation.h
TVirtualMCDecayer.h
MpdDecayerPyt8
Definition
MpdDecayerPyt8.h:31
MpdDecayerPyt8::SetDebugLevel
virtual void SetDebugLevel(Int_t debug)
Definition
MpdDecayerPyt8.h:51
MpdDecayerPyt8::ClearEvent
void ClearEvent()
Clear the event stack.
Definition
MpdDecayerPyt8.cxx:245
MpdDecayerPyt8::AppendParticle
void AppendParticle(Int_t pdg, TLorentzVector *p)
Append a particle to the stack.
Definition
MpdDecayerPyt8.cxx:237
MpdDecayerPyt8::fBranch
Float_t fBranch
Definition
MpdDecayerPyt8.h:78
MpdDecayerPyt8::SourceFlag
SourceFlag
Definition
MpdDecayerPyt8.h:35
MpdDecayerPyt8::kPythia
@ kPythia
Definition
MpdDecayerPyt8.h:36
MpdDecayerPyt8::kCustom
@ kCustom
Definition
MpdDecayerPyt8.h:37
MpdDecayerPyt8::fLambda
ParticleDataEntryPtr fLambda
Definition
MpdDecayerPyt8.h:79
MpdDecayerPyt8::fSourceFlag
SourceFlag fSourceFlag
Definition
MpdDecayerPyt8.h:83
MpdDecayerPyt8::Instance
static MpdDecayerPyt8 * Instance()
Get the singleton object.
Definition
MpdDecayerPyt8.cxx:35
MpdDecayerPyt8::SetForceDecay
virtual void SetForceDecay(Int_t type)
Set forced decay mode.
Definition
MpdDecayerPyt8.cxx:204
MpdDecayerPyt8::fMother
TLorentzVector fMother
Definition
MpdDecayerPyt8.h:80
MpdDecayerPyt8::GetPartialBranchingRatio
virtual Float_t GetPartialBranchingRatio(Int_t ipart)
Definition
MpdDecayerPyt8.cxx:217
MpdDecayerPyt8::Init
virtual void Init()
Initialize the decayer.
Definition
MpdDecayerPyt8.cxx:82
MpdDecayerPyt8::Gdecay
void Gdecay(Int_t idpart, TLorentzVector *p)
Simulate two-body decay process of Lambda-hyperon to p+\pi-.
Definition
MpdDecayerPyt8.cxx:253
MpdDecayerPyt8::fParticles
TClonesArray * fParticles
Definition
MpdDecayerPyt8.h:81
MpdDecayerPyt8::fgInstance
static MpdDecayerPyt8 * fgInstance
Definition
MpdDecayerPyt8.h:72
MpdDecayerPyt8::ChangeParticleBr
void ChangeParticleBr(TObjArray *tokens, Bool_t exclusive)
Definition
MpdDecayerPyt8.cxx:542
MpdDecayerPyt8::MpdDecayerPyt8
MpdDecayerPyt8()
constructor
Definition
MpdDecayerPyt8.cxx:45
MpdDecayerPyt8::fRotation
TRotation fRotation
Definition
MpdDecayerPyt8.h:82
MpdDecayerPyt8::ReadDecayTable
virtual void ReadDecayTable()
to read a decay table (not yet implemented)
Definition
MpdDecayerPyt8.cxx:232
MpdDecayerPyt8::fMothersPdg
std::set< Int_t > fMothersPdg
Definition
MpdDecayerPyt8.h:84
MpdDecayerPyt8::SetGlobalPolar
virtual void SetGlobalPolar(Int_t glob=1)
Definition
MpdDecayerPyt8.h:52
MpdDecayerPyt8::GetLifetime
virtual Float_t GetLifetime(Int_t kf)
return lifetime in seconds of teh particle with PDG number pdg
Definition
MpdDecayerPyt8.cxx:224
MpdDecayerPyt8::Anisotropy
void Anisotropy(Double_t *pvert, Double_t *rndm, TVector3 &polar, Double_t &phi, Double_t &costh)
Simulate anisotropic (due to polarization) decay of lambda.
Definition
MpdDecayerPyt8.cxx:367
MpdDecayerPyt8::ForceDecay
virtual void ForceDecay()
ForceDecay not yet implemented.
Definition
MpdDecayerPyt8.cxx:211
MpdDecayerPyt8::ImportParticles
virtual Int_t ImportParticles(TClonesArray *particles)
import the decay products into particles array
Definition
MpdDecayerPyt8.cxx:174
MpdDecayerPyt8::Decay
virtual void Decay(Int_t pdg, TLorentzVector *p)
Decay a single particle.
Definition
MpdDecayerPyt8.cxx:110
MpdDecayerPyt8::Gdeca2
void Gdeca2(Double_t xm0, Double_t xm1, Double_t xm2, Double_t pcm[2][4])
Simulate two-body decay process with anisotropic angular distribution in CMS.
Definition
MpdDecayerPyt8.cxx:298
MpdDecayerPyt8::~MpdDecayerPyt8
virtual ~MpdDecayerPyt8()
Definition
MpdDecayerPyt8.h:40
MpdDecayerPyt8::fDebug
Int_t fDebug
Definition
MpdDecayerPyt8.h:75
MpdDecayerPyt8::fPythia8
TPythia8 * fPythia8
Definition
MpdDecayerPyt8.h:74
MpdDecayerPyt8::fRandom
TRandom * fRandom
Definition
MpdDecayerPyt8.h:85
MpdDecayerPyt8::ChangeBranchings
void ChangeBranchings()
Definition
MpdDecayerPyt8.cxx:505
MpdDecayerPyt8::AddMotherPdg
void AddMotherPdg(Int_t pdg)
Add PDG of particle to be decayed by this package.
Definition
MpdDecayerPyt8.cxx:442
MpdDecayerPyt8::fGlobalPolar
Int_t fGlobalPolar
Definition
MpdDecayerPyt8.h:76
TClonesArray
TLorentzVector
TObjArray
TObject::TClonesArray
friend friend class TClonesArray
TParticle
TPythia8
TRandom
TRotation
TVector3
TVirtualMCDecayer::TVirtualMCDecayer
TVirtualMCDecayer()
ParticleDataEntryPtr
Pythia8::ParticleDataEntry * ParticleDataEntryPtr
Definition
MpdDecayerPyt8.h:25
ParticleDataEntryPtr
Pythia8::ParticleDataEntry * ParticleDataEntryPtr
Definition
MpdDecayerPyt8.h:25
glob
vector< string > glob(const string &path)
Definition
nica-scheduler.cpp:527
generators
MpdDecayerPyt8.h
Generated on
for BmnRoot by
1.17.0