Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/Geant4/G4DNAIonElasticModel.hh was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 // Author: H. N. Tran (Ton Duc Thang University)
0027 // p, H, He, He+ and He++ models are assumed identical
0028 // NIMB 343, 132-137 (2015)
0029 //
0030 // The Geant4-DNA web site is available at http://geant4-dna.org
0031 //
0032 
0033 #ifndef G4DNAIonElasticModel_h
0034 #define G4DNAIonElasticModel_h 1
0035 
0036 #include <map>
0037 #include "G4DNACrossSectionDataSet.hh"
0038 #include "G4VEmModel.hh"
0039 #include "G4Proton.hh"
0040 #include "G4DNAGenericIonsManager.hh"
0041 #include "G4ParticleChangeForGamma.hh"
0042 #include "G4LogLogInterpolation.hh"
0043 #include "G4ProductionCutsTable.hh"
0044 #include "G4NistManager.hh"
0045 
0046 class G4DNAIonElasticModel : public G4VEmModel
0047 {
0048 
0049 public:
0050 
0051   G4DNAIonElasticModel (const G4ParticleDefinition* p = nullptr,
0052                         const G4String& nam ="DNAIonElasticModel");
0053 
0054   
0055   ~G4DNAIonElasticModel () override;
0056 
0057   G4DNAIonElasticModel &
0058   operator= (const G4DNAIonElasticModel &right) = delete;
0059   G4DNAIonElasticModel (const G4DNAIonElasticModel&) = delete;
0060 
0061   void
0062   Initialise (const G4ParticleDefinition* particuleDefinition,
0063               const G4DataVector&) override;
0064 
0065   G4double
0066   CrossSectionPerVolume (const G4Material* material,
0067                          const G4ParticleDefinition* p, G4double ekin,
0068                          G4double emin, G4double emax) override;
0069 
0070   void
0071   SampleSecondaries (std::vector<G4DynamicParticle*>*,
0072                      const G4MaterialCutsCouple*, const G4DynamicParticle*,
0073                      G4double tmin, G4double maxEnergy) override;
0074 
0075   void
0076   SetKillBelowThreshold (G4double threshold);
0077 
0078   G4double
0079   GetKillBelowThreshold ()
0080   {
0081     return killBelowEnergy;
0082   }
0083 
0084   inline void SelectStationary(G4bool input); 
0085 
0086 protected:
0087 
0088   G4ParticleChangeForGamma* fParticleChangeForGamma;
0089 
0090 private:
0091 
0092   G4bool statCode;
0093 
0094   // Water density table
0095   const std::vector<G4double>* fpMolWaterDensity;
0096 
0097   G4double killBelowEnergy;
0098   G4double lowEnergyLimit;
0099   G4double highEnergyLimit;
0100   G4bool isInitialised{false};
0101   G4int verboseLevel;
0102 
0103   G4double fParticle_Mass;
0104 
0105   // Cross section
0106   G4DNACrossSectionDataSet* fpTableData;
0107 
0108   // Final state
0109 
0110   G4double
0111   Theta (G4ParticleDefinition * aParticleDefinition, G4double k,
0112          G4double integrDiff);
0113 
0114   G4double
0115   LinLogInterpolate (G4double e1, G4double e2, G4double e, G4double xs1,
0116                      G4double xs2);
0117 
0118   G4double
0119   LogLogInterpolate (G4double e1, G4double e2, G4double e, G4double xs1,
0120                      G4double xs2);
0121 
0122   G4double
0123   QuadInterpolator (G4double e11, G4double e12, G4double e21, G4double e22,
0124                     G4double x11, G4double x12, G4double x21, G4double x22,
0125                     G4double t1, G4double t2, G4double t, G4double e);
0126 
0127   G4double
0128   LinLinInterpolate (G4double e1, G4double e2, G4double e, G4double xs1,
0129                      G4double xs2);
0130 
0131   using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
0132   TriDimensionMap fDiffCrossSectionData;
0133 
0134   std::vector<G4double> eTdummyVec;
0135 
0136   using VecMap = std::map<G4double, std::vector<G4double>>;
0137   VecMap eVecm;
0138 
0139   G4double
0140   RandomizeThetaCM (G4double k, G4ParticleDefinition * aParticleDefinition);
0141 
0142 };
0143 
0144 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
0145 
0146 inline void G4DNAIonElasticModel::SelectStationary (G4bool input)
0147 { 
0148     statCode = input; 
0149 }        
0150 
0151 #endif
0152