Import Geant4 6.0.0 source tree
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4Absorber_hh
|
||||
#define G4Absorber_hh
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4KineticTrackVector.hh"
|
||||
|
||||
class G4KineticTrack;
|
||||
|
||||
class G4Absorber
|
||||
{
|
||||
public:
|
||||
G4Absorber(G4double cutOnP);
|
||||
~G4Absorber();
|
||||
|
||||
G4bool WillBeAbsorbed(const G4KineticTrack & kt);
|
||||
G4bool Absorb(G4KineticTrack & kt, G4KineticTrackVector & tgt);
|
||||
G4KineticTrackVector * GetAbsorbers();
|
||||
G4KineticTrackVector * GetProducts();
|
||||
G4bool FindAbsorbers(G4KineticTrack & kt, G4KineticTrackVector & tgt);
|
||||
G4bool FindProducts(G4KineticTrack & kt);
|
||||
|
||||
|
||||
private:
|
||||
G4double theCutOnP;
|
||||
G4KineticTrackVector * theAbsorbers;
|
||||
G4KineticTrackVector * theProducts;
|
||||
|
||||
G4ThreeVector GetRandomDirection();
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
inline G4KineticTrackVector * G4Absorber::GetAbsorbers()
|
||||
{
|
||||
return theAbsorbers;
|
||||
}
|
||||
|
||||
inline G4KineticTrackVector * G4Absorber::GetProducts()
|
||||
{
|
||||
return theProducts;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4AntiProtonField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4AntiProtonField_h
|
||||
#define G4AntiProtonField_h 1
|
||||
|
||||
//#include "globals.hh"
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4AntiProtonField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4AntiProtonField(G4V3DNucleus * nucleus, G4double coeff = 1.53*fermi);
|
||||
virtual ~G4AntiProtonField();
|
||||
|
||||
private:
|
||||
G4AntiProtonField(const G4AntiProtonField &right);
|
||||
const G4AntiProtonField & operator=(const G4AntiProtonField & right);
|
||||
int operator==(const G4AntiProtonField & right) const;
|
||||
int operator!=(const G4AntiProtonField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4BinaryCascade.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 8 June 2000
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef G4BinaryCascade_hh
|
||||
#define G4BinaryCascade_hh
|
||||
|
||||
#include "G4VIntraNuclearTransportModel.hh"
|
||||
#include "G4ReactionProductVector.hh"
|
||||
#include "G4KineticTrackVector.hh"
|
||||
#include "G4ListOfCollisions.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
#include "G4Fancy3DNucleus.hh"
|
||||
#include "G4Fragment.hh"
|
||||
#include "G4VFieldPropagation.hh"
|
||||
#include "G4VScatterer.hh"
|
||||
#include "G4LorentzVector.hh"
|
||||
#include "G4LorentzRotation.hh"
|
||||
|
||||
#include "G4BCDecay.hh"
|
||||
#include "G4BCAction.hh"
|
||||
|
||||
class G4CollisionManager;
|
||||
|
||||
class G4Track;
|
||||
class G4KineticTrack;
|
||||
class G43DNucleus;
|
||||
|
||||
class G4BinaryCascade : public G4VIntraNuclearTransportModel
|
||||
{
|
||||
public:
|
||||
|
||||
G4BinaryCascade();
|
||||
G4BinaryCascade(const G4BinaryCascade & right);
|
||||
|
||||
virtual ~G4BinaryCascade();
|
||||
|
||||
const G4BinaryCascade& operator=(G4BinaryCascade & right);
|
||||
G4int operator==(G4BinaryCascade& right) {return (this == &right);}
|
||||
G4int operator!=(G4BinaryCascade& right) {return (this != &right);}
|
||||
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& theNucleus);
|
||||
virtual G4ReactionProductVector * Propagate(G4KineticTrackVector * secondaries,
|
||||
G4V3DNucleus * nucleus);
|
||||
|
||||
private:
|
||||
|
||||
G4int GetTotalCharge(std::vector<G4KineticTrack *> & aV)
|
||||
{
|
||||
G4int result = 0;
|
||||
std::vector<G4KineticTrack *>::iterator i;
|
||||
for(i = aV.begin(); i != aV.end(); ++i)
|
||||
{
|
||||
if((*i)->GetDefinition() == G4Proton::Proton())
|
||||
{
|
||||
++result;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
void PrintWelcomeMessage();
|
||||
void BuildTargetList();
|
||||
void FindCollisions(G4KineticTrackVector * secondaries);
|
||||
G4bool ApplyCollision(G4CollisionInitialState * collision);
|
||||
G4bool Capture(G4bool verbose=false);
|
||||
G4bool Absorb();
|
||||
G4bool CheckPauliPrinciple(G4KineticTrackVector * products);
|
||||
G4double GetExcitationEnergy();
|
||||
G4bool CheckDecay(G4KineticTrackVector * products);
|
||||
void CorrectFinalPandE();
|
||||
void UpdateTracksAndCollisions(G4KineticTrackVector * oldSecondaries,
|
||||
G4KineticTrackVector * oldTarget,
|
||||
G4KineticTrackVector * newSecondaries);
|
||||
G4bool DoTimeStep(G4double timeStep);
|
||||
G4KineticTrackVector* CorrectBarionsOnBoundary(G4KineticTrackVector *in,
|
||||
G4KineticTrackVector *out);
|
||||
G4Fragment * FindFragments();
|
||||
void StepParticlesOut();
|
||||
G4LorentzVector GetFinal4Momentum();
|
||||
G4LorentzVector GetFinalNucleusMomentum();
|
||||
G4ReactionProductVector * Propagate1H1(G4KineticTrackVector * secondaries,
|
||||
G4V3DNucleus * nucleus);
|
||||
G4double GetIonMass(G4int Z, G4int A);
|
||||
|
||||
// utility methods
|
||||
G4ThreeVector GetSpherePoint(G4double r, const G4LorentzVector & momentumdirection);
|
||||
void ClearAndDestroy(G4KineticTrackVector * ktv);
|
||||
void ClearAndDestroy(G4ReactionProductVector * rpv);
|
||||
|
||||
// for debugging purpose
|
||||
void PrintKTVector(G4KineticTrackVector * ktv, std::string comment=std::string(""));
|
||||
|
||||
private:
|
||||
G4KineticTrackVector theProjectileList;
|
||||
G4KineticTrackVector theTargetList;
|
||||
G4KineticTrackVector theSecondaryList;
|
||||
G4KineticTrackVector theCapturedList;
|
||||
G4KineticTrackVector theFinalState;
|
||||
|
||||
G4ExcitationHandler * theExcitationHandler;
|
||||
G4CollisionManager * theCollisionMgr;
|
||||
|
||||
std::vector<G4BCAction *> theImR;
|
||||
G4VFieldPropagation * thePropagator;
|
||||
G4double theCurrentTime;
|
||||
G4double theCutOnP;
|
||||
G4double theCutOnPAbsorb;
|
||||
G4LorentzVector theInitial4Mom;
|
||||
G4int currentA, currentZ;
|
||||
G4double massInNucleus;
|
||||
G4LorentzRotation precompoundLorentzboost;
|
||||
G4double theOuterRadius;
|
||||
G4bool thePrimaryEscape;
|
||||
G4ParticleDefinition * thePrimaryType;
|
||||
G4ThreeVector theMomentumTransfer;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4BinaryLightIonReaction_h
|
||||
#define G4BinaryLightIonReaction_h
|
||||
|
||||
#include "G4BinaryCascade.hh"
|
||||
#include "G4PreCompoundModel.hh"
|
||||
#include "G4HadFinalState.hh"
|
||||
#include "G4ExcitationHandler.hh"
|
||||
|
||||
class G4BinaryLightIonReaction : public G4HadronicInteraction
|
||||
{
|
||||
public:
|
||||
G4BinaryLightIonReaction();
|
||||
virtual ~G4BinaryLightIonReaction(){}
|
||||
G4HadFinalState* ApplyYourself(const G4HadProjectile& aTrack,
|
||||
G4Nucleus& theNucleus);
|
||||
|
||||
private:
|
||||
G4BinaryCascade theModel;
|
||||
G4ExcitationHandler theHandler;
|
||||
G4PreCompoundModel theProjectileFragmentation;
|
||||
G4HadFinalState theResult;
|
||||
G4bool EnergyAndMomentumCorrector(G4ReactionProductVector* products,
|
||||
G4LorentzVector& TotalCollisionMom);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4FieldPropagation_h
|
||||
#define G4FieldPropagation_h 1
|
||||
|
||||
#include "G4KineticTrackVector.hh"
|
||||
|
||||
class G4FieldPropagation
|
||||
{
|
||||
public:
|
||||
G4FieldPropagation() {}
|
||||
G4FieldPropagation(const G4FieldPropagation &) {}
|
||||
|
||||
virtual ~G4FieldPropagation() {}
|
||||
|
||||
// Operators
|
||||
const G4FieldPropagation & operator=(const G4FieldPropagation &right);
|
||||
|
||||
int operator==(const G4FieldPropagation &right) const;
|
||||
int operator!=(const G4FieldPropagation &right) const;
|
||||
|
||||
// Methods
|
||||
|
||||
// only theActive are propagated, nothing else
|
||||
// only theSpectators define the field, nothing else
|
||||
virtual void Transport(G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep) = 0;
|
||||
|
||||
virtual G4double GetExcitationEnergy(G4int nHit, const G4KineticTrackVector &theParticles) = 0;
|
||||
|
||||
// methods for calculating potentials for different types of particles
|
||||
virtual void Init(G4int z, G4int a) = 0; // prepare potentials' functions
|
||||
|
||||
// aPosition is relative to the nucleus center
|
||||
virtual G4double GetNeutronPotential(G4double radius) = 0;
|
||||
virtual G4double GetNeutronPotential(G4ThreeVector &aPosition) = 0;
|
||||
|
||||
virtual G4double GetProtonPotential(G4double radius) = 0;
|
||||
virtual G4double GetProtonPotential(G4ThreeVector &aPosition) = 0;
|
||||
|
||||
virtual G4double GetAntiprotonPotential(G4double radius) = 0;
|
||||
virtual G4double GetAntiprotonPotential(G4ThreeVector &aPosition) = 0;
|
||||
|
||||
virtual G4double GetKaonPotential(G4double radius) = 0;
|
||||
virtual G4double GetKaonPotential(G4ThreeVector &aPosition) = 0;
|
||||
|
||||
virtual G4double GetPionPotential(G4double radius) = 0;
|
||||
virtual G4double GetPionPotential(G4ThreeVector &aPosition) = 0;
|
||||
};
|
||||
|
||||
#endif // G4FieldPropagation_h
|
||||
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#ifndef G4GeneratorPrecompoundInterface_h
|
||||
#define G4GeneratorPrecompoundInterface_h 1
|
||||
|
||||
#include "G4Fancy3DNucleus.hh"
|
||||
#include "G4Nucleon.hh"
|
||||
#include "G4Nucleus.hh"
|
||||
#include "G4VIntraNuclearTransportModel.hh"
|
||||
#include "G4KineticTrackVector.hh"
|
||||
#include "G4FragmentVector.hh"
|
||||
#include "G4ReactionProductVector.hh"
|
||||
#include "G4ReactionProduct.hh"
|
||||
|
||||
// Class Description
|
||||
// Trivial implementation of an intra-nuclear transport. It pworvides coupling
|
||||
// of high energy generators with pre equilibrium decay models.
|
||||
// To be used in your physics list in case you need this physics.
|
||||
// Class Description - End
|
||||
|
||||
class G4GeneratorPrecompoundInterface : public G4VIntraNuclearTransportModel
|
||||
{
|
||||
public:
|
||||
G4GeneratorPrecompoundInterface(){}
|
||||
~G4GeneratorPrecompoundInterface(){}
|
||||
|
||||
private:
|
||||
G4int operator==(G4GeneratorPrecompoundInterface& right) {return (this == &right);}
|
||||
G4int operator!=(G4GeneratorPrecompoundInterface& right) {return (this != &right);}
|
||||
|
||||
public:
|
||||
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus );
|
||||
G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus);
|
||||
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif // G4GeneratorPrecompoundInterface_h
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4KM_DummyField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4KM_DummyField_hh
|
||||
#define G4KM_DummyField_hh
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4MagneticField.hh"
|
||||
|
||||
class G4KM_DummyField : public G4MagneticField
|
||||
{
|
||||
public:
|
||||
|
||||
G4KM_DummyField() { }
|
||||
~G4KM_DummyField() { }
|
||||
|
||||
virtual void GetFieldValue(const G4double [], G4double * ) const { }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4KM_NucleonEqRhs.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4KM_NucleonEqRhs_hh
|
||||
#define G4KM_NucleonEqRhs_hh
|
||||
|
||||
#include "globals.hh"
|
||||
//#include "G4EquationOfMotion.hh"
|
||||
#include "G4Mag_EqRhs.hh"
|
||||
#include "G4KM_DummyField.hh" // needed by G4Mag_EqRhs constructor.
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
//class G4KM_NucleonEqRhs : public G4EquationOfMotion // I'd like
|
||||
class G4KM_NucleonEqRhs : public G4Mag_EqRhs
|
||||
{
|
||||
|
||||
public:
|
||||
G4KM_NucleonEqRhs(G4KM_DummyField *field, G4V3DNucleus * nucleus);
|
||||
~G4KM_NucleonEqRhs();
|
||||
|
||||
virtual void EvaluateRhsGivenB(const G4double y[], const G4double B[3],
|
||||
G4double dydx[]) const;
|
||||
virtual void SetChargeMomentumMass(G4double particleCharge,
|
||||
G4double MomentumXc,
|
||||
G4double MassXc2);
|
||||
void SetMass(G4double aMass);
|
||||
|
||||
private:
|
||||
|
||||
// use G4VKM_NuclearDensity as it needs a GetDeriv() method.
|
||||
G4V3DNucleus * theNucleus;
|
||||
G4double factor;
|
||||
G4int A;
|
||||
G4double theMass;
|
||||
};
|
||||
|
||||
|
||||
|
||||
inline void G4KM_NucleonEqRhs::SetMass(G4double aMass)
|
||||
{
|
||||
theMass = aMass;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline G4KM_NucleonEqRhs::~G4KM_NucleonEqRhs()
|
||||
{ }
|
||||
|
||||
|
||||
// Here by design, but it is unnecessary for nuclear fields
|
||||
inline void
|
||||
G4KM_NucleonEqRhs::SetChargeMomentumMass(G4double ,G4double ,G4double )
|
||||
{ }
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4KM_OpticalEqRhs.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4KM_OpticalEqRhs_hh
|
||||
#define G4KM_OpticalEqRhs_hh
|
||||
|
||||
#include "globals.hh"
|
||||
//#include "G4EquationOfMotion.hh"
|
||||
#include "G4Mag_EqRhs.hh"
|
||||
#include "G4KM_DummyField.hh" // needed by G4Mag_EqRhs constructor.
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
//class G4KM_OpticalEqRhs : public G4EquationOfMotion
|
||||
class G4KM_OpticalEqRhs : public G4Mag_EqRhs
|
||||
{
|
||||
|
||||
public:
|
||||
G4KM_OpticalEqRhs(G4KM_DummyField *field, G4V3DNucleus * nucleus);
|
||||
~G4KM_OpticalEqRhs();
|
||||
|
||||
virtual void EvaluateRhsGivenB(const G4double y[], const G4double B[3],
|
||||
G4double dydx[]) const;
|
||||
virtual void SetChargeMomentumMass(G4double particleCharge,
|
||||
G4double MomentumXc,
|
||||
G4double MassXc2);
|
||||
void SetFactor(G4double mass, G4double opticalParameter);
|
||||
|
||||
private:
|
||||
G4V3DNucleus * theNucleus;
|
||||
G4double theFactor;
|
||||
G4double theMass;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
inline G4KM_OpticalEqRhs::~G4KM_OpticalEqRhs()
|
||||
{ }
|
||||
|
||||
|
||||
// Here by design, but it is unnecessary for nuclear fields
|
||||
inline void G4KM_OpticalEqRhs::SetChargeMomentumMass(G4double ,G4double ,G4double )
|
||||
{ }
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4KaonMinusField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4KaonMinusField_h
|
||||
#define G4KaonMinusField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4KaonMinusField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4KaonMinusField(G4V3DNucleus * nucleus, G4double coeff = 0.35*fermi);
|
||||
virtual ~G4KaonMinusField();
|
||||
|
||||
private:
|
||||
G4KaonMinusField(const G4KaonMinusField &right);
|
||||
const G4KaonMinusField & operator=(const G4KaonMinusField & right);
|
||||
int operator==(const G4KaonMinusField & right) const;
|
||||
int operator!=(const G4KaonMinusField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4KaonPlusField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4KaonPlusField_h
|
||||
#define G4KaonPlusField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4KaonPlusField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4KaonPlusField(G4V3DNucleus * nucleus, G4double coeff = 0.35*fermi);
|
||||
virtual ~G4KaonPlusField();
|
||||
|
||||
private:
|
||||
G4KaonPlusField(const G4KaonPlusField &right);
|
||||
const G4KaonPlusField & operator=(const G4KaonPlusField & right);
|
||||
int operator==(const G4KaonPlusField & right) const;
|
||||
int operator!=(const G4KaonPlusField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4KaonZeroField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4KaonZeroField_h
|
||||
#define G4KaonZeroField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
|
||||
class G4KaonZeroField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4KaonZeroField(G4V3DNucleus * nucleus, G4double coeff = 0.35*fermi);
|
||||
virtual ~G4KaonZeroField();
|
||||
|
||||
private:
|
||||
G4KaonZeroField(const G4KaonZeroField &right);
|
||||
const G4KaonZeroField & operator=(const G4KaonZeroField & right);
|
||||
int operator==(const G4KaonZeroField & right) const;
|
||||
int operator!=(const G4KaonZeroField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4NeutronField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4NeutronField_h
|
||||
#define G4NeutronField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
#include "G4FermiMomentum.hh"
|
||||
#include "G4VNuclearDensity.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4NeutronField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4NeutronField(G4V3DNucleus * nucleus);
|
||||
virtual ~G4NeutronField();
|
||||
|
||||
private:
|
||||
|
||||
G4NeutronField(const G4NeutronField &right);
|
||||
const G4NeutronField & operator=(const G4NeutronField & right);
|
||||
int operator==(const G4NeutronField & right) const;
|
||||
int operator!=(const G4NeutronField & right) const;
|
||||
|
||||
public:
|
||||
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
|
||||
private:
|
||||
|
||||
G4double GetDensity(const G4ThreeVector & aPosition)
|
||||
{
|
||||
return theDensity->GetDensity(aPosition);
|
||||
}
|
||||
|
||||
G4double GetFermiMomentum(const G4double aDensity)
|
||||
{
|
||||
return theFermi.GetFermiMomentum(aDensity);
|
||||
}
|
||||
|
||||
G4FermiMomentum theFermi;
|
||||
G4double theA;
|
||||
G4double theZ;
|
||||
const G4VNuclearDensity * theDensity;
|
||||
G4double theR;
|
||||
|
||||
std::vector<G4double> theFermiMomBuffer;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4PionMinusField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PionMinusField_h
|
||||
#define G4PionMinusField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4PionMinusField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
|
||||
G4PionMinusField(G4V3DNucleus * nucleus, G4double coeff = 0.042*fermi);
|
||||
virtual ~G4PionMinusField();
|
||||
|
||||
private:
|
||||
|
||||
G4PionMinusField(const G4PionMinusField &right);
|
||||
const G4PionMinusField & operator=(const G4PionMinusField & right);
|
||||
int operator==(const G4PionMinusField & right) const;
|
||||
int operator!=(const G4PionMinusField & right) const;
|
||||
|
||||
public:
|
||||
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4PionPlusField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PionPlusField_hh
|
||||
#define G4PionPlusField_hh
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4PionPlusField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4PionPlusField(G4V3DNucleus * nucleus, G4double coeff = 0.042*fermi);
|
||||
virtual ~G4PionPlusField();
|
||||
|
||||
private:
|
||||
G4PionPlusField(const G4PionPlusField &right);
|
||||
const G4PionPlusField & operator=(const G4PionPlusField & right);
|
||||
int operator==(const G4PionPlusField & right) const;
|
||||
int operator!=(const G4PionPlusField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4PionZeroField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4PionZeroField_h
|
||||
#define G4PionZeroField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4PionZeroField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4PionZeroField(G4V3DNucleus * nucleus, G4double coeff = 0.042*fermi);
|
||||
virtual ~G4PionZeroField();
|
||||
|
||||
private:
|
||||
G4PionZeroField(const G4PionZeroField &right);
|
||||
const G4PionZeroField & operator=(const G4PionZeroField & right);
|
||||
int operator==(const G4PionZeroField & right) const;
|
||||
int operator!=(const G4PionZeroField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4ProtonField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4ProtonField_h
|
||||
#define G4ProtonField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
#include "G4FermiMomentum.hh"
|
||||
#include "G4VNuclearDensity.hh"
|
||||
#include <vector>
|
||||
|
||||
class G4ProtonField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
|
||||
G4ProtonField(G4V3DNucleus * nucleus);
|
||||
virtual ~G4ProtonField();
|
||||
|
||||
private:
|
||||
|
||||
G4ProtonField(const G4ProtonField &right);
|
||||
const G4ProtonField & operator=(const G4ProtonField & right);
|
||||
int operator==(const G4ProtonField & right) const;
|
||||
int operator!=(const G4ProtonField & right) const;
|
||||
|
||||
public:
|
||||
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
|
||||
private:
|
||||
|
||||
G4double GetDensity(const G4ThreeVector & aPosition)
|
||||
{
|
||||
return theDensity->GetDensity(aPosition);
|
||||
}
|
||||
G4double GetFermiMomentum(const G4double aDensity)
|
||||
{
|
||||
return theFermi.GetFermiMomentum(aDensity);
|
||||
}
|
||||
|
||||
G4double theA;
|
||||
G4double theZ;
|
||||
G4double theBarrier;
|
||||
G4double theRadius;
|
||||
G4FermiMomentum theFermi;
|
||||
const G4VNuclearDensity * theDensity;
|
||||
|
||||
std::vector<G4double> theFermiMomBuffer;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4RKFieldIntegrator_h
|
||||
#define G4RKFieldIntegrator_h 1
|
||||
|
||||
#include "G4FieldPropagation.hh"
|
||||
|
||||
class G4RKFieldIntegrator : public G4FieldPropagation
|
||||
{
|
||||
public:
|
||||
G4RKFieldIntegrator() {}
|
||||
G4RKFieldIntegrator(const G4RKFieldIntegrator &):G4FieldPropagation() {}
|
||||
|
||||
~G4RKFieldIntegrator() {}
|
||||
|
||||
//Operators
|
||||
const G4RKFieldIntegrator & operator=(const G4RKFieldIntegrator &) {return *this;}
|
||||
|
||||
int operator==(const G4RKFieldIntegrator &) const {return 1;}
|
||||
int operator!=(const G4RKFieldIntegrator &) const {return 1;}
|
||||
|
||||
// only theActive are propagated, nothing else
|
||||
// only theSpectators define the field, nothing else
|
||||
void Transport(G4KineticTrackVector &theActive, const G4KineticTrackVector &theSpectators, G4double theTimeStep);
|
||||
G4double GetExcitationEnergy(G4int nHitNucleons, const G4KineticTrackVector &theParticles);
|
||||
|
||||
// methods for calculating potentials for different types of particles
|
||||
void Init(G4int z, G4int a) {theZ = z; theA = a;} // prepare potentials' functions
|
||||
|
||||
// aPosition is relative to the nucleus center
|
||||
G4double GetNeutronPotential(G4double radius);
|
||||
G4double GetNeutronPotential(G4ThreeVector &aPosition) {return GetNeutronPotential(aPosition.mag());}
|
||||
|
||||
G4double GetProtonPotential(G4double radius);
|
||||
G4double GetProtonPotential(G4ThreeVector &aPosition) {return GetProtonPotential(aPosition.mag());}
|
||||
|
||||
G4double GetAntiprotonPotential(G4double radius);
|
||||
G4double GetAntiprotonPotential(G4ThreeVector &aPosition) {return GetAntiprotonPotential(aPosition.mag());};
|
||||
|
||||
G4double GetKaonPotential(G4double radius);
|
||||
G4double GetKaonPotential(G4ThreeVector &aPosition) {return GetKaonPotential(aPosition.mag());}
|
||||
|
||||
G4double GetPionPotential(G4double radius);
|
||||
G4double GetPionPotential(G4ThreeVector &aPosition) {return GetPionPotential(aPosition.mag());}
|
||||
|
||||
private:
|
||||
void Integrate(const G4KineticTrackVector & theActive, G4double theTimeStep);
|
||||
G4double CalculateTotalEnergy(const G4KineticTrackVector& Barions);
|
||||
G4double Erf(G4double X);
|
||||
|
||||
// parameters to calculate potentials
|
||||
G4int theA;
|
||||
G4int theZ;
|
||||
|
||||
// Vc(A, Z) = 1.44 * Z /(r0*(1 + pow(A, 1/3)))
|
||||
// = colomb * Z / (1 + pow(A, 1/3))
|
||||
static const G4double coulomb; // coulomb barier constant
|
||||
static const G4double a_kaon; // kaon's potential constant
|
||||
static const G4double a_pion; // pion's potential constant
|
||||
static const G4double a_antiproton; // antiproton's potential constant
|
||||
};
|
||||
|
||||
#endif // G4RKFieldIntegrator_h
|
||||
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#ifndef G4RKPropagation_h
|
||||
#define G4RKPropagation_h 1
|
||||
|
||||
#include "G4VFieldPropagation.hh"
|
||||
#include "G4VNuclearField.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
#include "G4KM_DummyField.hh"
|
||||
#include "G4Mag_EqRhs.hh"
|
||||
#include <map>
|
||||
|
||||
|
||||
class G4RKPropagation: public G4VFieldPropagation
|
||||
{
|
||||
|
||||
public:
|
||||
G4RKPropagation();
|
||||
virtual ~G4RKPropagation();
|
||||
|
||||
private:
|
||||
G4RKPropagation(const G4RKPropagation &right);
|
||||
const G4RKPropagation & operator=(const G4RKPropagation & right);
|
||||
G4int operator==(const G4RKPropagation & right) const;
|
||||
G4int operator!=(const G4RKPropagation & right) const;
|
||||
|
||||
public:
|
||||
|
||||
virtual void Init(G4V3DNucleus * nucleus);
|
||||
virtual void Transport(G4KineticTrackVector &theActive,
|
||||
const G4KineticTrackVector &theSpectators,
|
||||
G4double theTimeStep);
|
||||
G4bool GetSphereIntersectionTimes(const G4KineticTrack * track,
|
||||
G4double & t1, G4double & t2);
|
||||
G4ThreeVector GetMomentumTransfer() const;
|
||||
private:
|
||||
G4double theOuterRadius;
|
||||
G4V3DNucleus * theNucleus;
|
||||
std::map <G4int, G4VNuclearField *, std::less<G4int> > * theFieldMap;
|
||||
std::map <G4int, G4Mag_EqRhs *, std::less<G4int> > * theEquationMap;
|
||||
G4KM_DummyField * theField;
|
||||
|
||||
G4ThreeVector theMomentumTranfer;
|
||||
|
||||
G4bool GetSphereIntersectionTimes(const G4double radius,
|
||||
const G4ThreeVector & currentPos,
|
||||
const G4LorentzVector & momentum,
|
||||
G4double & t1, G4double & t2);
|
||||
// implementation
|
||||
|
||||
G4bool FieldTransport(G4KineticTrack * track, const G4double timestep);
|
||||
G4bool FreeTransport(G4KineticTrack * track, const G4double timestep);
|
||||
|
||||
void delete_FieldsAndMap(
|
||||
std::map <G4int, G4VNuclearField *, std::less<G4int> > * aMap);
|
||||
void delete_EquationsAndMap(
|
||||
std::map <G4int, G4Mag_EqRhs *, std::less<G4int> > * aMap);
|
||||
|
||||
public:
|
||||
inline G4double GetBarrier(G4int encoding)
|
||||
{
|
||||
std::map <G4int, G4VNuclearField *, std::less<G4int> >::iterator iter;
|
||||
iter = theFieldMap->find(encoding);
|
||||
if(iter == theFieldMap->end()) return 0;
|
||||
return (*theFieldMap)[encoding]->GetBarrier();
|
||||
}
|
||||
|
||||
inline G4double GetField(G4int encoding,G4ThreeVector pos)
|
||||
{
|
||||
std::map <G4int, G4VNuclearField *, std::less<G4int> >::iterator iter;
|
||||
iter = theFieldMap->find(encoding);
|
||||
if(iter == theFieldMap->end()) return 0;
|
||||
return (*theFieldMap)[encoding]->GetField(pos);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4SigmaMinusField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4SigmaMinusField_h
|
||||
#define G4SigmaMinusField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
|
||||
class G4SigmaMinusField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4SigmaMinusField(G4V3DNucleus * nucleus, G4double coeff = 0.36*fermi);
|
||||
virtual ~G4SigmaMinusField();
|
||||
|
||||
private:
|
||||
G4SigmaMinusField(const G4SigmaMinusField &right);
|
||||
const G4SigmaMinusField & operator=(const G4SigmaMinusField & right);
|
||||
int operator==(const G4SigmaMinusField & right) const;
|
||||
int operator!=(const G4SigmaMinusField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef G4SigmaPlusField_h
|
||||
#define G4SigmaPlusField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
|
||||
class G4SigmaPlusField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4SigmaPlusField(G4V3DNucleus * nucleus, G4double coeff = 0.36*fermi);
|
||||
virtual ~G4SigmaPlusField();
|
||||
|
||||
private:
|
||||
G4SigmaPlusField(const G4SigmaPlusField &right);
|
||||
const G4SigmaPlusField & operator=(const G4SigmaPlusField & right);
|
||||
int operator==(const G4SigmaPlusField & right) const;
|
||||
int operator!=(const G4SigmaPlusField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4SigmaZeroField.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4SigmaZeroField_h
|
||||
#define G4SigmaZeroField_h 1
|
||||
|
||||
#include "G4VNuclearField.hh"
|
||||
|
||||
class G4SigmaZeroField: public G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4SigmaZeroField(G4V3DNucleus * nucleus, G4double coeff = 0.36*fermi);
|
||||
virtual ~G4SigmaZeroField();
|
||||
|
||||
private:
|
||||
G4SigmaZeroField(const G4SigmaZeroField &right);
|
||||
const G4SigmaZeroField & operator=(const G4SigmaZeroField & right);
|
||||
int operator==(const G4SigmaZeroField & right) const;
|
||||
int operator!=(const G4SigmaZeroField & right) const;
|
||||
|
||||
public:
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition);
|
||||
virtual G4double GetBarrier();
|
||||
virtual G4double GetCoeff() { return theCoeff; }
|
||||
|
||||
private:
|
||||
G4double theCoeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef G4VFieldPropagation_h
|
||||
#define G4VFieldPropagation_h 1
|
||||
|
||||
#include "G4KineticTrackVector.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
|
||||
class G4VFieldPropagation
|
||||
{
|
||||
public:
|
||||
G4VFieldPropagation();
|
||||
virtual ~G4VFieldPropagation();
|
||||
|
||||
private:
|
||||
G4VFieldPropagation(const G4VFieldPropagation &right);
|
||||
const G4VFieldPropagation & operator=(const G4VFieldPropagation & right);
|
||||
G4int operator==(const G4VFieldPropagation & right) const;
|
||||
G4int operator!=(const G4VFieldPropagation & right) const;
|
||||
|
||||
public:
|
||||
virtual void Init(G4V3DNucleus * theNucleus) = 0;
|
||||
virtual void Transport(G4KineticTrackVector &theActive,
|
||||
const G4KineticTrackVector &theSpectators,
|
||||
G4double theTimeStep) = 0;
|
||||
virtual G4ThreeVector GetMomentumTransfer() const =0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// CERN, Geneva, Switzerland
|
||||
//
|
||||
// File name: G4VKM_NuclearDensity.hh
|
||||
//
|
||||
// Author: Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
|
||||
//
|
||||
// Creation date: 5 June 2000
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
#ifndef G4VKM_NuclearDensity_hh
|
||||
#define G4VKM_NuclearDensity_hh
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
class G4VKM_NuclearDensity
|
||||
{
|
||||
|
||||
public:
|
||||
G4VKM_NuclearDensity();
|
||||
virtual ~G4VKM_NuclearDensity();
|
||||
|
||||
virtual G4double GetDensity(const G4ThreeVector & point) = 0;
|
||||
virtual G4double GetDeriv(const G4ThreeVector & point) = 0;
|
||||
};
|
||||
|
||||
inline G4VKM_NuclearDensity::G4VKM_NuclearDensity()
|
||||
{ }
|
||||
|
||||
inline G4VKM_NuclearDensity::~G4VKM_NuclearDensity()
|
||||
{ }
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * DISCLAIMER *
|
||||
// * *
|
||||
// * The following disclaimer summarizes all the specific disclaimers *
|
||||
// * of contributors to this software. The specific disclaimers,which *
|
||||
// * govern, are listed with their locations in: *
|
||||
// * http://cern.ch/geant4/license *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. *
|
||||
// * *
|
||||
// * This code implementation is the intellectual property of the *
|
||||
// * GEANT4 collaboration. *
|
||||
// * By copying, distributing or modifying the Program (or any work *
|
||||
// * based on the Program) you indicate your acceptance of this *
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
|
||||
#ifndef G4VNuclearField_h
|
||||
#define G4VNuclearField_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4V3DNucleus.hh"
|
||||
#include "G4HadronicException.hh"
|
||||
|
||||
class G4VNuclearField
|
||||
{
|
||||
public:
|
||||
G4VNuclearField(G4V3DNucleus * aNucleus = 0);
|
||||
virtual ~G4VNuclearField();
|
||||
|
||||
void SetNucleus(G4V3DNucleus * aNucleus);
|
||||
virtual G4double GetField(const G4ThreeVector & aPosition) = 0;
|
||||
virtual G4double GetBarrier() = 0;
|
||||
virtual G4double GetCoeff() { return 0; }
|
||||
|
||||
protected:
|
||||
G4V3DNucleus * theNucleus;
|
||||
const G4double radius;
|
||||
|
||||
private:
|
||||
|
||||
G4VNuclearField(const G4VNuclearField &right);
|
||||
const G4VNuclearField & operator=(const G4VNuclearField & right);
|
||||
G4int operator==(const G4VNuclearField & right) const;
|
||||
G4int operator!=(const G4VNuclearField & right) const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
inline void G4VNuclearField::SetNucleus(G4V3DNucleus * aNucleus)
|
||||
{
|
||||
theNucleus = aNucleus;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user