Hi, I was wondering how to record the values of estimated uncertainty on a history by history basis - similar to Walters 2002 History by history statistical estimators in the BEAM code system.
I am trying to make a primitive scorer class that would be able to accumulate the values of three scored quantities x, x_squared, and the variance using them both could be accessible in multithreaded mode. Such that after N primary histories the variance on the scored quantity x can be estimated.
I know that in the RE02 example the primitive scorers can deal with accumulating a value e.g. the quantity y in the event map G4THitsMap class.
EvtMap->add(index, y);
So I was wondering if there was a way to perhaps make the EvtMap quantity y a vector of {x and x_squared}. This may involve changing:
G4THitsMap<G4double>* EvtMap;
to something like:
G4THitsMap<std::vector<G4double>>* EvtMap;
or instead have a couple of G4THitsMaps (defined in the header file with
G4PS_MY_CUSTOM_SCORER : public G4VPrimitiveScorer
which change in ProcessHits and only returns EvtMap at the conclusion of the RunAction.cc,
G4THitsMap<G4double>* end_x_value = re02Run->GetHitsMap("HitsMapName")
So that in the header you find:
private:
G4THitsMap<G4double>* x_Map;
G4THitsMap<G4double>* x_square_Map;
G4THitsMap<G4double>* EvtMap;
I would greatly appreciate any advice you have on which type of implementation would work best when using multithreaded mode.