Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/src/G4LENDUsedTarget.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 
 43 void G4LENDUsedTarget::searchTarget()
 44 {
 45 
 46    G4LENDManager* lend_manager = G4LENDManager::GetInstance();
 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 }
147