SPIM PhotElectricEffect Lab
The objective of this lab is to evaluate the implementation of the Photoelectric effect in GEANT4.
The photoelectric effect is a discrete process by which a photon ejects electrons from the surface of a metal.
Here the process is generalized to mean the ejection of an electron due to a collision with an incident photon ( a direct ionization process). The incident photon is absorbed in the process and the ejected electron carries away the excess energy. This differs from Compton scattering where the photon is not absorbed but rather scatters from the electron.
To accomplish the above objective you will choose an element from the table below which has at least 4 energy levels.
https://wiki.iac.isu.edu/index.php/TF_SPIM_e-gamma#Moseley.27s_Law
Then you will use GEANT to create histograms of the photon energy
lost as predicted by GEANT4's
Photoelectric effect. Your Physics list should only have the G4PhotoElectricEffecr physics process.
you should comment out all other physics processes for a gamma particle.
1.) Step 1 is to create a target made from one of the elements above which is long enough to almost guarantee a photoelectric event for each incident photon.
I chose Argon. You will choose something else.
I edited the Detector Construction code to have the following
//Argon gas G4Material* ArgonGas = new G4Material("ArgonGas", z=18., a=39.948*g/mole, density= 1.784*mg/cm3);
and I made my target length long
fTargetLength = 15. * cm;
2.) Then make sure that only one process is in the PhysicsList for the gamma particle
if (particleName == "gamma") { // gamma ph->RegisterProcess(new G4PhotoElectricEffect, particle); //ph->RegisterProcess(new G4ComptonScattering, particle); //ph->RegisterProcess(new G4GammaConversion, particle);
3.) Now you need to alter the SteppingVerbose code so it writes out the photon KE lost. Mine looked like this
if( fTrack->GetDefinition()->GetPDGEncoding()==22 && fStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName() == "phot" && fTrack->GetVolume()->GetName() =="Target") { // G4cout << " Photon " ; //G4cout << outfile << // fTrack->GetKineticEnergy() << " " fStep->GetTotalEnergyDeposit()<< " " << fTrack->GetPosition().x()<< " " << fTrack->GetPosition().y()<< " " << fTrack->GetPosition().z()<< " " << fTrack->GetMomentum().x() << " " << fTrack->GetMomentum().y() << " " << fTrack->GetMomentum().z() << " " << G4endl;
}
I used G4out and set /tracking/versose 2 to check that I was printing out the right thing for each simulation event (above it is commented out). If you comment out the line with "oufile" and un-comment out the two lines with G4cout then what was printing to a file will print to the terminal window.
4.) You now have the infrastructure to start your investigation.
ie: use /gun/energy to change the energy of the incident photon and cover the range of electron binding energies in the atom you selected.
you can create root trees containing the photon kinetic energy lost in the target and compare those with the electron binding energies of your chosen atom.
Is there a distribution of photon energies lost or is just one specific photon energy lost?
5.) As in the previous lab you will write your results up in TeX, include all neccessary figures, and reach a conclusion describing which entry to use in your physicslist and what are the limitations for its use.
Note: My grading scheme is as follows
0 points /10 if you use a target atom with less than 3 energy levels (ie H, He, Li ...). This means all atoms should have "A" of Sodium(Na) or above.
8 points/10 if you supply a pdf file with the GEANT4 binding energies observed.
9 points /10 if you insert a reference and tabulated values for the binding energy of your atom (along with uncertainty in that binding energy) and compare that value with the GEANT4 prediction.
10 points /10 if you are able to implement the G4PenelopePhotoElectricModel() and describe what happens to the ejected electron in this model.
Adding the Penelope model
G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect(); G4PenelopePhotoElectricModel* thePEPenelopeModel = new G4PenelopePhotoElectricModel(); thePEPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit); thePhotoElectricEffect->AddEmModel(0,thePEPenelopeModel); ph->RegisterProcess(thePhotoElectricEffect, particle);