Import Geant4 10.1.0 source tree
This commit is contained in:
@@ -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.
|
||||
+19096
-136215
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
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user