Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-31 09:21:59

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 //
0027 //
0028 /// \file ParametersParser.hh
0029 /// \brief Definition of the ParametersParser class
0030 
0031 #ifndef ParametersParser_h
0032 #define ParametersParser_h 1
0033 #include <string>
0034 class ParametersParser
0035 {
0036 public:
0037     static ParametersParser* Instance();
0038     ~ParametersParser() = default;
0039     void LoadParameters(const std::string &fileName);
0040     std::string GetTLKLambda1() {return TLKLambda1;}
0041     std::string GetTLKLambda2() {return TLKLambda2;}
0042     std::string GetTLKBeta1() {return TLKBeta1;}
0043     std::string GetTLKBeta2() {return TLKBeta2;}
0044     std::string GetTLKEta() {return TLKEta;}
0045     std::string GetTLKdoseMax() {return TLKdoseMax;}
0046     std::string GetTLKdeltaDose() {return TLKdeltaDose;}
0047     std::string GetEMIVLoopLength() {return LEMIVLoopLength;}
0048     std::string GetEMIVNi() {return LEMIVNi;}
0049     std::string GetEMIVNc() {return LEMIVNc;}
0050     std::string GetEMIVNDSB() {return LEMIVNDSB;}
0051     std::string GetEMIVFunrej() {return LEMIVFunrej;}
0052     std::string GetEMIVTFast() {return LEMIVTfast;}
0053     std::string GetEMIVTSlow() {return LEMIVTslow;}
0054     std::string GetLEMtimeMax() {return LEMIVtimeMax;}
0055     std::string GetLEMdeltaTime() {return LEMIVdeltaTime;}
0056     std::string GetBELOVNirrep() {return BELOVNirrep;}
0057     std::string GetBELOVDz() {return BELOVDz;}
0058     std::string GetThresholdE() {return fThresholdE;}
0059     std::string GetProbabilityForIndirectSB() {return fProbabilityForIndirectSB;}
0060     std::string GetParticleName() {return fParticleName;}
0061     float GetParticleEnergy() {return fParticleEnergy;}
0062     std::string GetEnergyUnit() {return fEnergyUnit;}
0063     std::string GetEndTimeForChemReactions() {return fEndTimeForChemReactions;}
0064     int GetNumberOfParticles() {return fNumberOfParticles;}
0065     int GetBpForDSB() {return BpForDSB;}
0066     bool UseTLK();
0067     bool UseLEMIV();
0068     bool UseBelov();
0069     bool WannaLoadDamagesFromSDD() {return fLoadDamagesFromSDD;}
0070     std::string GetOutputName() {return fOutputName;};
0071     std::string GetSDDFileName() {return fSDDfileName;};
0072     std::string GetCellNucleusName() {return fCellNucleusName;};
0073     int GetUnitTypeOfNormalization() {return fUnitOfNormalization;}
0074     bool WannaSkipScanningIndirectDamage() {return fSkipScanningIndirectDamage;}
0075 private:
0076     explicit ParametersParser();
0077     static ParametersParser* fInstance;
0078     std::string fOutputName{"Output.dat"};
0079     std::string fSDDfileName{""};
0080     std::string fCellNucleusName{"Undefined"};
0081     std::string fThresholdE{""};
0082     std::string fProbabilityForIndirectSB{""};
0083     // num of bp to consider a DSB for the MakeCluster function default value is 10
0084     int BpForDSB{0}; 
0085     // TLK parameters
0086     std::string useTLK{"true"};
0087     // simple DSB repair probability (h-1)  
0088     std::string TLKLambda1{""};
0089     // complex DSB repair probability (h-1) 
0090     std::string TLKLambda2{""};
0091     // simple DSB misrepair probability (h-1)
0092     std::string TLKBeta1{""};
0093     // complex DSB misrepair probability (h-1)
0094     std::string TLKBeta2{""};
0095     // binary misrepair probability (h-1)
0096     std::string TLKEta{""};
0097     std::string TLKdoseMax{""}, TLKdeltaDose{""};
0098 
0099     // LEMIV parameters
0100     std::string useLEMIV{"true"};
0101     std::string LEMIVLoopLength{""}; // length of the loop in Mbp, 
0102     //isolated DSB yield in Gy-1
0103     std::string LEMIVNi{""};
0104     //clustered DSB yield in Gy-1
0105     std::string LEMIVNc{""};
0106     // DSB yield in Gy-1
0107     std::string LEMIVNDSB{""};
0108     std::string LEMIVFunrej{""};
0109     // constant time in h-1
0110     std::string LEMIVTfast{""};
0111     std::string LEMIVTslow{""};
0112     std::string LEMIVtimeMax{""}, LEMIVdeltaTime{""};
0113 
0114     // BELOV parameters
0115     std::string useBELOV{"false"};
0116     std::string BELOVNirrep{""};
0117     std::string BELOVDz{""};
0118 
0119     // source info
0120     std::string fParticleName{""};
0121     float fParticleEnergy{0};
0122     std::string fEnergyUnit{""};
0123     int fNumberOfParticles{0};
0124 
0125     std::string fEndTimeForChemReactions{""};
0126 
0127     bool fLoadDamagesFromSDD{false};
0128     int fUnitOfNormalization{1}; // unit type for normization: 2 : [Gy-1]; 1: [Gy-1 * Gbp-1]
0129     bool fSkipScanningIndirectDamage{false};
0130 };
0131 
0132 #endif