Defining the material Thallium Activated Sodium Iodide

Hi, regarding the construction of my detector I have defined the material Thallium Activated Sodium Iodide (NaI(Tl)), I have done this in 3 different ways/methods. Are the 3 ways/methods correct, or which is the correct one?. How should I define this material?. Below I show the code of the three methods/ways to define this material:

void myDetectorConstruction::DefineMaterials()
{

///////// First method
G4NistManager* man = G4NistManager::Instance();

G4bool isotopes = false;

G4Element* Tl = man->FindOrBuildElement(“Tl” , isotopes);
G4Element* I = man->FindOrBuildElement(“I”, isotopes);
G4Element* Na = man->FindOrBuildElement(“Na”, isotopes);

auto NIT = new G4Material(“NaITl”, 3.67 * g / cm3, 3);
NIT->AddElement(Na, 1);
NIT->AddElement(I, 1);
NIT->AddElement(Tl , 1);
////////////////////////////////////////////////////////////////////////////////////////////
////////// Second method
G4Element* elTl = new G4Element(“Thallium”,symbol=“Tl”,z=81.,a=204.3833g/mole);
G4Element
elI = new G4Element(“Iodine”,symbol=“I”,z=53.,a=126.90447g/mole);
G4Element
elNa = new G4Element(“Sodium”,symbol=“Na”,z=11.,a=22.989769*g/mole);

G4Material* NaITl = new G4Material(“Iodide”,density=3.67 * g / cm3,ncomp=3);

Iodide->AddElement(elI, natoms=1);
Iodide->AddElement(elNa, natoms=1);
Iodide->AddElement(elTl, natoms=1);

////////////// Third method

G4Element* elTl = new G4Element(“Thallium”,symbol=“Tl”,z=81.,a=204.3833*g/mole);
auto elI = new G4Element(“Iodine”, “I”, z = 53, a = 126.90447 * g / mole);
auto elNa = new G4Element(“Sodium”, “Na”, z = 11, a = 22.989769 * g / mole);

auto Iodide = new G4Material(“Iodide”, density = 3.67 * g / cm3, nelements = 3);

Iodide->AddElement(I, 45. * perCent);
Iodide->AddElement(Na, 45. * perCent);
Iodide->AddElement(Tl, 10. * perCent);
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////

}

_Geant4 Version:_11.2.1
_Operating System:_Windows 10
_Compiler/Version:_Visual Studio 2022
_CMake Version:_3.29.0-rc2


The 3 codes seem correct ( z must be an integer).
Methodes 1 and 2 are equivalent. You define a molecule of NaITl : 1 atome of each
Methode 3 defines a mixture of (Iodine,Sodium,Thallium), with( in mass) 45% I, 45% Na, 10% Tl

Ok, thank you very much for answering. So I think that what I am going to use will be method 1 or method 2, because method 3 is a mixture, and in a mixture the order in which one mixes the materials doesn’t matter, right?

All methods must be independent of the order ! if not, there is a bug somewhere …

In your DetectorConstruction, add something like : G4cout << " \n " << NaITl << G4endl;

Ok, thanks. I’ll try to do that

Is there an example from the Geant4 toolkit where something similar to: G4cout << " \n " << NaITl (or other material) << G4endl; is done?.

In hadronic/Hadr03 : DetectorConstruction::PrintParameters()

And also Hadr04, Hadr05 …etc…

Ok, thanks for the information. I’ll take a look at those examples.

I may be wrong, but please check the amount of thallium in NaI(Tl). Usually, it is 500-1500 ppm.

Ok, thanks for the information. I didn’t know that information. I’ll take a look at the NaI(Tl) data