Import Geant4 9.2.0 source tree
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# $Id: GNUmakefile,v 1.3 2007/11/15 11:41:37 vnivanch Exp $
|
||||
# $Id: GNUmakefile,v 1.5 2008/10/15 18:24:11 vnivanch Exp $
|
||||
# ---------------------------------------------------------------------------
|
||||
# GNUmakefile for physics_lists/builders library. Gunter Folger 25-Oct-2006.
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -33,10 +33,12 @@ CPPFLAGS += -I$(G4BASE)/global/management/include \
|
||||
-I$(G4BASE)/processes/decay/include \
|
||||
-I$(G4BASE)/processes/cuts/include \
|
||||
-I$(G4BASE)/processes/optical/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/highenergy/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/standard/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/muons/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/utils/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/xrays/include \
|
||||
-I$(G4BASE)/processes/electromagnetic/lowenergy/include \
|
||||
-I$(G4BASE)/processes/hadronic/cross_sections/include \
|
||||
-I$(G4BASE)/processes/hadronic/stopping/include \
|
||||
-I$(G4BASE)/processes/hadronic/management/include \
|
||||
|
||||
@@ -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: G4ChargeExchangePhysics.hh,v 1.1 2008/11/20 12:38:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4ChargeExchangePhysics
|
||||
//
|
||||
// Author: 19 November 2008 V. Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4ChargeExchangePhysics_h
|
||||
#define G4ChargeExchangePhysics_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
|
||||
class G4ChargeExchange;
|
||||
|
||||
class G4ChargeExchangePhysics : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
G4ChargeExchangePhysics(G4int ver = 0, G4bool glauber = false);
|
||||
virtual ~G4ChargeExchangePhysics();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
virtual void ConstructParticle();
|
||||
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each physics process will be instantiated and
|
||||
// registered to the process manager of each particle type
|
||||
virtual void ConstructProcess();
|
||||
|
||||
private:
|
||||
|
||||
G4ChargeExchange* model;
|
||||
|
||||
G4int verbose;
|
||||
G4bool glFlag;
|
||||
G4bool wasActivated;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DecayPhysics.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmExtraPhysics.hh,v 1.2 2007/11/15 18:08:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmMessenger.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EmStandardPhysics.hh,v 1.4 2007/05/16 11:35:36 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option1.hh,v 1.1 2007/05/16 11:35:36 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option2.hh,v 1.1 2007/05/16 11:35:36 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmStandardPhysics_option3.hh,v 1.1 2008/03/13 12:11:02 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmStandardPhysics_option3
|
||||
//
|
||||
// Author: V.Ivanchenko 13.03.2008
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// This class provides construction of EM standard physics using set of
|
||||
// the most adavced options allowing precise simulation at low
|
||||
// and intermediate energies
|
||||
//
|
||||
|
||||
#ifndef G4EmStandardPhysics_option3_h
|
||||
#define G4EmStandardPhysics_option3_h 1
|
||||
|
||||
#include "G4VPhysicsConstructor.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class G4EmStandardPhysics_option3 : public G4VPhysicsConstructor
|
||||
{
|
||||
public:
|
||||
G4EmStandardPhysics_option3(G4int ver = 1,
|
||||
const G4String& name = "G4EmStandard_opt3");
|
||||
|
||||
virtual ~G4EmStandardPhysics_option3();
|
||||
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
private:
|
||||
G4int verbose;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -60,7 +60,6 @@ class G4FTFBinaryNeutronBuilder : public G4VNeutronBuilder
|
||||
|
||||
private:
|
||||
G4TheoFSGenerator * theModel;
|
||||
G4PreCompoundModel * thePreEquilib;
|
||||
G4BinaryCascade * theCascade;
|
||||
G4FTFModel * theStringModel;
|
||||
G4ExcitedStringDecay * theStringDecay;
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronDElasticPhysics.hh,v 1.1 2007/11/13 16:19:52 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronElasticPhysics.hh,v 1.4 2006/11/23 15:46:04 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronHElasticPhysics.hh,v 1.2 2007/11/15 18:08:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4HadronProcessStore.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class header file
|
||||
//
|
||||
//
|
||||
// File name: G4HadronProcessStore
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 03.05.2006
|
||||
//
|
||||
// Modifications:
|
||||
// 04.08.06 V.Ivanchenko add computation of cross sections
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#ifndef G4HadronProcessStore_h
|
||||
#define G4HadronProcessStore_h 1
|
||||
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4DynamicParticle.hh"
|
||||
#include "G4HadronicProcess.hh"
|
||||
#include "G4HadronicInteraction.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
class G4Element;
|
||||
|
||||
class G4HadronProcessStore
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
static G4HadronProcessStore* Instance();
|
||||
|
||||
~G4HadronProcessStore();
|
||||
|
||||
G4double GetInelasticCrossSectionPerVolume(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Material *material);
|
||||
|
||||
G4double GetInelasticCrossSectionPerAtom(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Element *anElement);
|
||||
|
||||
G4double GetInelasticCrossSectionPerIsotope(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
G4int Z, G4int A);
|
||||
|
||||
G4double GetElasticCrossSectionPerVolume(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Material *material);
|
||||
|
||||
G4double GetElasticCrossSectionPerAtom(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Element *anElement);
|
||||
|
||||
G4double GetElasticCrossSectionPerIsotope(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
G4int Z, G4int A);
|
||||
|
||||
void Register(G4HadronicProcess*,
|
||||
const G4ParticleDefinition*,
|
||||
G4HadronicInteraction*,
|
||||
const G4String& name);
|
||||
|
||||
void Print(const G4ParticleDefinition*);
|
||||
|
||||
void Dump(G4int level);
|
||||
|
||||
void SetVerbose(G4int val);
|
||||
|
||||
G4int GetVerbose();
|
||||
|
||||
G4HadronicProcess* FindElasticProcess(const G4ParticleDefinition*);
|
||||
|
||||
G4HadronicProcess* FindInelasticProcess(const G4ParticleDefinition*);
|
||||
|
||||
private:
|
||||
|
||||
G4HadronProcessStore();
|
||||
|
||||
static G4HadronProcessStore* theInstance;
|
||||
|
||||
typedef const G4ParticleDefinition* PD;
|
||||
typedef G4HadronicProcess* HP;
|
||||
typedef G4HadronicInteraction* HI;
|
||||
|
||||
std::multimap<PD,HP> p_map;
|
||||
std::multimap<HP,HI> m_map;
|
||||
|
||||
std::vector<G4HadronicProcess*> process;
|
||||
std::vector<G4HadronicInteraction*> model;
|
||||
std::vector<G4String> modelName;
|
||||
std::vector<PD> particle;
|
||||
|
||||
HP currentProcess;
|
||||
PD currentParticle;
|
||||
|
||||
G4DynamicParticle localDP;
|
||||
|
||||
G4int n_proc;
|
||||
G4int n_model;
|
||||
G4int n_part;
|
||||
|
||||
G4int verbose;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronQElasticPhysics.hh,v 1.1 2006/11/17 19:19:40 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4IonBinaryCascadePhysics.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4IonPhysics.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LHEPStoppingPhysics.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// 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: G4NeutronTrackingCut.hh,v 1.1 2006/11/20 17:56:08 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4NeutronTrackingCut.hh,v 1.2 2008/09/17 18:19:15 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -50,7 +50,6 @@ class G4NeutronTrackingCut : public G4VPhysicsConstructor
|
||||
G4NeutronTrackingCut(const G4String& name = "neutronTrackingCut",G4int ver=0);
|
||||
virtual ~G4NeutronTrackingCut();
|
||||
|
||||
public:
|
||||
// This method will be invoked in the Construct() method.
|
||||
// each particle type will be instantiated
|
||||
virtual void ConstructParticle();
|
||||
@@ -60,12 +59,30 @@ class G4NeutronTrackingCut : public G4VPhysicsConstructor
|
||||
// registered to the process manager of each particle type
|
||||
virtual void ConstructProcess();
|
||||
|
||||
inline void SetTimeLimit(G4double);
|
||||
inline void SetKineticEnergyLimit(G4double);
|
||||
|
||||
private:
|
||||
|
||||
G4NeutronKiller* pNeutronKiller;
|
||||
|
||||
G4double timeLimit;
|
||||
G4double kineticEnergyLimit;
|
||||
|
||||
G4int verbose;
|
||||
G4bool wasActivated;
|
||||
};
|
||||
|
||||
inline void G4NeutronTrackingCut::SetTimeLimit(G4double val)
|
||||
{
|
||||
timeLimit = val;
|
||||
}
|
||||
|
||||
inline void G4NeutronTrackingCut::SetKineticEnergyLimit(G4double val)
|
||||
{
|
||||
kineticEnergyLimit = val;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PiKBuilder.hh,v 1.1 2006/10/31 11:35:01 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QEmExtraPhysics.hh,v 1.1 2007/05/23 17:38:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QStoppingPhysics.hh,v 1.2 2007/04/26 16:03:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4StoppingHadronBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VPiKBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VProtonBuilder.hh,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4ChargeExchangePhysics.cc,v 1.1 2008/11/20 12:38:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4ChargeExchangePhysics
|
||||
//
|
||||
// Author: 19 November 2008 V. Ivanchenko
|
||||
//
|
||||
// Modified:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4ChargeExchangePhysics.hh"
|
||||
|
||||
#include "G4ChargeExchangeProcess.hh"
|
||||
#include "G4ChargeExchange.hh"
|
||||
#include "G4UElasticCrossSection.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
#include "G4MesonConstructor.hh"
|
||||
#include "G4BaryonConstructor.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
G4ChargeExchangePhysics::G4ChargeExchangePhysics(G4int ver, G4bool glauber)
|
||||
: G4VPhysicsConstructor("chargeExchange"), verbose(ver), glFlag(glauber),
|
||||
wasActivated(false)
|
||||
{
|
||||
if(verbose > 1) G4cout << "### ChargeExchangePhysics" << G4endl;
|
||||
model = 0;
|
||||
}
|
||||
|
||||
G4ChargeExchangePhysics::~G4ChargeExchangePhysics()
|
||||
{
|
||||
delete model;
|
||||
}
|
||||
|
||||
void G4ChargeExchangePhysics::ConstructParticle()
|
||||
{
|
||||
// G4cout << "G4ChargeExchangePhysics::ConstructParticle" << G4endl;
|
||||
G4MesonConstructor pMesonConstructor;
|
||||
pMesonConstructor.ConstructParticle();
|
||||
|
||||
G4BaryonConstructor pBaryonConstructor;
|
||||
pBaryonConstructor.ConstructParticle();
|
||||
}
|
||||
|
||||
void G4ChargeExchangePhysics::ConstructProcess()
|
||||
{
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
model = new G4ChargeExchange();
|
||||
|
||||
if(verbose > 1) {
|
||||
G4cout << "### ChargeExchangePhysics Construct Processes with the model <"
|
||||
<< model->GetModelName() << ">" << G4endl;
|
||||
}
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4String pname = particle->GetParticleName();
|
||||
if(pname == "neutron" ||
|
||||
pname == "pi-" ||
|
||||
pname == "pi+" ||
|
||||
pname == "proton"
|
||||
) {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4ChargeExchangeProcess* p = new G4ChargeExchangeProcess();
|
||||
if(glFlag) p->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
p->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(p);
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### ChargeExchangePhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4DecayPhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ElectroNuclearBuilder.cc,v 1.1 2006/10/31 11:35:02 gunter 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: G4EmExtraPhysics.cc,v 1.2 2007/11/15 18:08:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4EmExtraPhysics.cc,v 1.3 2008/01/08 10:36:32 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -120,13 +120,13 @@ void G4EmExtraPhysics::BuildMuonNuclear()
|
||||
munActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4Electron::Electron()->GetProcessManager();
|
||||
theElectronSynch = new G4SynchrotronRadiation();
|
||||
pManager->AddDiscreteProcess(theElectronSynch);
|
||||
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
|
||||
theMuNuc1 = new G4MuNuclearInteraction("muNucl");
|
||||
pManager->AddDiscreteProcess(theMuNuc1);
|
||||
|
||||
pManager = G4Positron::Positron()->GetProcessManager();
|
||||
thePositronSynch = new G4SynchrotronRadiation();
|
||||
pManager->AddDiscreteProcess(thePositronSynch);
|
||||
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
|
||||
theMuNuc2 = new G4MuNuclearInteraction("muNucl");
|
||||
pManager->AddDiscreteProcess(theMuNuc2);
|
||||
}
|
||||
|
||||
void G4EmExtraPhysics::BuildGammaNuclear()
|
||||
@@ -144,11 +144,11 @@ void G4EmExtraPhysics::BuildSynch()
|
||||
synActivated = true;
|
||||
G4ProcessManager * pManager = 0;
|
||||
|
||||
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
|
||||
theMuNuc1 = new G4MuNuclearInteraction("muNucl");
|
||||
pManager->AddDiscreteProcess(theMuNuc1);
|
||||
pManager = G4Electron::Electron()->GetProcessManager();
|
||||
theElectronSynch = new G4SynchrotronRadiation();
|
||||
pManager->AddDiscreteProcess(theElectronSynch);
|
||||
|
||||
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
|
||||
theMuNuc2 = new G4MuNuclearInteraction("muNucl");
|
||||
pManager->AddDiscreteProcess(theMuNuc2);
|
||||
pManager = G4Positron::Positron()->GetProcessManager();
|
||||
thePositronSynch = new G4SynchrotronRadiation();
|
||||
pManager->AddDiscreteProcess(thePositronSynch);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmMessenger.cc,v 1.1 2006/10/31 11:35:02 gunter 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: G4EmStandardPhysics.cc,v 1.9 2007/05/18 17:47:17 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4EmStandardPhysics.cc,v 1.16 2008/11/21 16:50:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -38,6 +38,7 @@
|
||||
// 23.11.2006 V.Ivanchenko remove mscStepLimit option and improve cout
|
||||
// 13.02.2007 V.Ivanchenko use G4hMultipleScattering for muons
|
||||
// 13.02.2007 V.Ivanchenko set skin=0.0
|
||||
// 21.04.2008 V.Ivanchenko add long-lived D and B mesons
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -54,6 +55,7 @@
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -62,6 +64,8 @@
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
@@ -150,15 +154,15 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(), -1, 3, 3);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
@@ -166,8 +170,8 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
@@ -176,23 +180,43 @@ void G4EmStandardPhysics::ConstructProcess()
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "anti_omega-" ||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option1.cc,v 1.3 2007/06/11 15:07:38 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4EmStandardPhysics_option1.cc,v 1.11 2008/11/21 16:50:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -40,6 +40,7 @@
|
||||
// 23.11.2006 V.Ivanchenko remove mscStepLimit option and improve cout
|
||||
// 13.02.2007 V.Ivanchenko set skin=0.0
|
||||
// 15.05.2007 V.Ivanchenko rename to _option1
|
||||
// 21.04.2008 V.Ivanchenko add long-lived D and B mesons
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
@@ -54,6 +55,7 @@
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
@@ -65,6 +67,8 @@
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
@@ -156,21 +160,21 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
|
||||
G4eIonisation* eioni = new G4eIonisation();
|
||||
eioni->SetStepFunction(0.8, 1.0*mm);
|
||||
G4MultipleScattering* msc = new G4MultipleScattering;
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering;
|
||||
msc->SetStepLimitType(fMinimal);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(eioni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
G4eIonisation* eioni = new G4eIonisation();
|
||||
eioni->SetStepFunction(0.8, 1.0*mm);
|
||||
G4MultipleScattering* msc = new G4MultipleScattering;
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering;
|
||||
msc->SetStepLimitType(fMinimal);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(eioni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
@@ -178,8 +182,8 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
@@ -188,23 +192,43 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "anti_omega-" ||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
@@ -213,6 +237,7 @@ void G4EmStandardPhysics_option1::ConstructProcess()
|
||||
}
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
//opt.SetApplyCuts(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmStandardPhysics_option2.cc,v 1.3 2007/10/02 11:18:02 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4EmStandardPhysics_option2.cc,v 1.15 2008/11/21 17:59:23 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -39,11 +39,15 @@
|
||||
// 14.11.2006 V.Ivanchenko use sub-cutoff option for all particles
|
||||
// 13.02.2007 V.Ivanchenko use default msc
|
||||
// 15.05.2007 V.Ivanchenko rename to _option2
|
||||
// 13.03.2008 V.Ivanchenko use G4eMultipleScattering
|
||||
// 21.04.2008 V.Ivanchenko add long-lived D and B mesons; use spline
|
||||
// 28.05.2008 V.Ivanchenko linLossLimit=0.01; added hBrem and hPairProd processes
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4EmStandardPhysics_option2.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
@@ -53,8 +57,10 @@
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MuMultipleScattering.hh"
|
||||
#include "G4CoulombScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
@@ -63,6 +69,8 @@
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
@@ -134,7 +142,6 @@ void G4EmStandardPhysics_option2::ConstructParticle()
|
||||
void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
G4MultipleScattering* msc = 0;
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
@@ -153,26 +160,25 @@ void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
msc = new G4MultipleScattering();
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
msc = new G4MultipleScattering();
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
pmanager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
pmanager->AddDiscreteProcess(new G4CoulombScattering());
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
@@ -181,37 +187,72 @@ void G4EmStandardPhysics_option2::ConstructProcess()
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "anti_omega-" ||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4MuMultipleScattering,-1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
// Em options
|
||||
//
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
opt.SetSubCutoff(true);
|
||||
opt.SetMinEnergy(0.1*keV);
|
||||
opt.SetMaxEnergy(10.*TeV);
|
||||
opt.SetDEDXBinning(220);
|
||||
opt.SetLambdaBinning(220);
|
||||
opt.SetLinearLossLimit(1.e-6);
|
||||
opt.SetApplyCuts(true);
|
||||
|
||||
// Physics tables
|
||||
//
|
||||
//opt.SetMinEnergy(100*eV);
|
||||
//opt.SetMaxEnergy(100*TeV);
|
||||
//opt.SetDEDXBinning(84);
|
||||
//opt.SetLambdaBinning(84);
|
||||
//opt.SetSplineFlag(true);
|
||||
opt.SetPolarAngleLimit(0.2);
|
||||
|
||||
// Energy loss
|
||||
//
|
||||
//opt.SetLinearLossLimit(0.01);
|
||||
|
||||
// Ionization
|
||||
//
|
||||
//opt.SetSubCutoff(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4EmStandardPhysics_option3.cc,v 1.14 2008/11/21 16:50:30 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// ClassName: G4EmStandardPhysics_option3
|
||||
//
|
||||
// Author: V.Ivanchenko 13.03.2008
|
||||
//
|
||||
// Modified:
|
||||
// 21.04.2008 V.Ivanchenko add long-lived D and B mesons; use spline
|
||||
// 28.05.2008 V.Ivanchenko linLossLimit=0.01 for ions 0.001 for others
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include "G4EmStandardPhysics_option3.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4LossTableManager.hh"
|
||||
#include "G4EmProcessOptions.hh"
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
#include "G4LowEnergyRayleigh.hh"
|
||||
|
||||
#include "G4eMultipleScattering.hh"
|
||||
#include "G4hMultipleScattering.hh"
|
||||
#include "G4MscStepLimitType.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
#include "G4hBremsstrahlung.hh"
|
||||
#include "G4hPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
#include "G4ionIonisation.hh"
|
||||
|
||||
#include "G4Gamma.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Positron.hh"
|
||||
#include "G4MuonPlus.hh"
|
||||
#include "G4MuonMinus.hh"
|
||||
#include "G4PionPlus.hh"
|
||||
#include "G4PionMinus.hh"
|
||||
#include "G4KaonPlus.hh"
|
||||
#include "G4KaonMinus.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Deuteron.hh"
|
||||
#include "G4Triton.hh"
|
||||
#include "G4He3.hh"
|
||||
#include "G4Alpha.hh"
|
||||
#include "G4GenericIon.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmStandardPhysics_option3::G4EmStandardPhysics_option3(
|
||||
G4int ver, const G4String& name)
|
||||
: G4VPhysicsConstructor(name), verbose(ver)
|
||||
{
|
||||
G4LossTableManager::Instance();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4EmStandardPhysics_option3::~G4EmStandardPhysics_option3()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmStandardPhysics_option3::ConstructParticle()
|
||||
{
|
||||
// gamma
|
||||
G4Gamma::Gamma();
|
||||
|
||||
// leptons
|
||||
G4Electron::Electron();
|
||||
G4Positron::Positron();
|
||||
G4MuonPlus::MuonPlus();
|
||||
G4MuonMinus::MuonMinus();
|
||||
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
|
||||
// barions
|
||||
G4Proton::Proton();
|
||||
G4AntiProton::AntiProton();
|
||||
|
||||
// ions
|
||||
G4Deuteron::Deuteron();
|
||||
G4Triton::Triton();
|
||||
G4He3::He3();
|
||||
G4Alpha::Alpha();
|
||||
G4GenericIon::GenericIonDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void G4EmStandardPhysics_option3::ConstructProcess()
|
||||
{
|
||||
// Add standard EM Processes
|
||||
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
if(verbose > 1)
|
||||
G4cout << "### " << GetPhysicsName() << " instantiates for "
|
||||
<< particleName << G4endl;
|
||||
|
||||
if (particleName == "gamma") {
|
||||
|
||||
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
|
||||
G4eMultipleScattering* msc = new G4eMultipleScattering();
|
||||
msc->SetStepLimitType(fUseDistanceToBoundary);
|
||||
pmanager->AddProcess(msc, -1, 1, 1);
|
||||
G4eIonisation* eIoni = new G4eIonisation();
|
||||
eIoni->SetStepFunction(0.2, 100*um);
|
||||
pmanager->AddProcess(eIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation,0,-1, 4);
|
||||
|
||||
} else if (particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4eMultipleScattering, -1, 1, 1);
|
||||
G4MuIonisation* muIoni = new G4MuIonisation();
|
||||
muIoni->SetStepFunction(0.2, 50*um);
|
||||
pmanager->AddProcess(muIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "alpha" ||
|
||||
particleName == "He3" ||
|
||||
particleName == "GenericIon") {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
G4ionIonisation* ionIoni = new G4ionIonisation();
|
||||
ionIoni->SetStepFunction(0.1, 20*um);
|
||||
pmanager->AddProcess(ionIoni, -1, 2, 2);
|
||||
|
||||
} else if (particleName == "pi+" ||
|
||||
particleName == "pi-" ||
|
||||
particleName == "proton" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
G4hIonisation* hIoni = new G4hIonisation();
|
||||
hIoni->SetStepFunction(0.2, 50*um);
|
||||
pmanager->AddProcess(hIoni, -1, 2, 2);
|
||||
pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
|
||||
pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
|
||||
|
||||
} else if (particleName == "B+" ||
|
||||
particleName == "B-" ||
|
||||
particleName == "D+" ||
|
||||
particleName == "D-" ||
|
||||
particleName == "Ds+" ||
|
||||
particleName == "Ds-" ||
|
||||
particleName == "anti_lambda_c+" ||
|
||||
particleName == "anti_omega-" ||
|
||||
particleName == "anti_proton" ||
|
||||
particleName == "anti_sigma_c+" ||
|
||||
particleName == "anti_sigma_c++" ||
|
||||
particleName == "anti_sigma+" ||
|
||||
particleName == "anti_sigma-" ||
|
||||
particleName == "anti_xi_c+" ||
|
||||
particleName == "anti_xi-" ||
|
||||
particleName == "deuteron" ||
|
||||
particleName == "kaon+" ||
|
||||
particleName == "kaon-" ||
|
||||
particleName == "lambda_c+" ||
|
||||
particleName == "omega-" ||
|
||||
particleName == "sigma_c+" ||
|
||||
particleName == "sigma_c++" ||
|
||||
particleName == "sigma+" ||
|
||||
particleName == "sigma-" ||
|
||||
particleName == "tau+" ||
|
||||
particleName == "tau-" ||
|
||||
particleName == "triton" ||
|
||||
particleName == "xi_c+" ||
|
||||
particleName == "xi-" ) {
|
||||
|
||||
pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
|
||||
pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
// Em options
|
||||
//
|
||||
G4EmProcessOptions opt;
|
||||
opt.SetVerbose(verbose);
|
||||
|
||||
// Multiple Coulomb scattering
|
||||
//
|
||||
//opt.SetMscStepLimitation(fUseDistanceToBoundary);
|
||||
//opt.SetMscRangeFactor(0.02);
|
||||
|
||||
// Physics tables
|
||||
//
|
||||
opt.SetMinEnergy(100*eV);
|
||||
opt.SetMaxEnergy(10*TeV);
|
||||
opt.SetDEDXBinning(220);
|
||||
opt.SetLambdaBinning(220);
|
||||
//opt.SetSplineFlag(true);
|
||||
|
||||
// Ionization
|
||||
//
|
||||
//opt.SetSubCutoff(true);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -32,7 +32,7 @@ G4FTFBinaryNeutronBuilder::
|
||||
G4FTFBinaryNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("FTFB");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
@@ -57,7 +57,6 @@ G4FTFBinaryNeutronBuilder::
|
||||
{
|
||||
delete theStringDecay;
|
||||
delete theStringModel;
|
||||
delete thePreEquilib;
|
||||
delete theCascade;
|
||||
if ( theQuasiElastic ) delete theQuasiElastic;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
G4FTFBinaryPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("FTFB");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4FTFBinaryProtonBuilder::
|
||||
G4FTFBinaryProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("FTFB");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4FTFPNeutronBuilder::
|
||||
G4FTFPNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("FTFP");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
G4FTFPPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("FTFP");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4FTFPProtonBuilder::
|
||||
G4FTFPProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 4*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("FTFP");
|
||||
|
||||
theStringModel = new G4FTFModel;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation);
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronDElasticPhysics.cc,v 1.2 2007/11/14 18:45:37 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4HadronDElasticPhysics.cc,v 1.3 2008/05/19 10:21:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -62,7 +62,6 @@
|
||||
#include "G4IonConstructor.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
#include "G4HadronProcessStore.hh"
|
||||
#include "G4VQCrossSection.hh"
|
||||
#include "G4UElasticCrossSection.hh"
|
||||
#include "G4BGGNucleonElasticXS.hh"
|
||||
@@ -97,8 +96,6 @@ void G4HadronDElasticPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4HadronProcessStore* store = G4HadronProcessStore::Instance();
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### HadronDElasticPhysics Construct Processes with the model <"
|
||||
<< mname << ">" << G4endl;
|
||||
@@ -154,8 +151,6 @@ void G4HadronDElasticPhysics::ConstructProcess()
|
||||
model = new G4DiffuseElastic(particle);
|
||||
hel->RegisterMe(model);
|
||||
hel->RegisterMe(he);
|
||||
store->Register(hel,particle,he,"elastic");
|
||||
store->Register(hel,particle,model,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
// neutron case
|
||||
@@ -170,14 +165,11 @@ void G4HadronDElasticPhysics::ConstructProcess()
|
||||
model->SetMinEnergy(19.5*MeV);
|
||||
G4NeutronHPElastic* modelHP = new G4NeutronHPElastic();
|
||||
hel->RegisterMe(modelHP);
|
||||
store->Register(hel,particle,modelHP,"HP");
|
||||
hel->AddDataSet(new G4NeutronHPElasticData());
|
||||
} else {
|
||||
hel->RegisterMe(he);
|
||||
store->Register(hel,particle,he,"elastic");
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
store->Register(hel,particle,model,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
if(verbose > 1)
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronElasticPhysics.cc,v 1.7 2007/03/06 17:52:06 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4HadronElasticPhysics.cc,v 1.9 2008/12/01 16:57:22 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -61,9 +61,10 @@
|
||||
#include "G4IonConstructor.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
#include "G4HadronProcessStore.hh"
|
||||
#include "G4VQCrossSection.hh"
|
||||
#include "G4UElasticCrossSection.hh"
|
||||
#include "G4BGGNucleonElasticXS.hh"
|
||||
#include "G4BGGPionElasticXS.hh"
|
||||
|
||||
G4HadronElasticPhysics::G4HadronElasticPhysics(
|
||||
const G4String& name, G4int ver, G4bool hp, G4bool glauber)
|
||||
@@ -102,12 +103,10 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4HadronProcessStore* store = G4HadronProcessStore::Instance();
|
||||
|
||||
if(verbose > 1)
|
||||
if(verbose > 1) {
|
||||
G4cout << "### HadronElasticPhysics Construct Processes with the model <"
|
||||
<< mname << ">" << G4endl;
|
||||
|
||||
}
|
||||
G4HadronicProcess* hel = 0;
|
||||
G4VQCrossSection* man = 0;
|
||||
|
||||
@@ -125,6 +124,7 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
while( (*theParticleIterator)() )
|
||||
{
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String pname = particle->GetParticleName();
|
||||
if(pname == "anti_lambda" ||
|
||||
pname == "anti_neutron" ||
|
||||
@@ -140,9 +140,6 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
pname == "kaon0L" ||
|
||||
pname == "lambda" ||
|
||||
pname == "omega-" ||
|
||||
pname == "pi-" ||
|
||||
pname == "pi+" ||
|
||||
pname == "proton" ||
|
||||
pname == "sigma-" ||
|
||||
pname == "sigma+" ||
|
||||
pname == "xi-" ||
|
||||
@@ -150,7 +147,6 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
pname == "deuteron" ||
|
||||
pname == "triton") {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if(mname == "elastic") {
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
@@ -160,13 +156,30 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
store->Register(hel,particle,model,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1)
|
||||
G4cout << "### HadronElasticPhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
|
||||
// proton case
|
||||
} else if(pname == "proton") {
|
||||
if(mname == "elastic") {
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
} else {
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
if(verbose > 1)
|
||||
G4cout << "### HadronElasticPhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
|
||||
// neutron case
|
||||
} else if(pname == "neutron") {
|
||||
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if(mname == "elastic") {
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
G4HadronElastic* nhe = new G4HadronElastic();
|
||||
@@ -175,7 +188,7 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
neutronModel = nhe;
|
||||
h->SetQElasticCrossSection(nhe->GetCS());
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
if(glFlag) hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
|
||||
} else {
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
neutronModel = new G4LElastic();
|
||||
@@ -185,12 +198,27 @@ void G4HadronElasticPhysics::ConstructProcess()
|
||||
neutronModel->SetMinEnergy(19.5*MeV);
|
||||
neutronHPModel = new G4NeutronHPElastic();
|
||||
hel->RegisterMe(neutronHPModel);
|
||||
store->Register(hel,particle,neutronHPModel,"HP");
|
||||
hel->AddDataSet(new G4NeutronHPElasticData());
|
||||
}
|
||||
|
||||
hel->RegisterMe(neutronModel);
|
||||
store->Register(hel,particle,neutronModel,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
if(verbose > 1)
|
||||
G4cout << "### HadronElasticPhysics added for "
|
||||
<< particle->GetParticleName() << G4endl;
|
||||
|
||||
// pion case
|
||||
} else if(pname == "pi+" || pname == "pi-") {
|
||||
if(mname == "elastic") {
|
||||
G4UHadronElasticProcess* h = new G4UHadronElasticProcess("hElastic");
|
||||
h->SetQElasticCrossSection(man);
|
||||
hel = h;
|
||||
if(glFlag) hel->AddDataSet(new G4BGGPionElasticXS(particle));
|
||||
} else {
|
||||
hel = new G4HadronElasticProcess("hElastic");
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
if(verbose > 1)
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronHElasticPhysics.cc,v 1.4 2007/11/15 18:08:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4HadronHElasticPhysics.cc,v 1.5 2008/05/19 10:21:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -54,7 +54,6 @@
|
||||
#include "G4IonConstructor.hh"
|
||||
#include "G4Neutron.hh"
|
||||
|
||||
#include "G4HadronProcessStore.hh"
|
||||
#include "G4VQCrossSection.hh"
|
||||
#include "G4UElasticCrossSection.hh"
|
||||
#include "G4BGGNucleonElasticXS.hh"
|
||||
@@ -96,8 +95,6 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4HadronProcessStore* store = G4HadronProcessStore::Instance();
|
||||
|
||||
G4double elimit = 0.4*GeV;
|
||||
//G4double elimit = 0.0;
|
||||
|
||||
@@ -156,7 +153,6 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
hel->AddDataSet(new G4UElasticCrossSection(particle));
|
||||
}
|
||||
hel->RegisterMe(model);
|
||||
store->Register(hel,particle,model,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
// neutron case
|
||||
@@ -175,12 +171,10 @@ void G4HadronHElasticPhysics::ConstructProcess()
|
||||
neutronModel->SetMinEnergy(19.5*MeV);
|
||||
neutronHPModel = new G4NeutronHPElastic();
|
||||
hel->RegisterMe(neutronHPModel);
|
||||
store->Register(hel,particle,neutronHPModel,"HP");
|
||||
hel->AddDataSet(new G4NeutronHPElasticData());
|
||||
}
|
||||
|
||||
hel->RegisterMe(neutronModel);
|
||||
store->Register(hel,particle,neutronModel,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
if(verbose > 1)
|
||||
|
||||
@@ -1,376 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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: G4HadronProcessStore.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
// GEANT4 Class file
|
||||
//
|
||||
//
|
||||
// File name: G4HadronProcessStore
|
||||
//
|
||||
// Author: Vladimir Ivanchenko
|
||||
//
|
||||
// Creation date: 03.05.2006
|
||||
//
|
||||
// Modifications:
|
||||
// 04.08.06 V.Ivanchenko add computation of cross sections
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4HadronProcessStore.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4Electron.hh"
|
||||
#include "G4Proton.hh"
|
||||
|
||||
G4HadronProcessStore* G4HadronProcessStore::theInstance = 0;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4HadronProcessStore* G4HadronProcessStore::Instance()
|
||||
{
|
||||
if(0 == theInstance) {
|
||||
static G4HadronProcessStore manager;
|
||||
theInstance = &manager;
|
||||
}
|
||||
return theInstance;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4HadronProcessStore::~G4HadronProcessStore()
|
||||
{
|
||||
for (G4int i=0; i<n_proc; i++) {
|
||||
if( process[i] ) delete process[i];
|
||||
}
|
||||
// for (G4int j=0; j<n_model; j++) {
|
||||
// if( model[j] ) delete model[j];
|
||||
// }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4HadronProcessStore::G4HadronProcessStore()
|
||||
{
|
||||
n_proc = 0;
|
||||
n_part = 0;
|
||||
n_model= 0;
|
||||
currentProcess = 0;
|
||||
currentParticle = 0;
|
||||
verbose = 1;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4double G4HadronProcessStore::GetInelasticCrossSectionPerVolume(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Material *material)
|
||||
{
|
||||
G4double cross = 0.0;
|
||||
const G4ElementVector* theElementVector = material->GetElementVector();
|
||||
const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume();
|
||||
size_t nelm = material->GetNumberOfElements();
|
||||
for (size_t i=0; i<nelm; i++) {
|
||||
const G4Element* elm = (*theElementVector)[i];
|
||||
cross += theAtomNumDensityVector[i]*
|
||||
GetInelasticCrossSectionPerAtom(aParticle,kineticEnergy,elm);
|
||||
}
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4double G4HadronProcessStore::GetInelasticCrossSectionPerAtom(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Element *anElement)
|
||||
{
|
||||
G4HadronicProcess* hp = FindInelasticProcess(aParticle);
|
||||
localDP.SetDefinition(const_cast<G4ParticleDefinition*>(aParticle));
|
||||
localDP.SetKineticEnergy(kineticEnergy);
|
||||
G4double cross = 0.0;
|
||||
if(hp) cross = hp->GetMicroscopicCrossSection(&localDP,
|
||||
anElement,
|
||||
STP_Temperature);
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4double G4HadronProcessStore::GetInelasticCrossSectionPerIsotope(
|
||||
const G4ParticleDefinition *,
|
||||
G4double,
|
||||
G4int, G4int)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4double G4HadronProcessStore::GetElasticCrossSectionPerVolume(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Material *material)
|
||||
{
|
||||
G4double cross = 0.0;
|
||||
const G4ElementVector* theElementVector = material->GetElementVector();
|
||||
const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume();
|
||||
size_t nelm = material->GetNumberOfElements();
|
||||
for (size_t i=0; i<nelm; i++) {
|
||||
const G4Element* elm = (*theElementVector)[i];
|
||||
cross += theAtomNumDensityVector[i]*
|
||||
GetElasticCrossSectionPerAtom(aParticle,kineticEnergy,elm);
|
||||
}
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4double G4HadronProcessStore::GetElasticCrossSectionPerAtom(
|
||||
const G4ParticleDefinition *aParticle,
|
||||
G4double kineticEnergy,
|
||||
const G4Element *anElement)
|
||||
{
|
||||
G4HadronicProcess* hp = FindElasticProcess(aParticle);
|
||||
localDP.SetKineticEnergy(kineticEnergy);
|
||||
G4double cross = 0.0;
|
||||
if(hp) cross = hp->GetMicroscopicCrossSection(&localDP,
|
||||
anElement,
|
||||
STP_Temperature);
|
||||
return cross;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4double G4HadronProcessStore::GetElasticCrossSectionPerIsotope(
|
||||
const G4ParticleDefinition*,
|
||||
G4double,
|
||||
G4int, G4int)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
void G4HadronProcessStore::Register(G4HadronicProcess* proc,
|
||||
const G4ParticleDefinition* part,
|
||||
G4HadronicInteraction* mod,
|
||||
const G4String& name)
|
||||
{
|
||||
G4int i=0;
|
||||
for(; i<n_proc; i++) {if(process[i] == proc) break;}
|
||||
G4int j=0;
|
||||
for(; j<n_part; j++) {if(particle[j] == part) break;}
|
||||
G4int k=0;
|
||||
for(; k<n_model; k++) {if(model[k] == mod) break;}
|
||||
|
||||
if(i == n_proc || j == n_part)
|
||||
p_map.insert(std::multimap<PD,HP>::value_type(part,proc));
|
||||
|
||||
m_map.insert(std::multimap<HP,HI>::value_type(proc,mod));
|
||||
|
||||
if(i == n_proc) {
|
||||
n_proc++;
|
||||
process.push_back(proc);
|
||||
}
|
||||
if(j == n_part) {
|
||||
n_part++;
|
||||
particle.push_back(part);
|
||||
}
|
||||
if(k == n_model) {
|
||||
n_model++;
|
||||
model.push_back(mod);
|
||||
modelName.push_back(name);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
void G4HadronProcessStore::Print(const G4ParticleDefinition* part)
|
||||
{
|
||||
G4cout<<G4endl;
|
||||
G4cout << " Hadronic Processes for "
|
||||
<<part->GetParticleName() << G4endl;
|
||||
HP hp = 0;
|
||||
HI hi = 0;
|
||||
G4bool first;
|
||||
std::multimap<PD,HP,std::less<PD> >::iterator it;
|
||||
std::multimap<HP,HI,std::less<HP> >::iterator ih;
|
||||
for(it=p_map.lower_bound(part); it!=p_map.upper_bound(part); ++it) {
|
||||
if(it->first == part) {
|
||||
hp = it->second;
|
||||
G4cout << std::setw(10) << hp->GetProcessName()
|
||||
<< " Models: ";
|
||||
first = true;
|
||||
for(ih=m_map.lower_bound(hp); ih!=m_map.upper_bound(hp); ++ih) {
|
||||
if(ih->first == hp) {
|
||||
hi = ih->second;
|
||||
G4int i=0;
|
||||
for(; i<n_model; i++) {
|
||||
if(model[i] == hi) break;
|
||||
}
|
||||
if(!first) G4cout << " ";
|
||||
first = false;
|
||||
G4cout << std::setw(10) << modelName[i]
|
||||
<< " Emin(GeV)= "
|
||||
<< std::setw(5) << hi->GetMinEnergy()/GeV
|
||||
<< " Emax(GeV)= "
|
||||
<< std::setw(7) << hi->GetMaxEnergy()/GeV
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
void G4HadronProcessStore::Dump(G4int level)
|
||||
{
|
||||
if(level > 0)
|
||||
G4cout << "=============================================================="
|
||||
<< "============================="
|
||||
<< G4endl;
|
||||
for(G4int i=0; i<n_part; i++) {
|
||||
G4String pname = (particle[i])->GetParticleName();
|
||||
G4bool yes = false;
|
||||
if(level >= 2) yes = true;
|
||||
else if(level == 1 && (pname == "proton" ||
|
||||
pname == "neutron" ||
|
||||
pname == "pi+" ||
|
||||
pname == "pi-" ||
|
||||
pname == "kaon+" ||
|
||||
pname == "kaon-" ||
|
||||
pname == "lambda" ||
|
||||
pname == "anti_neutron" ||
|
||||
pname == "anti_proton")) yes = true;
|
||||
if(yes) Print(particle[i]);
|
||||
}
|
||||
if(level > 0)
|
||||
G4cout << "=============================================================="
|
||||
<< "============================="
|
||||
<< G4endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
void G4HadronProcessStore::SetVerbose(G4int val)
|
||||
{
|
||||
verbose = val;
|
||||
G4int i;
|
||||
for(i=0; i<n_proc; i++) {
|
||||
if(process[i]) process[i]->SetVerboseLevel(val);
|
||||
}
|
||||
for(i=0; i<n_model; i++) {
|
||||
if(model[i]) model[i]->SetVerboseLevel(val);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4int G4HadronProcessStore::GetVerbose()
|
||||
{
|
||||
return verbose;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4HadronicProcess* G4HadronProcessStore::FindElasticProcess(
|
||||
const G4ParticleDefinition* part)
|
||||
{
|
||||
bool isNew = false;
|
||||
G4HadronicProcess* hp = 0;
|
||||
|
||||
if(part != currentParticle) {
|
||||
isNew = true;
|
||||
currentParticle = part;
|
||||
localDP.SetDefinition(const_cast<G4ParticleDefinition*>(part));
|
||||
} else if(!currentProcess) {
|
||||
isNew = true;
|
||||
} else if(currentProcess->GetProcessName() == "hElastic") {
|
||||
hp = currentProcess;
|
||||
} else {
|
||||
isNew = true;
|
||||
}
|
||||
|
||||
if(isNew) {
|
||||
std::multimap<PD,HP,std::less<PD> >::iterator it;
|
||||
for(it=p_map.lower_bound(part); it!=p_map.upper_bound(part); ++it) {
|
||||
if(it->first == part && (it->second)->GetProcessName() == "hElastic") {
|
||||
hp = it->second;
|
||||
break;
|
||||
}
|
||||
}
|
||||
currentProcess = hp;
|
||||
}
|
||||
|
||||
return hp;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
|
||||
G4HadronicProcess* G4HadronProcessStore::FindInelasticProcess(
|
||||
const G4ParticleDefinition* part)
|
||||
{
|
||||
bool isNew = false;
|
||||
G4HadronicProcess* hp = 0;
|
||||
|
||||
if(part != currentParticle) {
|
||||
isNew = true;
|
||||
currentParticle = part;
|
||||
localDP.SetDefinition(const_cast<G4ParticleDefinition*>(part));
|
||||
} else if(!currentProcess) {
|
||||
isNew = true;
|
||||
} else if(currentProcess->GetProcessName() == "hInelastic") {
|
||||
hp = currentProcess;
|
||||
} else {
|
||||
isNew = true;
|
||||
}
|
||||
|
||||
if(isNew) {
|
||||
std::multimap<PD,HP,std::less<PD> >::iterator it;
|
||||
for(it=p_map.lower_bound(part); it!=p_map.upper_bound(part); ++it) {
|
||||
if(it->first == part && (it->second)->GetProcessName() == "hInelastic") {
|
||||
hp = it->second;
|
||||
break;
|
||||
}
|
||||
}
|
||||
currentProcess = hp;
|
||||
}
|
||||
|
||||
return hp;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
|
||||
@@ -23,8 +23,8 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4HadronQElasticPhysics.cc,v 1.6 2006/11/29 14:33:30 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4HadronQElasticPhysics.cc,v 1.7 2008/05/19 10:21:34 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -44,7 +44,6 @@
|
||||
#include "G4HadronElastic.hh"
|
||||
#include "G4QElastic.hh"
|
||||
|
||||
#include "G4HadronProcessStore.hh"
|
||||
#include "G4VQCrossSection.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
@@ -85,8 +84,6 @@ void G4HadronQElasticPhysics::ConstructProcess()
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
G4HadronProcessStore* store = G4HadronProcessStore::Instance();
|
||||
|
||||
G4double elimit = DBL_MAX;
|
||||
|
||||
if(verbose > 1)
|
||||
@@ -131,7 +128,6 @@ void G4HadronQElasticPhysics::ConstructProcess()
|
||||
G4UHadronElasticProcess* hel = new G4UHadronElasticProcess("hElastic");
|
||||
hel->SetQElasticCrossSection(man);
|
||||
hel->RegisterMe(model);
|
||||
store->Register(hel,particle,model,mname);
|
||||
pmanager->AddDiscreteProcess(hel);
|
||||
|
||||
} else if(pname == "neutron" || pname == "proton") {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4IonBinaryCascadePhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4IonPhysics.cc,v 1.1 2006/10/31 11:35:02 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -42,21 +42,20 @@
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
|
||||
G4LEPNeutronBuilder::
|
||||
G4LEPNeutronBuilder()
|
||||
{
|
||||
G4LEPNeutronBuilder::G4LEPNeutronBuilder() : theLENeutronModel(0),
|
||||
theNeutronFissionModel(0),
|
||||
theNeutronCaptureModel(0) {
|
||||
theMin = 0;
|
||||
theIMin = theMin;
|
||||
theMax = 20*TeV;
|
||||
theIMax = 55*GeV;
|
||||
}
|
||||
|
||||
G4LEPNeutronBuilder::
|
||||
~G4LEPNeutronBuilder()
|
||||
G4LEPNeutronBuilder::~G4LEPNeutronBuilder()
|
||||
{
|
||||
delete theNeutronFissionModel;
|
||||
delete theNeutronCaptureModel;
|
||||
delete theLENeutronModel;
|
||||
if (theNeutronFissionModel) delete theNeutronFissionModel;
|
||||
if (theNeutronCaptureModel) delete theNeutronCaptureModel;
|
||||
if (theLENeutronModel) delete theLENeutronModel;
|
||||
}
|
||||
|
||||
void G4LEPNeutronBuilder::
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LHEPStoppingPhysics.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// 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: G4NeutronTrackingCut.cc,v 1.4 2006/11/24 16:30:13 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// $Id: G4NeutronTrackingCut.cc,v 1.5 2008/09/17 18:19:15 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
@@ -46,41 +46,44 @@
|
||||
|
||||
G4NeutronTrackingCut::G4NeutronTrackingCut(const G4String& name, G4int ver)
|
||||
: G4VPhysicsConstructor(name), verbose(ver), wasActivated(false)
|
||||
{}
|
||||
{
|
||||
timeLimit = 10.*microsecond;
|
||||
kineticEnergyLimit = 0.0;
|
||||
}
|
||||
|
||||
G4NeutronTrackingCut::~G4NeutronTrackingCut()
|
||||
{
|
||||
if(wasActivated)
|
||||
{
|
||||
delete pNeutronKiller;
|
||||
delete pNeutronKiller;
|
||||
}
|
||||
}
|
||||
|
||||
void G4NeutronTrackingCut::ConstructParticle()
|
||||
{
|
||||
|
||||
// G4cout << "G4NeutronTrackingCut::ConstructParticle" << G4endl;
|
||||
|
||||
G4Neutron::NeutronDefinition();
|
||||
}
|
||||
|
||||
void G4NeutronTrackingCut::ConstructProcess()
|
||||
{
|
||||
G4double timeLimit =10*microsecond;
|
||||
// G4double kineticEnergylimit =1*keV;
|
||||
if(wasActivated) return;
|
||||
wasActivated = true;
|
||||
|
||||
// Add Decay Process
|
||||
// Add Process
|
||||
|
||||
pNeutronKiller = new G4NeutronKiller();
|
||||
G4ParticleDefinition * particle = G4Neutron::Neutron();
|
||||
G4ProcessManager * pmanager = particle->GetProcessManager();
|
||||
// if(verbose > 1)
|
||||
G4cout << "### Adding Neutron tracking cut for " << particle->GetParticleName() << G4endl;
|
||||
G4cout << "### cut value is " << timeLimit/microsecond << " microseconds" << G4endl;
|
||||
pmanager -> AddDiscreteProcess(pNeutronKiller);
|
||||
// pNeutronKiller->SetKinEnergyLimit(kineticEnergylimit);
|
||||
pNeutronKiller->SetTimeLimit(timeLimit);
|
||||
|
||||
if(verbose > 0) {
|
||||
G4cout << "### Adding tracking cuts for " << particle->GetParticleName()
|
||||
<< " TimeCut(ns)= " << timeLimit/ns
|
||||
<< " KinEnergyCut(MeV)= " << kineticEnergyLimit/MeV
|
||||
<< G4endl;
|
||||
}
|
||||
pmanager -> AddDiscreteProcess(pNeutronKiller);
|
||||
pNeutronKiller->SetKinEnergyLimit(kineticEnergyLimit);
|
||||
pNeutronKiller->SetTimeLimit(timeLimit);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4PiKBuilder.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ProtonBuilder.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QEmExtraPhysics.cc,v 1.1 2007/05/23 17:38:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSBinaryNeutronBuilder::
|
||||
G4QGSBinaryNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSB");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSBinaryPiKBuilder::
|
||||
G4QGSBinaryPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSB");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
G4QGSBinaryProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSB");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSCEflowNeutronBuilder::
|
||||
G4QGSCEflowNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSCElow");
|
||||
|
||||
theStringModel= new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSCEflowPiKBuilder::
|
||||
G4QGSCEflowPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSCEflow");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSCEflowProtonBuilder::
|
||||
G4QGSCEflowProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSCEflow");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
G4QGSCNeutronBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theStringModel= new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSCPiKBuilder::
|
||||
G4QGSCPiKBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSCProtonBuilder::
|
||||
G4QGSCProtonBuilder(G4bool quasiElastic)
|
||||
{
|
||||
theMin = 8*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSC");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSPNeutronBuilder::
|
||||
G4QGSPNeutronBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSP");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@ G4QGSPPiKBuilder::
|
||||
G4QGSPPiKBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSP");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
G4QGSPProtonBuilder(G4bool quasiElastic, G4bool projectileDiffraction)
|
||||
{
|
||||
theMin = 12*GeV;
|
||||
theModel = new G4TheoFSGenerator;
|
||||
theModel = new G4TheoFSGenerator("QGSP");
|
||||
|
||||
theStringModel = new G4QGSModel< G4QGSParticipants >;
|
||||
theStringDecay = new G4ExcitedStringDecay(new G4QGSMFragmentation);
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4QStoppingPhysics.cc,v 1.2 2007/04/26 16:03:18 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4StoppingHadronBuilder.cc,v 1.1 2006/10/31 11:35:03 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-09-01 $
|
||||
// GEANT4 tag $Name: geant4-09-02 $
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user