Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4LENDManager Class Reference

#include <G4LENDManager.hh>

Public Member Functions

G4GIDI_targetGetLENDTarget (G4ParticleDefinition *, G4String, G4int iZ, G4int iA, G4int iM=0)
 
std::vector< G4StringIsLENDTargetAvailable (G4ParticleDefinition *, G4int iZ, G4int iA, G4int iM=0)
 
G4int GetNucleusEncoding (G4int iZ, G4int iA, G4int iM)
 
G4NistElementBuilderGetNistElementBuilder ()
 
G4int GetVerboseLevel ()
 
G4bool RequestChangeOfVerboseLevel (G4int)
 
G4double GetExcitationEnergyOfExcitedIsomer (G4int, G4int, G4int)
 

Static Public Member Functions

static G4LENDManagerGetInstance ()
 

Detailed Description

Definition at line 63 of file G4LENDManager.hh.

Member Function Documentation

G4double G4LENDManager::GetExcitationEnergyOfExcitedIsomer ( G4int  iZ,
G4int  iA,
G4int  iM 
)

Definition at line 407 of file G4LENDManager.cc.

408 {
409  G4double EE = 0.0;
410  G4int nucCode = GetNucleusEncoding( iZ , iA , iM );
411  auto it = mExcitationEnergy.find( nucCode );
412  if ( it != mExcitationEnergy.end() ) {
413  EE = it->second;
414  } else {
415  if ( iM == 0 ) {
416  G4cout << "G4LENDManager::GetExcitationEnergyOfExcitedIsomer is called for ground state (iM=0) nucleus" << G4endl;
417  } else {
418  G4cout << "Can not find excitation energy for Z = " << iZ << ", A = " << iA << ", M = " << iM << " and the energy set to 0." << G4endl;
419  }
420  }
421  return EE;
422 }
int G4int
Definition: G4Types.hh:78
G4int GetNucleusEncoding(G4int iZ, G4int iA, G4int iM)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

static G4LENDManager* G4LENDManager::GetInstance ( void  )
inlinestatic

Definition at line 77 of file G4LENDManager.hh.

78  {
79  if ( lend_manager == NULL) lend_manager = new G4LENDManager();
80  return lend_manager;
81  };

Here is the caller graph for this function:

G4GIDI_target * G4LENDManager::GetLENDTarget ( G4ParticleDefinition proj,
G4String  evaluation,
G4int  iZ,
G4int  iA,
G4int  iM = 0 
)

Definition at line 208 of file G4LENDManager.cc.

