Hello everyone,
It appears that different isomers of the same element cannot be added to a TGeoMixture. If two isomers of the same element are added to a mixture, their weights are combined under the first isomer added. As far as I can tell, this occurs because the AddElement functions search for the new element in the previously-defined mixture composition in order to prevent duplicate entries, but they apparently don’t distinguish isomers in this comparison (presumably because it is defined by TGeoElement rather than TGeoElementRN?).
Example code:
void IsomerTest(){
TGeoManager *geom = new TGeoManager("","");
TGeoElementTable *table = gGeoManager->GetElementTable();
TGeoMixture *mix = new TGeoMixture("mix", 3, 10);
TGeoElementRN *iso = table->GetElementRN(131,49,1); // In-131m isomer
mix->AddElement(iso, 0.33);
TGeoElementRN *iso2 = table->GetElementRN(131,49,0); // In-131 ground state
mix->AddElement(iso2, 0.33);
TGeoElementRN *iso3 = table->GetElementRN(131,49,2); // In-131n isomer
mix->AddElement(iso3, 0.34);
std::cout << "Making material out of " << iso->GetName() << ", " << iso2->GetName() << ", and " << iso3->GetName() << "." << std::endl;
std::cout << std::endl;
std::cout << "ISOTOPE INFORMATION:" << std::endl;
iso->Print();
iso2->Print();
iso3->Print();
std::cout << std::endl;
std::cout << "MATERIAL COMPOSITION:" << std::endl;
mix->Print();
}
Output:
Making material out of 49-In-131m, 49-In-131, and 49-In-131n.
ISOTOPE INFORMATION:
49-In-131m ENDF=491311; A=131; Z=49; Iso=1; Level=0[MeV]; Dmass=-68.199[MeV]; Hlife=0.35[s]
J/P=1/2-; Abund=0; Htox=0; Itox=0; Stat=0
Decay modes:
BetaMinus Diso: -1 BR: 100.000% Qval: 9.18079
49-In-131 ENDF=491310; A=131; Z=49; Iso=0; Level=0[MeV]; Dmass=-68.199[MeV]; Hlife=0.27[s]
J/P=(9/2+); Abund=0; Htox=0; Itox=0; Stat=0
Decay modes:
BetaMinus Diso: 0 BR: 92.892% Qval: 9.18079
BetaMinus+NeutronEm Diso: 0 BR: 2.200% Qval: 3.97185
BetaMinus Diso: 1 BR: 4.908% Qval: 8.9408
49-In-131n ENDF=491312; A=131; Z=49; Iso=2; Level=0[MeV]; Dmass=-68.199[MeV]; Hlife=0.32[s]
J/P=(21/2+); Abund=0; Htox=0; Itox=0; Stat=0
Decay modes:
BetaMinus Diso: -2 BR: 99.000% Qval: 9.18079
BetaMinus+NeutronEm Diso: -2 BR: 0.028% Qval: 3.97185
IsoTrans Diso: -2 BR: 0.972% Qval: 0
MATERIAL COMPOSITION:
Mixture mix Aeff=131 Zeff=49 rho=10 radlen=1.01 intlen=17.7756 index=0
Element #0 : 49-In-131m Z= 49.00 A=131.00 w= 1.000
Is there an easy way to resolve this issue? This behaviour seems to happen throughout decay processes (I first noticed it due to missing isomers within decay chains, this code is just a simple test to verify), so I don’t think it’s just due to how I am constructing the mixture. But perhaps I am missing something.
Thank you very much,
Katy
ROOT Version: 6.14.06 and 6.22.00
Platform: CentOS 7.5
Compiler: GCC