ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4RPGReaction.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4RPGReaction.hh
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 //
27 // Author: D. H. Wright
28 // Date: 26 May 2007
29 //
30 
31 #ifndef G4RPGReaction_h
32 #define G4RPGReaction_h 1
33 
34 // Class Description:
35 //
36 // Base class providing methods for various stages of the re-parameterized
37 // Gheisha model calculation of primary and secondary final state momenta
38 
39 #include "G4DynamicParticle.hh"
40 #include "G4ReactionProduct.hh"
41 #include "G4Nucleus.hh"
42 #include "G4FastVector.hh"
43 #include "G4HadProjectile.hh"
44 
45 
47 {
48 public: // with description
49 
51 
52  virtual ~G4RPGReaction() {}
53 
54  G4bool ReactionStage(const G4HadProjectile* /*originalIncident*/,
55  G4ReactionProduct& /*modifiedOriginal*/,
56  G4bool& /*incidentHasChanged*/,
57  const G4DynamicParticle* /*originalTarget*/,
58  G4ReactionProduct& /*targetParticle*/,
59  G4bool& /*targetHasChanged*/,
60  const G4Nucleus& /*targetNucleus*/,
61  G4ReactionProduct& /*currentParticle*/,
63  G4int& /*vecLen*/,
64  G4bool /*leadFlag*/,
65  G4ReactionProduct& /*leadingStrangeParticle*/);
66 
67 
68  void AddBlackTrackParticles(const G4double /*epnb*/,
69  const G4int /*npnb*/,
70  const G4double /*edta*/,
71  const G4int /*ndta*/,
72  const G4ReactionProduct& /*modifiedOriginal*/,
73  G4int /*PinNucleus*/,
74  G4int /*NinNucleus*/,
75  const G4Nucleus& /*aNucleus*/,
77  G4int& /*vecLen*/ );
78 
79 
80  G4double GenerateNBodyEvent(const G4double totalEnergy,
81  const G4bool constantCrossSection,
83  G4int& vecLen);
84 
85  G4double GenerateNBodyEventT(const G4double totalEnergy,
86  const G4bool constantCrossSection,
87  std::vector<G4ReactionProduct*>& list);
88 
90  G4int& vecLen,
91  const G4HadProjectile* originalIncident,
92  const G4Nucleus& aNucleus,
93  const G4double theAtomicMass,
94  const G4double* massVec);
95 
96 protected: // with description
97 
98  void Rotate(const G4double numberofFinalStateNucleons,
99  const G4ThreeVector& temp,
100  const G4ReactionProduct& modifiedOriginal,
101  const G4HadProjectile* originalIncident,
102  const G4Nucleus& targetNucleus,
103  G4ReactionProduct &currentParticle,
104  G4ReactionProduct &targetParticle,
106  G4int& vecLen );
107 
108  void Defs1(const G4ReactionProduct& modifiedOriginal,
109  G4ReactionProduct& currentParticle,
110  G4ReactionProduct& targetParticle,
112  G4int& vecLen);
113 
114  std::pair<G4int, G4int> GetFinalStateNucleons(
115  const G4DynamicParticle* originalTarget,
117  const G4int& vecLen );
118 
119  void MomentumCheck(const G4ReactionProduct &modifiedOriginal,
120  G4ReactionProduct &currentParticle,
121  G4ReactionProduct &targetParticle,
123  G4int& vecLen);
124 
125  G4double normal();
126 
128 
129 };
130 
131 #endif
132