How to delete the EmDNAPhysics of PhysicsList in chem4

Dear friends,
I want to delete the whole Physics model (process) of PhysicsList in chem4 but not to delete the Chemistry model (process), like this
#include “PhysicsList.hh”

#include “G4SystemOfUnits.hh”
#include “G4EmDNAChemistry.hh”
#include “G4EmDNAChemistry_option1.hh”
#include “G4EmDNAPhysics.hh”
#include “G4PhysicsConstructorRegistry.hh”
#include “CommandLineParser.hh”
#include “G4EmParameters.hh”

using namespace G4DNAPARSER;

//…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…

PhysicsList::PhysicsList()
: G4VModularPhysicsList(),
fEmDNAPhysicsList(nullptr),fEmDNAChemistryList(nullptr),
fEmDNAChemistryList1(nullptr),fPhysDNAName(“”)
{
G4double currentDefaultCut = 1.nanometer;
// fixe lower limit for cut
G4ProductionCutsTable::GetProductionCutsTable()->
SetEnergyRange(100
eV, 1*GeV);
SetDefaultCutValue(currentDefaultCut);
SetVerboseLevel(1);

RegisterConstructor(“G4EmDNAPhysics”);
if(CommandLineParser::GetParser()->GetCommandIfActive(“-chemOFF”)==0)
{
RegisterConstructor(“G4EmDNAChemistry”);
}

}

//…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…

PhysicsList::~PhysicsList()
{
delete fEmDNAChemistryList;
delete fEmDNAChemistryList1;
}

//…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…

void PhysicsList::ConstructParticle()
{
if(fEmDNAChemistryList) { fEmDNAChemistryList->ConstructParticle(); }
if(fEmDNAChemistryList1) { fEmDNAChemistryList1->ConstructParticle(); }
}

//…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…

void PhysicsList::ConstructProcess()
{
if(fEmDNAChemistryList) { fEmDNAChemistryList->ConstructProcess(); }
if(fEmDNAChemistryList1) { fEmDNAChemistryList1->ConstructProcess(); }
}

//…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…

void PhysicsList::RegisterConstructor(const G4String& name)
{
if(name == “G4EmDNAChemistry”) {
if(fEmDNAChemistryList || fEmDNAChemistryList1) { return; }
fEmDNAChemistryList = new G4EmDNAChemistry();
fEmDNAChemistryList->SetVerboseLevel(verboseLevel);
} else if(name == “G4EmDNAChemistry_option1”) {
if(fEmDNAChemistryList || fEmDNAChemistryList1) { return; }
fEmDNAChemistryList1 = new G4EmDNAChemistry_option1();
fEmDNAChemistryList1->SetVerboseLevel(verboseLevel);
} else {
G4cout << “PhysicsList::RegisterConstructor: <” << name << “>”
<< " fails - name is not defined"
<< G4endl;
}
}

//…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…oooOO0OOooo…

But when I run it, the error will be find as follows:

***** COMMAND NOT FOUND </process/dna/e-SolvationSubType Ritchie1994> *****

***** Batch is interrupted!! *****

How should I solve this problem? Thanks.

Dear,
You cannot solve the problem cause chemistry needs physics processes to forme chemical species via dissociation processes. Something like “e-SolvationSubType” will convert low energy electrons to solvated electron (a chemical species).

1 Like

Hello,

there is a general approach in Geant4 physics lists: one should avoid deletion of component. If something is not needed better do not instantiate.

VI