Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4RPGReaction.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id$
27//
28// Author: D. H. Wright
29// Date: 26 May 2007
30//
31
32#ifndef G4RPGReaction_h
33#define G4RPGReaction_h 1
34
35// Class Description:
36//
37// Base class providing methods for various stages of the re-parameterized
38// Gheisha model calculation of primary and secondary final state momenta
39
40#include "G4DynamicParticle.hh"
41#include "G4ReactionProduct.hh"
42#include "G4Nucleus.hh"
43#include "G4FastVector.hh"
44#include "G4HadProjectile.hh"
45
46
48{
49public: // with description
50
52
53 virtual ~G4RPGReaction() {}
54
55 G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/,
56 G4ReactionProduct& /*modifiedOriginal*/,
57 G4bool& /*incidentHasChanged*/,
58 const G4DynamicParticle* /*originalTarget*/,
59 G4ReactionProduct& /*targetParticle*/,
60 G4bool& /*targetHasChanged*/,
61 const G4Nucleus& /*targetNucleus*/,
62 G4ReactionProduct& /*currentParticle*/,
64 G4int& /*vecLen*/,
65 G4bool /*leadFlag*/,
66 G4ReactionProduct& /*leadingStrangeParticle*/);
67
68
69 void AddBlackTrackParticles(const G4double /*epnb*/,
70 const G4int /*npnb*/,
71 const G4double /*edta*/,
72 const G4int /*ndta*/,
73 const G4ReactionProduct& /*modifiedOriginal*/,
74 G4int /*PinNucleus*/,
75 G4int /*NinNucleus*/,
76 const G4Nucleus& /*aNucleus*/,
78 G4int& /*vecLen*/ );
79
80
81 G4double GenerateNBodyEvent(const G4double totalEnergy,
82 const G4bool constantCrossSection,
84 G4int& vecLen);
85
86 G4double GenerateNBodyEventT(const G4double totalEnergy,
87 const G4bool constantCrossSection,
88 std::vector<G4ReactionProduct*>& list);
89
91 G4int& vecLen,
92 const G4HadProjectile* originalIncident,
93 const G4Nucleus& aNucleus,
94 const G4double theAtomicMass,
95 const G4double* massVec);
96
97protected: // with description
98
99 void Rotate(const G4double numberofFinalStateNucleons,
100 const G4ThreeVector& temp,
101 const G4ReactionProduct& modifiedOriginal,
102 const G4HadProjectile* originalIncident,
103 const G4Nucleus& targetNucleus,
104 G4ReactionProduct &currentParticle,
105 G4ReactionProduct &targetParticle,
107 G4int& vecLen );
108
109 void Defs1(const G4ReactionProduct& modifiedOriginal,
110 G4ReactionProduct& currentParticle,
111 G4ReactionProduct& targetParticle,
113 G4int& vecLen);
114
115 std::pair<G4int, G4int> GetFinalStateNucleons(
116 const G4DynamicParticle* originalTarget,
118 const G4int& vecLen );
119
120 void MomentumCheck(const G4ReactionProduct &modifiedOriginal,
121 G4ReactionProduct &currentParticle,
122 G4ReactionProduct &targetParticle,
124 G4int& vecLen);
125
127
129
130};
131
132#endif
133
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4double GenerateNBodyEventT(const G4double totalEnergy, const G4bool constantCrossSection, std::vector< G4ReactionProduct * > &list)
void Rotate(const G4double numberofFinalStateNucleons, const G4ThreeVector &temp, const G4ReactionProduct &modifiedOriginal, const G4HadProjectile *originalIncident, const G4Nucleus &targetNucleus, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen)
std::pair< G4int, G4int > GetFinalStateNucleons(const G4DynamicParticle *originalTarget, const G4FastVector< G4ReactionProduct, 256 > &vec, const G4int &vecLen)
G4bool ReactionStage(const G4HadProjectile *, G4ReactionProduct &, G4bool &, const G4DynamicParticle *, G4ReactionProduct &, G4bool &, const G4Nucleus &, G4ReactionProduct &, G4FastVector< G4ReactionProduct, 256 > &, G4int &, G4bool, G4ReactionProduct &)
virtual ~G4RPGReaction()
void AddBlackTrackParticles(const G4double, const G4int, const G4double, const G4int, const G4ReactionProduct &, G4int, G4int, const G4Nucleus &, G4FastVector< G4ReactionProduct, 256 > &, G4int &)
G4double GenerateNBodyEvent(const G4double totalEnergy, const G4bool constantCrossSection, G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen)
void MomentumCheck(const G4ReactionProduct &modifiedOriginal, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen)
void Defs1(const G4ReactionProduct &modifiedOriginal, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen)
G4ThreeVector Isotropic(const G4double &)
void NuclearReaction(G4FastVector< G4ReactionProduct, 4 > &vec, G4int &vecLen, const G4HadProjectile *originalIncident, const G4Nucleus &aNucleus, const G4double theAtomicMass, const G4double *massVec)
G4double normal()