209 {
210 
211  G4GIDI_target* anLENDTarget = NULL;
212 
213  if ( iM > 9 ) {
214  throw G4HadronicException(__FILE__, __LINE__, "Requested isomer level of target is too high." );
215  }
216 
217  G4int iTarg = GetNucleusEncoding( iZ , iA , iM );
218 
219  // Searching in current map
220  for ( std::vector < lend_target >::iterator
221  it = v_lend_target.begin() ; it != v_lend_target.end() ; it++ )
222  {
223  if ( it->proj == proj && it->target_code == iTarg && it->evaluation == evaluation )
224  {
225  //find!
226  return it->target;
227  }
228  }
229 
230 
231  if ( proj_lend_map.find ( proj ) == proj_lend_map.end() ) {
232  G4cout << proj->GetParticleName() << " is not supported by this LEND library." << G4endl;
233  return anLENDTarget; // return NULL
234  }
235 
236  G4GIDI* xlend = proj_lend_map.find ( proj ) -> second;
237 
238  if ( xlend->isThisDataAvailable( evaluation, iZ, iA , iM ) )
239  {
240 
241  if ( verboseLevel > 1 ) {
242  G4cout << evaluation << " for " << ionTable->GetIonName( iZ , iA , 0 )
243  << " with Isomer level of " << iM << " is exist in this LEND." << G4endl;
244  }
245 
246  anLENDTarget = xlend->readTarget( evaluation , iZ , iA , iM );
247 
248  lend_target new_target;
249  new_target.lend = xlend;
250  new_target.target = anLENDTarget;
251  new_target.proj = proj;
252  new_target.evaluation = evaluation;
253  new_target.target_code = iTarg;
254 
255  v_lend_target.push_back( new_target );
256 
257 // found EXACT
258  return anLENDTarget;
259 
260  }
261  else
262  {
263 // NO EXACT DATA (Evaluatino & Z,A,M)
264 
265  //Searching available evaluation and natural abundance data and give suggestions.
266  //
267  if ( verboseLevel > 1 )
268  G4cout << evaluation << " for " << ionTable->GetIonName( iZ , iA , 0 )
269  << " with Isomer level of " << iM << " is not exist in this LEND." << G4endl;
270 
271  std::vector< std::string >* available = xlend->getNamesOfAvailableLibraries( iZ, iA , iM );
272  if ( available->size() > 0 ) {
273 // EXACT Z,A,M but Evaluation is different
274  if ( verboseLevel > 1 )
275  {
276  G4cout << " However you can use following evaluation(s) for the target. " << G4endl;
277 
278  std::vector< std::string >::iterator its;
279  for ( its = available->begin() ; its != available->end() ; its++ )
280  G4cout << *its << G4endl;
281 
282  G4cout << G4endl;
283  }
284  } else if ( xlend->isThisDataAvailable( evaluation, iZ, 0 , iM ) ) {
285 //
286 // checking natural abundance data for Z
287 //
288 // EXACT natural abundance data for the evaluation
289  if ( verboseLevel > 1 )
290  G4cout << " However you can use natural abundance data for the target. " << G4endl;
291  }
292  else
293  {
294  std::vector< std::string >* available_nat = xlend->getNamesOfAvailableLibraries( iZ, 0 , iM );
295 //
296  if ( available_nat->size() > 0 ) {
297 // EXACT natural abundance data for Z but differnet evaluation
298  if ( verboseLevel > 1 ) {
299  G4cout << " However you can use following evaluation(s) for natural abundace of the target. " << G4endl;
300 
301  std::vector< std::string >::iterator its;
302  for ( its = available_nat->begin() ; its != available_nat->end() ; its++ )
303  G4cout << *its << G4endl;
304  G4cout << G4endl;
305  }
306  }
307  delete available_nat;
308  }
309  delete available;
310 // return NULL if exact data is not available
311  return anLENDTarget; // return NULL
312  }
313 
314  return anLENDTarget;
315 }
G4String evaluation
static constexpr double second
Definition: G4SIunits.hh:157
int G4int
Definition: G4Types.hh:78
const G4String & GetParticleName() const
const G4String & GetIonName(G4int Z, G4int A, G4int lvl=0) const
Definition: G4IonTable.cc:1094
G4int GetNucleusEncoding(G4int iZ, G4int iA, G4int iM)
G4ParticleDefinition * proj
G4GLOB_DLL std::ostream G4cout
std::vector< std::string > * getNamesOfAvailableLibraries(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:237
bool isThisDataAvailable(std::string &lib_name, int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:169
G4GIDI_target * readTarget(std::string &lib_name, int iZ, int iA, int iM=0, bool bind=true)
Definition: G4GIDI.cc:289
G4int target_code
#define G4endl
Definition: G4ios.hh:61
G4GIDI_target * target
G4GIDI * lend
Definition: G4GIDI.hh:43

Here is the call graph for this function:

G4NistElementBuilder* G4LENDManager::GetNistElementBuilder ( )
inline

Definition at line 87 of file G4LENDManager.hh.

87 { return nistElementBuilder; };

Here is the caller graph for this function:

G4int G4LENDManager::GetNucleusEncoding ( G4int  iZ,
G4int  iA,
G4int  iM 
)

Definition at line 343 of file G4LENDManager.cc.

344 {
345  G4int value = ionTable->GetNucleusEncoding( iZ , iA ); // Ground State
346  // G4double E=0.0, G4int J=0);
347  value += iM;
348  return value;
349 }
static G4int GetNucleusEncoding(G4int Z, G4int A, G4double E=0.0, G4int lvl=0)
Definition: G4IonTable.cc:949
int G4int
Definition: G4Types.hh:78
const XML_Char int const XML_Char * value
Definition: expat.h:331

Here is the call graph for this function:

Here is the caller graph for this function:

G4int G4LENDManager::GetVerboseLevel ( )
inline

Definition at line 89 of file G4LENDManager.hh.

89 { return verboseLevel; };
std::vector< G4String > G4LENDManager::IsLENDTargetAvailable ( G4ParticleDefinition proj,
G4int  iZ,
G4int  iA,
G4int  iM = 0 
)

Definition at line 318 of file G4LENDManager.cc.

319 {
320 
321  std::vector< G4String > vEvaluation;
322  if ( proj_lend_map.find ( proj ) == proj_lend_map.end() )
323  {
324  G4cout << proj->GetParticleName() << " is not supported by this LEND." << G4endl;
325  return vEvaluation; // return empty
326  }
327 
328  G4GIDI* xlend = proj_lend_map.find ( proj ) -> second;
329  std::vector< std::string >* available = xlend->getNamesOfAvailableLibraries( iZ, iA , iM );
330 
331  if ( available->size() > 0 ) {
332  std::vector< std::string >::iterator its;
333  for ( its = available->begin() ; its != available->end() ; its++ )
334  vEvaluation.push_back ( *its );
335  }
336  delete available;
337 
338  return vEvaluation;
339 }
static constexpr double second
Definition: G4SIunits.hh:157
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
std::vector< std::string > * getNamesOfAvailableLibraries(int iZ, int iA, int iM=0)
Definition: G4GIDI.cc:237
#define G4endl
Definition: G4ios.hh:61
Definition: G4GIDI.hh:43

Here is the call graph for this function:

G4bool G4LENDManager::RequestChangeOfVerboseLevel ( G4int  newValue)

Definition at line 391 of file G4LENDManager.cc.

392 {
393  G4bool result=false;
394  if ( newValue >= verboseLevel)
395  {
396  verboseLevel = newValue;
397  result=true;
398  }
399  else
400  {
401  G4cout << "Since other LEND model or cross section have set the higher verbose level (" << verboseLevel << ") in LENDManager, you cannot change the value now." << G4endl;
402  }
403 
404  return result;
405 }
G4double G4ParticleHPJENDLHEData::G4double result
G4GLOB_DLL std::ostream G4cout
bool G4bool
Definition: G4Types.hh:79
#define G4endl
Definition: G4ios.hh:61

Here is the caller graph for this function:


The documentation for this class was generated from the following files: