/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/gen/include/RAT/CCgen.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/gen/include/RAT/CCgen.hh Source File
Ratpac-two
CCgen.hh
1 #ifndef __RAT_CCgen__
2 #define __RAT_CCgen__
3 
20 
21 #include <CLHEP/Random/RandGeneral.h>
22 #include <CLHEP/Vector/LorentzVector.h>
23 #include <TF1.h>
24 
25 #include <G4LorentzVector.hh>
26 #include <G4ThreeVector.hh>
27 #include <RAT/LinearInterp.hh>
28 
30 class TGraph;
31 class RandGeneral;
32 
33 namespace RAT {
34 
36 class CCCrossSec;
37 
38 class CCgen {
39  public:
40  CCgen();
41  ~CCgen();
42 
43  // Generate random event vectors
44  // Pass in the neutrino direction (unit vector)
45  // Returns 4-momentum vectors for resulting electron.
55  void GenerateEvent(const G4ThreeVector &nu_dir, G4LorentzVector &neutrino, G4LorentzVector &electron,
56  double &e_nucleus);
57 
63  void SetNuType(const G4String &nutype);
64 
66  inline const G4String &GetNuType() const { return fNuFlavor; };
67 
79  void SetNuFlavor(const G4String &nuflavor);
81  inline const G4String &GetNuFlavor() const { return fNuFlavor; };
82 
87  inline G4double GetTotalFlux() {
88  // Return the neutrino flux as the value loaded from the database
89  return fTotalFlux;
90  }
91 
100  G4double GetRatePerTarget();
101 
106  const G4String GetDBName() const { return fDBName; }
107 
112  void SetDBName(const G4String name);
113 
114  private:
116  void LoadGenerator();
117 
119  void GenInteraction(double &Enu, double &CosThetaLab);
120 
122  void Reset();
124  void Show();
125 
127  G4double SampleNuEnergy();
128 
130  G4double SampleRecoilEnergy(G4double Enu, int &Transition, double &Enucleus);
131 
133  G4double SampleRecoilAngle(G4double Enu, G4double Te, int Transition);
134 
135  protected:
137  inline G4bool GetGenLoaded() { return fGenLoaded; };
138 
140  G4String fGenType;
142  G4String fNuType;
143 
145  G4String fNuFlavor;
146 
149 
155  TGraph *fNuSpectrum;
156 
157  TF1 *fFermiAngle;
158 
159  TF1 *fGTAngle;
160 
162  std::vector<double> fEnuTbl;
163 
165  std::vector<double> fFluxTbl;
166 
168  G4double fEmax;
170  G4double fEmin;
171 
173  G4double fEnuMax;
175  G4double fEnuMin;
176 
178  G4double fFluxMax;
179 
181  G4bool fGenLoaded;
182 
184  G4double fMassElectron;
185 
187  G4double fTotalFlux;
188 
190  CLHEP::RandGeneral *fSpectrumRndm;
191 
195  G4String fDBName;
196 };
197 
198 } // namespace RAT
199 
200 #endif
Calculates neutrino-nucleus charged current interaction on Lithium-7. (based on ES generator).
Definition: CCCrossSec.hh:40
Implements the generation of a neutrino-nucleus charged current interaction.
Definition: CCgen.hh:38
G4bool GetGenLoaded()
Definition: CCgen.hh:137
G4double fEnuMax
Definition: CCgen.hh:173
G4String fNuFlavor
Definition: CCgen.hh:145
const G4String & GetNuType() const
Definition: CCgen.hh:66
void SetNuType(const G4String &nutype)
Definition: CCgen.cc:283
G4String fDBName
Definition: CCgen.hh:195
void GenerateEvent(const G4ThreeVector &nu_dir, G4LorentzVector &neutrino, G4LorentzVector &electron, double &e_nucleus)
Definition: CCgen.cc:193
CCCrossSec * fXS
Definition: CCgen.hh:148
G4bool fGenLoaded
Definition: CCgen.hh:181
G4double GetRatePerTarget()
Getter for the SSM event rate per target for this flux.
Definition: CCgen.cc:393
void SetDBName(const G4String name)
Definition: CCgen.cc:304
std::vector< double > fFluxTbl
Definition: CCgen.hh:165
G4double fEmin
Definition: CCgen.hh:170
const G4String & GetNuFlavor() const
Definition: CCgen.hh:81
CLHEP::RandGeneral * fSpectrumRndm
Definition: CCgen.hh:190
G4double GetTotalFlux()
Getter for the total neutrino flux.
Definition: CCgen.hh:87
G4String fGenType
Definition: CCgen.hh:137
const G4String GetDBName() const
Definition: CCgen.hh:106
G4double fFluxMax
Definition: CCgen.hh:178
TGraph * fNuSpectrum
Spectrum shape to be sampled.
Definition: CCgen.hh:155
G4double fMassElectron
Definition: CCgen.hh:184
G4double fEnuMin
Definition: CCgen.hh:175
void SetNuFlavor(const G4String &nuflavor)
Definition: CCgen.cc:295
G4String fNuType
Definition: CCgen.hh:142
std::vector< double > fEnuTbl
Definition: CCgen.hh:162
G4double fTotalFlux
Definition: CCgen.hh:187
G4double fEmax
Definition: CCgen.hh:168
Definition: CCCrossSecMessenger.hh:29