Message: Saving partial results Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Saving partial results 

Forum: Multithreading
Date: 18 Aug, 2015
From: <herr_apa>


I'm running a simulation that includes movement. In my GeneratePrimaries, I offset the position of the initial particle by an amount that depends on the event number. The position of the particle is x(t), and t = N/Ntot where N is the event number of the current event and Ntot is the total number of events to be simulated. The quantity of interest is the energy deposited in different parts of the target, which I record using a G4PSEnergyDeposit.

I would like to make a "movie" of how the dose distribution develops as a function of time. That is, I want to save the output of the simulation every so many events. For the sake of example, let's say I'm simulating 1000 events and I want a snapshot of the output every 50. In single-threaded mode, I could simply make an EndOfEventAction to check the current event number N, and if (N % 50) == 0 I could fetch the deposited energy from my G4THitsMap and write it to file. In multithreaded mode this approach is not possible because each thread only has access to the events it happened to process, and only one of the threads will process the event that triggers the write.

Question 1: When a thread detects that (N % 50) == 0, is it possible to somehow merge all the events processed so far across all threads so that the output can be written to file?

Another approach could be to tell Geant4 "I want to simulate 1000 events - But start the run at event 400 and stop it at event 449!" That way the time dependence and merging would happen as normal, and I could just split the run into many sub runs that start and stop at the appropriate event numbers. The output would not be cumulative for each segment of the run like with the first approach, but this could be fixed by post-processing.

Question 2: Is there a convenient way to process only a subrange of the events in a run? Maybe a check in BeginOfEventAction to skip the entire event unless it is in the desired range. Can this be done?

Suggestions on other approaches are also welcome. I might very well be missing something obvious.

// Anders

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: Saving partial results   (herr_apa - 20 Aug, 2015)
1 None: Re: Saving partial results   (herr_apa - 25 Aug, 2015)
2 Warning: Re: Saving partial results   (Andrea Dotti - 26 Aug, 2015)
2 Feedback: Re: Saving partial results   (Andrea Dotti - 26 Aug, 2015)
 Add Message Add Message
to: "Saving partial results"

 Subscribe Subscribe

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