G4RKFieldIntegrator.hh

Go to the documentation of this file.
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 #ifndef G4RKFieldIntegrator_h
00027 #define G4RKFieldIntegrator_h 1
00028 
00029 #include "G4FieldPropagation.hh"
00030 
00031 class G4RKFieldIntegrator : public G4FieldPropagation  
00032 {
00033 public:
00034    G4RKFieldIntegrator() {}
00035    G4RKFieldIntegrator(const G4RKFieldIntegrator &):G4FieldPropagation() {}
00036 
00037    ~G4RKFieldIntegrator() {}
00038 
00039    //Operators
00040    const G4RKFieldIntegrator & operator=(const G4RKFieldIntegrator &) {return *this;}
00041    
00042    int operator==(const G4RKFieldIntegrator &) const {return 1;}
00043    int operator!=(const G4RKFieldIntegrator &) const {return 1;}
00044 
00045    // only theActive are propagated, nothing else
00046    // only theSpectators define the field, nothing else
00047    void Transport(G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep);
00048    G4double GetExcitationEnergy(G4int nHitNucleons, const G4KineticTrackVector &theParticles);
00049 
00050    // methods for calculating potentials for different types of particles
00051    void Init(G4int z, G4int a) {theZ = z;  theA = a;} // prepare potentials' functions
00052    
00053    // aPosition is relative to the nucleus center
00054    G4double GetNeutronPotential(G4double radius);
00055    G4double GetNeutronPotential(G4ThreeVector &aPosition) {return GetNeutronPotential(aPosition.mag());}
00056    
00057    G4double GetProtonPotential(G4double radius);
00058    G4double GetProtonPotential(G4ThreeVector &aPosition)  {return GetProtonPotential(aPosition.mag());}
00059    
00060    G4double GetAntiprotonPotential(G4double radius);
00061    G4double GetAntiprotonPotential(G4ThreeVector &aPosition) {return GetAntiprotonPotential(aPosition.mag());};
00062 
00063    G4double GetKaonPotential(G4double radius);
00064    G4double GetKaonPotential(G4ThreeVector &aPosition) {return GetKaonPotential(aPosition.mag());}
00065    
00066    G4double GetPionPotential(G4double radius);
00067    G4double GetPionPotential(G4ThreeVector &aPosition) {return GetPionPotential(aPosition.mag());}
00068       
00069 private:
00070    void Integrate(const G4KineticTrackVector & theActive, G4double theTimeStep);
00071    G4double CalculateTotalEnergy(const G4KineticTrackVector& Barions);
00072    G4double Erf(G4double X);
00073 
00074   // parameters to calculate potentials
00075   G4int theA;
00076   G4int theZ;
00077   
00078   // Vc(A, Z) = 1.44 * Z /(r0*(1 + std::pow(A, 1/3))) 
00079   //          = colomb * Z / (1 + std::pow(A, 1/3))
00080   static const G4double coulomb;       // coulomb barier constant
00081   static const G4double a_kaon;        // kaon's potential constant
00082   static const G4double a_pion;        // pion's potential constant
00083   static const G4double a_antiproton;  // antiproton's potential constant
00084 };
00085 
00086 #endif // G4RKFieldIntegrator_h
00087 
00088 

Generated on Mon May 27 17:49:43 2013 for Geant4 by  doxygen 1.4.7