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 <costas.andreopoulos \at stfc.ac.uk>
11  University of Liverpool & STFC Rutherford Appleton Lab
12 
13 \created October 03, 2004
14 
15 \cpright Copyright (c) 2003-2019, The GENIE Collaboration
16  For the full text of the license visit http://copyright.genie-mc.org
17  or see $GENIE/LICENSE
18 */
19 //____________________________________________________________________________
20 
21 #ifndef _COH_KINEMATICS_GENERATOR_H_
22 #define _COH_KINEMATICS_GENERATOR_H_
23 
25 #include "Framework/Utils/Range1.h"
26 
27 class TF2;
28 
29 namespace genie {
30 
32 
33  public :
37 
38  // implement the EventRecordVisitorI interface
39  void ProcessEventRecord(GHepRecord * event_rec) const;
40 
41  // overload the Algorithm::Configure() methods to load private data
42  // members from configuration options
43  void Configure(const Registry & config);
44  void Configure(string config);
45 
46  // methods to load sub-algorithms and config data from the Registry
47  void LoadConfig (void);
48 
49  // different kinematics calculators for different models
50  void CalculateKin_ReinSehgal(GHepRecord * event_rec) const;
51  void CalculateKin_BergerSehgal(GHepRecord * event_rec) const;
52  void CalculateKin_BergerSehgalFM(GHepRecord * event_rec) const;
53  void CalculateKin_AlvarezRuso(GHepRecord * event_rec) const;
54  void SetKinematics(const double E_l, const double theta_l, const double phi_l,
55  const double theta_pi, const double phi_pi,
56  const Interaction* interaction, Kinematics* kinematics) const;
57  bool CheckKinematics(const double E_l, const double theta_l,
58  const double phi_l, const double theta_pi,
59  const double phi_pi, const Interaction* interaction) const;
60 
61  // overload KineGeneratorWithCache method to compute max xsec
62  double ComputeMaxXSec (const Interaction * in) const;
63  double MaxXSec_ReinSehgal (const Interaction * in) const;
64  double MaxXSec_BergerSehgal (const Interaction * in) const;
65  double MaxXSec_BergerSehgalFM (const Interaction * in) const;
66  double MaxXSec_AlvarezRuso (const Interaction * in) const;
67 
68  // overload KineGeneratorWithCache method to get energy
69  double Energy (const Interaction * in) const;
70 
71  // TODO: should fEnvelope and fRo be public? They look like they should be private
72  mutable TF2 * fEnvelope; ///< 2-D envelope used for importance sampling
73  double fRo; ///< nuclear scale parameter
74 
75  private:
76  double pionMass(const Interaction* in) const;
77  void throwOnTooManyIterations(unsigned int iters, GHepRecord* evrec) const;
78 
79  double fQ2Min; ///< lower bound of integration for Q^2 in Berger-Sehgal Model
80  double fQ2Max; ///< upper bound of integration for Q^2 in Berger-Sehgal Model
81  double fTMax; ///< upper bound for t = (q - p_pi)^2
82  };
83 
84 } // genie namespace
85 #endif // _COH_KINEMATICS_GENERATOR_H_
double MaxXSec_ReinSehgal(const Interaction *in) const
THE MAIN GENIE PROJECT NAMESPACE
Definition: GeneratorBase.h:8
double fRo
nuclear scale parameter
void CalculateKin_BergerSehgalFM(GHepRecord *event_rec) const
void CalculateKin_AlvarezRuso(GHepRecord *event_rec) const
Generated/set kinematical variables for an event.
Definition: Kinematics.h:40
void Configure(const Registry &config)
Definition: config.py:1
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
Abstract class. Provides a data caching mechanism for for concrete implementations of the EventRecord...
double MaxXSec_AlvarezRuso(const Interaction *in) const
void CalculateKin_ReinSehgal(GHepRecord *event_rec) const
void ProcessEventRecord(GHepRecord *event_rec) const
Summary information for an interaction.
Definition: Interaction.h:56
double fTMax
upper bound for t = (q - p_pi)^2
double fQ2Min
lower bound of integration for Q^2 in Berger-Sehgal Model
void CalculateKin_BergerSehgal(GHepRecord *event_rec) const
double ComputeMaxXSec(const Interaction *in) const
ifstream in
Definition: comparison.C:7
double Energy(const Interaction *in) const
Generates values for the kinematic variables describing coherent neutrino-nucleus pion production eve...
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:66
double MaxXSec_BergerSehgal(const Interaction *in) const
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 pionMass(const Interaction *in) const
TF2 * fEnvelope
2-D envelope used for importance sampling
void kinematics()
Definition: kinematics.C:10
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:46
double MaxXSec_BergerSehgalFM(const Interaction *in) const
double fQ2Max
upper bound of integration for Q^2 in Berger-Sehgal Model
void throwOnTooManyIterations(unsigned int iters, GHepRecord *evrec) const