GENIEGenerator
Loading...
Searching...
No Matches
DarkSectorDecayer.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3\class genie::DarkSectorDecayer
4\brief Dark Sector decayer module.
5
6 A simple decay simulation...
7 ....
8 Is a concerete implementation of the EventRecordVisitorI interface.
9
10\author Iker de Icaza <i.de-icaza-astiz \at sussex.ac.uk>
11 University of Sussex
12
13 Costas Andreopoulos <c.andreopoulos \at cern.ch>
14 University of Liverpool
15
16\created July XX, 2020
17
18\cpright Copyright (c) 2003-2025, The GENIE Collaboration
19 For the full text of the license visit http://copyright.genie-mc.org
20*/
21//____________________________________________________________________________
22
23#ifndef _DARK_SECTOR_DECAYER_H_
24#define _DARK_SECTOR_DECAYER_H_
25
26#include <TGenPhaseSpace.h>
27#include <TLorentzVector.h>
28
32
33
34namespace genie {
35
36 class GHepParticle;
38
39 using DecayChannel = std::pair<std::vector<int>, double>;
40 // first the vector of pdgs, second the decay amplitude
41
42 public:
43
45 DarkSectorDecayer(string config);
46 virtual ~DarkSectorDecayer();
47 virtual void Configure(const Registry & config);
48 virtual void Configure(string config);
49
50 // Implement the EventRecordVisitorI interface
51 void ProcessEventRecord(GHepRecord * event) const;
52
53 protected:
54 virtual void LoadConfig(void);
55
56 bool ToBeDecayed(const GHepParticle & p) const;
57 // comments later
58 std::vector<GHepParticle> Decay(const GHepParticle & mother,
59 const std::vector<int> & pdg_daughters) const;
60 // this function will take care of the momentum conservation
61 // the output particles cannot be inserted in the event record as they are
62 // they need to be translated in space and time, according to the decay amplitude
63 int SelectDecayChannel(const std::vector<DecayChannel> & dcs,
64 double total_amplitude) const;
65 std::vector<DecayChannel> DarkMediatorDecayChannels(void) const;
66 std::vector<DecayChannel> DarkNeutrinoDecayChannels( int mother_pdg ) const;
67 void SetSpaceTime(std::vector<GHepParticle> & pp, const GHepParticle & mother,
68 double total_amplitude) const;
69
70 private:
71
72 static string ParticleGunKineAsString(const TLorentzVector & vec4 ) ;
73
74 mutable TGenPhaseSpace fPhaseSpaceGenerator;
75
76 double fEps2;
77 std::array<double, 4> fMixing2s;
78 double fAlpha_D;
79
82
83 };
84
85} // genie namespace
86#endif // _DARK_SECTOR_DECAYER_H_
virtual void Configure(const Registry &config)
void SetSpaceTime(std::vector< GHepParticle > &pp, const GHepParticle &mother, double total_amplitude) const
TGenPhaseSpace fPhaseSpaceGenerator
std::vector< DecayChannel > DarkNeutrinoDecayChannels(int mother_pdg) const
std::pair< std::vector< int >, double > DecayChannel
void ProcessEventRecord(GHepRecord *event) const
std::array< double, 4 > fMixing2s
static string ParticleGunKineAsString(const TLorentzVector &vec4)
std::vector< DecayChannel > DarkMediatorDecayChannels(void) const
bool ToBeDecayed(const GHepParticle &p) const
int SelectDecayChannel(const std::vector< DecayChannel > &dcs, double total_amplitude) const
std::vector< GHepParticle > Decay(const GHepParticle &mother, const std::vector< int > &pdg_daughters) const
STDHEP-like event record entry that can fit a particle or a nucleus.
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25