Problem 1904 - I-Value mis-match for the same composition and same density material defined differently.
Summary: I-Value mis-match for the same composition and same density material defined ...
Status: RESOLVED INVALID
Alias: None
Product: Geant4
Classification: Unclassified
Component: materials (show other problems)
Version: 10.0
Hardware: All All
: P4 normal
Assignee: Marc.Verderi
URL:
Depends on:
Blocks:
 
Reported: 2016-10-27 22:17 CEST by DP
Modified: 2016-12-12 11:22 CET (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description DP 2016-10-27 22:17:03 CEST
For the following two cases the I-Values are substantially different while the composition and density are EXACTLY the same!

Case 1:
  G4Material* Lucite = new   G4Material("Lucite",density=1.19*g/cm3,numberOfElements=3);
  Lucite->AddElement(elH,0.080538);
  Lucite->AddElement(elC,0.599848);
  Lucite->AddElement(elO,0.319614);

Results in I-value of 68.61 eV

Case 2:

  G4Material* Lucite = G4NistManager::Instance()->FindOrBuildMaterial("G4_LUCITE");

 Ncomp             Name      density(g/cm^3)  I(eV) ChFormula
=============================================================
 3                  G4_LUCITE       1.19        74   
         1      0.080538
         6      0.599848
         8      0.319614

Results in I-value of 74 eV
Comment 1 Marc.Verderi 2016-12-12 11:22:00 CET
Hello,

When the NIST manager finds a potential value defined, it uses it (instead of the one obtained by chemical formula). For the case of "G4_LUCITE", the material is defined as follows, in G4NistMaterialBuilder :


  // LUCITE is equal to plustiglass
  AddMaterial("G4_LUCITE", 1.19, 0, 74., 3);
  AddElementByWeightFraction( 1, 0.080538);
  AddElementByWeightFraction( 6, 0.599848);
  AddElementByWeightFraction( 8, 0.319614);

AddMaterial is a method of G4NistMaterialBuilder; in the present case, you can see that the 4-th argument, 74. , is forcing the ionisation potential. Underneath, what is does for a material with pointer "mat" is:
  mat->GetIonisation()->SetMeanExcitationEnergy(Ivalue);
You can explicitly make this call to set the ionisation energy Ivalue.

This feature is certainly a bit confusing (because of similar case you report), but allows to be more precise.

Marc