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 <constantinos.andreopoulos \at cern.ch>
11  University of Liverpool & STFC Rutherford Appleton Laboratory
12 
13 \created October 03, 2004
14 
15 \cpright Copyright (c) 2003-2020, 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 
24 #include "Framework/Utils/Range1.h"
25 
26 class TF2;
27 
28 namespace genie {
29 
31 
32  public :
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 MaxXSec_ReinSehgal(const Interaction *in) const
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
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:39
void Configure(const Registry &config)
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
static Config * config
Definition: config.cpp:1054
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
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:65
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
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
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