Hi all,
I’m working on simulating the mass stopping power of muons in copper using Geant4. I based my code on the B1
example, with modifications to several core components (DetectorConstruction
, ActionInitialization
, and SteppingAction
) to match my needs.
Simulation Setup
- Goal: Reproduce the well-known mass stopping power curve of muons in copper as shown in PDG.
- Changes:
- In
SteppingAction.cc
, I added a logger to print final four-momentum of muons as they exit the copper volume: - G4cout << “Muon exited the scoring volume!” << G4endl;
G4cout << “Four-momentum (px, py, pz, E): "
<< px / CLHEP::MeV << " MeV/c, "
<< py / CLHEP::MeV << " MeV/c, "
<< pz / CLHEP::MeV << " MeV/c, "
<< (energy + mass) / CLHEP::MeV << " MeV” << G4endl;
I ran 100 separate macros for each energy point (e.g., 100 MeV), with 1 muon per macro, like:
/run/numberOfThreads 4
/run/initialize
/control/verbose 2
/run/verbose 2
/event/verbose 0
/tracking/verbose 1
/random/setSeeds 269917 513721
- In
/gun/particle mu+
/gun/energy 0.2 GeV
/run/beamOn 1
I repeated this for various copper thicknesses
Data Analysis
- From the exit energy, I calculated Delta E / dx for each event.
- Fitted the energy loss distribution using unbinned RooFit Landau fits. ( I have added an example designed plot in attachment)
- Calculated both:
- Most Probable Value (MPV)
- Landau mean
- For each energy, I calculated weighted averages of dE/dx over thickness values using results from different thicknesses at one energy.
The Issue
Despite trying many approaches, my simulated results don’t align with the PDG’s mass stopping power values provided, they are above them while still a similar trend occurs. I’ve tried:
- Switching physics lists:
QGSP_BERT
,QBBC
(initially set in the example).
*Ensuring we are well within the Bethe-Bloch region where density effect corrections are minimal or already included by Geant4, - Used both MPV and Landau mean as mean value candidates to achieve mean energy loss/thickness values.
- Checked for consistency across multiple energies and thicknesses in Bethe-Bloch region.
But the resulting values are still significantly off (over), and the disagreement is systematic.
ı would deeply appreciate assistance in understanding:
- Whether Geant4 energy loss modeling requires specific manual tuning (e.g., production cuts, secondary tracking thresholds) to match PDG data,
- Whether sampling from Landau fits is insufficient or improper for average energy loss estimates,
- If others have successfully reproduced the PDG stopping power plots using Geant4,
I’ve reached a point where results remain significantly off, even after controlling all obvious variables. Any insights or past experience you might have could help me finalize our analysis.
_Geant4 Version: geant4-v11.2.2
_Operating System:macOS
_Compiler/Version: clang-1500.3.9.4
_CMake Version:3.28.3
7.pdf (22 KB)