Import Geant4 10.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 12:08:39 +02:00
parent 286caacf06
commit c9b32a6c0a
5770 changed files with 1050949 additions and 367105 deletions
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: History 75598 2013-11-04 13:00:59Z gcosmo $
$Id: History 87210 2014-11-27 09:02:21Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,9 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
Nov 26, 2014 G. Folger (exampleRE01-V10-00-00)
- Remove obsolete sample.err
Oct 31, 2013 A. Kimura (exampleRE01-V09-06-08)
- Added newline at end of RE01DetectorConstruction.cc
@@ -1,6 +0,0 @@
Warning : Region <TrackerRegion> does not have specific production cuts,
even though it appears in the current tracking world.
Default cuts are used for this region.
Warning : Region <CalorimeterRegion> does not have specific production cuts,
even though it appears in the current tracking world.
Default cuts are used for this region.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: History 77724 2013-11-27 17:11:16Z gcosmo $
$Id: History 83391 2014-08-21 14:35:11Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,9 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
18-08-14 M.Asai (exampleRE05-V10-00-00)
- Reduce the amount of print-out.
27-11-13 G.Folger (exampleRE05-V09-06-09)
- remove setting number of threads from macro file
@@ -6,9 +6,6 @@
/particle/createAllIon
/control/verbose 2
/run/verbose 2
/event/verbose 1
/tracking/verbose 1
/run/beamOn 100
###/run/beamOn 40
#
File diff suppressed because it is too large Load Diff
@@ -51,8 +51,8 @@ void RE05ActionInitialization::Build() const
G4UserRunAction* run_action = new RE05RunAction;
SetUserAction(run_action);
//
//// G4UserEventAction* event_action = new RE05EventAction;
//// SetUserAction(event_action);
G4UserEventAction* event_action = new RE05EventAction;
SetUserAction(event_action);
//
G4UserStackingAction* stacking_action = new RE05StackingAction;
SetUserAction(stacking_action);
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RE05PrimaryGeneratorAction.cc 70214 2013-05-27 07:21:19Z gcosmo $
// $Id: RE05PrimaryGeneratorAction.cc 83391 2014-08-21 14:35:11Z gcosmo $
//
/// \file RE05/src/RE05PrimaryGeneratorAction.cc
/// \brief Implementation of the RE05PrimaryGeneratorAction class
@@ -48,7 +48,7 @@ RE05PrimaryGeneratorAction::RE05PrimaryGeneratorAction()
if(!HEPEvt)
{
const char* filename = "pythia_event.data";
HEPEvt = new G4HEPEvtInterface(filename,2);
HEPEvt = new G4HEPEvtInterface(filename,1);
}
G4int n_particle = 1;
+17 -1
View File
@@ -1,4 +1,4 @@
$Id: History 77498 2013-11-25 10:26:36Z gcosmo $
$Id: History 87209 2014-11-27 08:59:48Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,22 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
Nov 24, 2014 M. Asai (exampleRE06-V10-00-04)
- Retagged with setting production cuts to be same as before
exampleRE06-V10-00-02 tag.
Nov 24, 2014 M. Asai (exampleRE06-V10-00-03)
- Retagged. Co-working with run-V10-00-43.
Nov 20, 2014 M. Asai (exampleRE06-V10-00-02)
- Remove obsolete hand-written physics list.
Oct 16, 2014 I. Hrivnacova (exampleRE06-V10-00-01)
- Fixed coding guidelines (long lines) in RE06SteppingVerbose.cc
Aug 20, 2014 M.Asai (exampleRE06-V10-00-00)
- fix boolean protection in ConstructSD methods for MT.
Nov 22, 2013 G.Folger (exampleRE06-V09-06-01)
- fix typo in RE06RunAction.cc, use G4endl to end output line.
@@ -26,7 +26,7 @@
/// \file RE06/exampleRE06.cc
/// \brief Main program of the RE06 example
//
// $Id: exampleRE06.cc 75123 2013-10-28 09:53:28Z gcosmo $
// $Id: exampleRE06.cc 86969 2014-11-21 11:54:05Z gcosmo $
//
// --------------------------------------------------------------
// GEANT 4 - example RE06
@@ -47,11 +47,11 @@
#endif
#include "G4UImanager.hh"
#include "FTFP_BERT.hh"
#include "G4ParallelWorldPhysics.hh"
#include "RE06DetectorConstruction.hh"
#include "RE06ParallelWorld.hh"
#include "RE06PhysicsList.hh"
#include "RE06PrimaryGeneratorAction.hh"
#include "RE06RunAction.hh"
#include "RE06SteppingVerbose.hh"
@@ -76,11 +76,13 @@ int main(int argc,char** argv)
// Set mandatory initialization classes
//
G4String parallelWorldName = "ParallelScoringWorld";
G4VUserDetectorConstruction* detector = new RE06DetectorConstruction;
detector->RegisterParallelWorld(new RE06ParallelWorld("ParallelScoringWorld"));
detector->RegisterParallelWorld(new RE06ParallelWorld(parallelWorldName));
runManager->SetUserInitialization(detector);
//
G4VUserPhysicsList* physics = new RE06PhysicsList;
G4VModularPhysicsList* physics = new FTFP_BERT;
physics->RegisterPhysics(new G4ParallelWorldPhysics(parallelWorldName));
runManager->SetUserInitialization(physics);
// Set user action classes
@@ -5,6 +5,9 @@
/tracking/verbose 1
/run/verbose 1
/run/initialize
/run/setCutForRegion Calor-A 1 mm
/run/setCutForRegion Calor-B 1 mm
/run/setCutForRegion Calor-C 10 cm
/run/dumpRegion
/run/beamOn 10
/run/dumpCouples
File diff suppressed because it is too large Load Diff
@@ -26,7 +26,7 @@
/// \file RE06/include/RE06DetectorConstruction.hh
/// \brief Definition of the RE06DetectorConstruction class
//
// $Id: RE06DetectorConstruction.hh 75123 2013-10-28 09:53:28Z gcosmo $
// $Id: RE06DetectorConstruction.hh 83381 2014-08-21 14:18:13Z gcosmo $
//
#ifndef RE06DetectorConstruction_h
@@ -79,7 +79,7 @@ class RE06DetectorConstruction : public G4VUserDetectorConstruction
G4double fLayerThickness; ///< = fTotalThickness / fNumberOfLayers
G4bool fConstructed;
G4bool fConstructedSDandField;
static G4ThreadLocal G4bool fConstructedSDandField;
G4String fCalName[3];
@@ -26,7 +26,7 @@
/// \file RE06/include/RE06ParallelWorld.hh
/// \brief Definition of the RE06ParallelWorld class
//
// $Id: RE06ParallelWorld.hh 75123 2013-10-28 09:53:28Z gcosmo $
// $Id: RE06ParallelWorld.hh 83381 2014-08-21 14:18:13Z gcosmo $
//
#ifndef RE06ParallelWorld_h
@@ -60,6 +60,7 @@ class RE06ParallelWorld : public G4VUserParallelWorld
G4VPhysicalVolume* fLayerPhysical[3];
G4String fCalName[3];
G4bool fConstructed;
static G4ThreadLocal G4bool fSDConstructed;
G4bool fSerial;
G4double fTotalThickness;
G4int fNumberOfLayers;
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file RE06/include/RE06PhysicsList.hh
/// \brief Definition of the RE06PhysicsList class
//
// $Id: RE06PhysicsList.hh 66526 2012-12-19 13:41:33Z ihrivnac $
//
#ifndef RE06PhysicsList_h
#define RE06PhysicsList_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
class RE06PhysicsList: public G4VUserPhysicsList
{
public:
RE06PhysicsList();
virtual ~RE06PhysicsList();
protected:
// Construct particle and physics
virtual void ConstructParticle();
virtual void ConstructProcess();
virtual void SetCuts();
// these methods Construct particles
void ConstructBosons();
void ConstructLeptons();
void ConstructMesons();
void ConstructBaryons();
// these methods Construct physics processes and register them
void ConstructGeneral();
void ConstructEM();
};
#endif
@@ -26,7 +26,7 @@
/// \file RE06/src/RE06DetectorConstruction.cc
/// \brief Implementation of the RE06DetectorConstruction class
//
// $Id: RE06DetectorConstruction.cc 75123 2013-10-28 09:53:28Z gcosmo $
// $Id: RE06DetectorConstruction.cc 83381 2014-08-21 14:18:13Z gcosmo $
//
#include "RE06DetectorConstruction.hh"
@@ -63,13 +63,14 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ThreadLocal G4bool RE06DetectorConstruction::fConstructedSDandField = false;
RE06DetectorConstruction::RE06DetectorConstruction()
: G4VUserDetectorConstruction(),
fNumberOfLayers(40),
fTotalThickness (2.0*m),
fLayerThickness(0.),
fConstructed(false),
fConstructedSDandField(false),
fWorldMaterial(0),
fAbsorberMaterial(0),
fGapMaterial(0),
@@ -107,12 +108,11 @@ RE06DetectorConstruction::~RE06DetectorConstruction()
G4VPhysicalVolume* RE06DetectorConstruction::Construct()
{
// if(!fConstructed)
if(!fConstructed)
{
fConstructed = true;
DefineMaterials();
SetupGeometry();
SetupDetectors();
}
if (GetVerboseLevel()>0) {
PrintCalorParameters();
@@ -120,9 +120,9 @@ G4VPhysicalVolume* RE06DetectorConstruction::Construct()
return fWorldPhysical;
}
void RE06DetectorConstruction::ConstructSDandField() {
// if(!fConstructedSDandField)
void RE06DetectorConstruction::ConstructSDandField()
{
if(!fConstructedSDandField)
{
fConstructedSDandField = true;
SetupDetectors();
@@ -26,7 +26,7 @@
/// \file RE06/src/RE06ParallelWorld.cc
/// \brief Implementation of the RE06ParallelWorld class
//
// $Id: RE06ParallelWorld.cc 75123 2013-10-28 09:53:28Z gcosmo $
// $Id: RE06ParallelWorld.cc 83381 2014-08-21 14:18:13Z gcosmo $
//
#include "RE06ParallelWorld.hh"
@@ -51,6 +51,8 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ThreadLocal G4bool RE06ParallelWorld::fSDConstructed = false;
RE06ParallelWorld::RE06ParallelWorld(G4String worldName)
:G4VUserParallelWorld(worldName),
fConstructed(false),
@@ -83,7 +85,6 @@ void RE06ParallelWorld::Construct()
{
fConstructed = true;
SetupGeometry();
//SetupDetectors();
}
}
@@ -91,7 +92,11 @@ void RE06ParallelWorld::Construct()
void RE06ParallelWorld::ConstructSD()
{
if(!fSDConstructed)
{
fSDConstructed = true;
SetupDetectors();
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,338 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file RE06/src/RE06PhysicsList.cc
/// \brief Implementation of the RE06PhysicsList class
//
// $Id: RE06PhysicsList.cc 66526 2012-12-19 13:41:33Z ihrivnac $
//
#include "RE06PhysicsList.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4ios.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE06PhysicsList::RE06PhysicsList(): G4VUserPhysicsList()
{
defaultCutValue = 1.0*mm;
SetVerboseLevel(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE06PhysicsList::~RE06PhysicsList()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::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.
ConstructBosons();
ConstructLeptons();
ConstructMesons();
ConstructBaryons();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructBosons()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructLeptons()
{
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructMesons()
{
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
G4Eta::EtaDefinition();
G4EtaPrime::EtaPrimeDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
G4KaonZero::KaonZeroDefinition();
G4AntiKaonZero::AntiKaonZeroDefinition();
G4KaonZeroLong::KaonZeroLongDefinition();
G4KaonZeroShort::KaonZeroShortDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructBaryons()
{
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructProcess()
{
AddTransportation();
ConstructGeneral();
ConstructEM();
}
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4eMultipleScattering.hh"
#include "G4MuMultipleScattering.hh"
#include "G4hMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructEM()
{
G4bool displacementFlg = true; // for multiple scattering
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4GammaConversion());
pmanager->AddDiscreteProcess(new G4ComptonScattering());
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
} else if (particleName == "e-") {
//electron
G4eMultipleScattering* theeminusMultipleScattering
= new G4eMultipleScattering();
theeminusMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
G4VProcess* theeminusIonisation = new G4eIonisation();
G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
//
// add processes
pmanager->AddProcess(theeminusMultipleScattering);
pmanager->AddProcess(theeminusIonisation);
pmanager->AddProcess(theeminusBremsstrahlung);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep,2);
pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxAlongStep,3);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep,2);
pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep,3);
} else if (particleName == "e+") {
//positron
G4eMultipleScattering* theeplusMultipleScattering
= new G4eMultipleScattering();
theeplusMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
G4VProcess* theeplusIonisation = new G4eIonisation();
G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
//
// add processes
pmanager->AddProcess(theeplusMultipleScattering);
pmanager->AddProcess(theeplusIonisation);
pmanager->AddProcess(theeplusBremsstrahlung);
pmanager->AddProcess(theeplusAnnihilation);
//
// set ordering for AtRestDoIt
pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2);
pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxAlongStep,3);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep,2);
pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep,3);
pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
G4MuMultipleScattering* aMultipleScattering
= new G4MuMultipleScattering();
aMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
G4VProcess* aPairProduction = new G4MuPairProduction();
G4VProcess* anIonisation = new G4MuIonisation();
//
// add processes
pmanager->AddProcess(anIonisation);
pmanager->AddProcess(aMultipleScattering);
pmanager->AddProcess(aBremsstrahlung);
pmanager->AddProcess(aPairProduction);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
pmanager->SetProcessOrdering(aBremsstrahlung, idxAlongStep,3);
pmanager->SetProcessOrdering(aPairProduction, idxAlongStep,4);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep,3);
pmanager->SetProcessOrdering(aPairProduction, idxPostStep,4);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
// all others charged particles except geantino
G4hMultipleScattering* aMultipleScattering = new G4hMultipleScattering();
aMultipleScattering->SetLateralDisplasmentFlag(displacementFlg);
G4VProcess* anIonisation = new G4hIonisation();
//
// add processes
pmanager->AddProcess(anIonisation);
pmanager->AddProcess(aMultipleScattering);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
}
}
}
#include "G4Decay.hh"
#include "G4ParallelWorldScoringProcess.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::ConstructGeneral()
{
// Add Decay Process and Parallel world Scoring Process
G4Decay* theDecayProcess = new G4Decay();
G4ParallelWorldScoringProcess* theParallelWorldScoringProcess
= new G4ParallelWorldScoringProcess("ParaWorldScoringProc");
theParallelWorldScoringProcess->SetParallelWorld("ParallelScoringWorld");
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle)) {
pmanager ->AddProcess(theDecayProcess);
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
}
pmanager->AddProcess(theParallelWorldScoringProcess);
pmanager
->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxAtRest);
pmanager
->SetProcessOrdering(theParallelWorldScoringProcess, idxAlongStep, 1);
pmanager
->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxPostStep);
}
}
#include "G4Region.hh"
#include "G4RegionStore.hh"
#include "G4ProductionCuts.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE06PhysicsList::SetCuts()
{
if (verboseLevel >0){
G4cout << "RE06PhysicsList::SetCuts: default cut length : "
<< G4BestUnit(defaultCutValue,"Length") << G4endl;
}
// These values are used as the default production thresholds
// for the world volume.
SetCutsWithDefault();
// Production thresholds for detector regions
G4String regName[] = {"Calor-A","Calor-B","Calor-C"};
G4double fuc = 1.;
for(G4int i=0;i<3;i++)
{
G4Region* reg = G4RegionStore::GetInstance()->GetRegion(regName[i]);
G4ProductionCuts* cuts = new G4ProductionCuts;
cuts->SetProductionCut(defaultCutValue*fuc);
reg->SetProductionCuts(cuts);
fuc *= 10.;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -26,7 +26,7 @@
/// \file RE06/src/RE06SteppingVerbose.cc
/// \brief Implementation of the RE06SteppingVerbose class
//
// $Id: RE06SteppingVerbose.cc 66526 2012-12-19 13:41:33Z ihrivnac $
// $Id: RE06SteppingVerbose.cc 84600 2014-10-17 07:43:51Z gcosmo $
//
#include "RE06SteppingVerbose.hh"
@@ -91,7 +91,8 @@ void RE06SteppingVerbose::Report()
for(G4int i=0;i<fNofRegions;i++)
{
G4cout << G4endl;
G4cout << "Region <" << (*G4RegionStore::GetInstance())[i]->GetName() << ">" << G4endl;
G4cout << "Region <"
<< (*G4RegionStore::GetInstance())[i]->GetName() << ">" << G4endl;
G4cout << " All particles : User=" << fTimers[i]->GetUserElapsed()
<< " Real=" << fTimers[i]->GetRealElapsed()
<< " Sys=" << fTimers[i]->GetSystemElapsed() << G4endl;
@@ -107,11 +108,13 @@ void RE06SteppingVerbose::Report()
void RE06SteppingVerbose::NewStep()
{
CopyState();
G4Region* reg = fTrack->GetStep()->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetRegion();
G4Region* reg = fTrack->GetStep()->GetPreStepPoint()
->GetPhysicalVolume()->GetLogicalVolume()->GetRegion();
fRegIdx = FindRegion(reg);
fTimers[fRegIdx]->Start();
G4ParticleDefinition* pd = fTrack->GetDefinition();
if(pd==G4Electron::ElectronDefinition() || pd==G4Positron::PositronDefinition()) fEp = true;
if(pd==G4Electron::ElectronDefinition() ||
pd==G4Positron::PositronDefinition()) fEp = true;
if(fEp) fTimers[fNofRegions+fRegIdx]->Start();
}