Version: SMASH-1.8
decayactionsfinderdilepton.cc
Go to the documentation of this file.
1
/*
2
*
3
* Copyright (c) 2014-2019
4
* SMASH Team
5
*
6
* GNU General Public License (GPLv3 or later)
7
*
8
*/
9
10
#include "
smash/decayactionsfinderdilepton.h
"
11
12
#include "
smash/constants.h
"
13
#include "
smash/cxx14compat.h
"
14
#include "
smash/decayactiondilepton.h
"
15
#include "
smash/decaymodes.h
"
16
#include "
smash/particles.h
"
17
18
namespace
smash
{
19
20
void
DecayActionsFinderDilepton::shine
(
const
Particles
&search_list,
21
OutputInterface
*output,
22
double
dt)
const
{
23
if
(!output->
is_dilepton_output
()) {
24
return
;
25
}
26
for
(
const
auto
&
p
: search_list) {
27
const
auto
n_all_modes =
28
p
.type()
29
.get_partial_widths(
p
.momentum(),
p
.position().threevec(),
30
WhichDecaymodes::All
)
31
.size();
32
if
(n_all_modes == 0) {
33
continue
;
34
}
35
36
const
double
inv_gamma =
p
.inverse_gamma();
37
DecayBranchList dil_modes =
p
.type().get_partial_widths(
38
p
.momentum(),
p
.position().threevec(),
WhichDecaymodes::Dileptons
);
39
40
/* If particle can only decay into dileptons or is stable, use shining only
41
* in find_final_actions and ignore them here, also unformed
42
* resonances cannot decay */
43
if
(dil_modes.size() == n_all_modes ||
p
.type().is_stable() ||
44
(
p
.formation_time() >
p
.position().x0())) {
45
continue
;
46
}
47
48
for
(DecayBranchPtr &mode : dil_modes) {
49
// SHINING as described in \iref{Schmidt:2008hm}, chapter 2D
50
const
double
shining_weight = dt * inv_gamma * mode->weight() /
hbarc
;
51
52
if
(shining_weight > 0.0) {
// decays that can happen
53
DecayActionDilepton
act(
p
, 0., shining_weight);
54
act.
add_decay
(std::move(mode));
55
act.
generate_final_state
();
56
output->
at_interaction
(act, 0.0);
57
}
58
}
59
}
60
}
61
62
void
DecayActionsFinderDilepton::shine_final
(
const
Particles
&search_list,
63
OutputInterface
*output,
64
bool
only_res)
const
{
65
if
(!output->
is_dilepton_output
()) {
66
return
;
67
}
68
for
(
const
auto
&
p
: search_list) {
69
const
ParticleType
&t =
p
.type();
70
if
(t.
decay_modes
().
decay_mode_list
().empty() ||
71
(only_res && t.
is_stable
())) {
72
continue
;
73
}
74
75
DecayBranchList dil_modes = t.
get_partial_widths
(
76
p
.momentum(),
p
.position().threevec(),
WhichDecaymodes::Dileptons
);
77
78
// total decay width, also hadronic decays
79
const
double
width_tot = total_weight<DecayBranch>(t.
get_partial_widths
(
80
p
.momentum(),
p
.position().threevec(),
WhichDecaymodes::All
));
81
82
for
(DecayBranchPtr &mode : dil_modes) {
83
const
double
shining_weight = mode->weight() / width_tot;
84
85
if
(shining_weight > 0.0) {
// decays that can happen
86
DecayActionDilepton
act(
p
, 0., shining_weight);
87
act.
add_decay
(std::move(mode));
88
act.
generate_final_state
();
89
output->
at_interaction
(act, 0.0);
90
}
91
}
92
}
93
}
94
95
}
// namespace smash
smash
Definition:
action.h:24
smash::DecayActionsFinderDilepton::shine_final
void shine_final(const Particles &search_list, OutputInterface *output, bool only_res=false) const
Shine dileptons from resonances at the end of the simulation.
Definition:
decayactionsfinderdilepton.cc:62
smash::DecayModes::decay_mode_list
const DecayBranchList & decay_mode_list() const
Definition:
decaymodes.h:63
decayactiondilepton.h
cxx14compat.h
smash::WhichDecaymodes::All
All decay mode widths.
smash::hbarc
constexpr double hbarc
GeV <-> fm conversion factor.
Definition:
constants.h:25
smash::ParticleType::decay_modes
const DecayModes & decay_modes() const
Definition:
particletype.cc:428
smash::ParticleType::get_partial_widths
DecayBranchList get_partial_widths(const FourVector p, const ThreeVector x, WhichDecaymodes wh) const
Get all the mass-dependent partial decay widths of a particle with mass m.
Definition:
particletype.cc:492
smash::OutputInterface::at_interaction
virtual void at_interaction(const Action &action, const double density)
Called whenever an action modified one or more particles.
Definition:
outputinterface.h:76
smash::ParticleType::is_stable
bool is_stable() const
Definition:
particletype.h:236
smash::DecayActionDilepton
Definition:
decayactiondilepton.h:24
smash::DecayAction::generate_final_state
void generate_final_state() override
Generate the final state of the decay process.
Definition:
decayaction.cc:33
smash::ParticleType
Definition:
particletype.h:97
smash::OutputInterface
Abstraction of generic output.
Definition:
outputinterface.h:35
decayactionsfinderdilepton.h
smash::OutputInterface::is_dilepton_output
bool is_dilepton_output() const
Get, whether this is the dilepton output?
Definition:
outputinterface.h:140
particles.h
smash::Particles
Definition:
particles.h:33
constants.h
smash::pdg::p
constexpr int p
Proton.
Definition:
pdgcode_constants.h:28
smash::WhichDecaymodes::Dileptons
Only return dilepton decays widths.
smash::DecayAction::add_decay
void add_decay(DecayBranchPtr p)
Add one new decay.
Definition:
decayaction.cc:29
smash::DecayActionsFinderDilepton::shine
void shine(const Particles &search_list, OutputInterface *output, double dt) const
Check the whole particles list and print out possible dilepton decays.
Definition:
decayactionsfinderdilepton.cc:20
decaymodes.h
src
decayactionsfinderdilepton.cc
Impressum
Data privacy protection
Generated on Tue Apr 7 2020 13:50:08 for SMASH by
Doxygen
1.8.16