Message: Re: Biasing already registered processes (from reference physics) Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Ok Re: Biasing already registered processes (from reference physics) 

Forum: Biasing and Scoring
Re: Question Biasing already registered processes (from reference physics) (Michael H. Kelsey)
Date: 13 Feb, 2017
From: Michael H. Kelsey <Michael H. Kelsey>

On Fri, 10 Feb 2017 19:12:51 GMT, Michael H. Kelsey wrote:
> I would like to apply simple biasing (secondary particle splitting) to
> processes which have already been registered into the appropriate
> ProcessManagers. Specifically, my physics list uses G4EmPenelopePhysics
> to get a proper set of standard, reference processes and models. Then, I
> want to go through the process lists for gammas and electrons, and
> replace some of those processes with G4WrapperProcess versions.

Answering my own question: To do this properly, you must call G4ProcessManager::RemoveProcess() and ::AddProcess(), and that must be done outside the loop where you are looking for processes to wrap (otherwise, you will invalidate the iterator!).

So I implemented my action in two loops. First, I have an empty std::vector<G4VProcess*> which I fill with the base processes I want to wrap. Once that's finished, I loop over that vector, call procMan->RemoveProcess() for the base process, wrap the base process as desired, then call procMan->AddProcess() with the wrapper.

For completeness, I query procMan to get the "position indices" for each base process, and apply those same indices to the wrapper. That way, the process ordering is preserved.

     -- Michael Kelsey

 Add Message Add Message
to: "Re: Biasing already registered processes (from reference physics)"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews