A question about physical process registration


I wanted to add the G4PenelopeComptonModel physics process to my experiment, I wrote my own header file and inherited the G4VModularPhysicsList. then I added the G4PenelopeComptonModel physics process to my experiment with the command RegisterPhysics(newG4PenelopeComptonModel()); in the constructor I then registered the G4PenelopeComptonModel physics process in the constructor with the following overall code.

: G4VModularPhysicsList()

  G4int verbose = 1;

  RegisterPhysics(new G4DecayPhysics());
  RegisterPhysics(new G4RadioactiveDecayPhysics());

  RegisterPhysics(new G4EmStandardPhysics_option3());

  RegisterPhysics(new G4HadronElasticPhysicsXS(verbose));

  RegisterPhysics(new G4StoppingPhysics(verbose));

  RegisterPhysics(new G4IonPhysics(verbose));

  RegisterPhysics(new G4HadronInelasticQBBC(verbose));

  RegisterPhysics(new G4NeutronTrackingCut(verbose));

  RegisterPhysics(new G4PenelopeComptonModel());

      SetEnergyRange(100*eV, 1*GeV);
  G4EmParameters* param = G4EmParameters::Instance();

However, when registering G4PenelopeComptonModel(), I encountered a problem, the code reported an error and prompted me that the real parameter of type “G4PenelopeComptonModel *” is incompatible with the formal parameter of type "G4VPhysicsConstructor *

How should I register G4PenelopeComptonModel, a physical list, please?


G4PenelopeComptonModel is a model and not a modular physics list. If you want to take a ready-for-the-use physics list, you should replace

RegisterPhysics(new G4EmStandardPhysics_option3());


RegisterPhysics(new G4EmPenelopePhysics());

This will call a Geant4 EM constructor which uses the Penelope processes for gamma-rays, electrons and positrons. If you want to change only one specific model (e.g. the Compton scattering), you have to write your own EM builder, e.g. taking inspiration from G4EmStandardPhysics_option3(), with the appropriate replacements.

Hope this helps,

Thank you for your reply, I now understand what was asked and I will try the method you mentioned.