Loading...
Searching...
No Matches
Run.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26/// \file scavenger/src/Run.cc
27/// \brief Implementation of the scavenger::Run class
28
29#include "Run.hh"
30#include "G4RunManager.hh"
31#include "G4Event.hh"
32#include "ScoreSpecies.hh"
33#include "G4SDManager.hh"
34#include "G4HCofThisEvent.hh"
35#include "G4THitsMap.hh"
36
37namespace scavenger
38{
39
40//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
41
43 : G4Run(){
45 (G4SDManager::GetSDMpointer()->FindSensitiveDetector("mfDetector"));
46 G4int CollectionIDspecies =
47 G4SDManager::GetSDMpointer()->GetCollectionID("mfDetector/Species");
48 fScorerRun = mfdet->GetPrimitive(CollectionIDspecies);
49}
50
51//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
52
53void Run::RecordEvent(const G4Event *event) {
54 if (event->IsAborted()) {
55 return;
56 }
57 G4int CollectionID =
58 G4SDManager::GetSDMpointer()->GetCollectionID("mfDetector/Species");
59 //Hits collections
60 G4HCofThisEvent *pHCE = event->GetHCofThisEvent();
61 if (!pHCE) {
62 return;
63 }
64 auto evtMap = dynamic_cast<G4THitsMap<G4double> *>(pHCE->GetHC(CollectionID));
65 auto map = evtMap->GetMap();
66 for (const auto &it : *map) {
67 G4double edep = *(it.second);
68 fSumEne += edep;
69 }
70 G4Run::RecordEvent(event);
71}
72
73//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
74
75void Run::Merge(const G4Run *aRun) {
76 if (aRun == this) {
77 return;
78 }
79 const auto localRun = dynamic_cast<const Run *>(aRun);
80 fSumEne += localRun->fSumEne;
81 auto masterScorer = dynamic_cast<ScoreSpecies *>(this->fScorerRun);
82 auto localScorer = dynamic_cast<ScoreSpecies *>(localRun->fScorerRun);
83 masterScorer->AbsorbResultsFromWorkerScorer(localScorer);
84 G4Run::Merge(aRun);
85}
86
87//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
88
89}
Definition of the scavenger::ScoreSpecies class.
Collects information event per event from the hits collections.
G4VPrimitiveScorer * fScorerRun
Definition Run.hh:58
G4double fSumEne
Definition Run.hh:57
void Merge(const G4Run *) override
Definition Run.cc:75
void RecordEvent(const G4Event *) override
Definition Run.cc:53
Primitive scorer class for scoring the radiolytic species produced after irradiation in a water volum...
void AbsorbResultsFromWorkerScorer(G4VPrimitiveScorer *)
Method used in multithreading mode in order to merge the results.

Applications | User Support | Publications | Collaboration