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
G4PiMinusStopC.cc
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// File name: G4PiMinusStopC
27//
28// Author: Maria Grazia Pia (pia@genova.infn.it)
29//
30// Creation date: 8 May 1998
31//
32// -------------------------------------------------------------------
33
34#include "G4ios.hh"
35
36#include "G4PiMinusStopC.hh"
37
38#include <vector>
39
40#include "globals.hh"
41#include "Randomize.hh"
42#include "G4Proton.hh"
43#include "G4Neutron.hh"
44#include "G4ParticleTypes.hh"
47#include "G4LorentzVector.hh"
50
51// np/pp production ratio
52// Experimental values:
53// R(np/pp) = 6.3 +- 1.4 (P. Heusi et al. (Nucl. Phys. A407, 429 [1983])
54// R = 5.0 +- 1.5 (Ozaki et al.)
55// R = 8.8 +- 1.3 (Lee et al.)
56// R = 2.4 +- 1.0 (Nordberg et al.)
57// Use average value of the first three ones
58G4double G4PiMinusStopC::npRatio = 6.7;
59
60// Average numbers of final nucleons detected, for N-pair absorption
61// R. Madey et al., Phys. Rev. C25(1982) 3050
62G4double G4PiMinusStopC::nFinalNucleons = 1.77;
63
64// Kinetic energy (MeV) distributions measured for coincident nucleon
65// emission
66// P. Heusi et al., Nucl. Phys. A407(1983) 429
67
68G4int G4PiMinusStopC::eKinEntries = 21;
69
70G4double G4PiMinusStopC::eKinData[21] = { 0.031, 0.045, 0.06, 0.09,
71 0.11, 0.116, 0.14,
72 0.18, 0.21, 0.25,
73 0.3, 0.32, 0.31, 0.3,
74 0.25, 0.18, 0.16,
75 0.15, 0.08, 0.05, 0.01};
76
77G4double G4PiMinusStopC::eKin[22] = { 8., 17.5, 21., 24.5,
78 27.5, 31., 33.5,
79 37.5, 42.5, 46.4,
80 49., 52.5, 57.5, 62.5,
81 67.5, 72.5, 75.,
82 77.5, 82.5, 87.5, 92.5, 110. };
83
84//G4double G4PiMinusStopC::eKin[22] = { 15., 20., 22., 25.,
85// 30., 32., 36.,
86// 40., 45., 48.,
87// 50., 54., 60., 65.,
88// 70., 75., 78.,
89// 80., 86., 90., 95., 100. };
90
91// Opening angle distributions measured for coincident nucleon emission
92// R. Hartmann et al., Nucl. Phys. A308 (1978) 345
93
94G4int G4PiMinusStopC::angleEntries = 7;
95
96G4double G4PiMinusStopC::angleData[7] =
97{ 1.43, 1.67, 2.62, 4.29, 7.62, 11.90, 14.76 };
98
99G4double G4PiMinusStopC::angle[8] = { 1.308997, 1.570796, 1.832596, 2.094395,
100 2.356194, 2.617994, 2.967060, 3.1415927 };
101
102
103
104// Constructor
105
107
108{
109 // Cluster size: nucleon pair, alpha, triton etc.
110 // First implementation: interaction with nucleon pair only
111 _clusterSize = 2;
112
113 // R ratio
114 theR = 1. / (1. + npRatio);
115
116 _definitions = new std::vector<G4ParticleDefinition*>();
117 _momenta = new std::vector<G4LorentzVector*>();
118
119 std::vector<double> eKinVector;
120 std::vector<double> eKinDataVector;
121 int i;
122 for (i=0; i<eKinEntries; i++)
123 {
124 eKinVector.push_back(eKin[i]);
125 eKinDataVector.push_back(eKinData[i]);
126 }
127 eKinVector.push_back(eKin[eKinEntries]);
128 _distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
129
130 std::vector<double> angleVector;
131 std::vector<double> angleDataVector;
132 for (i=0; i<angleEntries; i++)
133 {
134 angleVector.push_back(angle[i]);
135 angleDataVector.push_back(angleData[i]);
136 }
137 angleVector.push_back(angle[angleEntries]);
138 _distributionAngle = new G4DistributionGenerator(angleVector,angleDataVector);
139}
140
141
142// Destructor
143
145{}
146
148{
149 return nFinalNucleons;
150}
151
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
virtual G4double FinalNucleons()
virtual ~G4PiMinusStopC()
std::vector< G4ParticleDefinition * > * _definitions
G4DistributionGenerator * _distributionE
std::vector< G4LorentzVector * > * _momenta
G4DistributionGenerator * _distributionAngle