Import Geant4 10.1.0 source tree
This commit is contained in:
@@ -63,13 +63,6 @@ G4bool G4Clebsch::operator!=(const G4Clebsch &right) const
|
||||
}
|
||||
|
||||
|
||||
const std::vector<G4double>& G4Clebsch::GetLogs() const
|
||||
{
|
||||
return logs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
G4double G4Clebsch::Weight(G4int isoIn1, G4int iso3In1,
|
||||
G4int isoIn2, G4int iso3In2,
|
||||
G4int isoOut1, G4int isoOut2) const
|
||||
@@ -208,7 +201,7 @@ G4double G4Clebsch::Wigner3J(G4double j1, G4double j2, G4double j3,
|
||||
sign *= (G4int) std::pow(-1.,sigma);
|
||||
}
|
||||
|
||||
const std::vector<G4double> logVector = GetLogs();
|
||||
const std::vector<G4double>& logVector = logs;//GetLogs();
|
||||
size_t n1 = G4lrint(n[0]);
|
||||
|
||||
// Some boundary checks
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "G4KineticTrackVector.hh"
|
||||
#include "G4VCrossSectionSource.hh"
|
||||
#include "G4HadTmpUtil.hh"
|
||||
#include "G4AutoLock.hh"
|
||||
|
||||
const G4int G4CollisionComposite::nPoints = 32;
|
||||
|
||||
@@ -43,11 +44,13 @@ const G4double G4CollisionComposite::theT[nPoints] =
|
||||
|
||||
G4CollisionComposite::G4CollisionComposite()
|
||||
{
|
||||
G4MUTEXINIT( bufferMutex );
|
||||
}
|
||||
|
||||
|
||||
G4CollisionComposite::~G4CollisionComposite()
|
||||
{
|
||||
{
|
||||
G4MUTEXDESTROY(bufferMutex);
|
||||
std::for_each(components.begin(), components.end(), G4Delete());
|
||||
}
|
||||
|
||||
@@ -64,6 +67,7 @@ G4double G4CollisionComposite::CrossSection(const G4KineticTrack& trk1,
|
||||
}
|
||||
else
|
||||
{
|
||||
G4AutoLock l(&bufferMutex);
|
||||
// waiting for mutable to enable buffering.
|
||||
const_cast<G4CollisionComposite *>(this)->BufferCrossSection(trk1.GetDefinition(), trk2.GetDefinition());
|
||||
// G4cerr << "Buffer filled, reying with sqrts = "<< (trk1.Get4Momentum()+trk2.Get4Momentum()).mag() <<G4endl;
|
||||
@@ -177,8 +181,8 @@ BufferCrossSection(const G4ParticleDefinition * aP, const G4ParticleDefinition *
|
||||
}
|
||||
G4LorentzVector a4Momentum(aE, aMom);
|
||||
G4LorentzVector b4Momentum(bE, bMom);
|
||||
G4KineticTrack a(const_cast<G4ParticleDefinition *>(aP), atime, aPosition, a4Momentum);
|
||||
G4KineticTrack b(const_cast<G4ParticleDefinition *>(bP), btime, bPosition, b4Momentum);
|
||||
G4KineticTrack a(aP, atime, aPosition, a4Momentum);
|
||||
G4KineticTrack b(bP, btime, bPosition, b4Momentum);
|
||||
|
||||
for (i=0; i<components.size(); i++)
|
||||
{
|
||||
|
||||
@@ -68,8 +68,8 @@ G4bool G4CollisionNNElastic::IsInCharge(const G4KineticTrack& trk1,
|
||||
{
|
||||
G4bool isInCharge = false;
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
|
||||
if ( (def1 == G4Proton::ProtonDefinition() &&
|
||||
def2 == G4Proton::ProtonDefinition() )
|
||||
|
||||
@@ -66,8 +66,8 @@ G4bool G4CollisionnpElastic::IsInCharge(const G4KineticTrack& trk1,
|
||||
{
|
||||
G4bool isInCharge = false;
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
|
||||
if ( (def1 == G4Neutron::NeutronDefinition() &&
|
||||
def2 == G4Proton::ProtonDefinition() )
|
||||
|
||||
@@ -43,6 +43,11 @@ G4ThreadLocal G4XDeltaDeltaTable *G4ConcreteNNToDeltaDelta::theSigmaTable_G4MT_T
|
||||
G4ConcreteNNToDeltaDelta::G4ConcreteNNToDeltaDelta(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaDeltaTable ; G4XDeltaDeltaTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,theSigmaTable);
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaDeltaTable;
|
||||
G4XDeltaDeltaTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,theSigmaTable);
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,13 @@ G4ThreadLocal G4XDeltaDeltastarTable *G4ConcreteNNToDeltaDeltastar::theSigmaTabl
|
||||
G4ConcreteNNToDeltaDeltastar::G4ConcreteNNToDeltaDeltastar(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaDeltastarTable ; G4XDeltaDeltastarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,G4DeltaDeltastarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaDeltastarTable;
|
||||
G4XDeltaDeltastarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,
|
||||
G4DeltaDeltastarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
G4double chargeBalance = aPrimary->GetPDGCharge()+bPrimary->GetPDGCharge();
|
||||
chargeBalance -= aSecondary->GetPDGCharge();
|
||||
chargeBalance -= bSecondary->GetPDGCharge();
|
||||
@@ -53,5 +59,7 @@ G4ConcreteNNToDeltaDeltastar::G4ConcreteNNToDeltaDeltastar(const G4ParticleDefin
|
||||
}
|
||||
|
||||
G4ConcreteNNToDeltaDeltastar::~G4ConcreteNNToDeltaDeltastar()
|
||||
{ if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaDeltastarTable ;
|
||||
{
|
||||
if (theSigmaTable_G4MT_TLS_) delete theSigmaTable_G4MT_TLS_;
|
||||
theSigmaTable_G4MT_TLS_=0;
|
||||
}
|
||||
|
||||
@@ -36,9 +36,17 @@ G4ThreadLocal G4XDeltaNstarTable *G4ConcreteNNToDeltaNstar::theSigmaTable_G4MT_T
|
||||
G4ConcreteNNToDeltaNstar::G4ConcreteNNToDeltaNstar(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaNstarTable ; G4XDeltaNstarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,G4DeltaNstarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaNstarTable;
|
||||
G4XDeltaNstarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,
|
||||
G4DeltaNstarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
}
|
||||
|
||||
G4ConcreteNNToDeltaNstar::~G4ConcreteNNToDeltaNstar()
|
||||
{ if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XDeltaNstarTable ;
|
||||
{
|
||||
if (theSigmaTable_G4MT_TLS_) delete theSigmaTable_G4MT_TLS_;
|
||||
theSigmaTable_G4MT_TLS_=0;
|
||||
}
|
||||
|
||||
@@ -35,9 +35,16 @@ G4ThreadLocal G4XNDeltaTable *G4ConcreteNNToNDelta::theSigmaTable_G4MT_TLS_ = 0;
|
||||
G4ConcreteNNToNDelta::G4ConcreteNNToNDelta(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNDeltaTable ; G4XNDeltaTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,theSigmaTable);
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNDeltaTable;
|
||||
G4XNDeltaTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,theSigmaTable);
|
||||
}
|
||||
|
||||
G4ConcreteNNToNDelta::~G4ConcreteNNToNDelta()
|
||||
{ if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNDeltaTable ;
|
||||
{
|
||||
if (theSigmaTable_G4MT_TLS_) delete theSigmaTable_G4MT_TLS_;
|
||||
theSigmaTable_G4MT_TLS_=0;
|
||||
}
|
||||
|
||||
@@ -36,9 +36,17 @@ G4ThreadLocal G4XNDeltastarTable *G4ConcreteNNToNDeltaStar::theSigmaTable_G4MT_T
|
||||
G4ConcreteNNToNDeltaStar::G4ConcreteNNToNDeltaStar(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNDeltastarTable ; G4XNDeltastarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,G4NDeltastarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNDeltastarTable;
|
||||
G4XNDeltastarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,
|
||||
G4NDeltastarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
}
|
||||
|
||||
G4ConcreteNNToNDeltaStar::~G4ConcreteNNToNDeltaStar()
|
||||
{ if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNDeltastarTable ;
|
||||
{
|
||||
if (theSigmaTable_G4MT_TLS_) delete theSigmaTable_G4MT_TLS_;
|
||||
theSigmaTable_G4MT_TLS_=0;
|
||||
}
|
||||
|
||||
@@ -36,9 +36,17 @@ G4ThreadLocal G4XNNstarTable *G4ConcreteNNToNNStar::theSigmaTable_G4MT_TLS_ = 0;
|
||||
G4ConcreteNNToNNStar::G4ConcreteNNToNNStar(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNNstarTable ; G4XNNstarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,G4NNstarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNNstarTable;
|
||||
G4XNNstarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,
|
||||
G4NNstarBuilder(bSecondary->GetParticleName(),theSigmaTable));
|
||||
}
|
||||
|
||||
G4ConcreteNNToNNStar::~G4ConcreteNNToNNStar()
|
||||
{ if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNNstarTable ;
|
||||
{
|
||||
if (theSigmaTable_G4MT_TLS_) delete theSigmaTable_G4MT_TLS_;
|
||||
theSigmaTable_G4MT_TLS_=0;
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ G4ConcreteNNTwoBodyResonance::G4ConcreteNNTwoBodyResonance(const G4ParticleDefin
|
||||
G4ConcreteNNTwoBodyResonance::~G4ConcreteNNTwoBodyResonance()
|
||||
{
|
||||
if (crossSectionSource) delete crossSectionSource;
|
||||
crossSectionSource=0;
|
||||
}
|
||||
|
||||
G4bool G4ConcreteNNTwoBodyResonance::IsInCharge(const G4KineticTrack& trk1,
|
||||
@@ -83,7 +84,11 @@ void G4ConcreteNNTwoBodyResonance::establish_G4MT_TLS_G4ConcreteNNTwoBodyResonan
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary,
|
||||
const G4VXResonanceTable& sigmaTable){establish_G4MT_TLS_G4VScatteringCollision(); thePrimary1=aPrimary; thePrimary2=bPrimary;
|
||||
const G4VXResonanceTable& sigmaTable)
|
||||
{
|
||||
establish_G4MT_TLS_G4VScatteringCollision();
|
||||
thePrimary1=aPrimary;
|
||||
thePrimary2=bPrimary;
|
||||
theOutGoing.push_back(aSecondary);
|
||||
theOutGoing.push_back(bSecondary);
|
||||
|
||||
|
||||
@@ -36,9 +36,15 @@ G4ThreadLocal G4XNNstarTable *G4ConcreteNStarNToNN::theSigmaTable_G4MT_TLS_ = 0;
|
||||
G4ConcreteNStarNToNN::G4ConcreteNStarNToNN(const G4ParticleDefinition* aPrimary,
|
||||
const G4ParticleDefinition* bPrimary,
|
||||
const G4ParticleDefinition* aSecondary,
|
||||
const G4ParticleDefinition* bSecondary):G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL){ ;;; if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNNstarTable ; G4XNNstarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_; ;;; establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,G4NNstarBuilder(aPrimary->GetParticleName(),theSigmaTable));
|
||||
const G4ParticleDefinition* bSecondary) :
|
||||
G4ConcreteNNTwoBodyResonance(NULL, NULL, NULL, NULL, NULL, NULL, NULL)
|
||||
{
|
||||
if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNNstarTable;
|
||||
G4XNNstarTable &theSigmaTable = *theSigmaTable_G4MT_TLS_;
|
||||
establish_G4MT_TLS_G4ConcreteNNTwoBodyResonance(aPrimary,bPrimary,aSecondary,bSecondary,
|
||||
G4NNstarBuilder(aPrimary->GetParticleName(),theSigmaTable));
|
||||
}
|
||||
|
||||
G4ConcreteNStarNToNN::~G4ConcreteNStarNToNN()
|
||||
{ if (!theSigmaTable_G4MT_TLS_) theSigmaTable_G4MT_TLS_ = new G4XNNstarTable ;
|
||||
{ if (theSigmaTable_G4MT_TLS_) delete theSigmaTable_G4MT_TLS_;
|
||||
}
|
||||
|
||||
+3
-3
@@ -109,10 +109,10 @@
|
||||
};
|
||||
|
||||
G4DetailedBalancePhaseSpaceIntegral::
|
||||
G4DetailedBalancePhaseSpaceIntegral(G4ParticleDefinition * aR) : theR(aR)
|
||||
G4DetailedBalancePhaseSpaceIntegral(const G4ParticleDefinition * aR) //: theR(aR)
|
||||
{
|
||||
G4ResonanceID theID;
|
||||
G4int pdg=theR->GetPDGEncoding();
|
||||
G4int pdg=aR->GetPDGEncoding();
|
||||
data=0;
|
||||
if(theID.IsDelta1232(pdg)) data = delta;
|
||||
else if(theID.IsDelta1600(pdg)) data = delta1600;
|
||||
@@ -147,7 +147,7 @@ GetPhaseSpaceIntegral(G4double sqs)
|
||||
{
|
||||
G4double result = 0;
|
||||
G4int it=0;
|
||||
for(G4int ie=0; ie<120; ie++)
|
||||
for(G4int ie=0; ie<119; ie++)
|
||||
{
|
||||
if(sqrts[ie]*GeV>sqs) break;
|
||||
it = ie;
|
||||
|
||||
@@ -139,14 +139,14 @@ GetFinalState(G4KineticTrack * projectile,
|
||||
G4LorentzRotation toLab(toZ.inverse());
|
||||
|
||||
// Get definitions
|
||||
G4ParticleDefinition * d1 = targets[0]->GetDefinition();
|
||||
G4ParticleDefinition * d2 = targets[1]->GetDefinition();
|
||||
const G4ParticleDefinition * d1 = targets[0]->GetDefinition();
|
||||
const G4ParticleDefinition * d2 = targets[1]->GetDefinition();
|
||||
if(0.5>G4UniformRand())
|
||||
{
|
||||
G4ParticleDefinition * temp;
|
||||
const G4ParticleDefinition * temp;
|
||||
temp=d1;d1=d2;d2=temp;
|
||||
}
|
||||
G4ParticleDefinition * dp = projectile->GetDefinition();
|
||||
const G4ParticleDefinition * dp = projectile->GetDefinition();
|
||||
if(dp->GetPDGCharge()<-.5)
|
||||
{
|
||||
if(d1->GetPDGCharge()>.5)
|
||||
|
||||
@@ -334,7 +334,7 @@ G4bool G4ResonanceNames::operator!=(const G4ResonanceNames &right) const
|
||||
G4double G4ResonanceNames::MinMass(const G4String& name)
|
||||
{
|
||||
// Cut, from UrQMD (reference still to be detailed)
|
||||
const G4double coeff = 0.001;
|
||||
static const G4double coeff = 0.001;
|
||||
|
||||
G4double lowMass = 0.;
|
||||
|
||||
|
||||
@@ -45,22 +45,37 @@
|
||||
#include "G4CollisionInitialState.hh"
|
||||
#include "G4HadTmpUtil.hh"
|
||||
#include "G4Pair.hh"
|
||||
#include "G4AutoLock.hh"
|
||||
|
||||
//Mutex for control of shared resource
|
||||
namespace {
|
||||
G4Mutex collisions_mutex = G4MUTEX_INITIALIZER;
|
||||
G4bool setupDone = false;
|
||||
}
|
||||
|
||||
// Declare the categories of collisions the Scatterer can handle
|
||||
typedef GROUP2(G4CollisionNN, G4CollisionMesonBaryon) theChannels;
|
||||
|
||||
G4CollisionVector G4Scatterer::collisions;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
G4Scatterer::G4Scatterer()
|
||||
{
|
||||
Register aR;
|
||||
G4ForEach<theChannels>::Apply(&aR, &collisions);
|
||||
G4AutoLock l(&collisions_mutex);
|
||||
if ( ! setupDone )
|
||||
{
|
||||
Register aR;
|
||||
G4ForEach<theChannels>::Apply(&aR, &collisions);
|
||||
setupDone = true;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
G4Scatterer::~G4Scatterer()
|
||||
{
|
||||
G4AutoLock l(&collisions_mutex);
|
||||
std::for_each(collisions.begin(), collisions.end(), G4Delete());
|
||||
collisions.clear();
|
||||
}
|
||||
@@ -68,7 +83,7 @@ G4Scatterer::~G4Scatterer()
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
G4double G4Scatterer::GetTimeToInteraction(const G4KineticTrack& trk1,
|
||||
const G4KineticTrack& trk2)
|
||||
const G4KineticTrack& trk2) const
|
||||
{
|
||||
G4double time = DBL_MAX;
|
||||
G4double distance_fast;
|
||||
@@ -182,7 +197,7 @@ G4double G4Scatterer::GetTimeToInteraction(const G4KineticTrack& trk1,
|
||||
|
||||
|
||||
|
||||
G4VCollision* collision = FindCollision(trk1,trk2);
|
||||
const G4VCollision* collision = FindCollision(trk1,trk2);
|
||||
G4double totalCrossSection;
|
||||
// The cross section is interpreted geometrically as an area
|
||||
// Two particles are assumed to collide if their distance is < (totalCrossSection/pi)
|
||||
@@ -267,7 +282,7 @@ G4double G4Scatterer::GetTimeToInteraction(const G4KineticTrack& trk1,
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
G4KineticTrackVector* G4Scatterer::Scatter(const G4KineticTrack& trk1,
|
||||
const G4KineticTrack& trk2)
|
||||
const G4KineticTrack& trk2) const
|
||||
{
|
||||
// G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
G4LorentzVector pInitial=trk1.Get4Momentum() + trk2.Get4Momentum();
|
||||
@@ -280,7 +295,7 @@ G4KineticTrackVector* G4Scatterer::Scatter(const G4KineticTrack& trk1,
|
||||
G4int baryonBalance = trk1.GetDefinition()->GetBaryonNumber()
|
||||
+ trk2.GetDefinition()->GetBaryonNumber();
|
||||
|
||||
G4VCollision* collision = FindCollision(trk1,trk2);
|
||||
const G4VCollision* collision = FindCollision(trk1,trk2);
|
||||
if (collision != 0)
|
||||
{
|
||||
G4double aCrossSection = collision->CrossSection(trk1,trk2);
|
||||
@@ -377,8 +392,8 @@ G4KineticTrackVector* G4Scatterer::Scatter(const G4KineticTrack& trk1,
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
G4VCollision* G4Scatterer::FindCollision(const G4KineticTrack& trk1,
|
||||
const G4KineticTrack& trk2)
|
||||
const G4VCollision* G4Scatterer::FindCollision(const G4KineticTrack& trk1,
|
||||
const G4KineticTrack& trk2) const
|
||||
{
|
||||
G4VCollision* collisionInCharge = 0;
|
||||
|
||||
@@ -407,9 +422,9 @@ G4VCollision* G4Scatterer::FindCollision(const G4KineticTrack& trk1,
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
G4double G4Scatterer::GetCrossSection(const G4KineticTrack& trk1,
|
||||
const G4KineticTrack& trk2)
|
||||
const G4KineticTrack& trk2) const
|
||||
{
|
||||
G4VCollision* collision = FindCollision(trk1,trk2);
|
||||
const G4VCollision* collision = FindCollision(trk1,trk2);
|
||||
G4double aCrossSection = 0;
|
||||
if (collision != 0)
|
||||
{
|
||||
|
||||
@@ -65,7 +65,6 @@ G4KineticTrackVector* G4VAnnihilationCollision::FinalState(const G4KineticTrack&
|
||||
// G4double m1 = trk1.GetActualMass();
|
||||
// G4double m2 = trk2.GetActualMass();
|
||||
|
||||
G4ParticleDefinition* OutputDefinition = const_cast<G4ParticleDefinition *>( GetOutgoingParticle(trk1,trk2) );
|
||||
|
||||
// Unit vector of three-momentum
|
||||
|
||||
@@ -78,8 +77,8 @@ G4KineticTrackVector* G4VAnnihilationCollision::FinalState(const G4KineticTrack&
|
||||
G4LorentzRotation toLabFrame(p.boostVector());
|
||||
p4Final *= toLabFrame;
|
||||
|
||||
G4KineticTrack* final = new G4KineticTrack(OutputDefinition, 0.0,
|
||||
trk1.GetPosition(), p4Final);
|
||||
const G4ParticleDefinition* OutputDefinition = GetOutgoingParticle(trk1,trk2);
|
||||
G4KineticTrack* final = new G4KineticTrack(OutputDefinition, 0.0, trk1.GetPosition(), p4Final);
|
||||
|
||||
G4KineticTrackVector* finalTracks = new G4KineticTrackVector;
|
||||
|
||||
|
||||
@@ -46,13 +46,13 @@ G4VCrossSectionSource::~G4VCrossSectionSource()
|
||||
{ }
|
||||
|
||||
|
||||
G4ParticleDefinition * G4VCrossSectionSource::
|
||||
const G4ParticleDefinition * G4VCrossSectionSource::
|
||||
FindKeyParticle(const G4KineticTrack& trk1,const G4KineticTrack& trk2) const
|
||||
{
|
||||
G4ParticleDefinition * result;
|
||||
const G4ParticleDefinition * result;
|
||||
|
||||
G4ParticleDefinition * p1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition * p2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition * p1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition * p2 = trk2.GetDefinition();
|
||||
|
||||
if( (p1==G4Proton::Proton() && p2==G4Proton::Proton() ) ||
|
||||
(p1==G4Neutron::Neutron() && p2==G4Neutron::Neutron()) )
|
||||
@@ -184,21 +184,7 @@ G4double G4VCrossSectionSource::FcrossX(G4double e, G4double e0,
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
G4double G4VCrossSectionSource::GetTransversePionMass() const
|
||||
{
|
||||
// Parameter from UrQMD
|
||||
const G4double transversePionMass = 0.3 * GeV;
|
||||
return transversePionMass;
|
||||
}
|
||||
|
||||
|
||||
G4double G4VCrossSectionSource::GetMinStringMass() const
|
||||
{
|
||||
// Parameter from UrQMD
|
||||
const G4double minStringMass = 0.52 * GeV;
|
||||
return minStringMass;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ G4VScatteringCollision::G4VScatteringCollision()
|
||||
G4VScatteringCollision::~G4VScatteringCollision()
|
||||
{
|
||||
delete theAngularDistribution;
|
||||
theAngularDistribution=0;
|
||||
}
|
||||
|
||||
|
||||
@@ -139,10 +140,8 @@ G4KineticTrackVector* G4VScatteringCollision::FinalState(const G4KineticTrack& t
|
||||
<< trk1.GetDefinition()->GetPDGCharge()<<" "<<trk1.GetDefinition()->GetParticleName()
|
||||
<< trk2.GetDefinition()->GetPDGCharge()<<" "<<trk2.GetDefinition()->GetParticleName()<<G4endl;
|
||||
}
|
||||
G4KineticTrack* final1 = new G4KineticTrack(const_cast<G4ParticleDefinition *>(OutputDefinitions[0]), 0.0,
|
||||
trk1.GetPosition(), p4Final1);
|
||||
G4KineticTrack* final2 = new G4KineticTrack(const_cast<G4ParticleDefinition *>(OutputDefinitions[1]), 0.0,
|
||||
trk2.GetPosition(), p4Final2);
|
||||
G4KineticTrack* final1 = new G4KineticTrack(OutputDefinitions[0], 0.0, trk1.GetPosition(), p4Final1);
|
||||
G4KineticTrack* final2 = new G4KineticTrack(OutputDefinitions[1], 0.0, trk2.GetPosition(), p4Final2);
|
||||
|
||||
G4KineticTrackVector* finalTracks = new G4KineticTrackVector;
|
||||
|
||||
@@ -178,6 +177,8 @@ double G4VScatteringCollision::SampleResonanceMass(const double poleMass,
|
||||
}
|
||||
}
|
||||
|
||||
void G4VScatteringCollision::establish_G4MT_TLS_G4VScatteringCollision(){establish_G4MT_TLS_G4VCollision();
|
||||
void G4VScatteringCollision::establish_G4MT_TLS_G4VScatteringCollision()
|
||||
{
|
||||
establish_G4MT_TLS_G4VCollision();
|
||||
theAngularDistribution = new G4AngularDistribution(true);
|
||||
}
|
||||
|
||||
@@ -74,8 +74,8 @@ G4double G4VXResonance::IsospinCorrection(const G4KineticTrack& trk1,
|
||||
{
|
||||
G4double result = 0.;
|
||||
|
||||
G4ParticleDefinition* in1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* in2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* in1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* in2 = trk2.GetDefinition();
|
||||
|
||||
G4int isoIn1 = in1->GetPDGiIsospin();
|
||||
G4int iso3In1 = in1->GetPDGiIsospin3();
|
||||
@@ -132,8 +132,8 @@ G4double G4VXResonance::DetailedBalance(const G4KineticTrack& trk1,
|
||||
// is used; in other words, the width of the resonances are folded to get the
|
||||
// mean square of the final state momentum.
|
||||
|
||||
G4ParticleDefinition* in1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* in2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* in1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* in2 = trk2.GetDefinition();
|
||||
if(in1->IsShortLived() && in2->IsShortLived())
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "Detailed balance for resonance scattering still on the schedule.");
|
||||
@@ -189,8 +189,8 @@ G4double G4VXResonance::DegeneracyFactor(const G4KineticTrack& trk1,
|
||||
{
|
||||
G4double value = 0.;
|
||||
|
||||
G4ParticleDefinition* in1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* in2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* in1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* in2 = trk2.GetDefinition();
|
||||
|
||||
G4double sIn1 = in1->GetPDGiSpin() + 1.;
|
||||
G4double sIn2 = in2->GetPDGiSpin() + 1.;
|
||||
|
||||
@@ -94,8 +94,8 @@ G4double G4XAnnihilationChannel::CrossSection(const G4KineticTrack& trk1,
|
||||
G4double sigma = 0.;
|
||||
G4double eCM = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
|
||||
G4int J1 = def1->GetPDGiSpin();
|
||||
G4int J2 = def2->GetPDGiSpin();
|
||||
@@ -200,8 +200,8 @@ G4double G4XAnnihilationChannel::NormalizedClebsch(const G4KineticTrack& trk1,
|
||||
const G4KineticTrack& trk2) const
|
||||
{
|
||||
G4double cleb = 0.;
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
|
||||
G4int iso31 = def1->GetPDGiIsospin3();
|
||||
G4int iso32 = def2->GetPDGiIsospin3();
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
#include "G4XAqmElastic.hh"
|
||||
#include "G4XAqmTotal.hh"
|
||||
#include "G4KineticTrack.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
|
||||
// Validity range of this cross-section
|
||||
@@ -82,8 +81,8 @@ G4double G4XAqmElastic::CrossSection(const G4KineticTrack& trk1, const G4Kinetic
|
||||
G4double sigma = 0.;
|
||||
|
||||
// Reference to be checked!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
const G4double coeff = 0.39;
|
||||
const G4double param = 1.5;
|
||||
static const G4double coeff = 0.39;
|
||||
static const G4double param = 1.5;
|
||||
|
||||
G4XAqmTotal aqmTotal;
|
||||
|
||||
|
||||
@@ -82,9 +82,9 @@ G4double G4XAqmTotal::CrossSection(const G4KineticTrack& trk1, const G4KineticTr
|
||||
G4double sigma = 0.;
|
||||
|
||||
// Get strangeness content
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4int sTrk1 = def1->GetQuarkContent(3) + def1->GetAntiQuarkContent(3);
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
G4int sTrk2 = def2->GetQuarkContent(3) + def2->GetAntiQuarkContent(3);
|
||||
|
||||
// Get non-strange quark content
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4PhysicsVector.hh"
|
||||
#include "G4PhysicsLnVector.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
@@ -141,9 +140,9 @@ G4double G4XNNElasticLowE::CrossSection(const G4KineticTrack& trk1, const G4Kine
|
||||
G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
G4bool dummy = false;
|
||||
|
||||
G4ParticleDefinition * key = FindKeyParticle(trk1,trk2);
|
||||
const G4ParticleDefinition * key = FindKeyParticle(trk1,trk2);
|
||||
|
||||
typedef std::map <G4ParticleDefinition *, G4PhysicsVector*, std::less<G4ParticleDefinition *> > StringPhysMap;
|
||||
typedef std::map <const G4ParticleDefinition *, G4PhysicsVector*, std::less<const G4ParticleDefinition *> > StringPhysMap;
|
||||
|
||||
if (xMap.find(key)!= xMap.end())
|
||||
{
|
||||
@@ -151,7 +150,7 @@ G4double G4XNNElasticLowE::CrossSection(const G4KineticTrack& trk1, const G4Kine
|
||||
StringPhysMap::const_iterator iter;
|
||||
for (iter = xMap.begin(); iter != xMap.end(); ++iter)
|
||||
{
|
||||
G4ParticleDefinition * str = (*iter).first;
|
||||
const G4ParticleDefinition * str = (*iter).first;
|
||||
if (str == key)
|
||||
{
|
||||
G4PhysicsVector* physVector = (*iter).second;
|
||||
@@ -180,15 +179,15 @@ void G4XNNElasticLowE::Print() const
|
||||
|
||||
G4bool dummy = false;
|
||||
G4int i;
|
||||
G4ParticleDefinition * key = G4Proton::ProtonDefinition();
|
||||
const G4ParticleDefinition * key = G4Proton::ProtonDefinition();
|
||||
G4PhysicsVector* pp = 0;
|
||||
|
||||
typedef std::map <G4ParticleDefinition *, G4PhysicsVector*, std::less<G4ParticleDefinition *> > StringPhysMap;
|
||||
typedef std::map <const G4ParticleDefinition *, G4PhysicsVector*, std::less<const G4ParticleDefinition *> > StringPhysMap;
|
||||
StringPhysMap::const_iterator iter;
|
||||
|
||||
for (iter = xMap.begin(); iter != xMap.end(); ++iter)
|
||||
{
|
||||
G4ParticleDefinition * str = (*iter).first;
|
||||
const G4ParticleDefinition * str = (*iter).first;
|
||||
if (str == key)
|
||||
{
|
||||
pp = (*iter).second;
|
||||
@@ -213,7 +212,7 @@ void G4XNNElasticLowE::Print() const
|
||||
G4PhysicsVector* np = 0;
|
||||
for (iter = xMap.begin(); iter != xMap.end(); ++iter)
|
||||
{
|
||||
G4ParticleDefinition * str = (*iter).first;
|
||||
const G4ParticleDefinition * str = (*iter).first;
|
||||
if (str == key)
|
||||
{
|
||||
np = (*iter).second;
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
#include "G4XNNTotalLowE.hh"
|
||||
#include "G4KineticTrack.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
@@ -81,7 +80,7 @@ G4double G4XNNTotalLowE::CrossSection(const G4KineticTrack& trk1, const G4Kineti
|
||||
{
|
||||
G4double result = 0.;
|
||||
G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
G4ParticleDefinition * key = FindKeyParticle(trk1,trk2);
|
||||
const G4ParticleDefinition * key = FindKeyParticle(trk1,trk2);
|
||||
|
||||
if (theCrossSections.find(key)!= theCrossSections.end())
|
||||
{
|
||||
|
||||
@@ -74,23 +74,23 @@ const G4double G4XPDGElastic::npbarPDGFit[7] = { 1.1, 5.55, 36.5, 0.,
|
||||
|
||||
G4XPDGElastic::G4XPDGElastic()
|
||||
{
|
||||
G4ParticleDefinition * proton = G4Proton::ProtonDefinition();
|
||||
G4ParticleDefinition * neutron = G4Neutron::NeutronDefinition();
|
||||
G4ParticleDefinition * piPlus = G4PionPlus::PionPlusDefinition();
|
||||
G4ParticleDefinition * piMinus = G4PionMinus::PionMinusDefinition();
|
||||
G4ParticleDefinition * KPlus = G4KaonPlus::KaonPlusDefinition();
|
||||
G4ParticleDefinition * KMinus = G4KaonMinus::KaonMinusDefinition();
|
||||
G4ParticleDefinition * antiproton = G4AntiProton::AntiProtonDefinition();
|
||||
const G4ParticleDefinition * proton = G4Proton::ProtonDefinition();
|
||||
const G4ParticleDefinition * neutron = G4Neutron::NeutronDefinition();
|
||||
const G4ParticleDefinition * piPlus = G4PionPlus::PionPlusDefinition();
|
||||
const G4ParticleDefinition * piMinus = G4PionMinus::PionMinusDefinition();
|
||||
const G4ParticleDefinition * KPlus = G4KaonPlus::KaonPlusDefinition();
|
||||
const G4ParticleDefinition * KMinus = G4KaonMinus::KaonMinusDefinition();
|
||||
const G4ParticleDefinition * antiproton = G4AntiProton::AntiProtonDefinition();
|
||||
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> pp(proton,proton);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> pn(proton,neutron);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> piPlusp(piPlus,proton);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> piMinusp(piMinus,proton);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> KPlusp(KPlus,proton);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> KMinusp(KMinus,proton);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> nn(neutron,neutron);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> ppbar(proton,antiproton);
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> npbar(antiproton,neutron);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> pp(proton,proton);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> pn(proton,neutron);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> piPlusp(piPlus,proton);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> piMinusp(piMinus,proton);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> KPlusp(KPlus,proton);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> KMinusp(KMinus,proton);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> nn(neutron,neutron);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> ppbar(proton,antiproton);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> npbar(antiproton,neutron);
|
||||
|
||||
std::vector<G4double> ppData;
|
||||
std::vector<G4double> pPiPlusData;
|
||||
@@ -157,8 +157,8 @@ G4double G4XPDGElastic::CrossSection(const G4KineticTrack& trk1, const G4Kinetic
|
||||
|
||||
G4double sigma = 0.;
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
|
||||
G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
G4double m_1 = def1->GetPDGMass();
|
||||
@@ -175,9 +175,9 @@ G4double G4XPDGElastic::CrossSection(const G4KineticTrack& trk1, const G4Kinetic
|
||||
// The PDG fit formula requires p in GeV/c
|
||||
|
||||
// Order the pair: first is the lower mass particle, second is the higher mass one
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> trkPair(def1,def2);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> trkPair(def1,def2);
|
||||
if (def1->GetPDGMass() > def2->GetPDGMass())
|
||||
trkPair = std::pair<G4ParticleDefinition *,G4ParticleDefinition *>(def2,def1);
|
||||
trkPair = std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *>(def2,def1);
|
||||
|
||||
std::vector<G4double> data;
|
||||
G4double pMinFit = 0.;
|
||||
@@ -197,7 +197,7 @@ G4double G4XPDGElastic::CrossSection(const G4KineticTrack& trk1, const G4Kinetic
|
||||
PairDoubleMap::const_iterator iter;
|
||||
for (iter = xMap.begin(); iter != xMap.end(); ++iter)
|
||||
{
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> thePair = (*iter).first;
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> thePair = (*iter).first;
|
||||
if (thePair == trkPair)
|
||||
{
|
||||
data = (*iter).second;
|
||||
|
||||
@@ -68,27 +68,27 @@ const G4double G4XPDGTotal::gammagammaPDGFit[5] = { 3., 300., 0.000156, 0.00
|
||||
|
||||
G4XPDGTotal::G4XPDGTotal()
|
||||
{
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> pp(G4Proton::ProtonDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> pp(G4Proton::ProtonDefinition(),
|
||||
G4Proton::ProtonDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> pn(G4Proton::ProtonDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> pn(G4Proton::ProtonDefinition(),
|
||||
G4Neutron::NeutronDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> piPlusp(G4PionPlus::PionPlusDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> piPlusp(G4PionPlus::PionPlusDefinition(),
|
||||
G4Proton::ProtonDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> piMinusp(G4PionMinus::PionMinusDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> piMinusp(G4PionMinus::PionMinusDefinition(),
|
||||
G4Proton::ProtonDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> KPlusp(G4KaonPlus::KaonPlusDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> KPlusp(G4KaonPlus::KaonPlusDefinition(),
|
||||
G4Proton::ProtonDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> KPlusn(G4KaonPlus::KaonPlusDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> KPlusn(G4KaonPlus::KaonPlusDefinition(),
|
||||
G4Neutron::NeutronDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> KMinusp(G4KaonMinus::KaonMinusDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> KMinusp(G4KaonMinus::KaonMinusDefinition(),
|
||||
G4Proton::ProtonDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> KMinusn(G4KaonMinus::KaonMinusDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> KMinusn(G4KaonMinus::KaonMinusDefinition(),
|
||||
G4Neutron::NeutronDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> gp(G4Gamma::GammaDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> gp(G4Gamma::GammaDefinition(),
|
||||
G4Proton::ProtonDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> gg(G4Gamma::GammaDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> gg(G4Gamma::GammaDefinition(),
|
||||
G4Gamma::GammaDefinition());
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> nn(G4Neutron::NeutronDefinition(),
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> nn(G4Neutron::NeutronDefinition(),
|
||||
G4Neutron::NeutronDefinition());
|
||||
|
||||
std::vector<G4double> nnData;
|
||||
@@ -161,8 +161,8 @@ G4double G4XPDGTotal::CrossSection(const G4KineticTrack& trk1,
|
||||
|
||||
G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
|
||||
G4double enc1 = def1->GetPDGEncoding();
|
||||
G4double enc2 = def2->GetPDGEncoding();
|
||||
@@ -170,10 +170,10 @@ G4double G4XPDGTotal::CrossSection(const G4KineticTrack& trk1,
|
||||
if ( (enc1 < 0 && enc2 >0) || (enc2 < 0 && enc1 >0) ) coeff = 1.;
|
||||
|
||||
// Order the pair: first is the lower mass particle, second is the higher mass one
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> trkPair(def1,def2);
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> trkPair(def1,def2);
|
||||
|
||||
if (def1->GetPDGMass() > def2->GetPDGMass())
|
||||
trkPair = std::pair<G4ParticleDefinition *,G4ParticleDefinition *>(def2,def1);
|
||||
trkPair = std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *>(def2,def1);
|
||||
|
||||
std::vector<G4double> data;
|
||||
|
||||
@@ -183,7 +183,7 @@ G4double G4XPDGTotal::CrossSection(const G4KineticTrack& trk1,
|
||||
PairDoubleMap::const_iterator iter;
|
||||
for (iter = xMap.begin(); iter != xMap.end(); ++iter)
|
||||
{
|
||||
std::pair<G4ParticleDefinition *,G4ParticleDefinition *> thePair = (*iter).first;
|
||||
std::pair<const G4ParticleDefinition *,const G4ParticleDefinition *> thePair = (*iter).first;
|
||||
if (thePair == trkPair)
|
||||
{
|
||||
data = (*iter).second;
|
||||
@@ -197,9 +197,9 @@ G4double G4XPDGTotal::CrossSection(const G4KineticTrack& trk1,
|
||||
// Total Cross-section fit, 1998 Review of Particle Properties, European Phys. J. 3(1998), 1
|
||||
|
||||
// Parameters from the PDG fit
|
||||
const G4double epsilon = 0.095;
|
||||
const G4double eta1 = -0.34;
|
||||
const G4double eta2 = -0.55;
|
||||
static const G4double epsilon = 0.095;
|
||||
static const G4double eta1 = -0.34;
|
||||
static const G4double eta2 = -0.55;
|
||||
|
||||
if (sqrtS < eMinFit || sqrtS > eMaxFit)
|
||||
{
|
||||
|
||||
@@ -52,7 +52,7 @@ G4XResonance::G4XResonance(const G4ParticleDefinition* in1,
|
||||
|
||||
|
||||
G4XResonance::~G4XResonance()
|
||||
{
|
||||
{
|
||||
delete table;
|
||||
table = 0;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4PhysicsVector.hh"
|
||||
#include "G4PhysicsLnVector.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
@@ -112,7 +111,8 @@ G4XnpElasticLowE::G4XnpElasticLowE()
|
||||
|
||||
G4XnpElasticLowE::~G4XnpElasticLowE()
|
||||
{
|
||||
delete _sigma;
|
||||
delete _sigma;
|
||||
_sigma = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -134,11 +134,11 @@ G4double G4XnpElasticLowE::CrossSection(const G4KineticTrack& trk1, const G4Kine
|
||||
G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
G4bool dummy = false;
|
||||
|
||||
G4ParticleDefinition* proton = G4Proton::ProtonDefinition();
|
||||
G4ParticleDefinition* neutron = G4Neutron::NeutronDefinition();
|
||||
const G4ParticleDefinition* proton = G4Proton::ProtonDefinition();
|
||||
const G4ParticleDefinition* neutron = G4Neutron::NeutronDefinition();
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
if ( (def1 == proton && def2 == neutron) ||
|
||||
(def1 == neutron && def2 == proton) )
|
||||
{
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4PhysicsVector.hh"
|
||||
#include "G4PhysicsLnVector.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
@@ -112,7 +111,8 @@ G4XnpTotalLowE::G4XnpTotalLowE()
|
||||
|
||||
G4XnpTotalLowE::~G4XnpTotalLowE()
|
||||
{
|
||||
delete _sigma;
|
||||
if (_sigma) delete _sigma;
|
||||
_sigma=0;
|
||||
}
|
||||
|
||||
|
||||
@@ -134,11 +134,11 @@ G4double G4XnpTotalLowE::CrossSection(const G4KineticTrack& trk1, const G4Kineti
|
||||
G4double sqrtS = (trk1.Get4Momentum() + trk2.Get4Momentum()).mag();
|
||||
G4bool dummy = false;
|
||||
|
||||
G4ParticleDefinition* proton = G4Proton::ProtonDefinition();
|
||||
G4ParticleDefinition* neutron = G4Neutron::NeutronDefinition();
|
||||
const G4ParticleDefinition* proton = G4Proton::ProtonDefinition();
|
||||
const G4ParticleDefinition* neutron = G4Neutron::NeutronDefinition();
|
||||
|
||||
G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
const G4ParticleDefinition* def1 = trk1.GetDefinition();
|
||||
const G4ParticleDefinition* def2 = trk2.GetDefinition();
|
||||
if ( (def1 == proton && def2 == neutron) ||
|
||||
(def1 == neutron && def2 == proton) )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user