Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4LENDUsedTarget.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// Class Description
27// Container of LEND (Low Energy Nuclear Data) target (nucleus)
28// LEND is Geant4 interface for GIDI (General Interaction Data Interface)
29// which gives a discription of nuclear and atomic reactions, such as
30// Binary collision cross sections
31// Particle number multiplicity distributions of reaction products
32// Energy and angular distributions of reaction products
33// Derived calculational constants
34// GIDI is developped at Lawrence Livermore National Laboratory
35// Class Description - End
36
37// 071025 First implementation done by T. Koi (SLAC/SCCS)
38// 101118 Name modifications for release T. Koi (SLAC/PPA)
39
40#include "G4LENDUsedTarget.hh"
41#include "G4LENDManager.hh"
42
43void G4LENDUsedTarget::searchTarget()
44{
45
47
48 target = NULL;
49 target = lend_manager->GetLENDTarget( proj , wanted_Evaluation , wanted_Z , wanted_A , wanted_M );
50
51 if ( target != NULL )
52 {
53 actual_Z = wanted_Z;
54 actual_A = wanted_A;
55 actual_M = wanted_M;
56 actual_Evaluation = wanted_Evaluation;
57
58 return;
59 }
60
61 if ( allow_nat == true || allow_anything == true )
62 {
63 target = lend_manager->GetLENDTarget( proj , wanted_Evaluation , wanted_Z , 0 , wanted_M );
64 if ( target != NULL )
65 {
66 actual_Z = wanted_Z;
67 actual_A = 0;
68 actual_M = wanted_M;
69 actual_Evaluation = wanted_Evaluation;
70
71 return;
72 }
73 }
74
75 G4int iZ;
76 G4int iA;
77 G4int iM;
78
79 if ( allow_anything == true )
80 {
81
82 // Loop Z
83 G4int dZ = 0;
84 G4int pZ = 1;
85 while ( dZ < max_Z - min_Z ) // Loop checking, 11.06.2015, T. Koi
86 {
87 iZ = wanted_Z + pZ*dZ;
88
89 // Loop A
90 G4int dA = 0;
91 G4int pA = 1;
92 while ( dA < max_A - min_A ) // Loop checking, 11.06.2015, T. Koi
93 {
94 iA = wanted_A + pA*dA;
95
96 // Loop M
97 G4int pM = 1;
98 G4int dM = 0;
99 while ( dM < max_M - min_M ) // Loop checking, 11.06.2015, T. Koi
100 {
101
102 iM = wanted_M + pM*dM;
103
104 if ( iZ < min_Z ) iZ = min_Z;
105 if ( iA < min_A ) iA = 0;
106 if ( iM < min_M ) iM = min_M;
107
108 if ( iZ > max_Z ) iZ = max_Z;
109 if ( iA > max_A ) iA = max_A;
110 if ( iM > max_M ) iM = max_M;
111
112 //Loop Evaluations choice the first available
113
114 if ( lend_manager->IsLENDTargetAvailable( proj , iZ , iA , iM ).size() > 0 )
115 {
116 //Choice the first available
117 actual_Evaluation = lend_manager->IsLENDTargetAvailable( proj , iZ , iA , iM ).front();
118
119 actual_Z = iZ;
120 actual_A = iA;
121 actual_M = iM;
122 target = lend_manager->GetLENDTarget( proj , actual_Evaluation , iZ , iA , iM );
123 return;
124 }
125
126 if ( pM > 0 )
127 pM = -1;
128 else
129 dM++;
130 }
131
132 if ( pA > 0 )
133 pA = -1;
134 else
135 dA++;
136 }
137
138 if ( pZ > 0 )
139 pZ = -1;
140 else
141 dZ++;
142 }
143
144 }
145
146}
int G4int
Definition G4Types.hh:85
std::vector< G4String > IsLENDTargetAvailable(G4ParticleDefinition *, G4int iZ, G4int iA, G4int iM=0)
G4GIDI_target * GetLENDTarget(G4ParticleDefinition *, G4String, G4int iZ, G4int iA, G4int iM=0)
static G4LENDManager * GetInstance()