27#ifndef PAR04INFEERENCESETUP_HH
28#define PAR04INFEERENCESETUP_HH
30#include "CLHEP/Units/SystemOfUnits.h"
31#include "G4ThreeVector.hh"
33#include <G4SystemOfUnits.hh>
64 G4bool IfTrigger(G4double aEnergy);
68 inline void SetMeshSize(
const G4ThreeVector &aSize) { fMeshSize = aSize; };
72 inline G4ThreeVector GetMeshSize()
const {
return fMeshSize; };
76 inline void SetMeshNumber(
const G4ThreeVector &aSize) {
82 inline G4ThreeVector GetMeshNumber()
const {
return fMeshNumber; };
84 inline void SetSizeConditionVector(G4int aNumber) {
85 fSizeConditionVector = aNumber;
88 inline G4int GetSizeConditionVector()
const {
return fSizeConditionVector; };
90 inline void SetSizeLatentVector(G4int aNumber) {
91 fSizeLatentVector = aNumber;
94 inline G4int GetSizeLatentVector()
const {
return fSizeLatentVector; };
96 inline void SetModelPathName(
G4String aName) { fModelPathName = aName; };
98 inline G4String GetModelPathName()
const {
return fModelPathName; };
100 inline void SetProfileFlag(G4int aNumber) { fProfileFlag = aNumber; };
102 inline G4int GetProfileFlag()
const {
return fProfileFlag; };
104 inline void SetOptimizationFlag(G4int aNumber) {
105 fOptimizationFlag = aNumber;
108 inline G4int GetOptimizationFlag()
const {
return fOptimizationFlag; };
110 inline G4String GetInferenceLibrary()
const {
return fInferenceLibrary; };
113 void SetInferenceLibrary(
G4String aName);
115 void CheckInferenceLibrary();
117 inline void SetMeshNbOfCells(G4ThreeVector aNb) { fMeshNumber = aNb; };
120 inline void SetMeshNbOfCells(G4int aIndex, G4double aNb) {
121 fMeshNumber[aIndex] = aNb;
124 inline G4ThreeVector GetMeshNbOfCells()
const {
return fMeshNumber; };
126 inline void SetMeshSizeOfCells(G4ThreeVector aNb) { fMeshSize = aNb; };
129 inline void SetMeshSizeOfCells(G4int aIndex, G4double aNb) {
130 fMeshSize[aIndex] = aNb;
133 inline G4ThreeVector GetMeshSizeOfCells()
const {
return fMeshSize; };
136 inline void SetCudaFlag(G4int aNumber) { fCudaFlag = aNumber; };
137 inline G4int GetCudaFlag()
const {
return fCudaFlag; };
140 inline void SetCudaDeviceId(
G4String aNumber) { fCudaDeviceId = aNumber; };
141 inline G4String GetCudaDeviceId()
const {
return fCudaDeviceId; };
142 inline void SetCudaGpuMemLimit(
G4String aNumber) {
143 fCudaGpuMemLimit = aNumber;
145 inline G4String GetCudaGpuMemLimit()
const {
return fCudaGpuMemLimit; };
146 inline void SetCudaArenaExtendedStrategy(
G4String aNumber) {
147 fCudaArenaExtendedStrategy = aNumber;
149 inline G4String GetCudaArenaExtendedStrategy()
const {
150 return fCudaArenaExtendedStrategy;
152 inline void SetCudaCudnnConvAlgoSearch(
G4String aNumber) {
153 fCudaCudnnConvAlgoSearch = aNumber;
155 inline G4String GetCudaCudnnConvAlgoSearch()
const {
156 return fCudaCudnnConvAlgoSearch;
158 inline void SetCudaDoCopyInDefaultStream(
G4String aNumber) {
159 fCudaDoCopyInDefaultStream = aNumber;
161 inline G4String GetCudaDoCopyInDefaultStream()
const {
162 return fCudaDoCopyInDefaultStream;
164 inline void SetCudaCudnnConvUseMaxWorkspace(
G4String aNumber) {
165 fCudaCudnnConvUseMaxWorkspace = aNumber;
167 inline G4String GetCudaCudnnConvUseMaxWorkspace()
const {
168 return fCudaCudnnConvUseMaxWorkspace;
175 void GetEnergies(std::vector<G4double> &aEnergies, G4double aParticleEnergy,
176 G4float aInitialAngle);
186 void GetPositions(std::vector<G4ThreeVector> &aDepositsPositions,
187 G4ThreeVector aParticlePosition,
188 G4ThreeVector aParticleDirection);
195 G4ThreeVector fMeshSize =
196 G4ThreeVector(2.325 * CLHEP::mm, 1, 3.4 * CLHEP::mm);
200 G4ThreeVector fMeshNumber = G4ThreeVector(18, 50, 45);
202 std::unique_ptr<Par04InferenceInterface> fInferenceInterface;
206 float fMaxEnergy = 1024000.0;
208 float fMaxAngle = 90.0;
210 G4String fInferenceLibrary =
"ONNX";
212 G4int fSizeLatentVector = 10;
214 G4int fSizeConditionVector = 4;
216 G4String fModelPathName =
"MLModels/Generator.onnx";
219 G4bool fProfileFlag =
false;
221 G4bool fOptimizationFlag =
false;
223 G4String fModelSavePath =
"MLModels/Optimized-Generator.onnx";
225 G4String fProfilingOutputSavePath =
"opt.json";
227 G4int fIntraOpNumThreads = 1;
230 G4bool fCudaFlag =
false;
234 G4String fCudaGpuMemLimit =
"2147483648";
235 G4String fCudaArenaExtendedStrategy =
"kSameAsRequested";
236 G4String fCudaCudnnConvAlgoSearch =
"DEFAULT";
237 G4String fCudaDoCopyInDefaultStream =
"1";
238 G4String fCudaCudnnConvUseMaxWorkspace =
"1";
239 std::vector<const char *> cuda_keys{
242 "arena_extend_strategy",
243 "cudnn_conv_algo_search",
244 "do_copy_in_default_stream",
245 "cudnn_conv_use_max_workspace",
247 std::vector<const char *> cuda_values{
248 fCudaDeviceId.c_str(),
249 fCudaGpuMemLimit.c_str(),
250 fCudaArenaExtendedStrategy.c_str(),
251 fCudaCudnnConvAlgoSearch.c_str(),
252 fCudaDoCopyInDefaultStream.c_str(),
253 fCudaCudnnConvUseMaxWorkspace.c_str(),