GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2024, 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 
31 #include "Physics/Decay/Decayer.h"
32 
33 namespace genie {
34 
35 class GHepParticle;
36 class BaryonResonanceDecayer : protected Decayer {
37 
38 public:
40  BaryonResonanceDecayer(string config);
41  virtual ~BaryonResonanceDecayer();
42 
43  // Implement the EventRecordVisitorI interface
44  void ProcessEventRecord(GHepRecord * event) const;
45 
46  virtual void LoadConfig (void);
47 
48 private:
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 
87  double fMaxTolerance ;
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_
Baryon resonance decayer module.
std::vector< double * > fRParams
bool Decay(int dec_part_id, GHepRecord *event) const
void UnInhibitDecay(int pdgc, TDecayChannel *ch=0) const
static bool IsDelta(int dec_part_pdgc)
static bool HasEvolvedBRs(int dec_part_pdgc)
bool DecayExclusive(int dec_part_id, GHepRecord *event, TDecayChannel *ch) const
double EvolveDeltaDecayWidth(int dec_part_pdgc, TDecayChannel *ch, double W) const
TDecayChannel * SelectDecayChannel(int dec_part_id, GHepRecord *event, bool &to_be_deleted) const
double W(const Interaction *const i)
Definition: KineUtils.cxx:1101
double FindDistributionExtrema(unsigned int i, bool find_maximum=false) const
bool IsPiNDecayChannel(TDecayChannel *ch) const
void ProcessEventRecord(GHepRecord *event) const
TObjArray * EvolveDeltaBR(int dec_part_pdgc, TObjArray *decay_list, double W) const
double FinalStateMass(TDecayChannel *ch) const
static double MinusPionAngularDist(const double *x, const double *par)
void InhibitDecay(int pdgc, TDecayChannel *ch=0) const
static double PionAngularDist(const double *x, const double *par)
Base class for decayer classes. Implements common configuration, allowing users to toggle on/off flag...
Definition: Decayer.h:34
bool AcceptPionDecay(TLorentzVector lab_pion, int dec_part_id, const GHepRecord *event) const
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45