I recently use Geant4 to do some simulation about Cherenkov radiation.And I set PMT to detect the photon.In the tracking information,I found out that every step’s processsName of opticalPhoton is transportation.But they all killed by absorption or detection(so in the last step,it shouldn’t be transportation).I want to know how the opticalphoton dead.
How can I solve this problem?
The output information are as follow:
G4Track Information: Particle = opticalphoton, Track ID = 288, Parent ID = 2
The process is almost always Transportation, because optical photons generally don’t do anything except reflect They mostly interact at boundaries, and the BoundaryProcess itself is not the “step limiting process” – that’s Transportation.
You have to interrogate G4OpBoundaryProcess itself to find out what it decided to do with the optical photon it was given. See examples/extended/optical/OpNovice/OpNoviceSteppingAction.cc for an example of how to do this.
Thank you so much for replying. I check the last step’s processName,but I found that when the optical photons die in those volume without optical surface set,the process is OpAbsorption.It’s strange why OpAbsorption here,because when optical photons die in volume with optical surface they have the boundaryStatus named “absorption” or “detection” but the processName is transportation.
Do you have an optical absorption length set for your material? That will trigger G4OpAbsorption.
The Optical Photon Processes documentation is fairly detailed, including the Boundary Process subsection, but I didn’t see an explicit discussion of dealing with the BoundaryStatus.
Those are all discussed in the documentation. I’m going to edit my original reply, it was oversimplified and misleading. The more precise statement would have been
The process is almost always Transportation because optical photons don’t generally do anything except reflect. They mostly interact at boundaries, …
Thank you very much for your reply! :
Yes.The volume that optical photons die in,with a process called OpAbsorption ,has absorption length(glass_mt->AddProperty(“ABSLENGTH”, energy, glass_AbsLength, num);).In other volumes without absorption length,the process is transportation.
When set the photocathode ,I set EFFICIENCY ,REALRINDEX and IMAGINARYRINDEX, and I only get the transportation process,but I can get the boudary interaction by boundary->GetStatus().(This will output a number which means absorption or detection).Maybe it is not able to output a process like “absorption” or others,because I dindn’t set the property related?
And in the documentation,there is Boundary scattering (class G4OpBoundary),it seems that boundary interaction should be output in process as “OpBoudary” .
A status is not the same as a process. The boundaryProcess status is an enum (look at G4OpBoundaryProcess.hh right at the top, after the #includes).
When you query the step for the “process” that never tells you all the processes that affected the particle. It only tells which one of those many processes was the one which limited the step. In the case of a particle reaching the boundary of a volume, it is always Transportation which limits the step. Then other processes (OpBoundaryProcess, maybe decays, etc.) get their own opportunity to affect the particle.