Import Geant4 7.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 11:11:55 +02:00
parent e083ffb441
commit 516dbf1a58
5914 changed files with 202605 additions and 71141 deletions
+20
View File
@@ -0,0 +1,20 @@
$Id: History,v 1.1 2004/12/13 16:38:53 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Hadronic physics-list History
-----------------------------
This file should be used by the G4 example coordinator to briefly
summarize all major modifications introduced in the code and keep
track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
13.12.2004, G.Cosmo - phys-lists-V06-02-00
- Imported hadronic lists and electromagnetic lists from top-level.
- Created.
+34
View File
@@ -0,0 +1,34 @@
$Id: History,v 1.1 2004/12/13 16:38:53 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
electromagnetic_lists History file
----------------------------------
This file should be used by the G4 example coordinator to briefly
summarize all major modifications introduced in the code and keep
track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
13-12-04 G.Cosmo (emphys-V06-02-03)
- Moved from top-level to new structure.
06-12-04 V.Ivanchenko (emphys-V06-02-02)
- Return back muon builder from 6.2 for the 7.0
06-12-04 V.Ivanchenko (emphys-V06-02-01)
- Fix bug in SetCuts between runs
28-11-04 V.Ivanchenko (emphys-V06-02-00)
- for muons instantiate processes only once
- use ionIonisation for GenericIon, alpha, He3
28-05-04 V.Ivanchenko (emphys-V06-01-00)
- first tag
+48
View File
@@ -0,0 +1,48 @@
$Id: README,v 1.1 2004/12/13 16:38:53 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Electromagnetic PhysicsList
---------------------------
The example of physics list for standard electromagnetic physics
package is presented in the subdirectory
electromagnetic/standard
The corresponding files are PhysicsList.cc, .hh
Physics list is equipped by the messenger, which allows to set
cuts and to define modules of physics to be used.
The following modules can be activated:
1. "standard" - (alternative) standard EM physics (current version)
2. "standard70" - (alternative) standard EM physics (development version)
3. "g4v52" - (alternative) standard EM physics (version G4 5.2p02)
4. "high_energy" - add high energy processes
5. "step_limit" - add step limit for charged particles
6. "decay" - add list of default decays
To activate a specific module the UI command can be used:
"/testem/phys/addPhysics title"
By default "standard" module is loaded.
The PhysicsList options can be defined via G4EmProcessOptions
class, the example of the usage is in the PhysicsList class
It is NOT assumed that files from this subdirectory will be
compiled directly. User can copy or link these files to
his/her application, to modify this example according to the
particular application.
It is assumed that user will add modules to this PhysicsList.
This PhysicsList approach is used in tests of the standard
electromagnetic package. Similar PhysicsLists can be found out
in advance examples.
The direct test of this PhysicsList is performed in the example
examples/extended/electromagnetic/TestEm2, TestEm9
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: DecaysBuilder.cc,v 1.1 2004/12/13 16:38:53 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: DecayBuilder
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DecaysBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4Decay.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DecaysBuilder::DecaysBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DecaysBuilder::~DecaysBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DecaysBuilder::ConstructParticle()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DecaysBuilder::ConstructProcess()
{
// Add Decay Process
G4Decay* fDecayProcess = new G4Decay();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (fDecayProcess->IsApplicable(*particle)) {
// pmanager ->AddProcess(fDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
//pmanager ->SetProcessOrdering(fDecayProcess, idxPostStep);
//pmanager ->SetProcessOrdering(fDecayProcess, idxAtRest);
pmanager->AddProcess(fDecayProcess, 1,-1, 5);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: DecaysBuilder.hh,v 1.1 2004/12/13 16:38:53 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DecaysBuilder_h
#define DecaysBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DecaysBuilder : public G4VPhysicsConstructor
{
public:
DecaysBuilder(const G4String& name = "decays");
virtual ~DecaysBuilder();
public:
// This method is dummy for physics
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:
// hide assignment operator
DecaysBuilder & operator=(const DecaysBuilder &right);
DecaysBuilder(const DecaysBuilder&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmHadronBuilder.cc,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmHadronBuilder
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmHadronBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4MultipleScattering.hh"
#include "G4hIonisation.hh"
#include "G4ionIonisation.hh"
#include "G4Electron.hh"
#include "G4Proton.hh"
#include "G4GenericIon.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmHadronBuilder::G4EmHadronBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmHadronBuilder::~G4EmHadronBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmHadronBuilder::ConstructParticle()
{
G4Electron::Electron();
G4Proton::Proton();
G4GenericIon::GenericIon();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmHadronBuilder::ConstructProcess()
{
// Add standard EM Processes
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
if(particle->GetPDGMass() > 110.*MeV) {
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "GenericIon" || particleName == "alpha" || particleName == "He3") {
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
pmanager->AddProcess(new G4hIonisation, -1,2,2);
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmHadronBuilder.hh,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmHadronBuilder_h
#define G4EmHadronBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmHadronBuilder : public G4VPhysicsConstructor
{
public:
G4EmHadronBuilder(const G4String& name = "EM_stand_had");
virtual ~G4EmHadronBuilder();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmHadronBuilder & operator=(const G4EmHadronBuilder &right);
G4EmHadronBuilder(const G4EmHadronBuilder&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,104 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmHadronBuilder52.cc,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmHadronBuilder52
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmHadronBuilder52.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4MultipleScattering52.hh"
#include "G4hIonisation52.hh"
#include "G4Electron.hh"
#include "G4Proton.hh"
#include "G4GenericIon.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmHadronBuilder52::G4EmHadronBuilder52(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmHadronBuilder52::~G4EmHadronBuilder52()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmHadronBuilder52::ConstructParticle()
{
G4Electron::Electron();
G4Proton::Proton();
G4GenericIon::GenericIon();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmHadronBuilder52::ConstructProcess()
{
// Add standard EM Processes
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
if(particle->GetPDGMass() > 110.*MeV) {
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "GenericIon") {
pmanager->AddProcess(new G4hIonisation52, -1, 1, 1);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
pmanager->AddProcess(new G4MultipleScattering52,-1,1,1);
pmanager->AddProcess(new G4hIonisation52, -1,2,2);
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmHadronBuilder52.hh,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmHadronBuilder52_h
#define G4EmHadronBuilder52_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmHadronBuilder52 : public G4VPhysicsConstructor
{
public:
G4EmHadronBuilder52(const G4String& name = "EM_stand_had");
virtual ~G4EmHadronBuilder52();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmHadronBuilder52 & operator=(const G4EmHadronBuilder52 &right);
G4EmHadronBuilder52(const G4EmHadronBuilder52&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,103 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmHighEnergyBuilder.cc,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmHighEnergyBuilder
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmHighEnergyBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4AnnihiToMuPair.hh"
#include "G4GammaConversionToMuons.hh"
#include "G4eeToHadrons.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmHighEnergyBuilder::G4EmHighEnergyBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmHighEnergyBuilder::~G4EmHighEnergyBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmHighEnergyBuilder::ConstructParticle()
{
// Minimal set of particles
G4Gamma::Gamma();
G4Electron::Electron();
G4Positron::Positron();
G4MuonPlus::MuonPlus();
G4MuonMinus::MuonMinus();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmHighEnergyBuilder::ConstructProcess()
{
// Add standard EM Processes for gamma
G4ParticleDefinition* particle = G4Gamma::Gamma();
G4ProcessManager* pmanager = particle->GetProcessManager();
pmanager->AddDiscreteProcess( new G4GammaConversionToMuons() );
// Add standard EM Processes for e+
particle = G4Positron::Positron();
pmanager = particle->GetProcessManager();
G4AnnihiToMuPair* eplusmumu = new G4AnnihiToMuPair();
pmanager->AddDiscreteProcess( eplusmumu );
G4eeToHadrons* eplushadr = new G4eeToHadrons();
pmanager->AddDiscreteProcess( eplushadr );
// Built-in biasing factor for cross secsions
eplusmumu->SetCrossSecFactor(1.0);
eplushadr->SetCrossSecFactor(1.0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmHighEnergyBuilder.hh,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmHighEnergyBuilder_h
#define G4EmHighEnergyBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmHighEnergyBuilder : public G4VPhysicsConstructor
{
public:
G4EmHighEnergyBuilder(const G4String& name = "EM_stan_HE");
virtual ~G4EmHighEnergyBuilder();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmHighEnergyBuilder & operator=(const G4EmHighEnergyBuilder &right);
G4EmHighEnergyBuilder(const G4EmHighEnergyBuilder&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmMuonBuilder.cc,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmMuonBuilder
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmMuonBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4MultipleScattering.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmMuonBuilder::G4EmMuonBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmMuonBuilder::~G4EmMuonBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmMuonBuilder::ConstructParticle()
{
// Minimal set of particles
G4Gamma::Gamma();
G4Electron::Electron();
G4Positron::Positron();
G4MuonPlus::MuonPlus();
G4MuonMinus::MuonMinus();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmMuonBuilder::ConstructProcess()
{
// Add standard EM Processes for mu+
const G4ParticleDefinition* particle = G4MuonPlus::MuonPlus();
G4ProcessManager* pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4MuPairProduction, -1,-1,4);
// Add standard EM Processes for mu-
particle = G4MuonMinus::MuonMinus();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4MuPairProduction, -1,-1,4);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmMuonBuilder.hh,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmMuonBuilder_h
#define G4EmMuonBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmMuonBuilder : public G4VPhysicsConstructor
{
public:
G4EmMuonBuilder(const G4String& name = "EM_stan_muons");
virtual ~G4EmMuonBuilder();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmMuonBuilder & operator=(const G4EmMuonBuilder &right);
G4EmMuonBuilder(const G4EmMuonBuilder&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmMuonBuilder52.cc,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmMuonBuilder52
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmMuonBuilder52.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4MultipleScattering52.hh"
#include "G4MuIonisation52.hh"
#include "G4MuBremsstrahlung52.hh"
#include "G4MuPairProduction52.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmMuonBuilder52::G4EmMuonBuilder52(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmMuonBuilder52::~G4EmMuonBuilder52()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmMuonBuilder52::ConstructParticle()
{
// Minimal set of particles
G4Gamma::Gamma();
G4Electron::Electron();
G4Positron::Positron();
G4MuonPlus::MuonPlus();
G4MuonMinus::MuonMinus();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmMuonBuilder52::ConstructProcess()
{
// Add standard EM Processes for mu+
const G4ParticleDefinition* particle = G4MuonPlus::MuonPlus();
G4ProcessManager* pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering52,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation52, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung52, -1,-1,3);
pmanager->AddProcess(new G4MuPairProduction52, -1,-1,4);
// Add standard EM Processes for mu-
particle = G4MuonMinus::MuonMinus();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering52,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation52, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung52, -1,-1,3);
pmanager->AddProcess(new G4MuPairProduction52, -1,-1,4);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmMuonBuilder52.hh,v 1.1 2004/12/13 16:38:54 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmMuonBuilder52_h
#define G4EmMuonBuilder52_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmMuonBuilder52 : public G4VPhysicsConstructor
{
public:
G4EmMuonBuilder52(const G4String& name = "EM_stan_muons");
virtual ~G4EmMuonBuilder52();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmMuonBuilder52 & operator=(const G4EmMuonBuilder52 &right);
G4EmMuonBuilder52(const G4EmMuonBuilder52&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmQEDBuilder.cc,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmQEDBuilder
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmQEDBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmQEDBuilder::G4EmQEDBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmQEDBuilder::~G4EmQEDBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmQEDBuilder::ConstructParticle()
{
G4Gamma::Gamma();
G4Electron::Electron();
G4Positron::Positron();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmQEDBuilder::ConstructProcess()
{
// Add standard EM Processes for gamma
G4ParticleDefinition* particle = G4Gamma::Gamma();
G4ProcessManager* pmanager = particle->GetProcessManager();
pmanager->AddDiscreteProcess( new G4PhotoElectricEffect() );
pmanager->AddDiscreteProcess( new G4ComptonScattering() );
pmanager->AddDiscreteProcess( new G4GammaConversion() );
// Add standard EM Processes for e-
particle = G4Electron::Electron();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3);
// Add standard EM Processes for e+
particle = G4Positron::Positron();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmQEDBuilder.hh,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmQEDBuilder_h
#define G4EmQEDBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmQEDBuilder : public G4VPhysicsConstructor
{
public:
G4EmQEDBuilder(const G4String& name = "EM_stan_QED");
virtual ~G4EmQEDBuilder();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmQEDBuilder & operator=(const G4EmQEDBuilder &right);
G4EmQEDBuilder(const G4EmQEDBuilder&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmQEDBuilder52.cc,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmQEDBuilder52
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmQEDBuilder52.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering52.hh"
#include "G4eIonisation52.hh"
#include "G4eBremsstrahlung52.hh"
#include "G4eplusAnnihilation.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmQEDBuilder52::G4EmQEDBuilder52(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmQEDBuilder52::~G4EmQEDBuilder52()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmQEDBuilder52::ConstructParticle()
{
G4Gamma::Gamma();
G4Electron::Electron();
G4Positron::Positron();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmQEDBuilder52::ConstructProcess()
{
// Add standard EM Processes for gamma
G4ParticleDefinition* particle = G4Gamma::Gamma();
G4ProcessManager* pmanager = particle->GetProcessManager();
pmanager->AddDiscreteProcess( new G4PhotoElectricEffect() );
pmanager->AddDiscreteProcess( new G4ComptonScattering() );
pmanager->AddDiscreteProcess( new G4GammaConversion() );
// Add standard EM Processes for e-
particle = G4Electron::Electron();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering52, -1, 1,1);
pmanager->AddProcess(new G4eIonisation52, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung52, -1,-1,3);
// Add standard EM Processes for e+
particle = G4Positron::Positron();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering52, -1, 1,1);
pmanager->AddProcess(new G4eIonisation52, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung52, -1,-1,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmQEDBuilder52.hh,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmQEDBuilder52_h
#define G4EmQEDBuilder52_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmQEDBuilder52 : public G4VPhysicsConstructor
{
public:
G4EmQEDBuilder52(const G4String& name = "EM_stan_QED");
virtual ~G4EmQEDBuilder52();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmQEDBuilder52 & operator=(const G4EmQEDBuilder52 &right);
G4EmQEDBuilder52(const G4EmQEDBuilder52&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmQEDBuilder70.cc,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4EmQEDBuilder70
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmQEDBuilder70.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation70.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmQEDBuilder70::G4EmQEDBuilder70(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4EmQEDBuilder70::~G4EmQEDBuilder70()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmQEDBuilder70::ConstructParticle()
{
G4Gamma::Gamma();
G4Electron::Electron();
G4Positron::Positron();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4EmQEDBuilder70::ConstructProcess()
{
// Add standard EM Processes for gamma
G4ParticleDefinition* particle = G4Gamma::Gamma();
G4ProcessManager* pmanager = particle->GetProcessManager();
pmanager->AddDiscreteProcess( new G4PhotoElectricEffect() );
pmanager->AddDiscreteProcess( new G4ComptonScattering() );
pmanager->AddDiscreteProcess( new G4GammaConversion() );
// Add standard EM Processes for e-
particle = G4Electron::Electron();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3);
// Add standard EM Processes for e+
particle = G4Positron::Positron();
pmanager = particle->GetProcessManager();
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3);
pmanager->AddProcess(new G4eplusAnnihilation70, 0,-1,4);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4EmQEDBuilder70.hh,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4EmQEDBuilder70_h
#define G4EmQEDBuilder70_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4EmQEDBuilder70 : public G4VPhysicsConstructor
{
public:
G4EmQEDBuilder70(const G4String& name = "EM_stan_QED");
virtual ~G4EmQEDBuilder70();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4EmQEDBuilder70 & operator=(const G4EmQEDBuilder70 &right);
G4EmQEDBuilder70(const G4EmQEDBuilder70&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4StepLimiterBuilder.cc,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: G4StepLimiterBuilder
//
// Author: V.Ivanchenko 24.11.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4StepLimiterBuilder.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4StepLimiterPerRegion.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4StepLimiterBuilder::G4StepLimiterBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{
stepMax = new G4StepLimiterPerRegion();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4StepLimiterBuilder::~G4StepLimiterBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4StepLimiterBuilder::ConstructParticle()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4StepLimiterBuilder::ConstructProcess()
{
// Add Decay Process
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (stepMax->IsApplicable(*particle) && !particle->IsShortLived()) {
pmanager->AddProcess(stepMax, -1,-1,6);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: G4StepLimiterBuilder.hh,v 1.1 2004/12/13 16:38:55 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4StepLimiterBuilder_h
#define G4StepLimiterBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4StepLimiterPerRegion;
class G4StepLimiterBuilder : public G4VPhysicsConstructor
{
public:
G4StepLimiterBuilder(const G4String& name = "stepLimiter");
virtual ~G4StepLimiterBuilder();
public:
// This method is dummy for physics
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:
// hide assignment operator
G4StepLimiterBuilder & operator=(const G4StepLimiterBuilder &right);
G4StepLimiterBuilder(const G4StepLimiterBuilder&);
G4StepLimiterPerRegion* stepMax;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: G4StepLimiterMessenger.cc,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4StepLimiterMessenger.hh"
#include "G4StepLimiterPerRegion.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4StepLimiterMessenger::G4StepLimiterMessenger(G4StepLimiterPerRegion* stepM)
:stepLimiter(stepM)
{
stepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepMax",this);
stepMaxCmd->SetGuidance("Set max allowed step length for the default region");
stepMaxCmd->SetParameterName("mxStep",false);
stepMaxCmd->SetRange("mxStep>0.");
stepMaxCmd->SetUnitCategory("Length");
stepMaxCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4StepLimiterMessenger::~G4StepLimiterMessenger()
{
delete stepMaxCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4StepLimiterMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
if (command == stepMaxCmd)
{ stepLimiter->SetMaxStep(stepMaxCmd->GetNewDoubleValue(newValue));}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,55 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: G4StepLimiterMessenger.hh,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef G4StepLimiterMessenger_h
#define G4StepLimiterMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class G4StepLimiterPerRegion;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4StepLimiterMessenger: public G4UImessenger
{
public:
G4StepLimiterMessenger(G4StepLimiterPerRegion*);
~G4StepLimiterMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
G4StepLimiterPerRegion* stepLimiter;
G4UIcmdWithADoubleAndUnit* stepMaxCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: G4StepLimiterPerRegion.cc,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4StepLimiterPerRegion.hh"
#include "G4StepLimiterMessenger.hh"
#include "G4VPhysicalVolume.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4StepLimiterPerRegion::G4StepLimiterPerRegion(const G4String& processName)
: G4VDiscreteProcess(processName),
MaxChargedStep(DBL_MAX)
{
pMess = new G4StepLimiterMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4StepLimiterPerRegion::~G4StepLimiterPerRegion()
{
delete pMess;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool G4StepLimiterPerRegion::IsApplicable(const G4ParticleDefinition& particle)
{
return (particle.GetPDGCharge() != 0. && !(particle.IsShortLived()));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void G4StepLimiterPerRegion::SetMaxStep(G4double step)
{
MaxChargedStep = step;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double G4StepLimiterPerRegion::PostStepGetPhysicalInteractionLength(
const G4Track&,
G4double,
G4ForceCondition* condition )
{
// condition is set to "Not Forced"
*condition = NotForced;
ProposedStep = MaxChargedStep;
return ProposedStep;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VParticleChange* G4StepLimiterPerRegion::PostStepDoIt(const G4Track& aTrack, const G4Step&)
{
aParticleChange.Initialize(aTrack);
return &aParticleChange;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: G4StepLimiterPerRegion.hh,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef StepMax_h
#define StepMax_h 1
#include "globals.hh"
#include "G4VDiscreteProcess.hh"
#include "G4ParticleDefinition.hh"
#include "G4Step.hh"
class G4StepLimiterMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4StepLimiterPerRegion : public G4VDiscreteProcess
{
public:
G4StepLimiterPerRegion(const G4String& processName = "UserMaxStep");
~G4StepLimiterPerRegion();
G4bool IsApplicable(const G4ParticleDefinition&);
void SetMaxStep(G4double);
G4double GetMaxStep() {return MaxChargedStep;};
G4double PostStepGetPhysicalInteractionLength( const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*)
{return 0.;}; // it is not needed here !
private:
G4StepLimiterPerRegion & operator=(const G4StepLimiterPerRegion &right);
G4StepLimiterPerRegion(const G4StepLimiterPerRegion&);
G4double MaxChargedStep;
G4double ProposedStep;
G4StepLimiterMessenger* pMess;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,155 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ParticlesBuilder.cc,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: ParticleBuilder
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "ParticlesBuilder.hh"
// Bosons
#include "G4ChargedGeantino.hh"
#include "G4Geantino.hh"
#include "G4Gamma.hh"
#include "G4OpticalPhoton.hh"
// leptons
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4NeutrinoMu.hh"
#include "G4AntiNeutrinoMu.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoE.hh"
// Mesons
#include "G4PionPlus.hh"
#include "G4PionMinus.hh"
#include "G4PionZero.hh"
#include "G4Eta.hh"
#include "G4EtaPrime.hh"
#include "G4KaonPlus.hh"
#include "G4KaonMinus.hh"
#include "G4KaonZero.hh"
#include "G4AntiKaonZero.hh"
#include "G4KaonZeroLong.hh"
#include "G4KaonZeroShort.hh"
// Baryons
#include "G4Proton.hh"
#include "G4AntiProton.hh"
#include "G4Neutron.hh"
#include "G4AntiNeutron.hh"
// Nuclei
#include "G4Alpha.hh"
#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4He3.hh"
#include "G4GenericIon.hh"
//#include "IonC12.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ParticlesBuilder::ParticlesBuilder(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ParticlesBuilder::~ParticlesBuilder()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ParticlesBuilder::ConstructParticle()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
// optical photon
G4OpticalPhoton::OpticalPhotonDefinition();
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
G4Eta::EtaDefinition();
G4EtaPrime::EtaPrimeDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
G4KaonZero::KaonZeroDefinition();
G4AntiKaonZero::AntiKaonZeroDefinition();
G4KaonZeroLong::KaonZeroLongDefinition();
G4KaonZeroShort::KaonZeroShortDefinition();
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
// ions
G4Deuteron::DeuteronDefinition();
G4Triton::TritonDefinition();
G4He3::He3Definition();
G4Alpha::AlphaDefinition();
G4GenericIon::GenericIonDefinition();
// IonC12::IonDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ParticlesBuilder.hh,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef ParticlesBuilder_h
#define ParticlesBuilder_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class ParticlesBuilder : public G4VPhysicsConstructor
{
public:
ParticlesBuilder(const G4String& name = "particles");
virtual ~ParticlesBuilder();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method is dummy.
virtual void ConstructProcess() {};
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,208 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: PhysicsList.cc,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//---------------------------------------------------------------------------
//
// ClassName: PhysicsList
//
// Author: V.Ivanchenko 03.05.2004
//
// Modified:
//
//----------------------------------------------------------------------------
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsList.hh"
#include "PhysicsListMessenger.hh"
#include "ParticlesBuilder.hh"
#include "G4EmQEDBuilder.hh"
#include "G4EmMuonBuilder.hh"
#include "G4EmHadronBuilder.hh"
#include "G4EmHighEnergyBuilder.hh"
#include "G4EmQEDBuilder52.hh"
#include "G4EmQEDBuilder70.hh"
#include "G4EmMuonBuilder52.hh"
#include "G4EmHadronBuilder52.hh"
#include "G4StepLimiterBuilder.hh"
#include "DecaysBuilder.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4UnitsTable.hh"
#include "G4LossTableManager.hh"
#include "G4EmProcessOptions.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::PhysicsList()
: G4VModularPhysicsList()
{
emBuilderIsRegisted = false;
decayIsRegisted = false;
stepLimiterIsRegisted = false;
heIsRegisted = false;
verbose = 0;
// G4LossTableManager::Instance()->SetVerbose(0);
defaultCutValue = 1.*mm;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
cutForPositron = defaultCutValue;
pMessenger = new PhysicsListMessenger(this);
// Add Physics builders
RegisterPhysics(new ParticlesBuilder());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::~PhysicsList()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::ConstructParticle()
{
if(verbose > 0)
G4cout << "Construte Particles" << G4endl;
G4VModularPhysicsList::ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::ConstructProcess()
{
if(verbose > 0)
G4cout << "Construte Processes" << G4endl;
if(!emBuilderIsRegisted) AddPhysicsList("standard");
G4VModularPhysicsList::ConstructProcess();
// Define energy interval for loss processes
G4EmProcessOptions emOptions;
emOptions.SetMinEnergy(0.1*keV);
emOptions.SetMaxEnergy(100.*GeV);
emOptions.SetDEDXBinning(90);
emOptions.SetLambdaBinning(90);
emOptions.SetBuildPreciseRange(false);
//emOptions.SetVerbose(0);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::AddPhysicsList(const G4String& name)
{
if(verbose > 0) {
G4cout << "Add Physics <" << name
<< "> emBuilderIsRegisted= " << emBuilderIsRegisted
<< G4endl;
}
if ((name == "standard") && !emBuilderIsRegisted) {
RegisterPhysics(new G4EmQEDBuilder());
RegisterPhysics(new G4EmMuonBuilder());
RegisterPhysics(new G4EmHadronBuilder());
emBuilderIsRegisted = true;
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
} else if (name == "g4v52" && !emBuilderIsRegisted) {
RegisterPhysics(new G4EmQEDBuilder52());
RegisterPhysics(new G4EmMuonBuilder52());
RegisterPhysics(new G4EmHadronBuilder52());
emBuilderIsRegisted = true;
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
} else if (name == "standard70" && !emBuilderIsRegisted) {
RegisterPhysics(new G4EmQEDBuilder70());
RegisterPhysics(new G4EmMuonBuilder());
RegisterPhysics(new G4EmHadronBuilder());
emBuilderIsRegisted = true;
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
} else if (name == "step_limit" && !stepLimiterIsRegisted) {
RegisterPhysics(new G4StepLimiterBuilder());
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
} else if (name == "decay" && !decayIsRegisted) {
RegisterPhysics(new DecaysBuilder());
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
} else if (name == "high_energy" && !heIsRegisted) {
RegisterPhysics(new G4EmHighEnergyBuilder());
G4cout << "PhysicsList::AddPhysicsList <" << name << ">" << G4endl;
} else {
G4cout << "PhysicsList::AddPhysicsList <" << name << ">"
<< " fail - module is already regitered or is unknown " << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCuts()
{
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
if (verbose>0) DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetVerbose(G4int val)
{
verbose = val;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForGamma(G4double cut)
{
cutForGamma = cut;
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForElectron(G4double cut)
{
cutForElectron = cut;
SetParticleCuts(cutForElectron, G4Electron::Electron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForPositron(G4double cut)
{
cutForPositron = cut;
SetParticleCuts(cutForPositron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: PhysicsList.hh,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
// Modified:
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsList_h
#define PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
class PhysicsListMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsList: public G4VModularPhysicsList
{
public:
PhysicsList();
~PhysicsList();
void ConstructParticle();
void ConstructProcess();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
void AddPhysicsList(const G4String&);
void SetVerbose(G4int val);
private:
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4int verbose;
G4bool emBuilderIsRegisted;
G4bool decayIsRegisted;
G4bool stepLimiterIsRegisted;
G4bool heIsRegisted;
PhysicsListMessenger* pMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,127 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: PhysicsListMessenger.cc,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsListMessenger.hh"
#include "PhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4LossTableManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
:pPhysicsList(pPhys)
{
physDir = new G4UIdirectory("/testem/phys/");
physDir->SetGuidance("physics list commands");
gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setGCut",this);
gammaCutCmd->SetGuidance("Set gamma cut.");
gammaCutCmd->SetParameterName("Gcut",false);
gammaCutCmd->SetUnitCategory("Length");
gammaCutCmd->SetRange("Gcut>0.0");
gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
electCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setECut",this);
electCutCmd->SetGuidance("Set electron cut.");
electCutCmd->SetParameterName("Ecut",false);
electCutCmd->SetUnitCategory("Length");
electCutCmd->SetRange("Ecut>0.0");
electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
protoCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setPCut",this);
protoCutCmd->SetGuidance("Set positron cut.");
protoCutCmd->SetParameterName("Pcut",false);
protoCutCmd->SetUnitCategory("Length");
protoCutCmd->SetRange("Pcut>0.0");
protoCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
allCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setCuts",this);
allCutCmd->SetGuidance("Set cut for all.");
allCutCmd->SetParameterName("cut",false);
allCutCmd->SetUnitCategory("Length");
allCutCmd->SetRange("cut>0.0");
allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
pListCmd->SetGuidance("Add modula physics list.");
pListCmd->SetParameterName("PList",false);
pListCmd->AvailableForStates(G4State_PreInit);
verbCmd = new G4UIcmdWithAnInteger("/testem/phys/verbose",this);
verbCmd->SetGuidance("Set verbose level for processes");
verbCmd->SetParameterName("pVerb",false);
verbCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::~PhysicsListMessenger()
{
delete gammaCutCmd;
delete electCutCmd;
delete protoCutCmd;
delete allCutCmd;
delete pListCmd;
delete verbCmd;
delete physDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == gammaCutCmd )
{ pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
if( command == electCutCmd )
{ pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
if( command == protoCutCmd )
{ pPhysicsList->SetCutForPositron(protoCutCmd->GetNewDoubleValue(newValue));}
if( command == allCutCmd )
{
G4double cut = allCutCmd->GetNewDoubleValue(newValue);
pPhysicsList->SetCutForGamma(cut);
pPhysicsList->SetCutForElectron(cut);
pPhysicsList->SetCutForPositron(cut);
}
if( command == verbCmd )
{ G4LossTableManager::Instance()->SetVerbose(verbCmd->GetNewIntValue(newValue));}
if( command == pListCmd )
{ pPhysicsList->AddPhysicsList(newValue);}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
// $Id: PhysicsListMessenger.hh,v 1.1 2004/12/13 16:38:56 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsListMessenger_h
#define PhysicsListMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class PhysicsList;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsListMessenger: public G4UImessenger
{
public:
PhysicsListMessenger(PhysicsList* );
~PhysicsListMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
PhysicsList* pPhysicsList;
G4UIdirectory* physDir;
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
G4UIcmdWithADoubleAndUnit* electCutCmd;
G4UIcmdWithADoubleAndUnit* protoCutCmd;
G4UIcmdWithADoubleAndUnit* allCutCmd;
G4UIcmdWithAnInteger* verbCmd;
G4UIcmdWithAString* pListCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
+2
View File
@@ -0,0 +1,2 @@
name := FTFC
include ../common.gmk
@@ -0,0 +1,53 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TTFTFC_h
#define TTFTFC_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TFTFC: public T
{
public:
TFTFC();
virtual ~TFTFC();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "FTFC.icc"
typedef TFTFC<G4VModularPhysicsList> FTFC;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsFTFC.hh"
#include "HadronPhysicsFTFC.hh"
template<class T> TFTFC<T>::TFTFC(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: FTFC 2.8"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsFTFC("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TFTFC<T>::~TFTFC()
{
}
template<class T> void TFTFC<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "FTFC::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsFTFC_h
#define HadronPhysicsFTFC_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LEPPiKBuilder.hh"
#include "G4FTFCPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LEPProtonBuilder.hh"
#include "G4FTFCProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LEPNeutronBuilder.hh"
#include "G4FTFCNeutronBuilder.hh"
class HadronPhysicsFTFC : public G4VPhysicsConstructor
{
public:
HadronPhysicsFTFC(const G4String& name ="hadron");
virtual ~HadronPhysicsFTFC();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LEPNeutronBuilder theLEPNeutron;
G4FTFCNeutronBuilder theFTFCNeutron;
G4PiKBuilder thePiK;
G4LEPPiKBuilder theLEPPiK;
G4FTFCPiKBuilder theFTFCPiK;
G4ProtonBuilder thePro;
G4LEPProtonBuilder theLEPPro;
G4FTFCProtonBuilder theFTFCPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
+53
View File
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The FTFC physics list.
</h1>
</center><hr>
Click
<a href="../FTFC.tar">here</a> to down-load the source code of FTFC
Version 2.7
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3
<hr><br>
The FTFC physics list models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsFTFC.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsFTFC::HadronPhysicsFTFC(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theFTFCNeutron);
theNeutrons.RegisterMe(&theLEPNeutron);
theLEPNeutron.SetMaxInelasticEnergy(25*GeV);
thePro.RegisterMe(&theFTFCPro);
thePro.RegisterMe(&theLEPPro);
theLEPPro.SetMaxEnergy(25*GeV);
thePiK.RegisterMe(&theFTFCPiK);
thePiK.RegisterMe(&theLEPPiK);
theLEPPiK.SetMaxEnergy(25*GeV);
}
HadronPhysicsFTFC::~HadronPhysicsFTFC() {}
void HadronPhysicsFTFC::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsFTFC::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
+52
View File
@@ -0,0 +1,52 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=CENTER BGCOLOR="#FFF222">
<h1><br>
The @@@ physics list.
</h1>
</center><hr>
Click
<a href="../LHEP.tar">here</a> to down-load the source code of @@@ Version @.@
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 1.2
<hr><br>
The LHEP physics list models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
+2
View File
@@ -0,0 +1,2 @@
name := FTFP
include ../common.gmk
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TFTFP_h
#define TFTFP_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TFTFP: public T
{
public:
TFTFP();
virtual ~TFTFP();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "FTFP.icc"
typedef TFTFP<G4VModularPhysicsList> FTFP;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsFTFP.hh"
template<class T> TFTFP<T>::TFTFP(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: FTFP 2.8"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsFTFP("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TFTFP<T>::~TFTFP()
{
}
template<class T> void TFTFP<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "FTFP::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsFTFP_h
#define HadronPhysicsFTFP_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LEPPiKBuilder.hh"
#include "G4FTFPPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LEPProtonBuilder.hh"
#include "G4FTFPProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LEPNeutronBuilder.hh"
#include "G4FTFPNeutronBuilder.hh"
class HadronPhysicsFTFP : public G4VPhysicsConstructor
{
public:
HadronPhysicsFTFP(const G4String& name ="hadron");
virtual ~HadronPhysicsFTFP();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LEPNeutronBuilder theLEPNeutron;
G4FTFPNeutronBuilder theFTFPNeutron;
G4PiKBuilder thePiK;
G4LEPPiKBuilder theLEPPiK;
G4FTFPPiKBuilder theFTFPPiK;
G4ProtonBuilder thePro;
G4LEPProtonBuilder theLEPPro;
G4FTFPProtonBuilder theFTFPPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
+53
View File
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The FTFP physics list.
</h1>
</center><hr>
Click
<a href="../FTFP.tar">here</a> to down-load the source code of FTFP
Version 2.7
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3
<hr><br>
The FTFP physics list's models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsFTFP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsFTFP::HadronPhysicsFTFP(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theFTFPNeutron);
theNeutrons.RegisterMe(&theLEPNeutron);
theLEPNeutron.SetMaxInelasticEnergy(25*GeV);
thePro.RegisterMe(&theFTFPPro);
thePro.RegisterMe(&theLEPPro);
theLEPPro.SetMaxEnergy(25*GeV);
thePiK.RegisterMe(&theFTFPPiK);
thePiK.RegisterMe(&theLEPPiK);
theLEPPiK.SetMaxEnergy(25*GeV);
}
HadronPhysicsFTFP::~HadronPhysicsFTFP() {}
void HadronPhysicsFTFP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsFTFP::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
+15
View File
@@ -0,0 +1,15 @@
# $Id: GNUmakefile,v 1.1 2004/12/13 16:38:57 gcosmo Exp $
# -----------------------------------------------------------------
SUBDIR1 = FTFC FTFP LBE LHEP LHEP_GN LHEP_HP LHEP_LEAD LHEP_LEAD_HP LHEP_PRECO QGSP_BERT
SUBDIR2 = LHEP_PRECO_HP Packaging QGSC QGSC_LEAD QGSC_LEAD_HP QGSP QGSP_GN QGSP_HP LHEP_BERT LHEP_BERT_HP LHEP_BIC LHEP_BIC_HP QGSP_BIC
.PHONY: all clean
all:
@for dir in $(SUBDIR1); do (cd $$dir && $(MAKE)); done;:
@for dir in $(SUBDIR2); do (cd $$dir && $(MAKE)); done;:
clean:
@for dir in $(SUBDIR1); do (cd $$dir && $(MAKE) clean); done;:
@for dir in $(SUBDIR2); do (cd $$dir && $(MAKE) clean); done;:
@@ -0,0 +1,87 @@
# --------------------------------------------------------------
# GNUmakefile for physics list user.
# JPW. Fri Jul 25 10:39:58 CEST 2003
# --------------------------------------------------------------
name := MyMagicExecutable
G4TARGET := $(name)
G4EXLIB := true
ifndef G4INSTALL
G4INSTALL = ../..
endif
include $(G4INSTALL)/config/architecture.gmk
#
# define G4LISTS_BASE, if you have your own physics lists area installed point
# G4LISTS_BASE to the directory, that contains the subdirectory 'hadronic'.
#
ifndef G4LISTS_BASE
EXTRALIBS += -L$(G4LIB)/plists/$(G4SYSTEM)
G4LISTS_BASE = $(G4INSTALL)/physics_lists
else
EXTRALIBS += -L$(G4LISTS_BASE)/hadronic/plists/lib/$(G4SYSTEM)
endif
#
# Select your physics lists to link against.
#
# EXTRALIBS += -lFTFC
# EXTRALIBS += -lFTFP
# EXTRALIBS += -lLBE
# EXTRALIBS += -lLHEP
# EXTRALIBS += -lLHEP_GN
# EXTRALIBS += -lLHEP_HP
# EXTRALIBS += -lLHEP_LEAD
# EXTRALIBS += -lLHEP_BERT_HP
# EXTRALIBS += -lLHEP_BIC_HP
# EXTRALIBS += -lLHEP_LEAD_HP
# EXTRALIBS += -lLHEP_PRECO
# EXTRALIBS += -lQGSP_BERT
# EXTRALIBS += -lLHEP_PRECO_HP
# EXTRALIBS += -lQGSC
# EXTRALIBS += -lQGSC_LEAD
# EXTRALIBS += -lQGSC_LEAD_HP
# EXTRALIBS += -lQGSP
# EXTRALIBS += -lQGSP_GN
# EXTRALIBS += -lQGSP_HP
# EXTRALIBS += -lLHEP_BERT
# EXTRALIBS += -lLHEP_BIC
# EXTRALIBS += -lQGSP_BIC
# EXTRALIBS += -lPackaging
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/FTFC/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/FTFP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LBE/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_BERT/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_BIC/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_GN/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_HP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_BERT_HP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_BIC_HP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_LEAD/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_LEAD_HP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_PRECO/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/LHEP_PRECO_HP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/Packaging/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSC/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSC_LEAD/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSC_LEAD_HP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSP/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSP_BERT/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSP_BIC/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSP_GN/include
CPPFLAGS += -I$(G4LISTS_BASE)/hadronic/QGSP_HP/include
.PHONY: all
all: lib bin
include $(G4INSTALL)/config/binmake.gmk
CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS))
CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O))
+44
View File
@@ -0,0 +1,44 @@
$Id: History,v 1.2 2004/12/13 16:55:01 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Hadronic physics-list History
-----------------------------
This file should be used by the G4 example coordinator to briefly
summarize all major modifications introduced in the code and keep
track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
13.12.2004, G.Cosmo - ghad-lists-V06-02-03
- Imported lists from top-level directory.
10.12.2004, G.Cosmo - ghad-lists-V06-02-02
- Removed debug printout in G4HadronQEDBuilder.hh.
07.12.2004, M.Kossov - ghad-lists-V06-02-01
- Added to build missing LHEP_BERT_HP & LHEP_BIC_HP lists.
- Implemented migration to G4VParticleChange.
14.07.2004, G.Cosmo - ghad-lists-V06-02-00
- Corrected example GNUmakefile to remove unnecessary addition of
kernel libraries from EXTRALIBS.
25.04.2004, G.Cosmo - ghad-lists-V06-00-00
- Updated lists to package 4.1 (H.P.Wellisch).
05.12.2003, G.Cosmo - ghad-lists-V05-02-01
- Changed LISTS_BASE to G4LISTS_BASE.
04.12.2003, G.Cosmo - ghad-lists-V05-02-00
- Corrected installation setup to point to default build area if
LISTS_BASE is not defined.
03.12.2003, H.P.Wellisch
- Imported hadronic physics lists from development branch.
- Created.
+2
View File
@@ -0,0 +1,2 @@
name := LBE
include ../common.gmk
+112
View File
@@ -0,0 +1,112 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Underground Dark Matter Detector Advanced Example
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// Underground Advanced
// by A. Howard and H. Araujo
// (27th November 2001)
//
// PhysicsList header
// --------------------------------------------------------------
#ifndef TLBE_h
#define TLBE_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
#include "G4VModularPhysicsList.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
template<class T>
class TLBE: public T
{
public:
TLBE();
~TLBE();
// virtual ~TLBE();
public:
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
protected:
// Construct particle and physics
virtual void ConstructParticle();
virtual void ConstructProcess();
// these methods Construct physics processes and register them
virtual void ConstructGeneral();
virtual void ConstructEM();
virtual void ConstructHad();
virtual void ConstructOp();
/*
// these methods Construct all particles in each category
virtual void ConstructAllBosons();
virtual void ConstructAllLeptons();
virtual void ConstructAllMesons();
virtual void ConstructAllBaryons();
virtual void ConstructAllIons();
virtual void ConstructAllShortLiveds();
*/
virtual void AddTransportation();
private:
G4int VerboseLevel;
G4int OpVerbLevel;
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4double cutForProton;
G4double cutForAlpha;
G4double cutForGenericIon;
// these methods Construct particles
void ConstructMyBosons();
void ConstructMyLeptons();
void ConstructMyMesons();
void ConstructMyBaryons();
void ConstructMyIons();
void ConstructMyShortLiveds();
};
#include "LBE.icc"
typedef TLBE<G4VModularPhysicsList> LBE;
#endif
+823
View File
@@ -0,0 +1,823 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Underground Dark Matter Detector Advanced Example
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// Underground Advanced
// by A. Howard and H. Araujo
// (27th November 2001)
//
// PhysicsList program
//
// Modified:
//
// 14-02-03 Fix bugs in msc and hIon instanciation + cut per region
//
// --------------------------------------------------------------
#include "globals.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4ProductionCutsTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4UserLimits.hh"
#include "G4DataQuestionaire.hh"
// Constructor /////////////////////////////////////////////////////////////
template<class T> TLBE<T>::TLBE() : G4VUserPhysicsList()
{
G4DataQuestionaire it(photon, lowenergy, neutron, radioactive);
G4cout << "You are using the simulation engine: LBE 5.3"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 1.0*micrometer; //
cutForGamma = defaultCutValue;
cutForElectron = 1.0*nanometer;
cutForPositron = defaultCutValue;
cutForProton = defaultCutValue;
cutForAlpha = 1.0*nanometer;
cutForGenericIon = 1.0*nanometer;
VerboseLevel = 1;
OpVerbLevel = 0;
SetVerboseLevel(VerboseLevel);
}
// Destructor //////////////////////////////////////////////////////////////
template<class T> TLBE<T>::~TLBE()
{;}
// Construct Particles /////////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
ConstructMyBosons();
ConstructMyLeptons();
ConstructMyMesons();
ConstructMyBaryons();
ConstructMyIons();
ConstructMyShortLiveds();
}
// construct Bosons://///////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructMyBosons()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
//OpticalPhotons
G4OpticalPhoton::OpticalPhotonDefinition();
}
// construct Leptons://///////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructMyLeptons()
{
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
}
// construct Mesons://///////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructMyMesons()
{
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
G4Eta::EtaDefinition();
G4EtaPrime::EtaPrimeDefinition();
G4KaonZero::KaonZeroDefinition();
G4AntiKaonZero::AntiKaonZeroDefinition();
G4KaonZeroLong::KaonZeroLongDefinition();
G4KaonZeroShort::KaonZeroShortDefinition();
}
// construct Baryons://///////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructMyBaryons()
{
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
}
// construct Ions://///////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructMyIons()
{
// Ions
G4Deuteron::DeuteronDefinition();
G4Triton::TritonDefinition();
G4He3::He3Definition();
G4Alpha::AlphaDefinition();
G4GenericIon::GenericIonDefinition();
}
// construct Shortliveds://///////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructMyShortLiveds()
{
// ShortLiveds
;
}
// Construct Processes //////////////////////////////////////////////////////
template<class T> void TLBE<T>::ConstructProcess()
{
AddTransportation();
ConstructEM();
ConstructOp();
ConstructHad();
ConstructGeneral();
}
// Transportation ///////////////////////////////////////////////////////////
#include "MaxTimeCuts.hh"
#include "MinEkineCuts.hh"
template<class T> void TLBE<T>::AddTransportation() {
G4VUserPhysicsList::AddTransportation();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
// time cuts for ONLY neutrons:
if(particleName == "neutron")
pmanager->AddDiscreteProcess(new MaxTimeCuts());
// Energy cuts to kill charged (embedded in method) particles:
pmanager->AddDiscreteProcess(new MinEkineCuts());
}
}
// Electromagnetic Processes ////////////////////////////////////////////////
// all charged particles
#include "G4MultipleScattering.hh"
// gamma
#include "G4LowEnergyRayleigh.hh"
#include "G4LowEnergyPhotoElectric.hh"
#include "G4LowEnergyCompton.hh"
#include "G4LowEnergyGammaConversion.hh"
// e-
#include "G4LowEnergyIonisation.hh"
#include "G4LowEnergyBremsstrahlung.hh"
// e+
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
// alpha and GenericIon and deuterons, triton, He3:
#include "G4hLowEnergyIonisation.hh"
#include "G4EnergyLossTables.hh"
// hLowEnergyIonisation uses Ziegler 1988 as the default
//muon:
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4MuonMinusCaptureAtRest.hh"
//OTHERS:
//#include "G4hIonisation.hh" // standard hadron ionisation
template<class T> void TLBE<T>::ConstructEM() {
// processes:
G4LowEnergyPhotoElectric* lowePhot = new G4LowEnergyPhotoElectric();
G4LowEnergyIonisation* loweIon = new G4LowEnergyIonisation();
G4LowEnergyBremsstrahlung* loweBrem = new G4LowEnergyBremsstrahlung();
// note LowEIon uses proton as basis for its data-base, therefore
// cannot specify different LowEnergyIonisation models for different
// particles, but can change model globally for Ion, Alpha and Proton.
//fluorescence apply specific cut for fluorescence from photons, electrons
//and bremsstrahlung photons:
G4double fluorcut = 250*eV;
lowePhot->SetCutForLowEnSecPhotons(fluorcut);
loweIon->SetCutForLowEnSecPhotons(fluorcut);
loweBrem->SetCutForLowEnSecPhotons(fluorcut);
// setting tables explicitly for electronic stopping power
// ahadronLowEIon->SetElectronicStoppingPowerModel
// (G4GenericIon::GenericIonDefinition(), "ICRU_R49p") ;
// ahadronLowEIon->SetElectronicStoppingPowerModel
// (G4Proton::ProtonDefinition(), "ICRU_R49p") ;
// Switch off the Barkas and Bloch corrections
// ahadronLowEIon->SetBarkasOff();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
G4String particleType = particle->GetParticleType();
G4double charge = particle->GetPDGCharge();
if (particleName == "gamma")
{
//gamma
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh());
pmanager->AddDiscreteProcess(lowePhot);
pmanager->AddDiscreteProcess(new G4LowEnergyCompton());
pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion());
}
else if (particleName == "e-")
{
//electron
// process ordering: AddProcess(name, at rest, along step, post step)
// -1 = not implemented, then ordering
G4MultipleScattering* aMultipleScattering = new G4MultipleScattering();
pmanager->AddProcess(aMultipleScattering, -1, 1, 1);
pmanager->AddProcess(loweIon, -1, 2, 2);
pmanager->AddProcess(loweBrem, -1,-1, 3);
}
else if (particleName == "e+")
{
//positron
G4MultipleScattering* aMultipleScattering = new G4MultipleScattering();
pmanager->AddProcess(aMultipleScattering, -1, 1, 1);
pmanager->AddProcess(new G4eIonisation(), -1, 2, 2);
pmanager->AddProcess(new G4eBremsstrahlung(), -1,-1, 3);
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1, 4);
}
else if( particleName == "mu+" ||
particleName == "mu-" )
{
//muon
G4MultipleScattering* aMultipleScattering = new G4MultipleScattering();
pmanager->AddProcess(aMultipleScattering, -1, 1, 1);
pmanager->AddProcess(new G4MuIonisation(), -1, 2, 2);
pmanager->AddProcess(new G4MuBremsstrahlung(), -1,-1, 3);
pmanager->AddProcess(new G4MuPairProduction(), -1,-1, 4);
if( particleName == "mu-" )
pmanager->AddProcess(new G4MuonMinusCaptureAtRest(), 0,-1,-1);
}
else if (particleName == "proton" ||
particleName == "alpha" ||
particleName == "deuteron" ||
particleName == "triton" ||
particleName == "He3" ||
particleName == "GenericIon" ||
(particleType == "nucleus" && charge != 0))
{
// OBJECT may be dynamically created as either a GenericIon or nucleus
// G4Nucleus exists and therefore has particle type nucleus
// genericIon:
G4MultipleScattering* aMultipleScattering = new G4MultipleScattering();
G4hLowEnergyIonisation* ahadronLowEIon = new G4hLowEnergyIonisation();
pmanager->AddProcess(aMultipleScattering,-1,1,1);
pmanager->AddProcess(ahadronLowEIon,-1,2,2);
// ahadronLowEIon->SetNuclearStoppingOff() ;
// ahadronLowEIon->SetNuclearStoppingPowerModel("ICRU_R49") ;
// ahadronLowEIon->SetNuclearStoppingOn() ;
//fluorescence switch off for hadrons (for now) PIXE:
ahadronLowEIon->SetFluorescence(false);
}
else if ((!particle->IsShortLived()) &&
(charge != 0.0) &&
(particle->GetParticleName() != "chargedgeantino"))
{
//all others charged particles except geantino
G4MultipleScattering* aMultipleScattering = new G4MultipleScattering();
G4hLowEnergyIonisation* ahadronLowEIon = new G4hLowEnergyIonisation();
pmanager->AddProcess(aMultipleScattering,-1,1,1);
pmanager->AddProcess(ahadronLowEIon, -1,2,2);
// pmanager->AddProcess(new G4hIonisation(), -1,2,2);
}
}
}
// Optical Processes ////////////////////////////////////////////////////////
#include "G4Scintillation.hh"
#include "G4OpAbsorption.hh"
//#include "G4OpRayleigh.hh"
#include "G4OpBoundaryProcess.hh"
template<class T> void TLBE<T>::ConstructOp()
{
// default scintillation process
G4Scintillation* theScintProcessDef = new G4Scintillation("Scintillation");
// theScintProcessDef->DumpPhysicsTable();
theScintProcessDef->SetTrackSecondariesFirst(true);
theScintProcessDef->SetScintillationYieldFactor(1.0); //
theScintProcessDef->SetScintillationExcitationRatio(0.0); //
theScintProcessDef->SetVerboseLevel(OpVerbLevel);
// scintillation process for alpha:
G4Scintillation* theScintProcessAlpha = new G4Scintillation("Scintillation");
// theScintProcessNuc->DumpPhysicsTable();
theScintProcessAlpha->SetTrackSecondariesFirst(true);
theScintProcessAlpha->SetScintillationYieldFactor(1.1);
theScintProcessAlpha->SetScintillationExcitationRatio(1.0);
theScintProcessAlpha->SetVerboseLevel(OpVerbLevel);
// scintillation process for heavy nuclei
G4Scintillation* theScintProcessNuc = new G4Scintillation("Scintillation");
// theScintProcessNuc->DumpPhysicsTable();
theScintProcessNuc->SetTrackSecondariesFirst(true);
theScintProcessNuc->SetScintillationYieldFactor(0.2);
theScintProcessNuc->SetScintillationExcitationRatio(1.0);
theScintProcessNuc->SetVerboseLevel(OpVerbLevel);
// optical processes
G4OpAbsorption* theAbsorptionProcess = new G4OpAbsorption();
// G4OpRayleigh* theRayleighScatteringProcess = new G4OpRayleigh();
G4OpBoundaryProcess* theBoundaryProcess = new G4OpBoundaryProcess();
// theAbsorptionProcess->DumpPhysicsTable();
// theRayleighScatteringProcess->DumpPhysicsTable();
theAbsorptionProcess->SetVerboseLevel(OpVerbLevel);
// theRayleighScatteringProcess->SetVerboseLevel(OpVerbLevel);
theBoundaryProcess->SetVerboseLevel(OpVerbLevel);
G4OpticalSurfaceModel themodel = unified;
theBoundaryProcess->SetModel(themodel);
theParticleIterator->reset();
while( (*theParticleIterator)() )
{
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (theScintProcessDef->IsApplicable(*particle)) {
// if(particle->GetPDGMass() > 5.0*GeV)
if(particle->GetParticleName() == "GenericIon") {
pmanager->AddProcess(theScintProcessNuc); // AtRestDiscrete
pmanager->SetProcessOrderingToLast(theScintProcessNuc,idxAtRest);
pmanager->SetProcessOrderingToLast(theScintProcessNuc,idxPostStep);
}
else if(particle->GetParticleName() == "alpha") {
pmanager->AddProcess(theScintProcessAlpha);
pmanager->SetProcessOrderingToLast(theScintProcessAlpha,idxAtRest);
pmanager->SetProcessOrderingToLast(theScintProcessAlpha,idxPostStep);
}
else {
pmanager->AddProcess(theScintProcessDef);
pmanager->SetProcessOrderingToLast(theScintProcessDef,idxAtRest);
pmanager->SetProcessOrderingToLast(theScintProcessDef,idxPostStep);
}
}
if (particleName == "opticalphoton") {
pmanager->AddDiscreteProcess(theAbsorptionProcess);
// pmanager->AddDiscreteProcess(theRayleighScatteringProcess);
pmanager->AddDiscreteProcess(theBoundaryProcess);
}
}
}
// Hadronic processes ////////////////////////////////////////////////////////
// Elastic processes:
#include "G4HadronElasticProcess.hh"
// Inelastic processes:
#include "G4PionPlusInelasticProcess.hh"
#include "G4PionMinusInelasticProcess.hh"
#include "G4KaonPlusInelasticProcess.hh"
#include "G4KaonZeroSInelasticProcess.hh"
#include "G4KaonZeroLInelasticProcess.hh"
#include "G4KaonMinusInelasticProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4AntiProtonInelasticProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4AntiNeutronInelasticProcess.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4AlphaInelasticProcess.hh"
// Low-energy Models: < 20GeV
#include "G4LElastic.hh"
#include "G4LEPionPlusInelastic.hh"
#include "G4LEPionMinusInelastic.hh"
#include "G4LEKaonPlusInelastic.hh"
#include "G4LEKaonZeroSInelastic.hh"
#include "G4LEKaonZeroLInelastic.hh"
#include "G4LEKaonMinusInelastic.hh"
#include "G4LEProtonInelastic.hh"
#include "G4LEAntiProtonInelastic.hh"
#include "G4LENeutronInelastic.hh"
#include "G4LEAntiNeutronInelastic.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
// High-energy Models: >20 GeV
#include "G4HEPionPlusInelastic.hh"
#include "G4HEPionMinusInelastic.hh"
#include "G4HEKaonPlusInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonMinusInelastic.hh"
#include "G4HEProtonInelastic.hh"
#include "G4HEAntiProtonInelastic.hh"
#include "G4HENeutronInelastic.hh"
#include "G4HEAntiNeutronInelastic.hh"
// Neutron high-precision models: <20 MeV
#include "G4NeutronHPElastic.hh"
#include "G4NeutronHPElasticData.hh"
#include "G4NeutronHPCapture.hh"
#include "G4NeutronHPCaptureData.hh"
#include "G4NeutronHPInelastic.hh"
#include "G4NeutronHPInelasticData.hh"
#include "G4LCapture.hh"
// Stopping processes
#include "G4PiMinusAbsorptionAtRest.hh"
#include "G4KaonMinusAbsorptionAtRest.hh"
#include "G4AntiProtonAnnihilationAtRest.hh"
#include "G4AntiNeutronAnnihilationAtRest.hh"
// ConstructHad()
// Makes discrete physics processes for the hadrons, at present limited
// to those particles with GHEISHA interactions (INTRC > 0).
// The processes are: Elastic scattering and Inelastic scattering.
// F.W.Jones 09-JUL-1998
template<class T> void TLBE<T>::ConstructHad()
{
G4HadronElasticProcess* theElasticProcess = new G4HadronElasticProcess;
G4LElastic* theElasticModel = new G4LElastic;
theElasticProcess->RegisterMe(theElasticModel);
theParticleIterator->reset();
while ((*theParticleIterator)())
{
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "pi+")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4PionPlusInelasticProcess* theInelasticProcess =
new G4PionPlusInelasticProcess("inelastic");
G4LEPionPlusInelastic* theLEInelasticModel =
new G4LEPionPlusInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEPionPlusInelastic* theHEInelasticModel =
new G4HEPionPlusInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "pi-")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4PionMinusInelasticProcess* theInelasticProcess =
new G4PionMinusInelasticProcess("inelastic");
G4LEPionMinusInelastic* theLEInelasticModel =
new G4LEPionMinusInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEPionMinusInelastic* theHEInelasticModel =
new G4HEPionMinusInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
G4String prcNam;
pmanager->AddRestProcess(new G4PiMinusAbsorptionAtRest, ordDefault);
}
else if (particleName == "kaon+")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4KaonPlusInelasticProcess* theInelasticProcess =
new G4KaonPlusInelasticProcess("inelastic");
G4LEKaonPlusInelastic* theLEInelasticModel =
new G4LEKaonPlusInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEKaonPlusInelastic* theHEInelasticModel =
new G4HEKaonPlusInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "kaon0S")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4KaonZeroSInelasticProcess* theInelasticProcess =
new G4KaonZeroSInelasticProcess("inelastic");
G4LEKaonZeroSInelastic* theLEInelasticModel =
new G4LEKaonZeroSInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEKaonZeroInelastic* theHEInelasticModel =
new G4HEKaonZeroInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "kaon0L")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4KaonZeroLInelasticProcess* theInelasticProcess =
new G4KaonZeroLInelasticProcess("inelastic");
G4LEKaonZeroLInelastic* theLEInelasticModel =
new G4LEKaonZeroLInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEKaonZeroInelastic* theHEInelasticModel =
new G4HEKaonZeroInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "kaon-")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4KaonMinusInelasticProcess* theInelasticProcess =
new G4KaonMinusInelasticProcess("inelastic");
G4LEKaonMinusInelastic* theLEInelasticModel =
new G4LEKaonMinusInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEKaonMinusInelastic* theHEInelasticModel =
new G4HEKaonMinusInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
pmanager->AddRestProcess(new G4KaonMinusAbsorptionAtRest, ordDefault);
}
else if (particleName == "proton")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4ProtonInelasticProcess* theInelasticProcess =
new G4ProtonInelasticProcess("inelastic");
G4LEProtonInelastic* theLEInelasticModel = new G4LEProtonInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEProtonInelastic* theHEInelasticModel = new G4HEProtonInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "anti_proton")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4AntiProtonInelasticProcess* theInelasticProcess =
new G4AntiProtonInelasticProcess("inelastic");
G4LEAntiProtonInelastic* theLEInelasticModel =
new G4LEAntiProtonInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEAntiProtonInelastic* theHEInelasticModel =
new G4HEAntiProtonInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "neutron") {
// elastic scattering
G4HadronElasticProcess* theNeutronElasticProcess =
new G4HadronElasticProcess;
G4LElastic* theElasticModel1 = new G4LElastic;
G4NeutronHPElastic * theElasticNeutron = new G4NeutronHPElastic;
theNeutronElasticProcess->RegisterMe(theElasticModel1);
theElasticModel1->SetMinEnergy(19*MeV);
theNeutronElasticProcess->RegisterMe(theElasticNeutron);
G4NeutronHPElasticData * theNeutronData = new G4NeutronHPElasticData;
theNeutronElasticProcess->AddDataSet(theNeutronData);
pmanager->AddDiscreteProcess(theNeutronElasticProcess);
// inelastic scattering
G4NeutronInelasticProcess* theInelasticProcess =
new G4NeutronInelasticProcess("inelastic");
G4LENeutronInelastic* theInelasticModel = new G4LENeutronInelastic;
theInelasticModel->SetMinEnergy(19*MeV);
theInelasticProcess->RegisterMe(theInelasticModel);
G4NeutronHPInelastic * theLENeutronInelasticModel =
new G4NeutronHPInelastic;
theInelasticProcess->RegisterMe(theLENeutronInelasticModel);
G4NeutronHPInelasticData * theNeutronData1 =
new G4NeutronHPInelasticData;
theInelasticProcess->AddDataSet(theNeutronData1);
pmanager->AddDiscreteProcess(theInelasticProcess);
// capture
G4HadronCaptureProcess* theCaptureProcess =
new G4HadronCaptureProcess;
G4LCapture* theCaptureModel = new G4LCapture;
theCaptureModel->SetMinEnergy(19*MeV);
theCaptureProcess->RegisterMe(theCaptureModel);
G4NeutronHPCapture * theLENeutronCaptureModel = new G4NeutronHPCapture;
theCaptureProcess->RegisterMe(theLENeutronCaptureModel);
G4NeutronHPCaptureData * theNeutronData3 = new G4NeutronHPCaptureData;
theCaptureProcess->AddDataSet(theNeutronData3);
pmanager->AddDiscreteProcess(theCaptureProcess);
// G4ProcessManager* pmanager = G4Neutron::Neutron->GetProcessManager();
// pmanager->AddProcess(new G4UserSpecialCuts(),-1,-1,1);
}
else if (particleName == "anti_neutron")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4AntiNeutronInelasticProcess* theInelasticProcess =
new G4AntiNeutronInelasticProcess("inelastic");
G4LEAntiNeutronInelastic* theLEInelasticModel =
new G4LEAntiNeutronInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
G4HEAntiNeutronInelastic* theHEInelasticModel =
new G4HEAntiNeutronInelastic;
theInelasticProcess->RegisterMe(theHEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "deuteron")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4DeuteronInelasticProcess* theInelasticProcess =
new G4DeuteronInelasticProcess("inelastic");
G4LEDeuteronInelastic* theLEInelasticModel =
new G4LEDeuteronInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "triton")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4TritonInelasticProcess* theInelasticProcess =
new G4TritonInelasticProcess("inelastic");
G4LETritonInelastic* theLEInelasticModel =
new G4LETritonInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
else if (particleName == "alpha")
{
pmanager->AddDiscreteProcess(theElasticProcess);
G4AlphaInelasticProcess* theInelasticProcess =
new G4AlphaInelasticProcess("inelastic");
G4LEAlphaInelastic* theLEInelasticModel =
new G4LEAlphaInelastic;
theInelasticProcess->RegisterMe(theLEInelasticModel);
pmanager->AddDiscreteProcess(theInelasticProcess);
}
}
}
// Decays ///////////////////////////////////////////////////////////////////
#include "G4Decay.hh"
#include "G4RadioactiveDecay.hh"
#include "G4IonTable.hh"
#include "G4Ions.hh"
template<class T> void TLBE<T>::ConstructGeneral() {
// Add Decay Process
G4Decay* theDecayProcess = new G4Decay();
theParticleIterator->reset();
while( (*theParticleIterator)() )
{
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle))
{
pmanager ->AddProcess(theDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
}
}
// Declare radioactive decay to the GenericIon in the IonTable.
const G4IonTable *theIonTable =
G4ParticleTable::GetParticleTable()->GetIonTable();
G4RadioactiveDecay *theRadioactiveDecay = new G4RadioactiveDecay();
for (G4int i=0; i<theIonTable->Entries(); i++)
{
G4String particleName = theIonTable->GetParticle(i)->GetParticleName();
G4String particleType = theIonTable->GetParticle(i)->GetParticleType();
if (particleName == "GenericIon")
{
G4ProcessManager* pmanager =
theIonTable->GetParticle(i)->GetProcessManager();
pmanager->SetVerboseLevel(VerboseLevel);
pmanager ->AddProcess(theRadioactiveDecay);
pmanager ->SetProcessOrdering(theRadioactiveDecay, idxPostStep);
pmanager ->SetProcessOrdering(theRadioactiveDecay, idxAtRest);
}
}
}
// Cuts /////////////////////////////////////////////////////////////////////
template<class T> void TLBE<T>::SetCuts()
{
if (verboseLevel >1)
G4cout << "LBE::SetCuts:";
if (verboseLevel>0){
G4cout << "LBE::SetCuts:";
G4cout << "CutLength : "
<< G4BestUnit(defaultCutValue,"Length") << G4endl;
}
//special for low energy physics
G4double lowlimit=250*eV;
G4ProductionCutsTable * aPCTable = G4ProductionCutsTable::GetProductionCutsTable();
aPCTable->SetEnergyRange(lowlimit,100*GeV);
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
// SetCutValue(cutForProton, "proton");
// SetCutValue(cutForProton, "anti_proton");
// SetCutValue(cutForAlpha, "alpha");
// SetCutValue(cutForGenericIon, "GenericIon");
// SetCutValueForOthers(defaultCutValue);
if (verboseLevel>0) DumpCutValuesTable();
}
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Underground Dark Matter Detector Advanced Example
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// Underground Advanced
// by A. Howard and H. Araujo
// (27th November 2001)
//
// MaxTimeCuts header
// --------------------------------------------------------------
#ifndef MaxTimeCuts_h
#define MaxTimeCuts_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "SpecialCuts.hh"
class MaxTimeCuts : public SpecialCuts
{
public:
MaxTimeCuts(const G4String& processName ="MaxTimeCuts" );
virtual ~MaxTimeCuts();
// PostStep GPIL
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition
);
private:
// hide assignment operator as private
MaxTimeCuts(MaxTimeCuts&);
MaxTimeCuts& operator=(const MaxTimeCuts& right);
};
#endif
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: MinEkineCuts.hh,v 1.1 2004/12/13 16:50:57 gcosmo Exp $
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
//
// ------------------------------------------------------------
// 14 Aug. 1998 H.Kurashige
// ------------------------------------------------------------
#ifndef MinEkineCuts_h
#define MinEkineCuts_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "SpecialCuts.hh"
class MinEkineCuts : public SpecialCuts
{
public:
MinEkineCuts(const G4String& processName ="MinEkineCuts" );
virtual ~MinEkineCuts();
// PostStep GPIL
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition
);
private:
// hide assignment operator as private
MinEkineCuts(MinEkineCuts&);
MinEkineCuts& operator=(const MinEkineCuts& right);
};
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Underground Dark Matter Detector Advanced Example
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// Underground Advanced
// by A. Howard and H. Araujo
// (27th November 2001)
//
// SpecialCuts header
// --------------------------------------------------------------
#ifndef SpecialCuts_h
#define SpecialCuts_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "G4VProcess.hh"
class SpecialCuts : public G4VProcess
{
public:
SpecialCuts(const G4String& processName ="SpecialCut" );
virtual ~SpecialCuts();
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition
);
virtual G4VParticleChange* PostStepDoIt(
const G4Track& ,
const G4Step&
);
// no operation in AtRestGPIL
virtual G4double AtRestGetPhysicalInteractionLength(
const G4Track& ,
G4ForceCondition*
){ return -1.0; };
// no operation in AtRestDoIt
virtual G4VParticleChange* AtRestDoIt(
const G4Track& ,
const G4Step&
){return NULL;};
// no operation in AlongStepGPIL
virtual G4double AlongStepGetPhysicalInteractionLength(
const G4Track&,
G4double ,
G4double ,
G4double& ,
G4GPILSelection*
){ return -1.0; };
// no operation in AlongStepDoIt
virtual G4VParticleChange* AlongStepDoIt(
const G4Track& ,
const G4Step&
) {return NULL;};
private:
// hide assignment operator as private
SpecialCuts& operator=(const SpecialCuts&){return *this;};
};
#endif
+53
View File
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The LBE physics list.
</h1>
</center><hr>
Click
<a href="../LBE.tar">here</a> to down-load the source code of LBE
Version 5.2
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3
<hr><br>
The LBE physics list's models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,95 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// by A. Howard and H. Araujo
// (27th November 2001)
//
// MaxTimeCuts program
// --------------------------------------------------------------
#include "MaxTimeCuts.hh"
#include "G4Step.hh"
#include "G4UserLimits.hh"
#include "G4VParticleChange.hh"
#include "G4EnergyLossTables.hh"
MaxTimeCuts::MaxTimeCuts(const G4String& aName)
: SpecialCuts(aName)
{
if (verboseLevel>1) {
G4cout << GetProcessName() << " is created "<< G4endl;
}
SetProcessType(fUserDefined);
}
MaxTimeCuts::~MaxTimeCuts()
{}
MaxTimeCuts::MaxTimeCuts(MaxTimeCuts& ) : SpecialCuts()
{}
G4double MaxTimeCuts::PostStepGetPhysicalInteractionLength(
const G4Track& aTrack,
G4double ,
G4ForceCondition* condition
)
{
// condition is set to "Not Forced"
*condition = NotForced;
G4double proposedStep = DBL_MAX;
// get the pointer to UserLimits
G4UserLimits* pUserLimits = aTrack.GetVolume()->GetLogicalVolume()->GetUserLimits();
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
// can apply cuts for specific particles - use if(particleDef):
// G4ParticleDefinition* aParticleDef = aTrack.GetDefinition();
// G4cout << " Time: " << pUserLimits->GetUserMaxTime(aTrack) << G4endl;
if (pUserLimits) {
G4double temp = DBL_MAX;
//max time limit
G4double dTime= (pUserLimits->GetUserMaxTime(aTrack) - aTrack.GetGlobalTime());
if (dTime < 0. ) {
proposedStep = 0.;
} else {
G4double beta = (aParticle->GetTotalMomentum())/(aParticle->GetTotalEnergy());
temp = beta*c_light*dTime;
if (proposedStep > temp) proposedStep = temp;
}
}
return proposedStep;
}
@@ -0,0 +1,92 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// GEANT4 tag $Name: geant4-07-00-cand-05 $
//
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
// --------------------------------------------------------------
// 15 April 1998 M.Maire
// --------------------------------------------------------------
#include "MinEkineCuts.hh"
#include "G4Step.hh"
#include "G4UserLimits.hh"
#include "G4VParticleChange.hh"
#include "G4EnergyLossTables.hh"
MinEkineCuts::MinEkineCuts(const G4String& aName)
: SpecialCuts(aName)
{
if (verboseLevel>1) {
G4cout << GetProcessName() << " is created "<< G4endl;
}
SetProcessType(fUserDefined);
}
MinEkineCuts::~MinEkineCuts()
{}
MinEkineCuts::MinEkineCuts(MinEkineCuts& ) : SpecialCuts()
{}
G4double MinEkineCuts::PostStepGetPhysicalInteractionLength(
const G4Track& aTrack,
G4double ,
G4ForceCondition* condition
)
{
// condition is set to "Not Forced"
*condition = NotForced;
G4double proposedStep = DBL_MAX;
// get the pointer to UserLimits
G4UserLimits* pUserLimits = aTrack.GetVolume()->GetLogicalVolume()->GetUserLimits();
const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle();
G4ParticleDefinition* aParticleDef = aTrack.GetDefinition();
if (pUserLimits && aParticleDef->GetPDGCharge() != 0.0) {
//min kinetic energy
G4double temp = DBL_MAX;
G4double eKine = aParticle->GetKineticEnergy();
G4Material* aMaterial = aTrack.GetMaterial();
G4double eMin = pUserLimits->GetUserMinEkine(aTrack);
G4double rangeNow = DBL_MAX;
rangeNow = G4EnergyLossTables::GetRange(aParticleDef,eKine,aMaterial);
if (eKine < eMin ) {
proposedStep = 0.;
} else {
// charged particles only
G4double rangeMin = G4EnergyLossTables::GetRange(aParticleDef,eMin,aMaterial);
temp = rangeNow - rangeMin;
if (proposedStep > temp) proposedStep = temp;
}
}
return proposedStep;
}
@@ -0,0 +1,78 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// by A. Howard and H. Araujo
// (27th November 2001)
//
// SpecialCuts program
// --------------------------------------------------------------
#include "SpecialCuts.hh"
#include "G4VParticleChange.hh"
#include "G4Track.hh"
#include "G4Step.hh"
SpecialCuts::SpecialCuts(const G4String& aName)
: G4VProcess(aName)
{
if (verboseLevel>1) {
G4cout << GetProcessName() << " is created "<< G4endl;
}
}
SpecialCuts::~SpecialCuts()
{
}
G4VParticleChange* SpecialCuts::PostStepDoIt(
const G4Track& aTrack,
const G4Step&
)
//
// Stop the current particle, if requested by G4UserLimits
//
{
aParticleChange.Initialize(aTrack);
aParticleChange.ProposeEnergy(0.) ;
aParticleChange.ProposeLocalEnergyDeposit (aTrack.GetKineticEnergy()) ;
aParticleChange.ProposeTrackStatus(fStopButAlive);
return &aParticleChange;
}
G4double SpecialCuts::PostStepGetPhysicalInteractionLength(
const G4Track& /* track*/,
G4double /* previousStepSize */,
G4ForceCondition* /* condition */
)
{
return DBL_MAX;
}
+2
View File
@@ -0,0 +1,2 @@
name := LHEP
include ../common.gmk
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_h
#define HadronPhysicsLHEP_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
class HadronPhysicsLHEP : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4PiKBuilder thePiK;
G4LHEPPiKBuilder theLHEPPiK;
G4ProtonBuilder thePro;
G4LHEPProtonBuilder theLHEPPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_h
#define TLHEP_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TLHEP: public T
{
public:
TLHEP();
virtual ~TLHEP();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP.icc"
typedef TLHEP<G4VModularPhysicsList> LHEP;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP.hh"
template<class T> TLHEP<T>::TLHEP(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: LHEP 3.7"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP<T>::~TLHEP()
{
}
template<class T> void TLHEP<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
+79
View File
@@ -0,0 +1,79 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The LHEP physics list.
</h1>
</center><hr>
Click
<a href="../LHEP.tar">here</a> to down-load the source code of
LHEP Version 3.6
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3
<hr><br>
The LHEP physics list models and cross-section:
<ul>
<li>
The cross-section used by the LHEP list are the default geant4 cross-sections.
No special data sets are applied to keep performance at its maximum.
Verification plots for these cross-sections can be found
<a href="../lists/QGSC.tar">here</a>.
<li>
The model used for elastic scattering is the G4LElastic model. It models the
scattering angle based on a two slope parametrization.
Verification plots for this can be found
<a href="../lists/QGSC.tar">here</a>.
<li>
The models used for inelastic scattering are the LEP and HEP parametrized
models. The modeling parametrizes the final states individual inelastic reactions, so you will not see
resonances, and the detailed secondary angular distributions for O(100MeV) reactions may not be described
perfectly. The average quantities will be well described.
Verification plots for this can be found
<a href="../lists/QGSC.tar">here</a>.
<li>
The models used for hadronic interactions of
stopping particles are a direct re-write from geant3.21.
In the case of mu- absorption, the particles from the electromagnetic
cascading prior to capture are taken into account in addition. Capture is in
competition with decay, and effects of the electromagnetic
binding on mu- decay have been added.
Verification plots can be found
<a href="../lists/QGSC.tar">here</a>.
<li>
The electromagnetic physics used is the 'standard' geant4
electromagnetic physics. A production threshold of 0.7mm is applied.
Please refere to the pages of the electromagnetic working group for
verification results of these processes.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,67 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsLHEP::HadronPhysicsLHEP(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theLHEPNeutron);
thePro.RegisterMe(&theLHEPPro);
thePiK.RegisterMe(&theLHEPPiK);
}
HadronPhysicsLHEP::~HadronPhysicsLHEP() {}
void HadronPhysicsLHEP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsLHEP::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
+52
View File
@@ -0,0 +1,52 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=CENTER BGCOLOR="#FFF222">
<h1><br>
The @@@ physics list.
</h1>
</center><hr>
Click
<a href="../LHEP.tar">here</a> to down-load the source code of @@@ Version @.@
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 1.2
<hr><br>
The LHEP physics list models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,2 @@
name := LHEP_BERT
include ../common.gmk
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_BERT_h
#define HadronPhysicsLHEP_BERT_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4BertiniPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4BertiniProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
#include "G4BertiniNeutronBuilder.hh"
class HadronPhysicsLHEP_BERT : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP_BERT(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP_BERT();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4BertiniNeutronBuilder theBertiniNeutron;
G4PiKBuilder thePiK;
G4LHEPPiKBuilder theLHEPPiK;
G4BertiniPiKBuilder theBertiniPiK;
G4ProtonBuilder thePro;
G4LHEPProtonBuilder theLHEPPro;
G4BertiniProtonBuilder theBertiniPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_BERT_h
#define TLHEP_BERT_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template <class T>
class TLHEP_BERT: public T
{
public:
TLHEP_BERT();
virtual ~TLHEP_BERT();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP_BERT.icc"
typedef TLHEP_BERT<G4VModularPhysicsList> LHEP_BERT;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,96 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP_BERT.hh"
template<class T> TLHEP_BERT<T>::TLHEP_BERT(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: LHEP_BERT 1.1"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP_BERT("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP_BERT<T>::~TLHEP_BERT()
{
}
template<class T> void TLHEP_BERT<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP_BERT::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The LHEP_BERT physics list.
</h1>
</center><hr>
Click
<a href="../LHEP_BERT.tar">here</a> to down-load the source code of LHEP_BERT
Version 1.0
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3.
<hr><br>
The LHEP_BERT physics list's models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP_BERT.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsLHEP_BERT::HadronPhysicsLHEP_BERT(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theLHEPNeutron);
theNeutrons.RegisterMe(&theBertiniNeutron);
theLHEPNeutron.SetMinInelasticEnergy(9.5*GeV);
theBertiniNeutron.SetMaxEnergy(9.9*GeV);
thePro.RegisterMe(&theLHEPPro);
thePro.RegisterMe(&theBertiniPro);
theLHEPPro.SetMinEnergy(9.5*GeV);
theBertiniPro.SetMaxEnergy(9.9*GeV);
thePiK.RegisterMe(&theLHEPPiK);
thePiK.RegisterMe(&theBertiniPiK);
theLHEPPiK.SetMinPionEnergy(9.5*GeV);
theBertiniPiK.SetMaxEnergy(9.9*GeV);
}
HadronPhysicsLHEP_BERT::~HadronPhysicsLHEP_BERT() {}
void HadronPhysicsLHEP_BERT::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsLHEP_BERT::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,2 @@
name := LHEP_BERT_HP
include ../common.gmk
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_BERT_HP_h
#define HadronPhysicsLHEP_BERT_HP_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4BertiniProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
#include "G4BertiniNeutronBuilder.hh"
#include "G4NeutronHPBuilder.hh"
class HadronPhysicsLHEP_BERT_HP : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP_BERT_HP(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP_BERT_HP();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4BertiniNeutronBuilder theBertiniNeutron;
G4NeutronHPBuilder theHPNeutron;
G4PiKBuilder thePiK;
G4LHEPPiKBuilder theLHEPPiK;
G4ProtonBuilder thePro;
G4LHEPProtonBuilder theLHEPPro;
G4BertiniProtonBuilder theBertiniPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_BERT_HP_h
#define TLHEP_BERT_HP_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TLHEP_BERT_HP: public T
{
public:
TLHEP_BERT_HP();
virtual ~TLHEP_BERT_HP();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP_BERT_HP.icc"
typedef TLHEP_BERT_HP<G4VModularPhysicsList> LHEP_BERT_HP;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP_BERT_HP.hh"
template<class T> TLHEP_BERT_HP<T>::TLHEP_BERT_HP(): T()
{
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: LHEP_BERT_HP 1.1"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP_BERT_HP("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP_BERT_HP<T>::~TLHEP_BERT_HP()
{
}
template<class T> void TLHEP_BERT_HP<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP_BERT_HP::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP_BERT_HP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsLHEP_BERT_HP::HadronPhysicsLHEP_BERT_HP(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theLHEPNeutron);
theNeutrons.RegisterMe(&theBertiniNeutron);
theNeutrons.RegisterMe(&theHPNeutron);
theLHEPNeutron.SetMinEnergy(19.9*MeV);
theLHEPNeutron.SetMinInelasticEnergy(9.5*GeV);
theBertiniNeutron.SetMaxEnergy(9.9*GeV);
theBertiniNeutron.SetMinEnergy(19.9*MeV);
thePro.RegisterMe(&theLHEPPro);
thePro.RegisterMe(&theBertiniPro);
theLHEPPro.SetMinEnergy(9.5*GeV);
theBertiniPro.SetMaxEnergy(9.9*GeV);
thePiK.RegisterMe(&theLHEPPiK);
}
HadronPhysicsLHEP_BERT_HP::~HadronPhysicsLHEP_BERT_HP() {}
void HadronPhysicsLHEP_BERT_HP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsLHEP_BERT_HP::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,2 @@
name := LHEP_BIC
include ../common.gmk
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_BIC_h
#define HadronPhysicsLHEP_BIC_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4BinaryProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
#include "G4BinaryNeutronBuilder.hh"
class HadronPhysicsLHEP_BIC : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP_BIC(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP_BIC();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4BinaryNeutronBuilder theBinaryNeutron;
G4PiKBuilder thePiK;
G4LHEPPiKBuilder theLHEPPiK;
G4ProtonBuilder thePro;
G4LHEPProtonBuilder theLHEPPro;
G4BinaryProtonBuilder theBinaryPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_BIC_h
#define TLHEP_BIC_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TLHEP_BIC: public T
{
public:
TLHEP_BIC();
virtual ~TLHEP_BIC();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP_BIC.icc"
typedef TLHEP_BIC<G4VModularPhysicsList> LHEP_BIC;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,96 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP_BIC.hh"
template<class T> TLHEP_BIC<T>::TLHEP_BIC(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: LHEP_BIC 1.1"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP_BIC("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP_BIC<T>::~TLHEP_BIC()
{
}
template<class T> void TLHEP_BIC<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP_BIC::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The LHEP_BIC physics list.
</h1>
</center><hr>
Click
<a href="../LHEP_BIC.tar">here</a> to down-load the source code of LHEP_BIC
Version 1.0
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3.
<hr><br>
The LHEP_BIC physics list's models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,76 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP_BIC.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsLHEP_BIC::HadronPhysicsLHEP_BIC(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theLHEPNeutron);
theNeutrons.RegisterMe(&theBinaryNeutron);
theLHEPNeutron.SetMinInelasticEnergy(9.5*GeV);
theBinaryNeutron.SetMaxEnergy(9.9*GeV);
thePro.RegisterMe(&theLHEPPro);
thePro.RegisterMe(&theBinaryPro);
theLHEPPro.SetMinEnergy(9.5*GeV);
theBinaryPro.SetMaxEnergy(9.9*GeV);
thePiK.RegisterMe(&theLHEPPiK);
}
HadronPhysicsLHEP_BIC::~HadronPhysicsLHEP_BIC() {}
void HadronPhysicsLHEP_BIC::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsLHEP_BIC::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,2 @@
name := LHEP_BIC_HP
include ../common.gmk
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_BIC_HP_h
#define HadronPhysicsLHEP_BIC_HP_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4BinaryProtonBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
#include "G4BinaryNeutronBuilder.hh"
#include "G4NeutronHPBuilder.hh"
class HadronPhysicsLHEP_BIC_HP : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP_BIC_HP(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP_BIC_HP();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4BinaryNeutronBuilder theBinaryNeutron;
G4NeutronHPBuilder theHPNeutron;
G4PiKBuilder thePiK;
G4LHEPPiKBuilder theLHEPPiK;
G4ProtonBuilder thePro;
G4LHEPProtonBuilder theLHEPPro;
G4BinaryProtonBuilder theBinaryPro;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_BIC_HP_h
#define TLHEP_BIC_HP_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TLHEP_BIC_HP: public T
{
public:
TLHEP_BIC_HP();
virtual ~TLHEP_BIC_HP();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP_BIC_HP.icc"
typedef TLHEP_BIC_HP<G4VModularPhysicsList> LHEP_BIC_HP;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,96 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EMPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP_BIC_HP.hh"
template<class T> TLHEP_BIC_HP<T>::TLHEP_BIC_HP(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: LHEP_BIC_HP 1.1"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP_BIC_HP("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP_BIC_HP<T>::~TLHEP_BIC_HP()
{
}
template<class T> void TLHEP_BIC_HP<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP_BIC::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP_BIC_HP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
HadronPhysicsLHEP_BIC_HP::HadronPhysicsLHEP_BIC_HP(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theLHEPNeutron);
theNeutrons.RegisterMe(&theBinaryNeutron);
theNeutrons.RegisterMe(&theHPNeutron);
theLHEPNeutron.SetMinEnergy(19.9*MeV);
theLHEPNeutron.SetMinInelasticEnergy(9.5*GeV);
theBinaryNeutron.SetMaxEnergy(9.9*GeV);
theBinaryNeutron.SetMinEnergy(19.9*MeV);
thePro.RegisterMe(&theLHEPPro);
thePro.RegisterMe(&theBinaryPro);
theLHEPPro.SetMinEnergy(9.5*GeV);
theBinaryPro.SetMaxEnergy(9.9*GeV);
thePiK.RegisterMe(&theLHEPPiK);
}
HadronPhysicsLHEP_BIC_HP::~HadronPhysicsLHEP_BIC_HP() {}
void HadronPhysicsLHEP_BIC_HP::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsLHEP_BIC_HP::ConstructProcess()
{
theNeutrons.Build();
thePro.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,2 @@
name := LHEP_GN
include ../common.gmk
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_GN_h
#define HadronPhysicsLHEP_GN_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
#include "G4NeutronBuilder.hh"
class HadronPhysicsLHEP_GN : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP_GN(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP_GN();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4LHEPPiKBuilder theLHEPPiK;
G4PiKBuilder thePiK;
G4LHEPProtonBuilder theLHEPProton;
G4ProtonBuilder theProton;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_GN_h
#define TLHEP_GN_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TLHEP_GN: public T
{
public:
TLHEP_GN();
virtual ~TLHEP_GN();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP_GN.icc"
typedef TLHEP_GN<G4VModularPhysicsList> LHEP_GN;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EM_GNPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP_GN.hh"
template<class T> TLHEP_GN<T>::TLHEP_GN(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon);
G4cout << "You are using the simulation engine: LHEP_GN 2.5"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EM_GNPhysics("standard EM plus gamma nuclear"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP_GN("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP_GN<T>::~TLHEP_GN()
{
}
template<class T> void TLHEP_GN<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP_GN::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
+53
View File
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The LHEP_GN physics list.
</h1>
</center><hr>
Click
<a href="../LHEP_GN.tar">here</a> to down-load the source code of LHEP_GN
Version 2.4
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3
<hr><br>
The LHEP_GN physics list's models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP_GN.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
HadronPhysicsLHEP_GN::HadronPhysicsLHEP_GN(const G4String& name)
: G4VPhysicsConstructor(name)
{
theNeutrons.RegisterMe(&theLHEPNeutron);
theProton.RegisterMe(&theLHEPProton);
thePiK.RegisterMe(&theLHEPPiK);
}
HadronPhysicsLHEP_GN::~HadronPhysicsLHEP_GN() {}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
void HadronPhysicsLHEP_GN::ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void HadronPhysicsLHEP_GN::ConstructProcess()
{
theNeutrons.Build();
thePiK.Build();
theProton.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch
@@ -0,0 +1,2 @@
name := LHEP_HP
include ../common.gmk
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef HadronPhysicsLHEP_HP_h
#define HadronPhysicsLHEP_HP_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronQEDBuilder.hh"
#include "G4StoppingHadronBuilder.hh"
#include "G4MiscLHEPBuilder.hh"
#include "G4LHEPPiKBuilder.hh"
#include "G4PiKBuilder.hh"
#include "G4LHEPProtonBuilder.hh"
#include "G4ProtonBuilder.hh"
#include "G4LHEPNeutronBuilder.hh"
#include "G4NeutronBuilder.hh"
#include "G4NeutronHPBuilder.hh"
class HadronPhysicsLHEP_HP : public G4VPhysicsConstructor
{
public:
HadronPhysicsLHEP_HP(const G4String& name ="hadron");
virtual ~HadronPhysicsLHEP_HP();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
private:
G4NeutronBuilder theNeutrons;
G4LHEPNeutronBuilder theLHEPNeutron;
G4NeutronHPBuilder theHPNeutron;
G4LHEPPiKBuilder theLHEPPiK;
G4PiKBuilder thePiK;
G4LHEPProtonBuilder theLHEPProton;
G4ProtonBuilder theProton;
G4MiscLHEPBuilder theMiscLHEP;
G4StoppingHadronBuilder theStoppingHadron;
G4HadronQEDBuilder theHadronQED;
};
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef TLHEP_HP_h
#define TLHEP_HP_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
#include "CompileTimeConstraints.hh"
template<class T>
class TLHEP_HP: public T
{
public:
TLHEP_HP();
virtual ~TLHEP_HP();
public:
// SetCuts()
virtual void SetCuts();
private:
enum {ok = CompileTimeConstraints::IsA<T, G4VModularPhysicsList>::ok };
};
#include "LHEP_HP.icc"
typedef TLHEP_HP<G4VModularPhysicsList> LHEP_HP;
// 2002 by J.P. Wellisch
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>
#include "GeneralPhysics.hh"
#include "EM_GNPhysics.hh"
#include "MuonPhysics.hh"
#include "IonPhysics.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsLHEP_HP.hh"
template<class T> TLHEP_HP<T>::TLHEP_HP(): T()
{
// default cut value (1.0mm)
// defaultCutValue = 1.0*mm;
G4DataQuestionaire it(photon, neutron);
G4cout << "You are using the simulation engine: LHEP_HP 1.7"<<G4endl;
G4cout <<G4endl<<G4endl;
defaultCutValue = 0.7*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new EM_GNPhysics("standard EM plus electro nuclear"));
// Muon Physics
RegisterPhysics( new MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new HadronPhysicsLHEP_HP("hadron"));
// Ion Physics
RegisterPhysics( new IonPhysics("ion"));
}
template<class T> TLHEP_HP<T>::~TLHEP_HP()
{
}
template<class T> void TLHEP_HP<T>::SetCuts()
{
if (verboseLevel >1){
G4cout << "LHEP_HP::SetCuts:";
}
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
G4VUserPhysicsList::DumpCutValuesTable();
}
// 2002 by J.P. Wellisch
+53
View File
@@ -0,0 +1,53 @@
<! Copyright © 2002 J.P. Wellisch >
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.78C-CERN UNIX lxplus039 45 [en] (X11; U; Linux 2.4.9-31.1.cernsmp i686) [Netscape]">
</head>
<body>
&nbsp;
<center><table BORDER WIDTH="95%" >
<tr>
<th ALIGN=CENTER></th>
<td ALIGN=left BGCOLOR="#FFF222">
<h1><br><center>
The LHEP_HP physics list.
</h1>
</center><hr>
Click
<a href="../LHEP_HP.tar">here</a> to down-load the source code of LHEP_HP
Version 1.6
<br>
Click
<a href="../Packaging.tar">here</a> to down-load the Packaging re-use library 2.3
<hr><br>
The LHEP_HP physics list's models and cross-section:
<ul>
<li>
<b>FixME:</b> Some text and links to documentation to be added.
<li>
Verification plots for these cross-sections and models can be found
<a href="index.html">here</a>.
<b>FixME:</b> Add verification page.
</ul>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td colspan="2"><hr hright="1"></td></tr>
<tr valign="bottom">
<td width="100%" class="small">
In case of questions, please contact
<a href=mailto:Hans-Peter.Wellisch@cern.ch>J.P Wellisch</a>. <BR>
</td>
<td ALIGN="right" class="small" nowrap>
J.P. Wellisch, 2002<BR>
</td>
</tr>
</table>
<!--#include file="../snippet.html" -->
</body>
</html>
<! Copyright © 2002 J.P. Wellisch >
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "HadronPhysicsLHEP_HP.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4ProcessManager.hh"
HadronPhysicsLHEP_HP
::HadronPhysicsLHEP_HP(const G4String& name) : G4VPhysicsConstructor(name)
{
theLHEPNeutron.SetMinEnergy(19.9*MeV);
theNeutrons.RegisterMe(&theLHEPNeutron);
theNeutrons.RegisterMe(&theHPNeutron);
thePiK.RegisterMe(&theLHEPPiK);
theProton.RegisterMe(&theLHEPProton);
}
HadronPhysicsLHEP_HP::
~HadronPhysicsLHEP_HP() {}
void HadronPhysicsLHEP_HP::
ConstructParticle()
{
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
void HadronPhysicsLHEP_HP::
ConstructProcess()
{
theNeutrons.Build();
theProton.Build();
thePiK.Build();
theMiscLHEP.Build();
theStoppingHadron.Build();
theHadronQED.Build();
}
// 2002 by J.P. Wellisch

Some files were not shown because too many files have changed in this diff Show More