Import Geant4 9.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:58:43 +02:00
parent 96c8bcd0af
commit b79225fb37
7544 changed files with 245407 additions and 91099 deletions
@@ -25,7 +25,7 @@
//
//
// $Id: G4AnnihiToMuPair.hh,v 1.2 2006/06/29 19:32:12 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// ------------ G4AnnihiToMuPair physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, November 2002
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BetheBlochNoDeltaModel.hh,v 1.7 2006/06/29 19:32:14 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4BraggNoDeltaModel.hh,v 1.6 2006/06/29 19:32:16 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -25,7 +25,7 @@
//
//
// $Id: G4GammaConversionToMuons.hh,v 1.2 2006/06/29 19:32:18 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// ------------ G4GammaConversionToMuons physics process ------
// by H.Burkhardt, S. Kelner and R. Kokoulin, April 2002
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4Vee2hadrons.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// $Id: G4Vee2hadrons.hh,v 1.4 2008/07/10 18:06:38 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -62,7 +62,7 @@ class G4Vee2hadrons
public:
G4Vee2hadrons() {};
G4Vee2hadrons() : lowEnergy(0.0), highEnergy(1.1*GeV) {};
virtual ~G4Vee2hadrons() {};
@@ -75,7 +75,15 @@ public:
virtual G4PhysicsVector* PhysicsVector(G4double, G4double) const = 0;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
G4double, const G4ThreeVector&) const = 0;
G4double, const G4ThreeVector&) = 0;
void SetLowEnergy(G4double val) {lowEnergy = val;};
G4double LowEnergy() const {return lowEnergy;};
void SetHighEnergy(G4double val) {highEnergy = val;};
G4double HighEnergy() const {return highEnergy;};
private:
@@ -83,6 +91,9 @@ private:
G4Vee2hadrons & operator=(const G4Vee2hadrons &right);
G4Vee2hadrons(const G4Vee2hadrons&);
G4double lowEnergy;
G4double highEnergy;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -0,0 +1,116 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4ee2KChargedModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4ee2KChargedModel
//
// Author: Vladimir Ivanchenko
//
// Creation date: 09.07.2008
//
// Modifications:
//
//
// Class Description:
//
// -------------------------------------------------------------------
//
#ifndef G4ee2KChargedModel_h
#define G4ee2KChargedModel_h 1
#include "G4Vee2hadrons.hh"
#include "globals.hh"
#include "G4eeCrossSections.hh"
class G4DynamicParticle;
class G4PhysicsVector;
class G4ee2KChargedModel : public G4Vee2hadrons
{
public:
G4ee2KChargedModel(G4eeCrossSections*);
virtual ~G4ee2KChargedModel();
G4double ThresholdEnergy() const;
G4double PeakEnergy() const;
G4double ComputeCrossSection(G4double) const;
G4PhysicsVector* PhysicsVector(G4double, G4double) const;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
G4double, const G4ThreeVector&);
private:
// hide assignment operator
G4ee2KChargedModel & operator=(const G4ee2KChargedModel &right);
G4ee2KChargedModel(const G4ee2KChargedModel&);
G4eeCrossSections* cross;
G4double massK;
G4double massPhi;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4ee2KChargedModel::ThresholdEnergy() const
{
return 2.0*massK;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4ee2KChargedModel::PeakEnergy() const
{
return massPhi;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4ee2KChargedModel::ComputeCrossSection(G4double e) const
{
G4double ee = std::min(HighEnergy(),e);
return cross->CrossSection2Kcharged(ee);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -0,0 +1,116 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4ee2KNeutralModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4ee2KNeutralModel
//
// Author: Vladimir Ivanchenko
//
// Creation date: 09.07.2008
//
// Modifications:
//
//
// Class Description:
//
// -------------------------------------------------------------------
//
#ifndef G4ee2KNeutralModel_h
#define G4ee2KNeutralModel_h 1
#include "G4Vee2hadrons.hh"
#include "globals.hh"
#include "G4eeCrossSections.hh"
class G4DynamicParticle;
class G4PhysicsVector;
class G4ee2KNeutralModel : public G4Vee2hadrons
{
public:
G4ee2KNeutralModel(G4eeCrossSections*);
virtual ~G4ee2KNeutralModel();
G4double ThresholdEnergy() const;
G4double PeakEnergy() const;
G4double ComputeCrossSection(G4double) const;
G4PhysicsVector* PhysicsVector(G4double, G4double) const;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
G4double, const G4ThreeVector&);
private:
// hide assignment operator
G4ee2KNeutralModel & operator=(const G4ee2KNeutralModel &right);
G4ee2KNeutralModel(const G4ee2KNeutralModel&);
G4eeCrossSections* cross;
G4double massK;
G4double massPhi;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4ee2KNeutralModel::ThresholdEnergy() const
{
return 2.0*massK;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4ee2KNeutralModel::PeakEnergy() const
{
return massPhi;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4ee2KNeutralModel::ComputeCrossSection(G4double e) const
{
G4double ee = std::min(HighEnergy(),e);
return cross->CrossSection2Kneutral(ee);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4eeCrossSections.hh,v 1.2 2006/06/29 19:32:22 gunter Exp $
// GEANT4 tag $Name: geant4-09-01 $
// $Id: G4eeCrossSections.hh,v 1.3 2008/07/10 18:06:38 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -69,10 +69,16 @@ public:
G4double CrossSection3pi(G4double);
G4double CrossSectionPi0G(G4double);
G4double CrossSectionEtaG(G4double);
G4double CrossSection2Kcharged(G4double);
G4double CrossSection2Kneutral(G4double);
std::complex<G4double> DpRho(G4double e);
private:
void Initialise();
@@ -94,13 +100,10 @@ private:
G4double WidthPhi(G4double e);
std::complex<G4double> DpRho(G4double e);
std::complex<G4double> DpOm(G4double e);
std::complex<G4double> DpPhi(G4double e);
// hide assignment operator
G4eeCrossSections & operator=(const G4eeCrossSections &right);
G4eeCrossSections(const G4eeCrossSections&);
@@ -0,0 +1,122 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4eeTo3PiModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4eeTo3PiModel
//
// Author: Vladimir Ivanchenko
//
// Creation date: 25.10.2003
//
// Modifications:
//
//
// Class Description:
//
// -------------------------------------------------------------------
//
#ifndef G4eeTo3PiModel_h
#define G4eeTo3PiModel_h 1
#include "G4Vee2hadrons.hh"
#include "globals.hh"
#include "G4eeCrossSections.hh"
class G4DynamicParticle;
class G4PhysicsVector;
class G4eeTo3PiModel : public G4Vee2hadrons
{
public:
G4eeTo3PiModel(G4eeCrossSections*);
virtual ~G4eeTo3PiModel();
G4double ThresholdEnergy() const;
G4double PeakEnergy() const;
G4double ComputeCrossSection(G4double) const;
G4PhysicsVector* PhysicsVector(G4double, G4double) const;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
G4double, const G4ThreeVector&);
private:
// hide assignment operator
G4eeTo3PiModel & operator=(const G4eeTo3PiModel &right);
G4eeTo3PiModel(const G4eeTo3PiModel&);
G4eeCrossSections* cross;
G4double massPi;
G4double massPi0;
G4double massOm;
G4double massPhi;
G4double gcash;
G4double gmax;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeTo3PiModel::ThresholdEnergy() const
{
return std::max(LowEnergy(),2.0*massPi + massPi0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeTo3PiModel::PeakEnergy() const
{
G4double e = massOm;
if(HighEnergy() > massPhi) e = massPhi;
return e;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeTo3PiModel::ComputeCrossSection(G4double e) const
{
G4double ee = std::min(HighEnergy(),e);
return cross->CrossSection3pi(ee);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4eeToHadrons.hh,v 1.8 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4eeToHadronsModel.hh,v 1.6 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// $Id: G4eeToHadronsModel.hh,v 1.7 2008/07/10 18:06:38 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -62,15 +62,13 @@ class G4eeToHadronsModel : public G4VEmModel
public:
G4eeToHadronsModel(const G4Vee2hadrons*, G4int ver=0,
G4eeToHadronsModel(G4Vee2hadrons*, G4int ver=0,
const G4String& nam = "eeToHadrons");
virtual ~G4eeToHadronsModel();
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
G4double PeakEnergy() const;
virtual G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
@@ -98,6 +96,8 @@ public:
G4DynamicParticle* GenerateCMPhoton(G4double);
inline G4double PeakEnergy() const;
private:
void ComputeCMCrossSectionPerElectron();
@@ -106,7 +106,7 @@ private:
G4eeToHadronsModel & operator=(const G4eeToHadronsModel &right);
G4eeToHadronsModel(const G4eeToHadronsModel&);
const G4Vee2hadrons* model;
G4Vee2hadrons* model;
G4ParticleDefinition* theGamma;
G4PhysicsVector* crossPerElectron;
G4PhysicsVector* crossBornPerElectron;
@@ -132,27 +132,4 @@ inline G4double G4eeToHadronsModel::PeakEnergy() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToHadronsModel::CrossSectionPerVolume(
const G4Material* mat,
const G4ParticleDefinition* p,
G4double kineticEnergy,
G4double, G4double)
{
return mat->GetElectronDensity()*
ComputeCrossSectionPerElectron(p, kineticEnergy);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToHadronsModel::ComputeCrossSectionPerAtom(
const G4ParticleDefinition* p,
G4double kineticEnergy,
G4double Z, G4double,
G4double, G4double)
{
return Z*ComputeCrossSectionPerElectron(p, kineticEnergy);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4eeToHadronsMultiModel.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// $Id: G4eeToHadronsMultiModel.hh,v 1.6 2008/07/10 18:06:38 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -58,6 +58,7 @@
#include <vector>
class G4eeCrossSections;
class G4Vee2hadrons;
class G4eeToHadronsMultiModel : public G4VEmModel
{
@@ -83,18 +84,18 @@ public:
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
virtual G4double ComputeCrossSectionPerElectron(
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double maxEnergy = DBL_MAX);
inline G4double ComputeCrossSectionPerElectron(
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
void PrintInfo();
// Set the factor to artificially increase the crossSection (default 1)
@@ -102,6 +103,8 @@ public:
private:
void AddEEModel(G4Vee2hadrons*);
// hide assignment operator
G4eeToHadronsMultiModel & operator=(const G4eeToHadronsMultiModel &right);
G4eeToHadronsMultiModel(const G4eeToHadronsMultiModel&);
@@ -127,29 +130,6 @@ private:
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToHadronsMultiModel::CrossSectionPerVolume(
const G4Material* mat,
const G4ParticleDefinition* p,
G4double kineticEnergy,
G4double, G4double)
{
return mat->GetElectronDensity()*
ComputeCrossSectionPerElectron(p, kineticEnergy);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToHadronsMultiModel::ComputeCrossSectionPerAtom(
const G4ParticleDefinition* p,
G4double kineticEnergy,
G4double Z, G4double,
G4double, G4double)
{
return Z*ComputeCrossSectionPerElectron(p, kineticEnergy);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToHadronsMultiModel::ComputeCrossSectionPerElectron(
const G4ParticleDefinition*,
G4double kineticEnergy,
@@ -168,25 +148,4 @@ inline G4double G4eeToHadronsMultiModel::ComputeCrossSectionPerElectron(
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline
void G4eeToHadronsMultiModel::SampleSecondaries(std::vector<G4DynamicParticle*>* newp,
const G4MaterialCutsCouple* couple,
const G4DynamicParticle* dp,
G4double, G4double)
{
G4double kinEnergy = dp->GetKineticEnergy();
if (kinEnergy > thKineticEnergy) {
G4double q = cumSum[nModels-1]*G4UniformRand();
for(G4int i=0; i<nModels; i++) {
if(q <= cumSum[i]) {
(models[i])->SampleSecondaries(newp, couple,dp);
if(newp->size() > 0) fParticleChange->ProposeTrackStatus(fStopAndKill);
break;
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -0,0 +1,124 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4eeToPGammaModel.hh,v 1.1 2008/07/10 18:07:26 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4eeToPGammaModel
//
// Author: Vladimir Ivanchenko
//
// Creation date: 10.07.2008
//
// Modifications:
//
//
// Class Description:
//
// -------------------------------------------------------------------
//
#ifndef G4eeToPGammaModel_h
#define G4eeToPGammaModel_h 1
#include "G4Vee2hadrons.hh"
#include "globals.hh"
#include "G4eeCrossSections.hh"
#include "G4ParticleDefinition.hh"
class G4DynamicParticle;
class G4PhysicsVector;
class G4eeToPGammaModel : public G4Vee2hadrons
{
public:
G4eeToPGammaModel(G4eeCrossSections*, const G4String&);
virtual ~G4eeToPGammaModel();
G4double ThresholdEnergy() const;
G4double PeakEnergy() const;
G4double ComputeCrossSection(G4double) const;
G4PhysicsVector* PhysicsVector(G4double, G4double) const;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
G4double, const G4ThreeVector&);
private:
// hide assignment operator
G4eeToPGammaModel & operator=(const G4eeToPGammaModel &right);
G4eeToPGammaModel(const G4eeToPGammaModel&);
G4eeCrossSections* cross;
G4ParticleDefinition* particle;
G4ParticleDefinition* pi0;
G4double massP;
G4double massR;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToPGammaModel::ThresholdEnergy() const
{
return LowEnergy();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToPGammaModel::PeakEnergy() const
{
return massR;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4double G4eeToPGammaModel::ComputeCrossSection(G4double e) const
{
G4double ee = std::min(HighEnergy(),e);
G4double xs;
if(particle == pi0) xs = cross->CrossSectionPi0G(ee);
else xs = cross->CrossSectionEtaG(ee);
return xs;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4eeToTwoPiModel.hh,v 1.3 2007/05/22 17:37:30 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// $Id: G4eeToTwoPiModel.hh,v 1.4 2008/07/10 18:06:39 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -75,12 +75,10 @@ public:
G4PhysicsVector* PhysicsVector(G4double, G4double) const;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
G4double, const G4ThreeVector&) const;
G4double, const G4ThreeVector&);
private:
void Initialise();
// hide assignment operator
G4eeToTwoPiModel & operator=(const G4eeToTwoPiModel &right);
G4eeToTwoPiModel(const G4eeToTwoPiModel&);
@@ -89,7 +87,6 @@ private:
G4double massPi;
G4double massRho;
G4double highEnergy;
};
@@ -111,7 +108,7 @@ inline G4double G4eeToTwoPiModel::PeakEnergy() const
inline G4double G4eeToTwoPiModel::ComputeCrossSection(G4double e) const
{
G4double ee = std::min(GeV,e);
G4double ee = std::min(HighEnergy(),e);
return cross->CrossSection2pi(ee);
}
@@ -0,0 +1,122 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4hBremsstrahlung.hh,v 1.1 2008/03/06 11:47:10 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4hBremsstrahlung
//
// Author: Vladimir Ivanchenko on base of model for muons
//
// Creation date: 01.03.2008
//
// Modifications:
//
//
// Class Description:
//
// This class manages the Bremsstrahlung process for hadrons
// it inherites from G4VContinuousDiscreteProcess via G4VEnergyLossProcess.
//
// -------------------------------------------------------------------
//
#ifndef G4hBremsstrahlung_h
#define G4hBremsstrahlung_h 1
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "globals.hh"
#include "G4VEnergyLossProcess.hh"
#include "G4VEmModel.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4ParticleDefinition;
class G4hBremsstrahlung : public G4VEnergyLossProcess
{
public:
G4hBremsstrahlung(const G4String& processName = "hBrems");
virtual ~G4hBremsstrahlung();
G4bool IsApplicable(const G4ParticleDefinition& p);
G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*,
G4double cut);
// Print out of the class parameters
void PrintInfo();
protected:
void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*);
private:
G4hBremsstrahlung & operator=(const G4hBremsstrahlung &right);
G4hBremsstrahlung(const G4hBremsstrahlung&);
const G4ParticleDefinition* theParticle;
const G4ParticleDefinition* theBaseParticle;
G4double lowestKinEnergy;
G4bool isInitialised;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline
G4bool G4hBremsstrahlung::IsApplicable(const G4ParticleDefinition& p)
{
return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline
G4double G4hBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*,
const G4Material*,
G4double)
{
return lowestKinEnergy;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4hBremsstrahlungModel.hh,v 1.2 2008/07/22 16:15:16 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4hBremsstrahlungModel
//
// Author: Vladimir Ivanchenko on base of G4MuBremsstrahlungModel
//
// Creation date: 28.02.2008
//
// Modifications:
//
//
//
// Class Description:
//
// Implementation of energy loss for gamma emission by hadrons
// -------------------------------------------------------------------
//
#ifndef G4hBremsstrahlungModel_h
#define G4hBremsstrahlungModel_h 1
#include "G4MuBremsstrahlungModel.hh"
class G4hBremsstrahlungModel : public G4MuBremsstrahlungModel
{
public:
G4hBremsstrahlungModel(const G4ParticleDefinition* p = 0,
const G4String& nam = "hBrem");
virtual ~G4hBremsstrahlungModel();
protected:
virtual G4double ComputeDMicroscopicCrossSection(G4double tkin,
G4double Z,
G4double gammaEnergy);
private:
// hide assignment operator
G4hBremsstrahlungModel & operator=(const G4hBremsstrahlungModel &right);
G4hBremsstrahlungModel(const G4hBremsstrahlungModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,120 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4hPairProduction.hh,v 1.1 2008/03/06 11:47:11 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4hPairProduction
//
// Author: Vladimir Ivanchenko on base of model for muons
//
// Creation date: 01.03.2008
//
// Modifications:
//
//
// Class Description:
//
// This class manages the PairProduction process for hadrons
// it inherites from G4VContinuousDiscreteProcess via G4VEnergyLossProcess.
//
// -------------------------------------------------------------------
//
#ifndef G4hPairProduction_h
#define G4hPairProduction_h 1
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "globals.hh"
#include "G4VEnergyLossProcess.hh"
#include "G4VEmModel.hh"
class G4ParticleChangeForLoss;
class G4hPairProduction : public G4VEnergyLossProcess
{
public:
G4hPairProduction(const G4String& processName = "hPairProd");
virtual ~G4hPairProduction();
G4bool IsApplicable(const G4ParticleDefinition& p);
G4double MinPrimaryEnergy(const G4ParticleDefinition* p,
const G4Material*, G4double cut);
// Print out of the class parameters
void PrintInfo();
protected:
void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*);
private:
G4hPairProduction & operator=(const G4hPairProduction &right);
G4hPairProduction(const G4hPairProduction&);
const G4ParticleDefinition* theParticle;
const G4ParticleDefinition* theBaseParticle;
G4ParticleChangeForLoss* fParticleChange;
G4double lowestKinEnergy;
G4bool isInitialised;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline
G4bool G4hPairProduction::IsApplicable(const G4ParticleDefinition& p)
{
return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline
G4double G4hPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*,
const G4Material*,
G4double)
{
return lowestKinEnergy;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * 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. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4hPairProductionModel.hh,v 1.2 2008/07/22 16:15:16 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
//
// File name: G4hPairProductionModel
//
// Author: Vladimir Ivanchenko on base of G4MuPairProductionModel
//
// Creation date: 28.02.2008
//
// Modifications:
//
//
//
// Class Description:
//
// Implementation of e+e- pair production by hadrons
// -------------------------------------------------------------------
//
#ifndef G4hPairProductionModel_h
#define G4hPairProductionModel_h 1
#include "G4MuPairProductionModel.hh"
class G4hPairProductionModel : public G4MuPairProductionModel
{
public:
G4hPairProductionModel(const G4ParticleDefinition* p = 0,
const G4String& nam = "hPairProd");
virtual ~G4hPairProductionModel();
protected:
virtual G4double ComputeDMicroscopicCrossSection(G4double tkin,
G4double Z,
G4double pairEnergy);
private:
// hide assignment operator
G4hPairProductionModel & operator=(const G4hPairProductionModel &right);
G4hPairProductionModel(const G4hPairProductionModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4hhIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4mplIonisation.hh,v 1.5 2007/05/23 08:50:41 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//
@@ -24,7 +24,7 @@
// ********************************************************************
//
// $Id: G4mplIonisationModel.hh,v 1.6 2007/11/13 18:36:29 vnivanch Exp $
// GEANT4 tag $Name: geant4-09-01 $
// GEANT4 tag $Name: geant4-09-02 $
//
// -------------------------------------------------------------------
//