Geant4 Version: Geant4 11.0.3
Operating System: Ubuntu
Hello @ivana ,
I am using Geant4 through VMC in CBM-ROOT. I need help understanding a few things that look a bit strange.
I am transporting the Ni ions on the Ni target through Geant3 and Geant4 and comparing the energy loss distribution for the Delta electron generated from a target and given a MC point on the active silicon sensors of thickness 320 microns.
Below you can see the Geant 3 and Geant 4 settings I am using in the macro:
CbmGeant3Settings* geant3Settings = new CbmGeant3Settings(); // Directly allocate the object
CbmGeant4Settings geant4Settings;
if (engine == kGeant3) {
TVirtualMC* vmc = TVirtualMC::GetMC();
if (vmc) {
geant3Settings->Init(vmc);
TGeant3* vmcg3 = dynamic_cast<TGeant3*>(vmc);
// Set Geant3 physics processes
vmcg3->SetProcess("HADR", 1);
vmcg3->SetProcess("PAIR", 1);
vmcg3->SetProcess("COMP", 1);
vmcg3->SetProcess("PHOT", 1);
vmcg3->SetProcess("PFIS", 0);
vmcg3->SetProcess("DRAY", 1);
vmcg3->SetProcess("ANNI", 1);
vmcg3->SetProcess("BREM", 1);
vmcg3->SetProcess("MUNU", 1);
vmcg3->SetProcess("DCAY", 1);
vmcg3->SetProcess("LOSS", 1);
vmcg3->SetProcess("MULS", 1);
// Set Geant3 physics cuts (in GeV) default is 1.0E-3 GeV translates to 1 MeV
double Energy_Cut = 1e-3;
vmcg3->SetCut("CUTGAM", Energy_Cut);
vmcg3->SetCut("CUTELE", Energy_Cut);
vmcg3->SetCut("CUTNEU", Energy_Cut);
vmcg3->SetCut("CUTHAD", Energy_Cut);
vmcg3->SetCut("CUTMUO", Energy_Cut);
vmcg3->SetCut("BCUTE", Energy_Cut);
vmcg3->SetCut("BCUTM", Energy_Cut);
vmcg3->SetCut("DCUTE", Energy_Cut);
vmcg3->SetCut("DCUTM", Energy_Cut);
vmcg3->SetCut("PPCUTM", Energy_Cut);
vmcg3->SetCut("TOFMAX", 1.0); // in seconds, Dault is 1.0
}
// Optional: enable detailed transport debugging for a range of events
geant3Settings->SetDebugOutput(kFALSE, 0, 1);
}
else if (engine == kGeant4) {
geant4Settings.SetG4RunConfig("geomRoot","QGSP_BERT_EMV+optical","stepLimiter+specialCuts");
geant4Settings.SetMaximumNumberOfSteps(10000);
geant4Settings.SetProcessPairProduction(1); // Default: 1 (ON)
geant4Settings.SetProcessComptonScattering(1); // Default: 1 (ON)
geant4Settings.SetProcessPhotoEffect(1); // Default: 1 (ON)
geant4Settings.SetProcessPhotoFission(0); // Default: 0 (OFF)
geant4Settings.SetProcessDeltaRay(1); // Default: 1 (ON)
geant4Settings.SetProcessAnnihilation(1); // Default: 1 (ON)
geant4Settings.SetProcessBremsstrahlung(1); // Default: 1 (ON)
geant4Settings.SetProcessHadronicInteraction(1); // Default: 1 (ON)
geant4Settings.SetProcessMuonNuclearInteraction(1); // Default: 1 (ON)
geant4Settings.SetProcessDecay(1); // Default: 1 (ON)
geant4Settings.SetProcessEnergyLossModel(1); // Default: 1 (Restricted fluctuations)
geant4Settings.SetProcessMultipleScattering(1); // Default: 1 (Moliere)
double EnergyCut = 1e-3; // Set your desired value here in GeV
std::cout << " VMC Config: Setting ALL energy cuts to " << EnergyCut << " GeV." << std::endl;
geant4Settings.SetEnergyCutGammas(EnergyCut);
geant4Settings.SetEnergyCutElectrons(EnergyCut);
geant4Settings.SetEnergyCutNeutralHadrons(EnergyCut);
geant4Settings.SetEnergyCutChargedHadrons(EnergyCut);
geant4Settings.SetEnergyCutMuons(EnergyCut);
geant4Settings.SetEnergyCutElectronBremsstrahlung(EnergyCut);
geant4Settings.SetEnergyCutMuonHadronBremsstrahlung(EnergyCut);
geant4Settings.SetEnergyCutElectronDeltaRay(EnergyCut);
geant4Settings.SetEnergyCutMuonDeltaRay(EnergyCut);
geant4Settings.SetEnergyCutMuonPairProduction(EnergyCut);
geant4Settings.SetTimeCutTof(1.0); // Set your desired value here in seconds, Dafault is 1.0
TVirtualMC* vmc = TVirtualMC::GetMC();
if (vmc){
geant4Settings.Init(vmc); // Initialize before applying commands
TGeant4* vmcg4 = dynamic_cast<TGeant4*>(vmc);
if (vmcg4) {
std::vector<std::string> g4Commands = {
"/process/em/fluo true",
"/process/em/auger true",
"/process/em/augerCascade false",
"/process/em/pixe false"
};
for (const auto& cmd : g4Commands) {
std::cout << "Applying G4 UI command: " << cmd << std::endl;
vmcg4->ProcessGeantCommand(cmd.c_str()); // Applies the Geant4 command
}
}
}
}
Now I have a default energy cut of 1 MeV in both cases, I do not know how, in Geant4, through VMC, it translates into range cuts.
-
How can I use range cuts in the case of Geant4 instead of the energy cut?
-
I have produced the energy loss for the delta electron both in Geant3, see image below (Left histogram for Geant3 ),
It follows the Landau distribution, but
I see that at 0.12 MeV or 120 keV, there is a peak appearing, and then again following the trend.
However, in the case of Geant4 (Right Histogram), in all cases of EM model, emStandard, EMV, EMX, EMY, EMZ it follows the Landau distribution and there is no peak at 0.12 MeV or 120 keV, which is the case in Geant3?
So my question is, why is there a peak in Geant 3 at 0.12 MeV? What is the physics behind it, or is it an artifact of the model being used in Geant3?
Another thing which I would like to understand in the case of Gean4 is that
At 1 MeV, incase of the EMV (blue color) and EMX(Red color), there is a sharp peak and then a drop. However, in the case of the Standard (Black color), EMY(Green color), EMX(Orange color), if you look at them, then at 1 MeV there is a peak and then a kind of step function behaviour and then drops.
What is the reason behind it, and why is it not happening in EMV and EMX ElectroMagnetic process models?
Is it related to the electron-positron annihilation?
thank you.
With best regards
Mehul