00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at http://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // INCL++ intra-nuclear cascade model 00027 // Pekka Kaitaniemi, CEA and Helsinki Institute of Physics 00028 // Davide Mancusi, CEA 00029 // Alain Boudard, CEA 00030 // Sylvie Leray, CEA 00031 // Joseph Cugnon, University of Liege 00032 // 00033 #define INCLXX_IN_GEANT4_MODE 1 00034 00035 #include "globals.hh" 00036 00037 #ifndef G4INCLConfig_hh 00038 #define G4INCLConfig_hh 1 00039 00040 #include "G4INCLParticleSpecies.hh" 00041 #include "G4INCLConfigEnums.hh" 00042 #include "G4INCLIRandomGenerator.hh" 00043 #include <iostream> 00044 #include <string> 00045 #include <sstream> 00046 00047 namespace G4INCL { 00048 00056 class Config { 00057 public: 00059 Config(); 00060 00065 Config(G4int, G4int, ParticleSpecies, G4double); 00066 00073 Config(G4int argc, char *argv[], G4bool isFullRun); 00074 00076 ~Config(); 00077 00079 void init(); 00080 00082 std::string summary(); 00083 00085 G4int getVerbosity() const { return verbosity; } 00086 00088 std::string const &getCalculationTitle() const { return title; } 00089 00091 std::string const &getOutputFileRoot() const { return outputFileRoot; } 00092 00094 G4int getNumberOfShots() const { return nShots; } 00095 00097 G4bool isNaturalTarget() const { return naturalTarget; } 00098 00104 G4int getTargetA() const { return targetSpecies.theA; } 00105 00107 G4int getTargetZ() const { return targetSpecies.theZ; } 00108 00110 void setTargetA(G4int A) { targetSpecies.theA = A; } 00111 00113 void setTargetZ(G4int Z) { targetSpecies.theZ = Z; } 00114 00116 ParticleType getProjectileType() const { return projectileSpecies.theType; } 00117 00119 ParticleSpecies getProjectileSpecies() const { return projectileSpecies; } 00120 00122 void setProjectileSpecies(ParticleSpecies const &ps) { projectileSpecies=ps; } 00123 00125 G4float getProjectileKineticEnergy() const { return projectileKineticEnergy; } 00126 00128 void setProjectileKineticEnergy(G4float const kinE) { projectileKineticEnergy=kinE; } 00129 00131 G4int getVerboseEvent() const { return verboseEvent; } 00132 00134 static std::string const getVersionID(); 00135 00137 SeedVector const getRandomSeeds() const { 00138 SeedVector s; 00139 s.push_back(randomSeed1); 00140 s.push_back(randomSeed2); 00141 return s; 00142 } 00143 00145 PauliType getPauliType() const { return pauliType; } 00146 00148 G4bool getCDPP() const { return CDPP; } 00149 00151 G4bool getPionPotential() const { return pionPotential; } 00152 00154 CoulombType getCoulombType() const { return coulombType; } 00155 00157 PotentialType getPotentialType() const { return potentialType; } 00158 00160 void setPotentialType(PotentialType type) { potentialType = type; } 00161 00163 void setPionPotential(const G4bool pionPot) { pionPotential = pionPot; } 00164 00166 LocalEnergyType getLocalEnergyBBType() const { return localEnergyBBType; } 00167 00169 LocalEnergyType getLocalEnergyPiType() const { return localEnergyPiType; } 00170 00172 void setLocalEnergyBBType(const LocalEnergyType t) { localEnergyBBType=t; } 00173 00175 void setLocalEnergyPiType(const LocalEnergyType t) { localEnergyPiType=t; } 00176 00178 std::string const &getLogFileName() const { return logFileName; } 00179 00181 DeExcitationType getDeExcitationType() const { return deExcitationType; } 00182 00184 ClusterAlgorithmType getClusterAlgorithm() const { return clusterAlgorithmType; } 00185 00187 G4int getClusterMaxMass() const { return clusterMaxMass; } 00188 00190 void setClusterMaxMass(const G4int m){ clusterMaxMass=m; } 00191 00193 G4bool getBackToSpectator() const { return backToSpectator; } 00194 00196 G4bool getUseRealMasses() const { return useRealMasses; } 00197 00199 void setUseRealMasses(G4bool use) { useRealMasses = use; } 00200 00202 std::string const echo() const; 00203 00204 std::string const &getINCLXXDataFilePath() const { 00205 return INCLXXDataFilePath; 00206 } 00207 00208 #ifdef INCL_DEEXCITATION_ABLAXX 00209 std::string const &getABLAv3pCxxDataFilePath() const { 00210 return ablav3pCxxDataFilePath; 00211 } 00212 #endif 00213 00214 #ifdef INCL_DEEXCITATION_ABLA07 00215 std::string const &getABLA07DataFilePath() const { 00216 return abla07DataFilePath; 00217 } 00218 #endif 00219 #ifdef INCL_DEEXCITATION_GEMINIXX 00220 std::string const &getGEMINIXXDataFilePath() const { 00221 return geminixxDataFilePath; 00222 } 00223 #endif 00224 00225 G4double getImpactParameter() const { return impactParameter; } 00226 00228 SeparationEnergyType getSeparationEnergyType() const { return separationEnergyType; } 00229 00230 private: 00231 G4int verbosity; 00232 std::string inputFileName; 00233 std::string title; 00234 std::string outputFileRoot; 00235 std::string logFileName; 00236 00237 G4int nShots; 00238 00239 std::string targetString; 00240 ParticleSpecies targetSpecies; 00241 G4bool naturalTarget; 00242 00243 std::string projectileString; 00244 ParticleSpecies projectileSpecies; 00245 G4float projectileKineticEnergy; 00246 00247 G4int verboseEvent; 00248 00249 G4int randomSeed1, randomSeed2; 00250 00251 std::string pauliString; 00252 PauliType pauliType; 00253 G4bool CDPP; 00254 00255 std::string coulombString; 00256 CoulombType coulombType; 00257 00258 std::string potentialString; 00259 PotentialType potentialType; 00260 G4bool pionPotential; 00261 00262 std::string localEnergyBBString; 00263 LocalEnergyType localEnergyBBType; 00264 00265 std::string localEnergyPiString; 00266 LocalEnergyType localEnergyPiType; 00267 00268 std::string deExcitationString; 00269 DeExcitationType deExcitationType; 00270 #ifdef INCL_DEEXCITATION_ABLAXX 00271 std::string ablav3pCxxDataFilePath; 00272 #endif 00273 #ifdef INCL_DEEXCITATION_ABLA07 00274 std::string abla07DataFilePath; 00275 #endif 00276 #ifdef INCL_DEEXCITATION_GEMINIXX 00277 std::string geminixxDataFilePath; 00278 #endif 00279 std::string INCLXXDataFilePath; 00280 00281 std::string clusterAlgorithmString; 00282 ClusterAlgorithmType clusterAlgorithmType; 00283 00284 G4int clusterMaxMass; 00285 00286 G4bool backToSpectator; 00287 00288 G4bool useRealMasses; 00289 00290 G4double impactParameter; 00291 00292 std::string separationEnergyString; 00293 SeparationEnergyType separationEnergyType; 00294 00295 }; 00296 00297 } 00298 00299 #endif