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 ]

Diff markup

Differences between /processes/hadronic/models/lend/src/G4LENDUsedTarget.cc (Version 11.3.0) and /processes/hadronic/models/lend/src/G4LENDUsedTarget.cc (Version 11.2.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // Class Description                               26 // Class Description
 27 // Container of LEND (Low Energy Nuclear Data)     27 // Container of LEND (Low Energy Nuclear Data) target (nucleus) 
 28 // LEND is Geant4 interface for GIDI (General      28 // LEND is Geant4 interface for GIDI (General Interaction Data Interface) 
 29 // which gives a discription of nuclear and at     29 // which gives a discription of nuclear and atomic reactions, such as
 30 //    Binary collision cross sections              30 //    Binary collision cross sections
 31 //    Particle number multiplicity distributio     31 //    Particle number multiplicity distributions of reaction products
 32 //    Energy and angular distributions of reac     32 //    Energy and angular distributions of reaction products
 33 //    Derived calculational constants              33 //    Derived calculational constants
 34 // GIDI is developped at Lawrence Livermore Na     34 // GIDI is developped at Lawrence Livermore National Laboratory
 35 // Class Description - End                         35 // Class Description - End
 36                                                    36 
 37 // 071025 First implementation done by T. Koi      37 // 071025 First implementation done by T. Koi (SLAC/SCCS)
 38 // 101118 Name modifications for release T. Ko     38 // 101118 Name modifications for release T. Koi (SLAC/PPA)
 39                                                    39 
 40 #include "G4LENDUsedTarget.hh"                     40 #include "G4LENDUsedTarget.hh"
 41 #include "G4LENDManager.hh"                        41 #include "G4LENDManager.hh"
 42                                                    42 
 43 void G4LENDUsedTarget::searchTarget()              43 void G4LENDUsedTarget::searchTarget()
 44 {                                                  44 {
 45                                                    45 
 46    G4LENDManager* lend_manager = G4LENDManager     46    G4LENDManager* lend_manager = G4LENDManager::GetInstance();
 47                                                    47 
 48    target = NULL;                                  48    target = NULL;
 49    target = lend_manager->GetLENDTarget( proj      49    target = lend_manager->GetLENDTarget( proj , wanted_Evaluation , wanted_Z , wanted_A , wanted_M );
 50                                                    50 
 51    if ( target != NULL )                           51    if ( target != NULL ) 
 52    {                                               52    {
 53       actual_Z = wanted_Z;                         53       actual_Z = wanted_Z;
 54       actual_A = wanted_A;                         54       actual_A = wanted_A;
 55       actual_M = wanted_M;                         55       actual_M = wanted_M;
 56       actual_Evaluation = wanted_Evaluation;       56       actual_Evaluation = wanted_Evaluation; 
 57                                                    57 
 58       return;                                      58       return;
 59    }                                               59    }
 60                                                    60 
 61    if ( allow_nat == true || allow_anything ==     61    if ( allow_nat == true || allow_anything == true ) 
 62    {                                               62    {
 63       target = lend_manager->GetLENDTarget( pr     63       target = lend_manager->GetLENDTarget( proj , wanted_Evaluation , wanted_Z , 0 , wanted_M );
 64       if ( target != NULL )                        64       if ( target != NULL ) 
 65       {                                            65       {
 66          actual_Z = wanted_Z;                      66          actual_Z = wanted_Z;
 67          actual_A = 0;                             67          actual_A = 0;
 68          actual_M = wanted_M;                      68          actual_M = wanted_M;
 69          actual_Evaluation = wanted_Evaluation     69          actual_Evaluation = wanted_Evaluation; 
 70                                                    70 
 71          return;                                   71          return;  
 72       }                                            72       }
 73    }                                               73    }
 74                                                    74 
 75    G4int iZ;                                       75    G4int iZ;
 76    G4int iA;                                       76    G4int iA;
 77    G4int iM;                                       77    G4int iM;
 78                                                    78 
 79    if ( allow_anything == true )                   79    if ( allow_anything == true ) 
 80    {                                               80    {
 81                                                    81 
 82       // Loop Z                                    82       // Loop Z
 83       G4int dZ = 0;                                83       G4int dZ = 0;
 84       G4int pZ = 1;                                84       G4int pZ = 1;
 85       while ( dZ < max_Z - min_Z ) // Loop che     85       while ( dZ < max_Z - min_Z ) // Loop checking, 11.06.2015, T. Koi
 86       {                                            86       {
 87          iZ = wanted_Z + pZ*dZ;                    87          iZ = wanted_Z + pZ*dZ; 
 88                                                    88 
 89          // Loop A                                 89          // Loop A
 90          G4int dA = 0;                             90          G4int dA = 0;
 91          G4int pA = 1;                             91          G4int pA = 1;
 92          while ( dA < max_A - min_A ) // Loop      92          while ( dA < max_A - min_A ) // Loop checking, 11.06.2015, T. Koi
 93          {                                         93          {
 94             iA = wanted_A + pA*dA;                 94             iA = wanted_A + pA*dA; 
 95                                                    95 
 96             // Loop M                              96             // Loop M
 97             G4int pM = 1;                          97             G4int pM = 1;
 98             G4int dM = 0;                          98             G4int dM = 0;
 99             while ( dM < max_M - min_M ) // Lo     99             while ( dM < max_M - min_M ) // Loop checking, 11.06.2015, T. Koi
100             {                                     100             {
101                                                   101 
102                iM = wanted_M + pM*dM;             102                iM = wanted_M + pM*dM;
103                                                   103 
104                if ( iZ < min_Z ) iZ = min_Z;      104                if ( iZ < min_Z ) iZ = min_Z;
105                if ( iA < min_A ) iA = 0;          105                if ( iA < min_A ) iA = 0;
106                if ( iM < min_M ) iM = min_M;      106                if ( iM < min_M ) iM = min_M;
107                                                   107 
108                if ( iZ > max_Z ) iZ = max_Z;      108                if ( iZ > max_Z ) iZ = max_Z;
109                if ( iA > max_A ) iA = max_A;      109                if ( iA > max_A ) iA = max_A;
110                if ( iM > max_M ) iM = max_M;      110                if ( iM > max_M ) iM = max_M;
111                                                   111 
112                //Loop Evaluations choice the f    112                //Loop Evaluations choice the first available
113                                                   113 
114                if ( lend_manager->IsLENDTarget    114                if ( lend_manager->IsLENDTargetAvailable( proj , iZ , iA , iM ).size() > 0 ) 
115                {                                  115                {
116                   //Choice the first available    116                   //Choice the first available
117                   actual_Evaluation = lend_man    117                   actual_Evaluation = lend_manager->IsLENDTargetAvailable( proj , iZ , iA , iM ).front();
118                                                   118          
119                   actual_Z = iZ;                  119                   actual_Z = iZ;
120                   actual_A = iA;                  120                   actual_A = iA;
121                   actual_M = iM;                  121                   actual_M = iM;
122                   target = lend_manager->GetLE    122                   target = lend_manager->GetLENDTarget( proj , actual_Evaluation , iZ , iA , iM ); 
123                   return;                         123                   return;
124                }                                  124                }
125                                                   125 
126                if ( pM > 0 )                      126                if ( pM > 0 )  
127                   pM = -1;                        127                   pM = -1; 
128                else                               128                else
129                   dM++;                           129                   dM++;
130             }                                     130             }
131                                                   131 
132             if ( pA > 0 )                         132             if ( pA > 0 )  
133                pA = -1;                           133                pA = -1; 
134             else                                  134             else
135                dA++;                              135                dA++;
136          }                                        136          }       
137                                                   137 
138          if ( pZ > 0 )                            138          if ( pZ > 0 )  
139             pZ = -1;                              139             pZ = -1; 
140          else                                     140          else
141             dZ++;                                 141             dZ++;
142       }                                           142       }
143                                                   143 
144    }                                              144    }
145                                                   145 
146 }                                                 146 }
147                                                   147