Version: SMASH-2.0.2
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
17
namespace
smash
{
18
19
void
DecayActionsFinderDilepton::shine
(
const
Particles
&search_list,
20
OutputInterface
*output,
21
double
dt)
const
{
22
if
(!output->
is_dilepton_output
()) {
23
return
;
24
}
25
for
(
const
auto
&
p
: search_list) {
26
const
auto
n_all_modes =
27
p
.type()
28
.get_partial_widths(
p
.momentum(),
p
.position().threevec(),
29
WhichDecaymodes::All
)
30
.size();
31
if
(n_all_modes == 0) {
32
continue
;
33
}
34
35
const
double
inv_gamma =
p
.inverse_gamma();
36
DecayBranchList dil_modes =
p
.type().get_partial_widths(
37
p
.momentum(),
p
.position().threevec(),
WhichDecaymodes::Dileptons
);
38
39
/* If particle can only decay into dileptons or is stable, use shining only
40
* in find_final_actions and ignore them here, also unformed
41
* resonances cannot decay */
42
if
(dil_modes.size() == n_all_modes ||
p
.type().is_stable() ||
43
(
p
.formation_time() >
p
.position().x0())) {
44
continue
;
45
}
46
47
for
(DecayBranchPtr &mode : dil_modes) {
48
// SHINING as described in \iref{Schmidt:2008hm}, chapter 2D
49
const
double
shining_weight = dt * inv_gamma * mode->weight() /
hbarc
;
50
51
if
(shining_weight > 0.0) {
// decays that can happen
52
DecayActionDilepton
act(
p
, 0., shining_weight);
53
act.
add_decay
(std::move(mode));
54
act.
generate_final_state
();
55
output->
at_interaction
(act, 0.0);
56
}
57
}
58
}
59
}
60
61
void
DecayActionsFinderDilepton::shine_final
(
const
Particles
&search_list,
62
OutputInterface
*output,
63
bool
only_res)
const
{
64
if
(!output->
is_dilepton_output
()) {
65
return
;
66
}
67
for
(
const
auto
&
p
: search_list) {
68
const
ParticleType
&t =
p
.type();
69
if
(t.
decay_modes
().
decay_mode_list
().empty() ||
70
(only_res && t.
is_stable
())) {
71
continue
;
72
}
73
74
DecayBranchList dil_modes = t.
get_partial_widths
(
75
p
.momentum(),
p
.position().threevec(),
WhichDecaymodes::Dileptons
);
76
77
// total decay width, also hadronic decays
78
const
double
width_tot = total_weight<DecayBranch>(t.
get_partial_widths
(
79
p
.momentum(),
p
.position().threevec(),
WhichDecaymodes::All
));
80
81
for
(DecayBranchPtr &mode : dil_modes) {
82
const
double
shining_weight = mode->weight() / width_tot;
83
84
if
(shining_weight > 0.0) {
// decays that can happen
85
DecayActionDilepton
act(
p
, 0., shining_weight);
86
act.
add_decay
(std::move(mode));
87
act.
generate_final_state
();
88
output->
at_interaction
(act, 0.0);
89
}
90
}
91
}
92
}
93
94
}
// 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:61
smash::DecayModes::decay_mode_list
const DecayBranchList & decay_mode_list() const
Definition:
decaymodes.h:63
decayactiondilepton.h
cxx14compat.h
smash::WhichDecaymodes::All
@ 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:422
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:486
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:105
smash::ParticleType::is_stable
bool is_stable() const
Definition:
particletype.h:239
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:30
smash::ParticleType
Definition:
particletype.h:97
smash::OutputInterface
Abstraction of generic output.
Definition:
outputinterface.h:66
decayactionsfinderdilepton.h
smash::OutputInterface::is_dilepton_output
bool is_dilepton_output() const
Get, whether this is the dilepton output?
Definition:
outputinterface.h:172
smash::Particles
Definition:
particles.h:33
constants.h
smash::pdg::p
constexpr int p
Proton.
Definition:
pdgcode_constants.h:28
smash::WhichDecaymodes::Dileptons
@ Dileptons
Only return dilepton decays widths.
smash::DecayAction::add_decay
void add_decay(DecayBranchPtr p)
Add one new decay.
Definition:
decayaction.cc:26
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:19
decaymodes.h
src
decayactionsfinderdilepton.cc
Impressum
Data privacy protection
Generated on Sun Jul 11 2021 01:25:56 for SMASH by
Doxygen
1.8.17