Import Geant4 5.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:28:22 +02:00
parent fbd4999cf7
commit 4aea781e80
5454 changed files with 223141 additions and 67347 deletions
@@ -131,7 +131,7 @@ G4double G4AntiNeutronAnnihilationAtRest::AtRestGetPhysicalInteractionLength(
G4VParticleChange* G4AntiNeutronAnnihilationAtRest::AtRestDoIt(
const G4Track& track,
const G4Step& stepData
const G4Step&
)
//
// Handles AntiNeutrons at rest; an AntiNeutron can either create secondaries
@@ -279,7 +279,7 @@ void G4AntiNeutronAnnihilationAtRest::GenerateSecondaries()
}
// --- LIMIT THE VALUE OF NGKINE IN CASE OF OVERFLOW ---
ngkine = G4int(G4std::min(ngkine,G4int(MAX_SECONDARIES)));
ngkine = G4int(std::min(ngkine,G4int(MAX_SECONDARIES)));
} // GenerateSecondaries
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4AntiProtonAnnihilationAtRest.cc,v 1.6 2002/12/12 19:18:37 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4AntiProtonAnnihilationAtRest.cc,v 1.8 2003/06/16 17:11:57 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file --- Copyright CERN 1998
@@ -134,7 +134,7 @@ G4double G4AntiProtonAnnihilationAtRest::AtRestGetPhysicalInteractionLength(
G4VParticleChange* G4AntiProtonAnnihilationAtRest::AtRestDoIt(
const G4Track& track,
const G4Step& stepData
const G4Step&
)
//
// Handles AntiProtons at rest; a AntiProton can either create secondaries or
@@ -280,7 +280,7 @@ void G4AntiProtonAnnihilationAtRest::GenerateSecondaries()
}
// --- LIMIT THE VALUE OF NGKINE IN CASE OF OVERFLOW ---
ngkine = G4int(G4std::min(ngkine,G4int(MAX_SECONDARIES)));
ngkine = G4int(std::min(ngkine,G4int(MAX_SECONDARIES)));
} // GenerateSecondaries
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4DistributionGenerator.cc,v 1.9 2002/12/12 19:18:37 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4DistributionGenerator.cc,v 1.10 2003/06/16 17:11:59 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -45,8 +45,8 @@
// Constructor
G4DistributionGenerator::G4DistributionGenerator(G4std::vector<G4double>& x,
G4std::vector<G4double>& values)
G4DistributionGenerator::G4DistributionGenerator(std::vector<G4double>& x,
std::vector<G4double>& values)
{
_x = x;
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4KaonMinusAbsorption.cc,v 1.6 2002/12/12 19:18:37 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4KaonMinusAbsorption.cc,v 1.8 2003/06/16 17:12:00 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file --- Copyright CERN 1998
@@ -132,7 +132,7 @@ G4double G4KaonMinusAbsorption::AtRestGetPhysicalInteractionLength(
G4VParticleChange* G4KaonMinusAbsorption::AtRestDoIt(
const G4Track& track,
const G4Step& stepData
const G4Step&
)
//
// Handles KaonMinus at rest; a KaonMinus can either create secondaries or
@@ -278,7 +278,7 @@ void G4KaonMinusAbsorption::GenerateSecondaries()
}
// --- LIMIT THE VALUE OF NGKINE IN CASE OF OVERFLOW ---
ngkine = G4int(G4std::min(ngkine,G4int(MAX_SECONDARIES)));
ngkine = G4int(std::min(ngkine,G4int(MAX_SECONDARIES)));
} // GenerateSecondaries
@@ -91,7 +91,7 @@ G4KaonMinusAbsorptionAtRest::~G4KaonMinusAbsorptionAtRest()
G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt
(const G4Track& track, const G4Step& Step)
(const G4Track& track, const G4Step& )
{
stoppedHadron = track.GetDynamicParticle();
@@ -186,7 +186,7 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt
G4double newZ = nucleus->GetZ();
G4double newA = nucleus->GetN();
G4double bDiff = G4NucleiPropertiesTable::GetBindingEnergy(Z,A) -
G4double bDiff = G4NucleiPropertiesTable::GetBindingEnergy(static_cast<G4int>(Z),static_cast<G4int>(A)) -
G4NucleiPropertiesTable::GetBindingEnergy(static_cast<G4int>(newZ), static_cast<G4int>(newA));
// G4double mass = G4NucleiPropertiesTable::GetAtomicMass(static_cast<G4int>(newZ),static_cast<G4int>(newA));
@@ -222,7 +222,7 @@ G4int G4MuMinusCaptureCascade::DoCascade(const G4double Z, const G4double massA,
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void G4MuMinusCaptureCascade::DoBoundMuonMinusDecay(G4double Z, G4double massA,
void G4MuMinusCaptureCascade::DoBoundMuonMinusDecay(G4double Z, G4double /* massA*/,
G4int* nCascade,
G4GHEKinematicsVector* Cascade)
{
@@ -21,9 +21,6 @@
// ********************************************************************
//
//
// $Id: G4MuonMinusCaptureAtRest.cc,v 1.11 2003/02/26 17:01:43 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file --- Copyright CERN 1998
// CERN Geneva Switzerland
@@ -39,10 +36,11 @@
// **************************************************************
// V.Ivanchenko 7 Apr 2000 Advance model for electromagnetic
// capture and cascade
// V.Ivanchenko 10 Aug 2002 Add control on G4ParticleDefinition
// V.Ivanchenko 10 Aug 2002 Add control on G4ParticleDefinition
// of secondaries
// V.Ivanchenko 27 Oct 2002 NeutrinoE->NeutrinoMu
// V.Ivanchenko 26 Feb 2003 Fix bug#457
// V.Ivanchenko 19 Jun 2003 Fix bug in 2 alpha evaporation
//-----------------------------------------------------------------------------
#include "G4MuonMinusCaptureAtRest.hh"
@@ -179,7 +177,7 @@ G4bool G4MuonMinusCaptureAtRest::IsApplicable(
}
G4double G4MuonMinusCaptureAtRest::GetMeanLifeTime(const G4Track& track,
G4ForceCondition* condition)
G4ForceCondition* )
{
GetCaptureIsotope( track );
return (tDelay );
@@ -225,7 +223,7 @@ G4double G4MuonMinusCaptureAtRest::AtRestGetPhysicalInteractionLength(
}
// Return 0 interaction length to get for this process
// the 100% probability
// the 100% probability
return 0.0;
// return theNumberOfInteractionLengthLeft * currentInteractionLength;
@@ -234,7 +232,7 @@ G4double G4MuonMinusCaptureAtRest::AtRestGetPhysicalInteractionLength(
G4VParticleChange* G4MuonMinusCaptureAtRest::AtRestDoIt(
const G4Track& track,
const G4Step& stepData
const G4Step&
)
//
// Handles MuonMinuss at rest; a MuonMinus can either create secondaries or
@@ -271,7 +269,7 @@ G4VParticleChange* G4MuonMinusCaptureAtRest::AtRestDoIt(
// Decay or Capture?
G4double lambdac = pSelector->GetMuonCaptureRate(targetCharge,targetAtomicMass);
G4double lambdad = pSelector->GetMuonDecayRate(targetCharge,targetAtomicMass);
if( G4UniformRand()*(lambdac + lambdad) > lambdac) {
// Decay
@@ -282,7 +280,7 @@ G4VParticleChange* G4MuonMinusCaptureAtRest::AtRestDoIt(
DoMuCapture();
}
aParticleChange.SetNumberOfSecondaries( nGkine + nCascade );
// Store nuclear cascade
@@ -604,7 +602,7 @@ G4double G4MuonMinusCaptureAtRest::CalculateIsotopicMass(G4double a,
a * 8.367 - z * .783 + ev + es + ec + eex + cam2[iz0 - 1] + cam3[n - 1];
ret_val = (ret_val + a * O16OLD) * O16RAT - a * ( C12NEW - ADJUST );
d__1 = ret_val, d__2 = z * exhydr + (a - z) * exneut;
ret_val = G4std::min(d__1,d__2);
ret_val = std::min(d__1,d__2);
return ret_val;
} // CalculateIsotopicMass
@@ -689,12 +687,12 @@ void G4MuonMinusCaptureAtRest::EvaporationDeexcitation()
ipar = 2;
}
}
delpai = G4std::min(eexdum,delta);
delpai = std::min(eexdum,delta);
rnucl = residualNuclearMasses[atMassResidNucl - 1] * R0NUCL;
ainerm = massResidNucl * .24 * rnucl * rnucl;
roten0 = 0.5 * PLABRC * PLABRC / ainerm;
d__1 = delta, d__2 = roten0 * 2.;
enmin = G4std::max(d__1,d__2);
enmin = std::max(d__1,d__2);
rnmass = massResidNucl + excitEnResidNucl;
umo = rnmass;
gamcm = totEnResidNucl / rnmass;
@@ -733,7 +731,7 @@ void G4MuonMinusCaptureAtRest::EvaporationDeexcitation()
}
lexpn = (lmult << 1) + 1;
ddlexp = (G4double) lexpn;
xdismx = G4std::min(ddlexp,hhh);
xdismx = std::min(ddlexp,hhh);
if (xdismx > EXPMAX) {
dismx = 0.;
} else {
@@ -921,8 +919,8 @@ void G4MuonMinusCaptureAtRest::FermiMotion(G4int pidx)
frndm[0] = G4UniformRand();
frndm[1] = G4UniformRand();
frndm[2] = G4UniformRand();
r__1 = G4std::max(frndm[0],frndm[1]);
p2 = G4std::max(r__1,frndm[2]);
r__1 = std::max(frndm[0],frndm[1]);
p2 = std::max(r__1,frndm[2]);
if (atMassTarget <= 1) {
ferm = 0.;
}
@@ -1448,8 +1446,9 @@ void G4MuonMinusCaptureAtRest::ResidualNucleusCascade(G4int m2, G4int m3,
ja = m2;
jz = m3;
*u = t1;
rnmass = massResidNucl * 1e3 + *u;
// P2res and Ptres are the squared momentum and the momentum of the
// P2res and Ptres are the squared momentum and the momentum of the
// residual nucleus (now in relativistic kinematics), Umo the
// invariant mass of the system!
umo = rnmass;
@@ -1458,7 +1457,7 @@ void G4MuonMinusCaptureAtRest::ResidualNucleusCascade(G4int m2, G4int m3,
gamcm = elbtot / rnmass;
etacm = totMomResidNucl * 1e3 / rnmass;
L1000:
*loppar = false;
*loppar = false;
// Check for starting data inconsistencies
if (ja - jz < 0) {
G4cout << " Dres: cascade residual nucleus has mass no. less than Z!!"
@@ -1523,9 +1522,9 @@ L1000:
case 4:
// Triton:
d__1 = 0., d__2 = *u + bnmass[2] - bnmass[3];
deuneu = G4std::max(d__1,d__2);
deuneu = std::max(d__1,d__2);
d__1 = 0., d__2 = *u - bnmass[3];
prnene = G4std::max(d__1,d__2);
prnene = std::max(d__1,d__2);
qnorm = deuneu + prnene;
// If we cannot split then return
if (qnorm <= 0.) {
@@ -1567,9 +1566,9 @@ L1000:
case 5:
// 3-He:
d__1 = 0., d__2 = *u + bnmass[2] - bnmass[4];
deupro = G4std::max(d__1,d__2);
deupro = std::max(d__1,d__2);
d__1 = 0., d__2 = *u - bnmass[4];
prprne = G4std::max(d__1,d__2);
prprne = std::max(d__1,d__2);
qnorm = deupro + prprne;
// If we cannot split then return
if (qnorm <= 0.) {
@@ -1612,11 +1611,11 @@ L1000:
// Alpha:
//
d__1 = 0., d__2 = *u + bnmass[2] * 2. - bnmass[5];
deudeu = G4std::max(d__1,d__2);
deudeu = std::max(d__1,d__2);
d__1 = 0., d__2 = *u + bnmass[3] - bnmass[5];
protri = G4std::max(d__1,d__2);
protri = std::max(d__1,d__2);
d__1 = 0., d__2 = *u + bnmass[4] - bnmass[5];
ueu3he = G4std::max(d__1,d__2);
ueu3he = std::max(d__1,d__2);
qnorm = deudeu + protri + ueu3he;
// If we cannot split then return
if (qnorm <= 0.) {
@@ -1657,6 +1656,7 @@ L1000:
z = (G4double) jz;
q[0] = 0.;
energ0 = GetIsotopicMass(a, z);
G4cout << "energ0= " << energ0 << G4endl;
// Note that Q(i) are not the reaction Qs but the remaining
// energy after the reaction
for (k = 1; k <= 6; ++k) {
@@ -1670,7 +1670,7 @@ L1000:
ddjja = (G4double) jja;
ddjjz = (G4double) jjz;
d__1 = *u + energ0 - GetIsotopicMass(ddjja, ddjjz) - exmass[k - 1];
q[k] = G4std::max(d__1,0.) + q[k - 1];
q[k] = std::max(d__1,0.) + q[k - 1];
}
// If no emission channel is open then return
if (q[6] <= 0.) {
@@ -1892,13 +1892,13 @@ L2600:
ExcitationEnergyLevel(iaa, izz, &eex1st, &eex2nd, &corr);
eex1st *= 1e3;
eex2nd *= 1e3;
corr = G4std::max(corr,0.) * 1e3;
corr = std::max(corr,0.) * 1e3;
if (nn == 4 && izz == 4) {
if (*u - thresh[j - 1] - 6.1 > 0.) {
corr = 6.;
} else {
tmpvar = *u - thresh[j - 1] - .1;
corr = G4std::max(0.,tmpvar);
corr = std::max(0.,tmpvar);
}
}
if (NINT(pairCorrFlag) == 1) {
@@ -1907,20 +1907,20 @@ L2600:
corrrr[j - 1] = corr;
// Standard calculation:
arg = *u - thresh[j - 1] - corr;
if (arg < 0.) {
if (!(arg >= 0)) {
r[j - 1] = 0.;
s[j - 1] = 0.;
sos[j - 1] = 0.;
continue;
continue;
}
s[j - 1] = sqrt(smalla[j - 1] * arg) * 2.;
sos[j - 1] = s[j - 1] * 10.;
}
n1 = 1;
d__1 =
G4std::max(s[0],s[1]), d__1 = G4std::max(d__1,s[2]), d__1 =
G4std::max(d__1,s[3]), d__1 = G4std::max(d__1,s[4]);
ses = G4std::max(d__1,s[5]);
std::max(s[0],s[1]), d__1 = std::max(d__1,s[2]), d__1 =
std::max(d__1,s[3]), d__1 = std::max(d__1,s[4]);
ses = std::max(d__1,s[5]);
for (j = 1; j <= 6; ++j) {
js = (G4int) (sos[j - 1] + 1.);
fjs = (G4double) js;
@@ -1928,12 +1928,12 @@ L2600:
if (s[j - 1] > 0.) {
mm = ja - ia[j - 1];
d__3 = EXPMIN, d__4 = s[j - 1] - ses;
d__1 = EXPMAX, d__2 = G4std::max(d__3,d__4);
expsas = G4std::min(d__1,d__2);
d__1 = EXPMAX, d__2 = std::max(d__3,d__4);
expsas = std::min(d__1,d__2);
sas = exp(expsas);
d__3 = EXPMIN, d__4 = -s[j - 1];
d__1 = EXPMAX, d__2 = G4std::max(d__3,d__4);
expsus = G4std::min(d__1,d__2);
d__1 = EXPMAX, d__2 = std::max(d__3,d__4);
expsus = std::min(d__1,d__2);
sus = exp(expsus);
d__1 = s[j - 1];
d__2 = s[j - 1];
@@ -1953,7 +1953,7 @@ L2600:
r[j - 1] = ccoul[j - 1] * (d__1 * d__1) * eye1[j - 1] * sas;
}
d__1 = 0., d__2 = r[j - 1];
r[j - 1] = G4std::max(d__1,d__2);
r[j - 1] = std::max(d__1,d__2);
sigma += r[j - 1];
}
}
@@ -2221,7 +2221,7 @@ L76:
// Store the first alpha!!
smom1[5] += eps;
++nVariousFragm[5];
itemp = nVariousFragm[5] - 1 + 499*MXEVAP;
itemp = nVariousFragm[5] + 499;
Evaporates[itemp].SetZero();
Evaporates[itemp].SetMass( massFragm[5] );
Evaporates[itemp].SetMomentum( plbpx/phelp, plbpy/phelp, plbpz/phelp );
@@ -2237,7 +2237,7 @@ L76:
// Store the second alpha !!
smom1[5] += eps;
++nVariousFragm[5];
itemp = nVariousFragm[5] - 1 + 499*MXEVAP;
itemp = nVariousFragm[5] + 499;
Evaporates[itemp].SetZero();
Evaporates[itemp].SetMass( massFragm[5] );
Evaporates[itemp].SetMomentum( plbpx/phelp, plbpy/phelp, plbpz/phelp );
@@ -2322,7 +2322,8 @@ void G4MuonMinusCaptureAtRest::Erup()
// Try evaporation
m2 = NINT(atMassEvapNucl);
m3 = NINT(chargeEvapNucl);
for (;;) {
// for (;;) {
do {
ResidualNucleusCascade(m2, m3, iniExcitEnEvapNucl, &finExcitEnEvapNucl,
&recoilEnEvapNucl, &loppar);
fpartt = 0.;
@@ -2334,7 +2335,7 @@ void G4MuonMinusCaptureAtRest::Erup()
break;
}
pairCorrFlag = 1.;
}
} while (pairCorrFlag > 0.);
// No more particles evaporated and pairing corrections accounted for
pairCorrFlag = 0.;
chargeEvapNucl =
@@ -3541,7 +3542,7 @@ void G4MuonMinusCaptureAtRest::DoMuCapture()
}
}
i__1 = nSecPart, i__2 = MXGKIN - nGkine;
nstak1 = G4std::min(i__1,i__2);
nstak1 = std::min(i__1,i__2);
if (nSecPart > nstak1) {
G4cout << " **** FLUFIN: Stack overflow, "
<< nSecPart - nstak1 << " particles lost" << G4endl;
@@ -3561,7 +3562,7 @@ void G4MuonMinusCaptureAtRest::DoMuCapture()
Gkin[nGkine - 1].SetTOF( tDelay );
}
i__1 = nallFragm, i__2 = MXGKIN - nGkine;
nstak2 = G4std::min(i__1,i__2);
nstak2 = std::min(i__1,i__2);
if (nallFragm > nstak2) {
G4cout << " **** FLUFIN: Stack overflow, "
<< nallFragm - nstak2 << " heavy particles lost" << G4endl;
@@ -3603,7 +3604,7 @@ void G4MuonMinusCaptureAtRest::MuEvaporation()
// The initial excitation energy, mass and charge of the nucleus are
// put into Ex, Apr, Zpr (common Hetc5)
d__1 = excitEnResidNucl * 1000;
iniExcitEnEvapNucl = G4std::max(d__1,ANGLGB);
iniExcitEnEvapNucl = std::max(d__1,ANGLGB);
atMassEvapNucl = atMassCurrent;
chargeEvapNucl = chargeCurrent;
// Ammres is the atomic mass of the residual nucleus
@@ -3664,15 +3665,16 @@ void G4MuonMinusCaptureAtRest::MuEvaporation()
totMomResidNucl = 0.;
momXResidNucl = 0.;
momYResidNucl = 0.;
momZResidNucl = 0.;
momZResidNucl = 1.;
totEnResidNucl = 0.;
kinEnResidNucl = 0.;
} else {
massResidNucl =
atMassCurrent * AMUAMU +
GetIsotopicMass(atMassCurrent, chargeCurrent) * .001;
excitEnResidNucl = finExcitEnEvapNucl * .001;
d__1 = recoilEnEvapNucl * .001;
recoilEnResidNucl = G4std::max(d__1,0.);
recoilEnResidNucl = std::max(d__1,0.);
totMomResidNucl =
sqrt(recoilEnResidNucl *
(recoilEnResidNucl + (massResidNucl + excitEnResidNucl) * 2.));
@@ -3683,13 +3685,17 @@ void G4MuonMinusCaptureAtRest::MuEvaporation()
kinEnResidNucl = recoilEnResidNucl;
}
etevap += totEnResidNucl;
if ((d__1 = etevap - eotest, abs(d__1)) / eotest > .05) {
if (abs(etevap - eotest) > eotest*.05) {
G4cout << " Evevap: failure in energy conservation!!"
<< " " << etevap << " " << eotest << " " << etevap - eotest
<< " " << totEnResidNucl << G4endl;
<< " " << etevap << " " << eotest << " " << etevap - eotest
<< " etotres= " << totEnResidNucl
<< " Z= " << chargeCurrent
<< " A= " << atMassCurrent
<< G4endl;
}
// Check if the deexcitation module have to be called
EvaporationDeexcitation();
if ( totEnResidNucl>0.0 ) EvaporationDeexcitation();
return;
} // MuEvaporation
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4NeutronCaptureAtRest.cc,v 1.6 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4NeutronCaptureAtRest.cc,v 1.8 2003/06/16 17:12:02 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file --- Copyright CERN 1998
@@ -125,7 +125,7 @@ G4double G4NeutronCaptureAtRest::AtRestGetPhysicalInteractionLength(
G4VParticleChange* G4NeutronCaptureAtRest::AtRestDoIt(
const G4Track& track,
const G4Step& stepData
const G4Step&
)
//
// Handles Neutrons at rest; a Neutron can either create secondaries or
@@ -271,7 +271,7 @@ void G4NeutronCaptureAtRest::GenerateSecondaries()
}
// --- LIMIT THE VALUE OF NGKINE IN CASE OF OVERFLOW ---
ngkine = G4int(G4std::min(ngkine,G4int(MAX_SECONDARIES)));
ngkine = G4int(std::min(ngkine,G4int(MAX_SECONDARIES)));
} // GenerateSecondaries
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusAbsorptionAtRest.cc,v 1.11 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusAbsorptionAtRest.cc,v 1.12 2003/05/30 10:50:53 hpw Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -84,7 +84,7 @@ G4PiMinusAbsorptionAtRest::~G4PiMinusAbsorptionAtRest()
{}
G4VParticleChange* G4PiMinusAbsorptionAtRest::AtRestDoIt(const G4Track& track, const G4Step& Step)
G4VParticleChange* G4PiMinusAbsorptionAtRest::AtRestDoIt(const G4Track& track, const G4Step& )
{
const G4DynamicParticle* stoppedHadron = track.GetDynamicParticle();
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopAbsorption.cc,v 1.12 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopAbsorption.cc,v 1.13 2003/06/16 17:12:03 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -40,7 +40,7 @@
#include "G4PiMinusStopAbsorption.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -81,7 +81,7 @@ G4PiMinusStopAbsorption::~G4PiMinusStopAbsorption()
G4DynamicParticleVector* G4PiMinusStopAbsorption::DoAbsorption()
{
G4std::vector<G4ParticleDefinition*>* defNucleons = _materialAlgo->DefinitionVector();
std::vector<G4ParticleDefinition*>* defNucleons = _materialAlgo->DefinitionVector();
G4double newA = _nucleusA;
G4double newZ = _nucleusZ;
@@ -104,7 +104,7 @@ G4DynamicParticleVector* G4PiMinusStopAbsorption::DoAbsorption()
G4double mass = G4NucleiProperties::GetNuclearMass(static_cast<G4int>(newA),static_cast<G4int>(newZ));
G4std::vector<G4LorentzVector*>* p4Nucleons = _materialAlgo->P4Vector(binding,mass);
std::vector<G4LorentzVector*>* p4Nucleons = _materialAlgo->P4Vector(binding,mass);
if (defNucleons != 0 && p4Nucleons != 0)
{
@@ -202,7 +202,7 @@ G4double G4PiMinusStopAbsorption::Energy()
if (_level > 0)
{
G4std::cout << "E products " << productEnergy
std::cout << "E products " << productEnergy
<< " Binding " << productBinding << " " << temp << " "
<< " Tnucleus " << tNucleus
<< " energy = " << energy << G4endl;
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopAl.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopAl.cc,v 1.9 2003/06/16 17:12:04 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -103,11 +103,11 @@ G4PiMinusStopAl::G4PiMinusStopAl()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -117,8 +117,8 @@ G4PiMinusStopAl::G4PiMinusStopAl()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopC.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopC.cc,v 1.9 2003/06/16 17:12:05 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopC.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -121,11 +121,11 @@ G4PiMinusStopC::G4PiMinusStopC()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -135,8 +135,8 @@ G4PiMinusStopC::G4PiMinusStopC()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopCo.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopCo.cc,v 1.9 2003/06/16 17:12:06 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopCo.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -107,11 +107,11 @@ G4PiMinusStopCo::G4PiMinusStopCo()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -121,8 +121,8 @@ G4PiMinusStopCo::G4PiMinusStopCo()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopCu.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopCu.cc,v 1.9 2003/06/16 17:12:07 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopCu.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -106,11 +106,11 @@ G4PiMinusStopCu::G4PiMinusStopCu()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition* >();
_momenta = new G4std::vector<G4LorentzVector* >();
_definitions = new std::vector<G4ParticleDefinition* >();
_momenta = new std::vector<G4LorentzVector* >();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -120,8 +120,8 @@ G4PiMinusStopCu::G4PiMinusStopCu()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopLi.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopLi.cc,v 1.9 2003/06/16 17:12:08 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopLi.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -111,11 +111,11 @@ G4PiMinusStopLi::G4PiMinusStopLi()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -125,8 +125,8 @@ G4PiMinusStopLi::G4PiMinusStopLi()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopMaterial.cc,v 1.10 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopMaterial.cc,v 1.11 2003/06/16 17:12:10 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopMaterial.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -86,7 +86,7 @@ G4PiMinusStopMaterial::~G4PiMinusStopMaterial()
delete _distributionAngle;
}
G4std::vector<G4ParticleDefinition*>* G4PiMinusStopMaterial::DefinitionVector()
std::vector<G4ParticleDefinition*>* G4PiMinusStopMaterial::DefinitionVector()
{
_definitions->push_back(G4Neutron::Neutron());
@@ -101,7 +101,7 @@ G4std::vector<G4ParticleDefinition*>* G4PiMinusStopMaterial::DefinitionVector()
}
G4std::vector<G4LorentzVector*>* G4PiMinusStopMaterial::P4Vector(const G4double binding,
std::vector<G4LorentzVector*>* G4PiMinusStopMaterial::P4Vector(const G4double binding,
const G4double massNucleus)
{
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopN.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopN.cc,v 1.9 2003/06/16 17:12:11 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopN.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -105,11 +105,11 @@ G4PiMinusStopN::G4PiMinusStopN()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -119,8 +119,8 @@ G4PiMinusStopN::G4PiMinusStopN()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopO.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopO.cc,v 1.9 2003/06/16 17:12:12 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopO.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -105,11 +105,11 @@ G4PiMinusStopO::G4PiMinusStopO()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -119,8 +119,8 @@ G4PiMinusStopO::G4PiMinusStopO()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopPb.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopPb.cc,v 1.9 2003/06/16 17:12:13 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopPb.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -105,11 +105,11 @@ G4PiMinusStopPb::G4PiMinusStopPb()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -119,8 +119,8 @@ G4PiMinusStopPb::G4PiMinusStopPb()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PiMinusStopTa.cc,v 1.8 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PiMinusStopTa.cc,v 1.9 2003/06/16 17:12:14 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -42,7 +42,7 @@
#include "G4PiMinusStopTa.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -105,11 +105,11 @@ G4PiMinusStopTa::G4PiMinusStopTa()
// R ratio
theR = 1. / (1. + npRatio);
_definitions = new G4std::vector<G4ParticleDefinition*>();
_momenta = new G4std::vector<G4LorentzVector*>();
_definitions = new std::vector<G4ParticleDefinition*>();
_momenta = new std::vector<G4LorentzVector*>();
G4std::vector<double> eKinVector;
G4std::vector<double> eKinDataVector;
std::vector<double> eKinVector;
std::vector<double> eKinDataVector;
int i;
for (i=0; i<eKinEntries; i++)
{
@@ -119,8 +119,8 @@ G4PiMinusStopTa::G4PiMinusStopTa()
eKinVector.push_back(eKin[eKinEntries]);
_distributionE = new G4DistributionGenerator(eKinVector,eKinDataVector);
G4std::vector<double> angleVector;
G4std::vector<double> angleDataVector;
std::vector<double> angleVector;
std::vector<double> angleDataVector;
for (i=0; i<angleEntries; i++)
{
angleVector.push_back(angle[i]);
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4PionMinusAbsorptionAtRest.cc,v 1.7 2002/12/12 19:18:38 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4PionMinusAbsorptionAtRest.cc,v 1.9 2003/06/16 17:12:15 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file --- Copyright CERN 1998
@@ -127,7 +127,7 @@ G4double G4PionMinusAbsorptionAtRest::AtRestGetPhysicalInteractionLength(
G4VParticleChange* G4PionMinusAbsorptionAtRest::AtRestDoIt(
const G4Track& track,
const G4Step& stepData
const G4Step&
)
//
// Handles PionMinuss at rest; a PionMinus can either create secondaries or
@@ -273,7 +273,7 @@ void G4PionMinusAbsorptionAtRest::GenerateSecondaries()
}
// --- LIMIT THE VALUE OF NGKINE IN CASE OF OVERFLOW ---
ngkine = G4int(G4std::min(ngkine,G4int(MAX_SECONDARIES)));
ngkine = G4int(std::min(ngkine,G4int(MAX_SECONDARIES)));
} // GenerateSecondaries
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4StopDeexcitation.cc,v 1.8 2002/12/12 19:18:39 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4StopDeexcitation.cc,v 1.9 2003/06/16 17:12:16 gunter Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -40,7 +40,7 @@
#include "G4StopDeexcitation.hh"
#include "g4std/vector"
#include <vector>
#include "globals.hh"
#include "Randomize.hh"
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: G4StopDummyDeexcitation.cc,v 1.8 2002/12/12 19:18:39 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// $Id: G4StopDummyDeexcitation.cc,v 1.9 2003/05/30 10:50:53 hpw Exp $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998
@@ -59,9 +59,9 @@ G4StopDummyDeexcitation::~G4StopDummyDeexcitation()
{
}
G4ReactionProductVector* G4StopDummyDeexcitation::BreakUp(G4double A, G4double Z,
G4double excitation,
const G4ThreeVector& p)
G4ReactionProductVector* G4StopDummyDeexcitation::BreakUp(G4double /*A*/, G4double /*Z*/,
G4double /*excitation*/,
const G4ThreeVector& /*p*/)
{
return 0;
}
@@ -48,7 +48,7 @@
//-----------------------------------------------------------------------------
#include "G4StopElementSelector.hh"
#include "g4std/vector"
#include <vector>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -130,7 +130,7 @@ G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A)
{
// Initialized data
// static G4std::vector<G4double> zeff(100);
// static std::vector<G4double> zeff(100);
static G4double zeff[100] = {
1.,1.98,2.95,3.89,4.8,5.72,6.61,7.49,8.32,9.12,9.95,10.69,11.48,12.22,
12.91,13.64,14.24,14.89,15.53,16.15,16.75,17.38,18.04,18.49,
@@ -147,7 +147,7 @@ G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A)
// Atomizdat, 1978. (Experimental capture velocities)
const size_t ListZE = 65;
// static G4std::vector<G4int> ListZExp[ListZE] = {
// static std::vector<G4int> ListZExp[ListZE] = {
static G4int ListZExp[ListZE] = {
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 22, 23,
@@ -156,7 +156,7 @@ G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A)
50, 51, 52, 53, 55, 56, 57, 58, 59, 60,
62, 64, 65, 67, 72, 73, 74, 80, 81, 82,
83, 90, 92, 93};
// static G4std::vector<G4double> ListCaptureVel[ListZE] = {
// static std::vector<G4double> ListCaptureVel[ListZE] = {
static G4double ListCaptureVel[ListZE] = {
0.0057, 0.010, 0.0258, 0.0371, 0.0644,
0.0974, 0.144, 0.250, 0.386, 0.479,
@@ -210,7 +210,7 @@ G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4double G4StopElementSelector::GetMuonDecayRate(G4double Z, G4double A)
G4double G4StopElementSelector::GetMuonDecayRate(G4double Z, G4double /* A */)
{
// Decay time on K-shell
// N.C.Mukhopadhyay Phys. Rep. 30 (1977) 1.
@@ -22,7 +22,7 @@
//
//
// $Id: G4StopTheoDeexcitation.cc,v 1.9 2002/12/12 19:18:39 gunter Exp $
// GEANT4 tag $Name: geant4-05-01 $
// GEANT4 tag $Name: geant4-05-02 $
//
// -------------------------------------------------------------------
// GEANT 4 class file --- Copyright CERN 1998