GENIEGenerator
Loading...
Searching...
No Matches
BaryonResonanceDecayer.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::BaryonResonanceDecayer
5
6\brief Baryon resonance decayer module.
7
8 A simple resonance decay simulation built using resonance branching
9 fraction data and an N-body phase space generator.
10 Since the resonance can be produced off-the-mass-shell, decay
11 channels with total-mass > W are suppressed.
12
13 Is a concerete implementation of the EventRecordVisitorI interface.
14
15\author Costas Andreopoulos <c.andreopoulos \at cern.ch>
16 University of Liverpool
17
18\created November 27, 2004
19
20\cpright Copyright (c) 2003-2025, The GENIE Collaboration
21 For the full text of the license visit http://copyright.genie-mc.org
22*/
23//____________________________________________________________________________
24
25#ifndef _BARYON_RESONANCE_DECAYER_H_
26#define _BARYON_RESONANCE_DECAYER_H_
27
28#include <TGenPhaseSpace.h>
29#include <TLorentzVector.h>
30
32
33namespace genie {
34
35class GHepParticle;
37
38public:
40 BaryonResonanceDecayer(string config);
42
43 // Implement the EventRecordVisitorI interface
44 void ProcessEventRecord(GHepRecord * event) const;
45
46 virtual void LoadConfig (void);
47
48private:
49
50 void Initialize (void) const;
51 bool IsHandled (int pdgc) const;
52 void InhibitDecay (int pdgc, TDecayChannel * ch=0) const;
53 void UnInhibitDecay (int pdgc, TDecayChannel * ch=0) const;
54 double Weight (void) const;
55 bool Decay (int dec_part_id, GHepRecord * event) const;
56 TDecayChannel* SelectDecayChannel(int dec_part_id, GHepRecord * event, bool & to_be_deleted ) const;
57 // the flag to_be_deleted is referred to the returned decay channel
58 bool DecayExclusive (int dec_part_id, GHepRecord * event, TDecayChannel * ch) const;
59
60 // Methods specific for Delta decay
61 TObjArray * EvolveDeltaBR (int dec_part_pdgc, TObjArray * decay_list, double W) const;
62 double EvolveDeltaDecayWidth(int dec_part_pdgc, TDecayChannel * ch, double W) const;
63 bool AcceptPionDecay( TLorentzVector lab_pion, int dec_part_id, const GHepRecord * event ) const ;
64
65 double FinalStateMass ( TDecayChannel * ch ) const;
66 bool IsPiNDecayChannel ( TDecayChannel * ch ) const;
67
68 static bool IsDelta( int dec_part_pdgc ) ;
69 static bool HasEvolvedBRs( int dec_part_pdgc ) ;
70
71 // utilities for pion angular distribution with phi dependency
72
73 static double PionAngularDist( const double * x, const double * par ) ;
74 static double MinusPionAngularDist( const double * x, const double * par ) { // this is used to find the maxima of the previous function
75 return -1. * BaryonResonanceDecayer::PionAngularDist( x, par ) ;
76 }
77
78 double FindDistributionExtrema( unsigned int i /*q2_bin_index*/,
79 bool find_maximum = false ) const ;
80
81
82 mutable TGenPhaseSpace fPhaseSpaceGenerator;
83 mutable double fWeight;
84
86
88
89 std::vector<double> fR33, fR31, fR3m1 ;
90 std::vector<double*> fRParams ; // this contains same parameter as fR33, fR31 and fR3m1 alingned by Q2 bin
91
92 std::vector<double> fQ2Thresholds ;
93
94 std::vector<double> fW_max ;
95
96 double fFFScaling ; // Scaling factor of the form factor of the Delta wrt to Q2
97
98};
99
100} // genie namespace
101#endif // _BARYON_RESONANCE_DECAYER_H_
bool Decay(int dec_part_id, GHepRecord *event) const
bool AcceptPionDecay(TLorentzVector lab_pion, int dec_part_id, const GHepRecord *event) const
double FinalStateMass(TDecayChannel *ch) const
TDecayChannel * SelectDecayChannel(int dec_part_id, GHepRecord *event, bool &to_be_deleted) const
bool DecayExclusive(int dec_part_id, GHepRecord *event, TDecayChannel *ch) const
static bool IsDelta(int dec_part_pdgc)
TObjArray * EvolveDeltaBR(int dec_part_pdgc, TObjArray *decay_list, double W) const
void InhibitDecay(int pdgc, TDecayChannel *ch=0) const
double EvolveDeltaDecayWidth(int dec_part_pdgc, TDecayChannel *ch, double W) const
static bool HasEvolvedBRs(int dec_part_pdgc)
double FindDistributionExtrema(unsigned int i, bool find_maximum=false) const
void ProcessEventRecord(GHepRecord *event) const
bool IsPiNDecayChannel(TDecayChannel *ch) const
static double PionAngularDist(const double *x, const double *par)
void UnInhibitDecay(int pdgc, TDecayChannel *ch=0) const
static double MinusPionAngularDist(const double *x, const double *par)
STDHEP-like event record entry that can fit a particle or a nucleus.
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25