GENIEGenerator
Loading...
Searching...
No Matches
COHKinematicsGenerator.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::COHKinematicsGenerator
5
6\brief Generates values for the kinematic variables describing coherent
7 neutrino-nucleus pion production events.
8 Is a concrete implementation of the EventRecordVisitorI interface.
9
10\author Costas Andreopoulos <c.andreopoulos \at cern.ch>
11 University of Liverpool
12
13\created October 03, 2004
14
15\cpright Copyright (c) 2003-2025, The GENIE Collaboration
16 For the full text of the license visit http://copyright.genie-mc.org
17*/
18//____________________________________________________________________________
19
20#ifndef _COH_KINEMATICS_GENERATOR_H_
21#define _COH_KINEMATICS_GENERATOR_H_
22
25
26class TF2;
27
28namespace genie {
29
31
32 public :
34 COHKinematicsGenerator(string config);
36
37 // implement the EventRecordVisitorI interface
38 void ProcessEventRecord(GHepRecord * event_rec) const;
39
40 // overload the Algorithm::Configure() methods to load private data
41 // members from configuration options
42 void Configure(const Registry & config);
43 void Configure(string config);
44
45 // methods to load sub-algorithms and config data from the Registry
46 void LoadConfig (void);
47
48 // different kinematics calculators for different models
49 void CalculateKin_ReinSehgal(GHepRecord * event_rec) const;
50 void CalculateKin_BergerSehgal(GHepRecord * event_rec) const;
51 void CalculateKin_BergerSehgalFM(GHepRecord * event_rec) const;
52 void CalculateKin_AlvarezRuso(GHepRecord * event_rec) const;
53 void SetKinematics(const double E_l, const double theta_l, const double phi_l,
54 const double theta_pi, const double phi_pi,
55 const Interaction* interaction, Kinematics* kinematics) const;
56 bool CheckKinematics(const double E_l, const double theta_l,
57 const double phi_l, const double theta_pi,
58 const double phi_pi, const Interaction* interaction) const;
59
60 // overload KineGeneratorWithCache method to compute max xsec
61 double ComputeMaxXSec (const Interaction * in) const;
62 double MaxXSec_ReinSehgal (const Interaction * in) const;
63 double MaxXSec_BergerSehgal (const Interaction * in) const;
64 double MaxXSec_BergerSehgalFM (const Interaction * in) const;
65 double MaxXSec_AlvarezRuso (const Interaction * in) const;
66
67 // overload KineGeneratorWithCache method to get energy
68 double Energy (const Interaction * in) const;
69
70 // TODO: should fEnvelope and fRo be public? They look like they should be private
71 mutable TF2 * fEnvelope; ///< 2-D envelope used for importance sampling
72 double fRo; ///< nuclear scale parameter
73
74 private:
75 double pionMass(const Interaction* in) const;
76 void throwOnTooManyIterations(unsigned int iters, GHepRecord* evrec) const;
77
78 double fQ2Min; ///< lower bound of integration for Q^2 in Berger-Sehgal Model
79 double fQ2Max; ///< upper bound of integration for Q^2 in Berger-Sehgal Model
80 double fTMax; ///< upper bound for t = (q - p_pi)^2
81 };
82
83} // genie namespace
84#endif // _COH_KINEMATICS_GENERATOR_H_
double Energy(const Interaction *in) const
void Configure(const Registry &config)
bool CheckKinematics(const double E_l, const double theta_l, const double phi_l, const double theta_pi, const double phi_pi, const Interaction *interaction) const
double MaxXSec_AlvarezRuso(const Interaction *in) const
void CalculateKin_BergerSehgalFM(GHepRecord *event_rec) const
void CalculateKin_BergerSehgal(GHepRecord *event_rec) const
void CalculateKin_ReinSehgal(GHepRecord *event_rec) const
void SetKinematics(const double E_l, const double theta_l, const double phi_l, const double theta_pi, const double phi_pi, const Interaction *interaction, Kinematics *kinematics) const
double fQ2Min
lower bound of integration for Q^2 in Berger-Sehgal Model
double MaxXSec_BergerSehgal(const Interaction *in) const
TF2 * fEnvelope
2-D envelope used for importance sampling
void ProcessEventRecord(GHepRecord *event_rec) const
double fRo
nuclear scale parameter
void throwOnTooManyIterations(unsigned int iters, GHepRecord *evrec) const
double fTMax
upper bound for t = (q - p_pi)^2
double MaxXSec_ReinSehgal(const Interaction *in) const
double ComputeMaxXSec(const Interaction *in) const
double MaxXSec_BergerSehgalFM(const Interaction *in) const
double fQ2Max
upper bound of integration for Q^2 in Berger-Sehgal Model
void CalculateKin_AlvarezRuso(GHepRecord *event_rec) const
double pionMass(const Interaction *in) const
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
Summary information for an interaction.
Definition Interaction.h:56
Generated/set kinematical variables for an event.
Definition Kinematics.h:39
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25