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 #ifdef USE_INFERENCE 27 # ifndef PAR04MLFASTSIMMODEL_HH 28 # define PAR04MLFASTSIMMODEL_HH 29 30 # include "G4VFastSimulationModel.hh" // for G4VFastSimulationModel 31 32 # include <G4String.hh> // for G4String 33 # include <G4ThreeVector.hh> // for G4ThreeVector 34 # include <G4Types.hh> // for G4bool, G4double 35 # include <memory> // for unique_ptr 36 # include <vector> // for vector 37 class G4FastSimHitMaker; 38 class G4FastStep; 39 class G4FastHit; 40 class G4FastTrack; 41 class G4ParticleDefinition; 42 class G4Region; 43 class Par04InferenceSetup; 44 45 /** 46 * @brief Inference for the fast simulation model. 47 * 48 * Parametrisation of electrons, positrons, and gammas. Energy is deposited and 49 * distributed according to ML inference. This class is only a shell that 50 * triggers the inference, asks for values, and deposits energies at 51 * given positions. 52 * 53 **/ 54 55 class Par04MLFastSimModel : public G4VFastSimulationModel 56 { 57 public: 58 Par04MLFastSimModel(G4String, G4Region*); 59 Par04MLFastSimModel(G4String); 60 ~Par04MLFastSimModel(); 61 /// There are no kinematics constraints. True is returned. 62 virtual G4bool ModelTrigger(const G4FastTrack&) final; 63 /// Model is applicable to electrons, positrons, and photons. 64 virtual G4bool IsApplicable(const G4ParticleDefinition&) final; 65 /// Take particle out of the full simulation (kill it at the entrance 66 /// depositing all the energy). Calculate energy deposited in the detector 67 /// from the NN model inference. 68 virtual void DoIt(const G4FastTrack&, G4FastStep&) final; 69 70 private: 71 /// Inference model that is NN aware 72 Par04InferenceSetup* fInference; 73 /// Inference model that is NN aware 74 /// Helper class for creation of hits within the sensitive detector 75 std::unique_ptr<G4FastSimHitMaker> fHitMaker; 76 std::unique_ptr<G4FastSimHitMaker> fParallelHitMaker; 77 /// Vector of energy values 78 std::vector<G4double> fEnergies; 79 /// Vector of positions corresponding to energy values (const for one NN 80 /// model) 81 std::vector<G4ThreeVector> fPositions; 82 }; 83 # endif /* PAR04INFERENCEMODEL_HH */ 84 #endif 85