Geant4 Cross Reference |
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 // G4UserEventAction 27 // 28 // Class description: 29 // 30 // This is the base class of one of the user's optional action classes. 31 // The two methods BeginOfEventAction() and EndOfEventAction() are invoked 32 // at the beginning and the end of one event processing. These methods are 33 // invoked by G4EventManager. 34 // Be aware that BeginOfEventAction() is invoked when a G4Event object is 35 // sent to G4EventManager. Thus the primary vertexes/particles have already 36 // been made by the primary generator. In case the user wants to do something 37 // before generating primaries (i.e., store random number status), do it in 38 // the G4VUserPrimaryGeneratorAction concrete class 39 40 // Author: Makoto Asai (SLAC) 41 // Adding MergeSubEvent - Sep/11/2023 Makoto Asai (JLab) 42 // -------------------------------------------------------------------- 43 #ifndef G4UserEventAction_hh 44 #define G4UserEventAction_hh 1 45 46 class G4EventManager; 47 class G4Event; 48 49 class G4UserEventAction 50 { 51 public: 52 53 G4UserEventAction(); 54 virtual ~G4UserEventAction() = default; 55 virtual void SetEventManager(G4EventManager* value); 56 57 virtual void BeginOfEventAction(const G4Event* anEvent); 58 virtual void EndOfEventAction(const G4Event* anEvent); 59 // Two virtual method the user can override. 60 61 virtual void MergeSubEvent(G4Event* masterEvent, const G4Event* subEvent); 62 // A virtual method to merge the results of a sub-event into the master 63 // event. The ownership of "subEvent" and its contents blong to the 64 // worker thread. 65 // Merging trajectories and scores are taken care by G4Event and 66 // G4ScoringManager so the user does not need to take care of them. 67 // But merging hits collections and UserEventInformation must be taken 68 // care by this method. 69 // This method is invoked only for the case of sub-event parallelism. 70 71 protected: 72 73 G4EventManager* fpEventManager = nullptr; // not owned 74 }; 75 76 #endif 77