Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 #ifdef USE_INFERENCE 26 #ifdef USE_INFERENCE 27 # ifndef PAR04MLFASTSIMMODEL_HH << 27 #ifndef PAR04MLFASTSIMMODEL_HH 28 # define PAR04MLFASTSIMMODEL_HH << 28 #define PAR04MLFASTSIMMODEL_HH 29 29 30 # include "G4VFastSimulationModel.hh" // f << 30 #include "G4VFastSimulationModel.hh" >> 31 #include "G4VPhysicalVolume.hh" >> 32 #include "G4ios.hh" >> 33 #include "Par04InferenceSetup.hh" 31 34 32 # include <G4String.hh> // for G4String << 33 # include <G4ThreeVector.hh> // for G4Thre << 34 # include <G4Types.hh> // for G4bool, G4do << 35 # include <memory> // for unique_ptr << 36 # include <vector> // for vector << 37 class G4FastSimHitMaker; 35 class G4FastSimHitMaker; 38 class G4FastStep; << 39 class G4FastHit; << 40 class G4FastTrack; << 41 class G4ParticleDefinition; << 42 class G4Region; << 43 class Par04InferenceSetup; << 44 36 45 /** 37 /** 46 * @brief Inference for the fast simulation mo 38 * @brief Inference for the fast simulation model. 47 * 39 * 48 * Parametrisation of electrons, positrons, an 40 * Parametrisation of electrons, positrons, and gammas. Energy is deposited and 49 * distributed according to ML inference. This 41 * distributed according to ML inference. This class is only a shell that 50 * triggers the inference, asks for values, an 42 * triggers the inference, asks for values, and deposits energies at 51 * given positions. 43 * given positions. 52 * 44 * 53 **/ 45 **/ 54 46 55 class Par04MLFastSimModel : public G4VFastSimu 47 class Par04MLFastSimModel : public G4VFastSimulationModel 56 { 48 { 57 public: << 49 public: 58 Par04MLFastSimModel(G4String, G4Region*); << 50 Par04MLFastSimModel(G4String, G4Region*); 59 Par04MLFastSimModel(G4String); << 51 Par04MLFastSimModel(G4String); 60 ~Par04MLFastSimModel(); << 52 ~Par04MLFastSimModel(); 61 /// There are no kinematics constraints. T << 53 /// There are no kinematics constraints. True is returned. 62 virtual G4bool ModelTrigger(const G4FastTr << 54 virtual G4bool ModelTrigger(const G4FastTrack&) final; 63 /// Model is applicable to electrons, posi << 55 /// Model is applicable to electrons, positrons, and photons. 64 virtual G4bool IsApplicable(const G4Partic << 56 virtual G4bool IsApplicable(const G4ParticleDefinition&) final; 65 /// Take particle out of the full simulati << 57 /// Take particle out of the full simulation (kill it at the entrance 66 /// depositing all the energy). Calculate << 58 /// depositing all the energy). Calculate energy deposited in the detector 67 /// from the NN model inference. << 59 /// from the NN model inference. 68 virtual void DoIt(const G4FastTrack&, G4Fa << 60 virtual void DoIt(const G4FastTrack&, G4FastStep&) final; 69 61 70 private: << 62 private: 71 /// Inference model that is NN aware << 63 /// Inference model that is NN aware 72 Par04InferenceSetup* fInference; << 64 Par04InferenceSetup* fInference; 73 /// Inference model that is NN aware << 65 /// Inference model that is NN aware 74 /// Helper class for creation of hits with << 66 /// Helper class for creation of hits within the sensitive detector 75 std::unique_ptr<G4FastSimHitMaker> fHitMak << 67 std::unique_ptr<G4FastSimHitMaker> fHitMaker; 76 std::unique_ptr<G4FastSimHitMaker> fParall << 68 /// Vector of energy values 77 /// Vector of energy values << 69 std::vector<G4double> fEnergies; 78 std::vector<G4double> fEnergies; << 70 /// Vector of positions corresponding to energy values (const for one NN 79 /// Vector of positions corresponding to e << 71 /// model) 80 /// model) << 72 std::vector<G4ThreeVector> fPositions; 81 std::vector<G4ThreeVector> fPositions; << 82 }; 73 }; 83 # endif /* PAR04INFERENCEMODEL_HH */ << 74 #endif /* PAR04INFERENCEMODEL_HH */ 84 #endif 75 #endif 85 76