Cannot set particle production cuts for ComptonScattering process

Hi all:

I have some problem when setting production cuts.
I want to set generation cut to disable the generation of electron with energy less than 0.25 MeV (which correspongs to the Cherenkov generation threshold in water). So I use following physics list, which mainly copy from FTFP_BERT.

#include "PhysicsList.hh"

#include "G4DecayPhysics.hh"

#include "G4EmStandardPhysics.hh"

#include "G4EmStandardPhysics_option2.hh"

#include "G4RadioactiveDecayPhysics.hh"

#include "G4OpticalPhysics.hh"

#include "G4EmExtraPhysics.hh"

#include "G4HadronElasticPhysics.hh"

#include "G4HadronPhysicsFTFP_BERT.hh"

#include "G4StoppingPhysics.hh"

#include "G4NeutronTrackingCut.hh"

#include "G4IonPhysics.hh"

#include "G4NeutronTrackingCut.hh"

#include "G4UnitsTable.hh"

#include "G4SystemOfUnits.hh"

PhysicsList::PhysicsList()

    : G4VModularPhysicsList()

{

  SetVerboseLevel(1);

  // Default physics

  RegisterPhysics(new G4DecayPhysics());

  // EM physics

  RegisterPhysics(new G4EmStandardPhysics_option2);

  // Synchroton Radiation & GN Physics

  RegisterPhysics(new G4EmExtraPhysics());

  // Hadron Elastic scattering

  RegisterPhysics(new G4HadronElasticPhysics());

  // Hadron Physics

  RegisterPhysics(new G4HadronPhysicsFTFP_BERT());

  // Stopping Physics

  RegisterPhysics(new G4StoppingPhysics());

  // Ion Physics

  RegisterPhysics(new G4IonPhysics());

  // Neutron tracking cut

  RegisterPhysics(new G4NeutronTrackingCut());

  // Radioactive decay

  RegisterPhysics(new G4RadioactiveDecayPhysics());

  // optical physics

  G4OpticalPhysics *opticalPhysics = new G4OpticalPhysics();

  opticalPhysics->SetMaxNumPhotonsPerStep(400);

  opticalPhysics->SetTrackSecondariesFirst(kCerenkov, true);

  // RegisterPhysics(opticalPhysics);

  DumpCutValuesTable();

}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

PhysicsList::~PhysicsList()

{

}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

void PhysicsList::SetCuts()

{
  // fixe lower limit for cut

  G4double lowlimit = 0.25 * keV;

  G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(lowlimit, 100. * TeV);

  // call base class method to set cuts which default value can be

  // modified via /run/setCut/* commands

  G4VUserPhysicsList::SetCuts();

  DumpCutValuesTable();

}

And I am using following macro to set the production cut

# run initialization
/run/initialize

# set verbose
/control/verbose  2
/run/verbose      2
/event/verbose    2
/tracking/verbose 2
/analysis/verbose 2

# set hist
/analysis/h1/set      0 100 0 1000 keV
/analysis/h1/setXaxis 0 "Energy [keV]"
/analysis/h1/setYaxis 0 "Number of electrons"
/analysis/h1/set      1 35 1.5 5 eV
/analysis/h1/setXaxis 1 "Energy [eV]"
/analysis/h1/setYaxis 1 "Number of photons"
/analysis/h1/set      2 100 0 100 m
/analysis/h1/setXaxis 2 "Propagation Length [m]"
/analysis/h1/setYaxis 2 "Number of photons"

# set cut in run
/run/setCut 0.1 cm
/run/setCutForAGivenParticle gamma 50 cm

# set particle gun
/gun/particle  pi+
/gun/energy    1 GeV
/run/beamOn    1

In my simulation result, I find the ionization process no longer produce low energy electrons. However, the Compron scattering of gamma still produce low energy electrons.

*********************************************************************************************************
* G4Track Information:   Particle = gamma,   Track ID = 401,   Parent ID = 356
*********************************************************************************************************

