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
G4PiMinusStopPb.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: G4PiMinusStopPb
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 "G4PiMinusStopPb.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) (E. Gadioli et al., Phys Rev C36 (1987) 741)
54G4double G4PiMinusStopPb::npRatio = 6;
55
56// Average numbers of final nucleons detected, for N-pair absorption
57// (R. Madey et al., Phys Rev C25 (1982) 3050
58G4double G4PiMinusStopPb::nFinalNucleons = 1.67;
59
60// Kinetic energy (MeV) distributions measured for coincident nucleon
61// emission
62// (R. Madey et al., Phys Rev C25 (1982) 3050
63
64G4int G4PiMinusStopPb::eKinEntries = 10;
65
66G4double G4PiMinusStopPb::eKinData[10] = { 0.24, 0.5, 1.03, 1.28,
67 1.44,
68 1.28, 1.03, 0.82, 0.50, 0.22};
69
70G4double G4PiMinusStopPb::eKin[11] = { 5.2, 15., 27., 41.5,
71 49.6,
72 57.7, 79.3, 94.4, 114., 125., 140.};
73
74
75// Opening angle distributions measured for coincident nucleon emission
76// (P.Heusi et al., Nucl. Phys. A407 (1983) 429
77
78G4int G4PiMinusStopPb::angleEntries = 7;
79
80G4double G4PiMinusStopPb::angleData[7] =
81{ 1.43, 1.67, 2.62, 4.29, 7.62, 11.90, 14.76 };
82
83G4double G4PiMinusStopPb::angle[8] = { 1.308997, 1.570796, 1.832596, 2.094395,
84 2.356194, 2.617994, 2.967060, 3.1415927 };
85
86
87
88// Constructor
89
91
92{
93 // Cluster size: nucleon pair, alpha, triton etc.
94 // First implementation: interaction with nucleon pair only
95 _clusterSize = 2;
96
97 // R ratio
98 theR = 1. / (1. + npRatio);
99
100 _definitions = new std::vector<G4ParticleDefinition*>();
101 _momenta = new std::vector<G4LorentzVector*>();
102
103 std::vector<double> eKinVector;
104 std::vector<double> eKinDataVector;
105 int i;
106 for (i=0; i<eKinEntries; i++)
107 {
108 eKinVector.push_back(eKin[i]);
109 eKinDataVector.push_back(eKinData[i]);
110 }
111 eKinVector.push_back(eKin[eKinEntries]);
112 _distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
113
114 std::vector<double> angleVector;
115 std::vector<double> angleDataVector;
116 for (i=0; i<angleEntries; i++)
117 {
118 angleVector.push_back(angle[i]);
119 angleDataVector.push_back(angleData[i]);
120 }
121 angleVector.push_back(angle[angleEntries]);
122 _distributionAngle = new G4DistributionGenerator(angleVector,angleDataVector);
123}
124
125
126// Destructor
127
129{}
130
132{
133 return nFinalNucleons;
134}
135
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
std::vector< G4ParticleDefinition * > * _definitions
G4DistributionGenerator * _distributionE
std::vector< G4LorentzVector * > * _momenta
G4DistributionGenerator * _distributionAngle
virtual ~G4PiMinusStopPb()
virtual G4double FinalNucleons()