Some issue or need clarification about the Geant3 and Gean4 energy loss of the Delta electrons

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.

  1. How can I use range cuts in the case of Geant4 instead of the energy cut?

  2. 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


Hello Mehul,

Please, see the Geant4 VMC documentation for understanding how the cuts are applied when using VMC:

I see that at 0.12 MeV or 120 keV, there is a peak appearing, and then again following the trend.

I don’t have an idea about the reason of the peak in the Geant3 simulation. I suggest to try to run simulation with lowering the cuts to see if this is a side-effect of the cut setting.

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.

When using the EMV or EMX physics list options, the low-energy π‘’βˆ’ are cut out (and so not produced as it is the case for other EM options), and so the peak originated by 1 MeV tracking cut is much lower.

See more details about the EM options in the Geant4 physics lists documentation:

Best regards,

Hii @ivana

Here is the Geant3 energy loss spectra for PDG 11, produced by changing the cut value on CUTELE

vmcg3->SetCut(β€œCUTELE”, 9e-4); // Electrons (GeV)

When the energy cut is lowered to 0.5 MeV (cyan colour), the peak at 120 keV is no longer visible.

To produce the spectra, I have used:
ILOSS = 1 //Ξ΄-rays are produced above the threshold, reduced fluctuations from Ξ΄-rays below the threshold are added to the energy loss
and
ISTRA = 0 //Urban model, 1 for PAI model

There is one thing which I am not sure of, or have no idea about, the cuts in the following part:

Double_t cut1 = 1.e-3; // GeV
vmcg3->SetCut(β€œCUTGAM”, cut1); // Gammas (GeV)
vmcg3->SetCut(β€œBCUTE”, cut1); // Electron bremsstrahlung (GeV)
vmcg3->SetCut(β€œDCUTE”, cut1); // Delta-rays by electrons (GeV)

Do I also have to apply similar cuts, which I have applied on CUTELE, to the above-mentioned processes as well? I mean, the cut1 values should be similar to what I have changed on CUTELE, or 1MeV is okay?

Hello Mehul,

In general the lower cuts mean more precise physics, so if the peak disapperas
when you decrease the cuts, I’d not consider it is as real.

For the various cuts options in Geant3, please, see the Geant3 manual, that can be found for example here: https://inspirehep.net/files/6a8c201cde710d0c77e03433f63e85b2

Do I also have to apply similar cuts, which I have applied on CUTELE, to the above-mentioned processes as well? I mean, the cut1 values should be similar to what I have changed on CUTELE, or 1MeV is okay

Yes, it is better to use the same value also for the specific processes.

Best regards,