Step#    X(mm)    Y(mm)    Z(mm) KinE(MeV)  dE(MeV) StepLeng TrackLeng  NextVolume ProcName
    0 3.19e+03 -2.74e+03 1.74e+03      3.89        0        0         0    World_PV initStep
    1 3.25e+03 -2.79e+03 1.61e+03     0.536        0      152       152    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  1 ---------------
    :  3.25e+03 -2.79e+03  1.61e+03      3.35                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    2 3.29e+03 -2.68e+03 1.57e+03     0.213        0      124       276    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  2 ---------------
    :  3.29e+03 -2.68e+03  1.57e+03     0.323                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    3 3.28e+03 -2.68e+03  1.6e+03     0.202        0     33.8       310    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  3 ---------------
    :  3.28e+03 -2.68e+03   1.6e+03    0.0112                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    4 3.29e+03 -2.68e+03 1.62e+03     0.137        0     26.4       337    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  4 ---------------
    :  3.29e+03 -2.68e+03  1.62e+03    0.0641                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    5 3.29e+03 -2.69e+03 1.62e+03     0.119        0     13.9       350    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  5 ---------------
    :  3.29e+03 -2.69e+03  1.62e+03    0.0183                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    6 3.26e+03 -2.74e+03 1.61e+03     0.102        0     65.7       416    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  6 ---------------
    :  3.26e+03 -2.74e+03  1.61e+03    0.0173                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    7 3.25e+03 -2.74e+03 1.57e+03    0.0852        0     44.5       461    World_PV compt
    :----- List of 2ndaries - #SpawnInStep=  1(Rest= 0,Along= 0,Post= 1), #SpawnTotal=  7 ---------------
    :  3.25e+03 -2.74e+03  1.57e+03    0.0166                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------
    8 3.21e+03 -2.81e+03 1.58e+03         0 2.83e-05       76       537    World_PV phot
    :----- List of 2ndaries - #SpawnInStep=  2(Rest= 0,Along= 0,Post= 2), #SpawnTotal=  9 ---------------
    :  3.21e+03 -2.81e+03  1.58e+03    0.0847                 e-
    :  3.21e+03 -2.81e+03  1.58e+03  0.000509                 e-
    :----------------------------------------------------------------- EndOf2ndaries Info ---------------

How should I disable this process?

Thanks
Fan

I fixed this problem by replacing G4EmStandardPhysics_option2 by G4EmStandardPhysics_option1. Now the generation cut can successfully apply to Compton Scattering process.

I compared the source code in G4EmStandardPhysics_option2.cc and G4G4EmStandardPhysics_option1.cc. And I found that G4EmParameters in option2 set ApplyCut to false.

// code section from G4EmStandardPhysics_option2.cc
// begine at line 122

G4EmStandardPhysics_option2::G4EmStandardPhysics_option2(G4int ver, 
							 const G4String&)
  : G4VPhysicsConstructor("G4EmStandard_opt2"), verbose(ver)
{
  G4EmParameters* param = G4EmParameters::Instance();
  param->SetDefaults();
  param->SetVerbose(verbose);
  param->SetApplyCuts(false);
  param->SetMscRangeFactor(0.2);
  param->SetLateralDisplacement(false);
  param->SetMscStepLimitType(fMinimal);
  SetPhysicsType(bElectromagnetic);
}

So, I change my physicsList to the following codes:

  // EM physics
  RegisterPhysics(new G4EmStandardPhysics_option2);
  G4EmParameters* param = G4EmParameters::Instance();
  param->SetApplyCuts(true);

Now the option2 works well.

Dose any one know why in option2, the ApplyCut is set to false? I think it is odd because it restrict user’s operation.
And why Compton Scatering is different from ionization?

Thanks,
Fan

Hello,

This EM Physics List configuration “option2” was chosen to be the same as is used by LHCb experiment at CERN. Your recent modification is correct.

VI