Bias the hadronic interaction of photons

Dear all,
I am interested in simulating the hadronic interaction of photons in a lH2 target (i.e. the photo-nuclear processes). In order to activate the hadronic interactions, In my physics list, inheriting from G4VModularPhysicsList, I instantiate a G4EmExtraPhysics object, and then I have:

void PhysicsList::ConstructProcess()
{
...
G4EmExtraPhysics_instance->ConstructProcess()
...
}

Is it possible, in this scheme, to bias the hadronic interaction of photons, by simply multiplying the cross section for a constant factor? I’ve seen that the sequence of relevant calls for this is:

G4EmExtraPhysics::ConstructProcess()
G4EmExtraPhysics::BuildGammaNuclear()
G4BertiniElectroNuclearBuilder::G4BertiniElectroNuclearBuilder()
G4BertiniElectroNuclearBuilder::Build()
G4PhotoNuclearProcess::G4PhotoNuclearProcess()

In particular, the G4BertiniElectroNuclearBuilder() class has a member pointer to a G4PhotoNuclearProcess class. This inherits from G4HadronicProcess(), that has a method BiasCrossSectionByFactor that is exactly what I am looking for. However, it seems to me it is not possible to access to this pointer starting from an instance of G4EmExtraPhysics.

Thanks,
Andrea

Dear all,
since this may be helpful for someone else, at the end I found a way to solve this:

auto processes=G4Gamma::Gamma()->GetProcessManager()->GetProcessList();
G4VProcess *proc;
for (int ii=0;ii<processes->size();ii++){
    proc=(*processes)[ii];
    if (proc->GetProcessName()=="photonNuclear"){
        auto hadr_proc=dynamic_cast<G4HadronInelasticProcess*>(proc);
        cout<<"GOT IT: "<<hadr_proc<<" "<<endl;
        hadr_proc->BiasCrossSectionByFactor(1E5);
    }
}

I also tried to pass through G4HadronicProcessStore, but I was not able to find the hadronic process associated with the photon. Anyhow, for this specific task the solution above works.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.