GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2024, 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 
34 namespace 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_
Dark Sector decayer module.
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
virtual void Configure(const Registry &config)
std::array< double, 4 > fMixing2s
std::pair< std::vector< int >, double > DecayChannel
std::vector< GHepParticle > Decay(const GHepParticle &mother, const std::vector< int > &pdg_daughters) const
void SetSpaceTime(std::vector< GHepParticle > &pp, const GHepParticle &mother, double total_amplitude) const
void ProcessEventRecord(GHepRecord *event) const
std::vector< DecayChannel > DarkMediatorDecayChannels(void) const
virtual void LoadConfig(void)
TGenPhaseSpace fPhaseSpaceGenerator
bool ToBeDecayed(const GHepParticle &p) const
static string ParticleGunKineAsString(const TLorentzVector &vec4)
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
int SelectDecayChannel(const std::vector< DecayChannel > &dcs, double total_amplitude) const
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
std::vector< DecayChannel > DarkNeutrinoDecayChannels(int mother_pdg) const
STDHEP-like event record entry that can fit a particle or a nucleus.
Definition: GHepParticle.h:39