Difference between revisions of "SPIM PhotElectricEffect Lab"
(12 intermediate revisions by 2 users not shown) | |||
Line 15: | Line 15: | ||
the table below which has at least 4 energy levels. | 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 | Then you will use GEANT to create histograms of the photon energy | ||
− | lost as | + | lost as predicted by GEANT4's |
− | Photoelectric effect. | + | Photoelectric effect. Your Physics list should only have the G4PhotoElectricEffecr physics process. |
− | |||
− | have | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | you should comment out all other physics processes for a gamma particle. | ||
Line 60: | Line 42: | ||
fTargetLength = 15. * cm; | fTargetLength = 15. * cm; | ||
− | 2.) | + | 2.) Then make sure that only one process is in the PhysicsList for the gamma particle |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <pre> | |
if (particleName == "gamma") { | if (particleName == "gamma") { | ||
// gamma | // gamma | ||
− | + | ph->RegisterProcess(new G4PhotoElectricEffect, particle); | |
− | // | + | //ph->RegisterProcess(new G4ComptonScattering, particle); |
− | + | //ph->RegisterProcess(new G4GammaConversion, particle); | |
+ | |||
+ | </pre> | ||
− | + | 3.) Now you need to alter the SteppingVerbose code so it writes | |
− | |||
− | |||
− | 3.) Now you need to alter the SteppingVerbose code so it | ||
out the photon KE lost. Mine looked like this | out the photon KE lost. Mine looked like this | ||
− | if( fTrack->GetDefinition()->GetPDGEncoding()==22 && fStep->GetPostStepPoint()->GetProcessDefinedStep() | + | if( fTrack->GetDefinition()->GetPDGEncoding()==22 && |
− | + | fStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName() == "phot" | |
− | + | && fTrack->GetVolume()->GetName() =="Target") | |
− | |||
{ | { | ||
// G4cout << " Photon " ; | // G4cout << " Photon " ; | ||
//G4cout << | //G4cout << | ||
− | outfile << | + | outfile << |
− | + | // fTrack->GetKineticEnergy() << " " | |
− | + | fStep->GetTotalEnergyDeposit()<< " " | |
− | + | << fTrack->GetPosition().x()<< " " | |
− | + | << fTrack->GetPosition().y()<< " " | |
− | + | << fTrack->GetPosition().z()<< " " | |
− | + | << fTrack->GetMomentum().x() << " " | |
− | + | << fTrack->GetMomentum().y() << " " | |
− | + | << fTrack->GetMomentum().z() << " " | |
− | + | << G4endl;<br> | |
} | } | ||
− | |||
− | |||
− | |||
I used G4out and set /tracking/versose 2 to check that I was | I used G4out and set /tracking/versose 2 to check that I was | ||
printing out the right thing for each simulation event (above it | printing out the right thing for each simulation event (above it | ||
− | is commented out). If you comment | + | is commented out). If you comment out the line with "oufile" and |
un-comment out the two lines with G4cout then what was printing | un-comment out the two lines with G4cout then what was printing | ||
to a file will print to the terminal window. | to a file will print to the terminal window. | ||
Line 116: | Line 86: | ||
4.) You now have the infrastructure to start your investigation. | 4.) You now have the infrastructure to start your investigation. | ||
− | ie: use /gun/energy to change the energy of the incident photon | + | ie: use /gun/energy to change the energy of the incident photon and |
cover the range of electron binding energies in the atom you | cover the range of electron binding energies in the atom you | ||
selected. | selected. | ||
Line 140: | Line 110: | ||
of Sodium(Na) or above. | of Sodium(Na) or above. | ||
− | 8 points/10 if you supply a pdf file with | + | 8 points/10 if you supply a pdf file with the GEANT4 binding energies observed. |
− | the | ||
9 points /10 if you insert a reference and tabulated values for | 9 points /10 if you insert a reference and tabulated values for | ||
the binding energy of your atom (along with uncertainty in that | the binding energy of your atom (along with uncertainty in that | ||
− | binding energy) | + | 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 | ||
+ | <pre> | ||
+ | |||
+ | G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect(); | ||
+ | |||
− | + | G4PenelopePhotoElectricModel* thePEPenelopeModel = new G4PenelopePhotoElectricModel(); | |
− | + | thePEPenelopeModel->SetHighEnergyLimit(PenelopeHighEnergyLimit); | |
+ | thePhotoElectricEffect->AddEmModel(0,thePEPenelopeModel); | ||
+ | ph->RegisterProcess(thePhotoElectricEffect, particle); | ||
+ | </pre> |
Latest revision as of 21:51, 22 February 2019
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);