Import Geant4 10.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 11:51:14 +02:00
parent e2d2f9810a
commit 286caacf06
12421 changed files with 730077 additions and 502383 deletions
+20
View File
@@ -34,5 +34,25 @@ It create parallel world(s) for defining scoring mesh(es).
This example demonstrates how to define layered mass geometry in
a parallel world and use it in a simulation.
\link ExampleRE05 RE05 \endlink
Defines a simplified collider detector setup.
Demonstrates interfacing to the PYTHIA primary generator. Includes
the definition of a 'readout' geometry. Exercises event filtering using
the stacking mechanism. Includes visualization. \n
It was moved in extended examples from novice/N04 with removal of
novice examples.
\link ExampleRE06 RE06 \endlink
Implements three simplified sandwitch calorimeters.
Shows how to modify part of the geometry setup at run-time. Includes
detector description parameterisation by materials. Demonstrates
sharing of a sensitive detector definition for different sub-detectors.
Defines different geometrical regions with different production
thresholds. Shows customization of the G4Run. \n
It was moved in extended examples from novice/N07 with removal of
novice examples.
*/
@@ -6,3 +6,5 @@ add_subdirectory(RE01)
add_subdirectory(RE02)
add_subdirectory(RE03)
add_subdirectory(RE04)
add_subdirectory(RE05)
add_subdirectory(RE06)
+8 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.1 2007-11-17 00:28:33 asaim Exp $
$Id: History 68026 2013-03-13 13:45:22Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -16,6 +16,13 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
Feb 15, 2013 I. Hrivnacova (exRunAndEvent-V09-06-01)
- Applied coding guidelines (data members names and initialization)
- Fixed GNUmakefile (in RE05, RE06)
Dec. 19, 2012 I.Hrivnacova (exRunAndEvent-V09-06-00)
- Added RE05, RE06 which (moved from /novice/N04 and /novice/N07)
Oct. 15, 2012 M.Asai (exRunAndEvent-V09-05-01)
- Update of RE01, RE03 by T.Aso (see RE01,RE03/History) to be compliant to
the example coding rule.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.1 2004-11-26 07:37:38 asaim Exp $
# $Id: GNUmakefile 66379 2012-12-18 09:46:33Z gcosmo $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
+32 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.10 2010-11-24 22:47:23 asaim Exp $
$Id: History 75598 2013-11-04 13:00:59Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,37 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
Oct 31, 2013 A. Kimura (exampleRE01-V09-06-08)
- Added newline at end of RE01DetectorConstruction.cc
Oct 29, 2013 A. Kimura (exampleRE01-V09-06-07)
- Added RE01ActionInitialization.{hh,cc}
Oct 25, 2013 M. Asai (exampleRE01-V09-06-06)
- MT migration.
Aug 27, 2013 G. Cosmo (exampleRE01-V09-06-05)
- Added G4Ellipsoid among solids enabled for parameterisation
Apr 01, 2013 A. Dotti (exampleRE01-V09-06-04)
- New API for physics lists needed for MT
Mar 14, 2013 M. Asai (exampleRE01-V09-06-03)
- Enforcing the coding guideline.
Feb 15, 2013 I. Hrivnacova
- Applied coding guidelines (data members initialization)
Feb 1, 2013 V.Ivanchenko (exampleRE01-V09-06-02)
- Migration to new physics_lists directory structure
Dec 14, 2012 A.Ribon (exampleRE01-V09-06-01)
- Replaced obsolete class G4QStoppingPhysics with G4StoppingPhysics.
Dec 02, 2012 J.Allison (exampleRE01-V09-06-00)
Migration to DrawTrajectory() (i_mode argument is no longer available):
o RE01Trajectory.cc: Removed DrawTrajectory(G4int i_mode).
Nov 8, 2012 I.Hrivnacova (exampleRE01-V09-05-02)
- Added copying pythia_event.data in the build area
+15 -14
View File
@@ -40,18 +40,19 @@
// --------------------------------------------------------------
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "RE01DetectorConstruction.hh"
#include "RE01PhysicsList.hh"
#include "QGSP_BERT.hh"
#include "RE01PrimaryGeneratorAction.hh"
#include "RE01RunAction.hh"
#include "RE01EventAction.hh"
#include "RE01StackingAction.hh"
#include "RE01TrackingAction.hh"
#include "RE01SteppingAction.hh"
#include "RE01ActionInitialization.hh"
#ifdef G4VIS_USE
#include "G4VisExecutive.hh"
@@ -63,7 +64,12 @@
int main(int argc,char** argv)
{
G4RunManager* runManager = new G4RunManager;
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
//runManager->SetNumberOfThreads(4);
#else
G4RunManager * runManager = new G4RunManager;
#endif
#ifdef G4VIS_USE
// Visualization manager construction
@@ -75,14 +81,9 @@ int main(int argc,char** argv)
runManager->SetUserInitialization(new RE01PhysicsList);
//runManager->SetUserInitialization(new QGSP_BERT);
runManager->SetUserInitialization(new RE01ActionInitialization);
runManager->Initialize();
runManager->SetUserAction(new RE01PrimaryGeneratorAction);
runManager->SetUserAction(new RE01RunAction);
runManager->SetUserAction(new RE01EventAction);
runManager->SetUserAction(new RE01StackingAction);
runManager->SetUserAction(new RE01TrackingAction);
runManager->SetUserAction(new RE01SteppingAction);
if(argc==1)
{
@@ -23,40 +23,30 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file runAndEvent/RE02/include/RE02PhysicsList.hh
/// \brief Definition of the RE02PhysicsList class
// $Id: RE01ActionInitialization.hh 66522 2012-12-19 12:26:04Z ihrivnac $
//
// $Id$
// --------------------------------------------------------------
/// \file include/RE01ActionInitialization.hh
/// \brief Definition of the RE01ActionInitialization class
//
#ifndef RE02PhysicsList_h
#define RE02PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#ifndef RE01ActionInitialization_H
#define RE01ActionInitialization_H 1
#include "globals.hh"
#include "G4VUserActionInitialization.hh"
//
/// Physics list class
///
/// - constructor
/// registers general, standard EM, muon, hadron and ion physics
///
/// - void SetCuts()
/// invokes default SetCuts methods with SetCutsWithDefault()
//
class RE02PhysicsList: public G4VModularPhysicsList
class RE01ActionInitialization : public G4VUserActionInitialization
{
public:
RE02PhysicsList();
virtual ~RE02PhysicsList();
public:
RE01ActionInitialization();
virtual ~RE01ActionInitialization();
public:
// SetCuts()
virtual void SetCuts();
virtual void Build() const;
virtual void BuildForMaster() const;
private:
//G4bool m_bParallelWorld;
};
#endif
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01CalorimeterHit.hh
/// \brief Definition of the RE01CalorimeterHit class
//
// $Id$
// $Id: RE01CalorimeterHit.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01CalorimeterHit_h
@@ -41,6 +41,8 @@
#include "G4RotationMatrix.hh"
#include "RE01TrackInformation.hh"
#include "G4Types.hh"
class G4AttDef;
class G4AttValue;
@@ -97,18 +99,18 @@ private:
typedef G4THitsCollection<RE01CalorimeterHit> RE01CalorimeterHitsCollection;
extern G4Allocator<RE01CalorimeterHit> RE01CalorimeterHitAllocator;
extern G4ThreadLocal G4Allocator<RE01CalorimeterHit> * RE01CalorimeterHitAllocator;
inline void* RE01CalorimeterHit::operator new(size_t)
{
void *aHit;
aHit = (void *) RE01CalorimeterHitAllocator.MallocSingle();
return aHit;
if(!RE01CalorimeterHitAllocator)
RE01CalorimeterHitAllocator = new G4Allocator<RE01CalorimeterHit>;
return (void *) RE01CalorimeterHitAllocator->MallocSingle();
}
inline void RE01CalorimeterHit::operator delete(void *aHit)
{
RE01CalorimeterHitAllocator.FreeSingle((RE01CalorimeterHit*) aHit);
RE01CalorimeterHitAllocator->FreeSingle((RE01CalorimeterHit*) aHit);
}
#endif
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01CalorimeterParametrisation.hh
/// \brief Definition of the RE01CalorimeterParametrisation class
//
// $Id$
// $Id: RE01CalorimeterParametrisation.hh 73442 2013-08-27 11:26:43Z gcosmo $
//
#ifndef RE01CalorimeterParametrisation_H
@@ -43,6 +43,7 @@ class G4Trd;
class G4Trap;
class G4Cons;
class G4Sphere;
class G4Ellipsoid;
class G4Torus;
class G4Para;
class G4Hype;
@@ -56,35 +57,38 @@ class RE01CalorimeterParametrisation : public G4VPVParameterisation
public:
RE01CalorimeterParametrisation();
virtual ~RE01CalorimeterParametrisation();
virtual void ComputeTransformation(const G4int copyNo,
~RE01CalorimeterParametrisation();
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
virtual void ComputeDimensions(G4Tubs & calorimeterLayer,
void ComputeDimensions(G4Tubs & calorimeterLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
private: // Dummy declarations to get rid of warnings ...
virtual void ComputeDimensions(G4Trd&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Trd&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Trap&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Trap&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Cons&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Cons&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Sphere&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Sphere&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Torus&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Ellipsoid&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Para&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Torus&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Hype&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Para&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Box&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Hype&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Orb&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Box&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Polycone&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Orb&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Polyhedra&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Polycone&,const G4int,const G4VPhysicalVolume*)
const {}
void ComputeDimensions(G4Polyhedra&,const G4int,const G4VPhysicalVolume*)
const {}
private:
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01CalorimeterROGeometry.hh
/// \brief Definition of the RE01CalorimeterROGeometry class
//
// $Id$
// $Id: RE01CalorimeterROGeometry.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01CalorimeterROGeometry_h
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01CalorimeterSD.hh
/// \brief Definition of the RE01CalorimeterSD class
//
// $Id$
// $Id: RE01CalorimeterSD.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01CalorimeterSD_h
@@ -38,6 +38,7 @@ class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class RE01CalorimeterSD : public G4VSensitiveDetector
{
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01DetectorConstruction.hh
/// \brief Definition of the RE01DetectorConstruction class
//
// $Id$
// $Id: RE01DetectorConstruction.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01DetectorConstruction_h
@@ -36,6 +36,8 @@
#include "globals.hh"
class G4VPhysicalVolume;
class G4LogicalVolume;
class G4VReadOutGeometry;
class RE01DetectorConstruction : public G4VUserDetectorConstruction
{
@@ -45,10 +47,14 @@ public:
public:
virtual G4VPhysicalVolume* Construct();
virtual void ConstructSDandField();
private:
#include "RE01DetectorParameterDef.hh"
G4LogicalVolume * fTrackerLayer_log;
G4LogicalVolume * fCalorimeter_log;
G4VReadOutGeometry * fCalorimeterRO;
};
#endif
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01DetectorParameterDef.hh
/// \brief Definition of the RE01DetectorParameterDef class
//
// $Id$
// $Id: RE01DetectorParameterDef.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
G4double fExpHall_x;
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01EventAction.hh
/// \brief Definition of the RE01EventAction class
//
// $Id$
// $Id: RE01EventAction.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01EventAction_h
@@ -40,7 +40,7 @@ class G4PrimaryParticle;
class RE01EventAction : public G4UserEventAction
{
public:
RE01EventAction();
RE01EventAction();//G4bool);
virtual ~RE01EventAction();
public:
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01Field.hh
/// \brief Definition of the RE01Field class
//
// $Id$
// $Id: RE01Field.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01Field_H
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01PhysicsList.hh
/// \brief Definition of the RE01PhysicsList class
//
// $Id$
// $Id: RE01PhysicsList.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
//
#ifndef RE01PhysicsList_h
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01PrimaryGeneratorAction.hh
/// \brief Definition of the RE01PrimaryGeneratorAction class
//
// $Id$
// $Id: RE01PrimaryGeneratorAction.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01PrimaryGeneratorAction_h
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01PrimaryGeneratorMessenger.hh
/// \brief Definition of the RE01PrimaryGeneratorMessenger class
//
// $Id$
// $Id: RE01PrimaryGeneratorMessenger.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01PrimaryGeneratorMessenger_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE01RegionInformation class
//
//
// $Id$
// $Id: RE01RegionInformation.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01RegionInformation_H
@@ -27,7 +27,7 @@
/// \brief Definition of the RE01RunAction class
//
//
// $Id$
// $Id: RE01RunAction.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01RunAction_h
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01StackingAction.hh
/// \brief Definition of the RE01StackingAction class
//
// $Id$
// $Id: RE01StackingAction.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01StackingAction_H
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01SteppingAction.hh
/// \brief Definition of the RE01SteppingAction class
//
// $Id$
// $Id: RE01SteppingAction.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01SteppingAction_H
@@ -27,7 +27,7 @@
/// \brief Definition of the RE01TrackInformation class
//
//
// $Id$
// $Id: RE01TrackInformation.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01TrackInformation_h
@@ -89,16 +89,18 @@ private:
};
extern G4Allocator<RE01TrackInformation> aTrackInformationAllocator;
extern G4ThreadLocal G4Allocator<RE01TrackInformation> * aTrackInformationAllocator;
//extern G4Allocator<RE01TrackInformation> aTrackInformationAllocator;
inline void* RE01TrackInformation::operator new(size_t)
{ void* aTrackInfo;
aTrackInfo = (void*)aTrackInformationAllocator.MallocSingle();
return aTrackInfo;
{
if(!aTrackInformationAllocator)
aTrackInformationAllocator = new G4Allocator<RE01TrackInformation>;
return (void*)aTrackInformationAllocator->MallocSingle();
}
inline void RE01TrackInformation::operator delete(void *aTrackInfo)
{ aTrackInformationAllocator.FreeSingle((RE01TrackInformation*)aTrackInfo);}
{ aTrackInformationAllocator->FreeSingle((RE01TrackInformation*)aTrackInfo);}
#endif
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01TrackerHit.hh
/// \brief Definition of the RE01TrackerHit class
//
// $Id$
// $Id: RE01TrackerHit.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01TrackerHit_h
@@ -36,6 +36,7 @@
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
#include "G4Types.hh"
class G4AttDef;
class G4AttValue;
@@ -76,18 +77,18 @@ private:
typedef G4THitsCollection<RE01TrackerHit> RE01TrackerHitsCollection;
extern G4Allocator<RE01TrackerHit> RE01TrackerHitAllocator;
extern G4ThreadLocal G4Allocator<RE01TrackerHit> * RE01TrackerHitAllocator;
inline void* RE01TrackerHit::operator new(size_t)
{
void *aHit;
aHit = (void *) RE01TrackerHitAllocator.MallocSingle();
return aHit;
if(!RE01TrackerHitAllocator)
RE01TrackerHitAllocator = new G4Allocator<RE01TrackerHit>;
return (void *) RE01TrackerHitAllocator->MallocSingle();
}
inline void RE01TrackerHit::operator delete(void *aHit)
{
RE01TrackerHitAllocator.FreeSingle((RE01TrackerHit*) aHit);
RE01TrackerHitAllocator->FreeSingle((RE01TrackerHit*) aHit);
}
#endif
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01TrackerParametrisation.hh
/// \brief Definition of the RE01TrackerParametrisation class
//
// $Id$
// $Id: RE01TrackerParametrisation.hh 73442 2013-08-27 11:26:43Z gcosmo $
//
#ifndef RE01TrackerParametrisation_H
@@ -43,6 +43,7 @@ class G4Trd;
class G4Trap;
class G4Cons;
class G4Sphere;
class G4Ellipsoid;
class G4Torus;
class G4Para;
class G4Hype;
@@ -56,35 +57,39 @@ class RE01TrackerParametrisation : public G4VPVParameterisation
public:
RE01TrackerParametrisation();
virtual ~RE01TrackerParametrisation();
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
virtual void ComputeDimensions(G4Tubs & trackerLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
~RE01TrackerParametrisation();
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeDimensions(G4Tubs & trackerLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
private: // Dummy declarations to get rid of warnings ...
virtual void ComputeDimensions(G4Trd&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Trd&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Trap&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Trap&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Cons&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Cons&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Sphere&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Sphere&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Torus&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Ellipsoid&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Para&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Torus&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Hype&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Para&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Box&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Hype&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Orb&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Box&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Polycone&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Orb&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions(G4Polyhedra&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions(G4Polycone&,const G4int,const G4VPhysicalVolume*)
const {}
void ComputeDimensions(G4Polyhedra&,const G4int,const G4VPhysicalVolume*)
const {}
private:
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01TrackerSD.hh
/// \brief Definition of the RE01TrackerSD class
//
// $Id$
// $Id: RE01TrackerSD.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01TrackerSD_h
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01TrackingAction.hh
/// \brief Definition of the RE01TrackingAction class
//
// $Id$
// $Id: RE01TrackingAction.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
#ifndef RE01TrackingAction_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE01Trajectory class
//
//
// $Id$
// $Id: RE01Trajectory.hh 75295 2013-10-30 09:32:52Z gcosmo $
//
#ifndef RE01Trajectory_h
@@ -58,7 +58,7 @@ public:
virtual ~RE01Trajectory();
virtual void ShowTrajectory(std::ostream& os=G4cout) const;
virtual void DrawTrajectory(G4int i_mode =0) const;
virtual void DrawTrajectory() const;
virtual const std::map<G4String,G4AttDef>* GetAttDefs() const;
virtual std::vector<G4AttValue>* CreateAttValues() const;
virtual void AppendStep(const G4Step* aStep);
@@ -94,18 +94,18 @@ public:
};
extern G4Allocator<RE01Trajectory> myTrajectoryAllocator;
extern G4ThreadLocal G4Allocator<RE01Trajectory> * myTrajectoryAllocator;
inline void* RE01Trajectory::operator new(size_t)
{
void* aTrajectory;
aTrajectory = (void*)myTrajectoryAllocator.MallocSingle();
return aTrajectory;
if(!myTrajectoryAllocator)
myTrajectoryAllocator = new G4Allocator<RE01Trajectory>;
return (void*)myTrajectoryAllocator->MallocSingle();
}
inline void RE01Trajectory::operator delete(void* aTrajectory)
{
myTrajectoryAllocator.FreeSingle((RE01Trajectory*)aTrajectory);
myTrajectoryAllocator->FreeSingle((RE01Trajectory*)aTrajectory);
}
#endif
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/include/RE01UnknownDecayPhysics.hh
/// \brief Definition of the RE01UnknownDecayPhysics class
//
// $Id$
// $Id: RE01UnknownDecayPhysics.hh 66379 2012-12-18 09:46:33Z gcosmo $
//
//
#ifndef RE01UnknownDecayPhysics_h
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RE01ActionInitialization.cc 66522 2012-12-19 12:26:04Z ihrivnac $
//
/// \file src/RE01ActionInitialization.cc
/// \brief Implementation of the RE01ActionInitialization class
//
#include "RE01ActionInitialization.hh"
#include "RE01PrimaryGeneratorAction.hh"
#include "RE01RunAction.hh"
#include "RE01EventAction.hh"
#include "RE01StackingAction.hh"
#include "RE01TrackingAction.hh"
#include "RE01SteppingAction.hh"
RE01ActionInitialization::RE01ActionInitialization()
{;}
RE01ActionInitialization::~RE01ActionInitialization()
{;}
void RE01ActionInitialization::Build() const
{
//
SetUserAction(new RE01PrimaryGeneratorAction);
//
SetUserAction(new RE01RunAction);
//
SetUserAction(new RE01EventAction);
//
SetUserAction(new RE01StackingAction);
//
SetUserAction(new RE01TrackingAction);
//
SetUserAction(new RE01SteppingAction);
}
void RE01ActionInitialization::BuildForMaster() const
{
//
G4UserRunAction* run_action = new RE01RunAction;
SetUserAction(run_action);
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE01CalorimeterHit class
//
//
// $Id$
// $Id: RE01CalorimeterHit.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01CalorimeterHit.hh"
@@ -43,7 +43,7 @@
#include "G4LogicalVolume.hh"
#include "G4SystemOfUnits.hh"
G4Allocator<RE01CalorimeterHit> RE01CalorimeterHitAllocator;
G4ThreadLocal G4Allocator<RE01CalorimeterHit> * RE01CalorimeterHitAllocator = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01CalorimeterHit::RE01CalorimeterHit(G4LogicalVolume* logVol,
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01CalorimeterParametrisation.cc
/// \brief Implementation of the RE01CalorimeterParametrisation class
//
// $Id$
// $Id: RE01CalorimeterParametrisation.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01CalorimeterParametrisation.hh"
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01CalorimeterROGeometry.cc
/// \brief Implementation of the RE01CalorimeterROGeometry class
//
// $Id$
// $Id: RE01CalorimeterROGeometry.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01CalorimeterROGeometry.hh"
@@ -110,7 +110,7 @@ G4VPhysicalVolume* RE01CalorimeterROGeometry::Build()
G4LogicalVolume * caloROcellLog
= new G4LogicalVolume(caloROcellTub, dummyMat, "caloROcellLogical",0,0,0);
// G4VPhysicalVolume * caloROcellPhys =
new G4PVReplica("caloROcellPhysical", caloROcellLog, caloROphiDivisionPhys,
new G4PVReplica("caloROcellPhysical", caloROcellLog, caloROphiDivisionPhys,
kZAxis, fSegmentsinZ,2.*fCaloRing_dz);
return ROWorldPhys;
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01CalorimeterSD.cc
/// \brief Implementation of the RE01CalorimeterSD class
//
// $Id$
// $Id: RE01CalorimeterSD.cc 68761 2013-04-05 12:35:00Z gcosmo $
//
#include "RE01CalorimeterSD.hh"
@@ -110,7 +110,8 @@ G4bool RE01CalorimeterSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist)
else
{
(*fCalCollection)[fCellID[copyIDinZ][copyIDinPhi]]->AddEdep(edep);
(*fCalCollection)[fCellID[copyIDinZ][copyIDinPhi]]->SetTrackInformation(aStep->GetTrack());
(*fCalCollection)[fCellID[copyIDinZ][copyIDinPhi]]
->SetTrackInformation(aStep->GetTrack());
if(verboseLevel>0)
{ G4cout << " Energy added to CellID "
<< copyIDinZ << " " << copyIDinPhi << G4endl; }
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01DetectorConstruction.cc
/// \brief Implementation of the RE01DetectorConstruction class
//
// $Id$
// $Id: RE01DetectorConstruction.cc 75598 2013-11-04 13:00:59Z gcosmo $
//
#include "RE01DetectorConstruction.hh"
@@ -163,38 +163,42 @@ G4VPhysicalVolume* RE01DetectorConstruction::Construct()
G4VSolid * trackerLayer_tubs
= new G4Tubs("trackerLayer_tubs",fTrkTubs_rmin,fTrkTubs_rmax,fTrkTubs_dz,
fTrkTubs_sphi,fTrkTubs_dphi);
G4LogicalVolume * trackerLayer_log
fTrackerLayer_log
= new G4LogicalVolume(trackerLayer_tubs,silicon,"trackerB_L",0,0,0);
G4VPVParameterisation * trackerParam
= new RE01TrackerParametrisation;
// dummy value : kXAxis -- modified by parameterised volume
// G4VPhysicalVolume *trackerLayer_phys =
new G4PVParameterised("trackerLayer_phys",trackerLayer_log,tracker_log,
new G4PVParameterised("trackerLayer_phys",fTrackerLayer_log,tracker_log,
kXAxis, fNotrkLayers, trackerParam);
G4VisAttributes* trackerLayer_logVisAtt
= new G4VisAttributes(G4Colour(0.5,0.0,1.0));
trackerLayer_logVisAtt->SetForceWireframe(true);
trackerLayer_log->SetVisAttributes(trackerLayer_logVisAtt);
fTrackerLayer_log->SetVisAttributes(trackerLayer_logVisAtt);
//------------------------------ calorimeter
G4VSolid * calorimeter_tubs
= new G4Tubs("calorimeter_tubs",fCaloTubs_rmin,fCaloTubs_rmax,
fCaloTubs_dz,fCaloTubs_sphi,fCaloTubs_dphi);
G4LogicalVolume * calorimeter_log
fCalorimeter_log
= new G4LogicalVolume(calorimeter_tubs,scinti,"caloT_L",0,0,0);
// G4VPhysicalVolume * calorimeter_phys =
new G4PVPlacement(0,G4ThreeVector(),calorimeter_log,"caloM_P",
new G4PVPlacement(0,G4ThreeVector(),fCalorimeter_log,"caloM_P",
experimentalHall_log,false,0);
G4VisAttributes* calorimeter_logVisATT
= new G4VisAttributes(G4Colour(1.0,1.0,0.0));
calorimeter_logVisATT->SetForceWireframe(true);
calorimeter_log->SetVisAttributes(calorimeter_logVisATT);
fCalorimeter_log->SetVisAttributes(calorimeter_logVisATT);
G4Region* calorimeterRegion = new G4Region("CalorimeterRegion");
RE01RegionInformation* calorimeterInfo = new RE01RegionInformation();
calorimeterInfo->SetCalorimeter();
calorimeterRegion->SetUserInformation(calorimeterInfo);
calorimeter_log->SetRegion(calorimeterRegion);
calorimeterRegion->AddRootLogicalVolume(calorimeter_log);
fCalorimeter_log->SetRegion(calorimeterRegion);
calorimeterRegion->AddRootLogicalVolume(fCalorimeter_log);
G4String ROgeometryName = "CalorimeterROGeom";
fCalorimeterRO = new RE01CalorimeterROGeometry(ROgeometryName);
fCalorimeterRO->BuildROGeometry();
//------------------------------- Lead layers
// As an example for Parameterised volume
@@ -208,32 +212,35 @@ G4VPhysicalVolume* RE01DetectorConstruction::Construct()
= new RE01CalorimeterParametrisation;
// dummy value : kXAxis -- modified by parameterised volume
// G4VPhysicalVolume * caloLayer_phys =
new G4PVParameterised("caloLayer_phys",caloLayer_log,calorimeter_log,
new G4PVParameterised("caloLayer_phys",caloLayer_log,fCalorimeter_log,
kXAxis, fNocaloLayers, calorimeterParam);
G4VisAttributes* caloLayer_logVisAtt
= new G4VisAttributes(G4Colour(0.7,1.0,0.0));
caloLayer_logVisAtt->SetForceWireframe(true);
caloLayer_log->SetVisAttributes(caloLayer_logVisAtt);
//------------------------------------------------------------------
// Sensitive Detector
//------------------------------------------------------------------
G4SDManager* SDman = G4SDManager::GetSDMpointer();
G4String trackerSDname = "/mydet/tracker";
RE01TrackerSD * trackerSD = new RE01TrackerSD(trackerSDname);
SDman->AddNewDetector(trackerSD);
trackerLayer_log->SetSensitiveDetector(trackerSD);
G4String calorimeterSDname = "/mydet/calorimeter";
RE01CalorimeterSD * calorimeterSD = new RE01CalorimeterSD(calorimeterSDname);
G4String ROgeometryName = "CalorimeterROGeom";
G4VReadOutGeometry* calRO = new RE01CalorimeterROGeometry(ROgeometryName);
calRO->BuildROGeometry();
calorimeterSD->SetROgeometry(calRO);
SDman->AddNewDetector(calorimeterSD);
calorimeter_log->SetSensitiveDetector(calorimeterSD);
return experimentalHall_phys;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE01DetectorConstruction::ConstructSDandField() {
//------------------------------------------------------------------
// Sensitive Detector
//------------------------------------------------------------------
//G4SDManager* SDman = G4SDManager::GetSDMpointer();
G4String trackerSDname = "/mydet/tracker";
RE01TrackerSD * trackerSD = new RE01TrackerSD(trackerSDname);
//SDman->AddNewDetector(trackerSD);
SetSensitiveDetector(fTrackerLayer_log, trackerSD);
G4String calorimeterSDname = "/mydet/calorimeter";
RE01CalorimeterSD * calorimeterSD = new RE01CalorimeterSD(calorimeterSDname);
calorimeterSD->SetROgeometry(fCalorimeterRO);
//SDman->AddNewDetector(calorimeterSD);
SetSensitiveDetector(fCalorimeter_log, calorimeterSD);
}
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01DetectorParameterDef.icc
/// \brief Implementation of the RE01DetectorParameterDef.icc
//
// $Id$
// $Id: RE01DetectorParameterDef.icc 66379 2012-12-18 09:46:33Z gcosmo $
//
fExpHall_x = 600.*cm;
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01EventAction.cc
/// \brief Implementation of the RE01EventAction class
//
// $Id$
// $Id: RE01EventAction.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01EventAction.hh"
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01Field.cc
/// \brief Implementation of the RE01Field class
//
// $Id$
// $Id: RE01Field.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01Field.hh"
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01PhysicsList.cc
/// \brief Implementation of the RE01PhysicsList class
//
// $Id$
// $Id: RE01PhysicsList.cc 68026 2013-03-13 13:45:22Z gcosmo $
//
#include "RE01PhysicsList.hh"
#include "RE01UnknownDecayPhysics.hh"
@@ -35,12 +35,12 @@
#include "G4EmStandardPhysics.hh"
#include "G4EmExtraPhysics.hh"
#include "G4IonPhysics.hh"
#include "G4QStoppingPhysics.hh"
#include "G4StoppingPhysics.hh"
#include "G4HadronElasticPhysics.hh"
#include "G4NeutronTrackingCut.hh"
#include "G4DataQuestionaire.hh"
#include "HadronPhysicsQGSP_BERT.hh"
#include "G4HadronPhysicsQGSP_BERT.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01PhysicsList::RE01PhysicsList(): G4VModularPhysicsList()
@@ -68,10 +68,10 @@ RE01PhysicsList::RE01PhysicsList(): G4VModularPhysicsList()
RegisterPhysics( new G4HadronElasticPhysics(ver) );
// Hadron Physics
RegisterPhysics( new HadronPhysicsQGSP_BERT(ver));
RegisterPhysics( new G4HadronPhysicsQGSP_BERT(ver));
// Stopping Physics
RegisterPhysics( new G4QStoppingPhysics(ver) );
RegisterPhysics( new G4StoppingPhysics(ver) );
// Ion Physics
RegisterPhysics( new G4IonPhysics(ver));
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01PrimaryGeneratorAction.cc
/// \brief Implementation of the RE01PrimaryGeneratorAction class
//
// $Id$
// $Id: RE01PrimaryGeneratorAction.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01PrimaryGeneratorAction.hh"
@@ -41,7 +41,8 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01PrimaryGeneratorAction::RE01PrimaryGeneratorAction()
: G4VUserPrimaryGeneratorAction()
: G4VUserPrimaryGeneratorAction(),
fHEPEvt(0), fParticleGun(0), fMessenger(0)
{
const char* filename = "pythia_event.data";
fHEPEvt = new G4HEPEvtInterface(filename);
@@ -60,12 +61,21 @@ RE01PrimaryGeneratorAction::RE01PrimaryGeneratorAction()
fMessenger = new RE01PrimaryGeneratorMessenger(this);
fUseHEPEvt = true;
G4cout << "*********************************************2" << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4AutoLock.hh"
namespace {
G4Mutex RE01PrimGenDestrMutex = G4MUTEX_INITIALIZER;
G4Mutex RE01PrimGenMutex = G4MUTEX_INITIALIZER;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01PrimaryGeneratorAction::~RE01PrimaryGeneratorAction()
{
delete fHEPEvt;
G4AutoLock lock(&RE01PrimGenDestrMutex);
if(fHEPEvt) {delete fHEPEvt; fHEPEvt = 0;}
delete fParticleGun;
delete fMessenger;
}
@@ -74,7 +84,9 @@ RE01PrimaryGeneratorAction::~RE01PrimaryGeneratorAction()
void RE01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
if(fUseHEPEvt)
{ fHEPEvt->GeneratePrimaryVertex(anEvent); }
{
G4AutoLock lock(&RE01PrimGenMutex);
fHEPEvt->GeneratePrimaryVertex(anEvent); }
else
{ fParticleGun->GeneratePrimaryVertex(anEvent); }
}
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01PrimaryGeneratorMessenger.cc
/// \brief Implementation of the RE01PrimaryGeneratorMessenger class
//
// $Id$
// $Id: RE01PrimaryGeneratorMessenger.cc 68026 2013-03-13 13:45:22Z gcosmo $
//
#include "RE01PrimaryGeneratorMessenger.hh"
@@ -38,7 +38,8 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01PrimaryGeneratorMessenger
::RE01PrimaryGeneratorMessenger(RE01PrimaryGeneratorAction * mpga)
:G4UImessenger(),fMyAction(mpga)
:G4UImessenger(),fMyAction(mpga),
fMydetDirectory(0),fGenCmd(0)
{
fMydetDirectory = new G4UIdirectory("/mydet/");
fMydetDirectory->SetGuidance("RE01 detector control commands.");
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE01RegionInformation class
//
//
// $Id$
// $Id: RE01RegionInformation.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01RegionInformation.hh"
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE01RunAction class
//
//
// $Id$
// $Id: RE01RunAction.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01RunAction.hh"
@@ -45,7 +45,7 @@ RE01RunAction::RE01RunAction()
RE01RunAction::~RE01RunAction()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE01RunAction::BeginOfRunAction(const G4Run* aRun)
{
G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01StackingAction.cc
/// \brief Implementation of the RE01StackingAction class
//
// $Id$
// $Id: RE01StackingAction.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01StackingAction.hh"
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01SteppingAction.cc
/// \brief Implementation of the RE01SteppingAction class
//
// $Id$
// $Id: RE01SteppingAction.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01SteppingAction.hh"
@@ -27,14 +27,15 @@
/// \brief Implementation of the RE01TrackInformation class
//
//
// $Id$
// $Id: RE01TrackInformation.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01TrackInformation.hh"
#include "G4ios.hh"
#include "G4SystemOfUnits.hh"
G4Allocator<RE01TrackInformation> aTrackInformationAllocator;
G4ThreadLocal G4Allocator<RE01TrackInformation> * aTrackInformationAllocator = 0;
//G4Allocator<RE01TrackInformation> aTrackInformationAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01TrackInformation::RE01TrackInformation()
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01TrackerHit.cc
/// \brief Implementation of the RE01TrackerHit class
//
// $Id$
// $Id: RE01TrackerHit.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01TrackerHit.hh"
@@ -42,7 +42,7 @@
#include "G4VisAttributes.hh"
#include "G4SystemOfUnits.hh"
G4Allocator<RE01TrackerHit> RE01TrackerHitAllocator;
G4ThreadLocal G4Allocator<RE01TrackerHit> * RE01TrackerHitAllocator = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01TrackerHit::RE01TrackerHit()
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01TrackerParametrisation.cc
/// \brief Implementation of the RE01TrackerParametrisation class
//
// $Id$
// $Id: RE01TrackerParametrisation.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01TrackerParametrisation.hh"
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01TrackerSD.cc
/// \brief Implementation of the RE01TrackerSD class
//
// $Id$
// $Id: RE01TrackerSD.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01TrackerSD.hh"
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01TrackingAction.cc
/// \brief Implementation of the RE01TrackingAction class
//
// $Id$
// $Id: RE01TrackingAction.cc 66379 2012-12-18 09:46:33Z gcosmo $
//
#include "RE01TrackingAction.hh"
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE01Trajectory class
//
//
// $Id$
// $Id: RE01Trajectory.cc 75295 2013-10-30 09:32:52Z gcosmo $
//
#include "RE01Trajectory.hh"
@@ -47,11 +47,12 @@
#include "G4PrimaryParticle.hh"
#include "RE01TrackInformation.hh"
G4Allocator<RE01Trajectory> myTrajectoryAllocator;
G4ThreadLocal G4Allocator<RE01Trajectory> * myTrajectoryAllocator = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE01Trajectory::RE01Trajectory(const G4Track* aTrack)
:G4VTrajectory()
:G4VTrajectory(),
fPositionRecord(0),fParticleDefinition(0)
{
fParticleDefinition = aTrack->GetDefinition();
fParticleName = fParticleDefinition->GetParticleName();
@@ -123,7 +124,7 @@ void RE01Trajectory::ShowTrajectory(std::ostream& os) const
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE01Trajectory::DrawTrajectory(G4int /*i_mode*/) const
void RE01Trajectory::DrawTrajectory() const
{
G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
@@ -26,7 +26,7 @@
/// \file runAndEvent/RE01/src/RE01UnknownDecayPhysics.cc
/// \brief Implementation of the RE01UnknownDecayPhysics class
//
// $Id$
// $Id: RE01UnknownDecayPhysics.cc 68761 2013-04-05 12:35:00Z gcosmo $
//
#include "RE01UnknownDecayPhysics.hh"
@@ -52,9 +52,9 @@ void RE01UnknownDecayPhysics::ConstructParticle()
void RE01UnknownDecayPhysics::ConstructProcess()
{
// Add Decay Process
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if(particle->GetParticleName()=="unknown") {
pmanager ->AddProcess(&fUnknownDecay);
+1 -1
View File
@@ -128,7 +128,7 @@
A primitive scorer can score one kind of physical quantity, and
creates one hits collection per event. The quantity is collected in
G4THitsMap with the copy number of geometry. Here collection name is
given as <MultiFunctionalDetector Name>/<PrimitiveScorer Name>.
given as "MultiFunctionalDetector Name"/"PrimitiveScorer Name".
A primitive scorer can have one filter (SDFilter) for selecting hits
to be used for the quantity.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.2 2010-01-11 17:07:33 gcosmo Exp $
# $Id: GNUmakefile 66501 2012-12-19 09:25:23Z gcosmo $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
+44 -7
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.10 2010-12-07 15:20:46 gunter Exp $
$Id: History 76939 2013-11-19 09:52:57Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -15,22 +15,59 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
Nov 11, 2012 I. Hrivnacova (exampleRE02-V09-05-03)
November 18, 2013 I.Hrivnacova (exampleRE02-V09-06-09)
- Fixed .README
November 6, 2013 A. Kimura (exampleRE02-V09-06-08)
- modified RE02.cc and removed RE02EMPhysics.{cc,hh},
RE02GeneralPhysics.{cc,hh}, RE02HadronPhysics.{cc,hh},
RE02IonPhysics.{cc,hh}, RE02MuonPhysics.{cc,hh} and
RE02PhysicsList.{cc,hh} for MT migration
- fixed a warning in RE02Run.cc
November 4, 2013 D.H. Wright (exampleRE02-V09-06-07)
- replaced LEP/HEP models with Bertini, FTF
- replaced G4LCapture with G4NeutronRadCature
October 25, 2013 M.Asai (exampleRE02-V09-06-06)
- MT migration.
August 28, 2013 G.Cosmo (exampleRE02-V09-06-05)
- Added G4Ellipsoid to solids enabled for parameterisation in
RE02NestedPhantomParameterisation.
July 30/31, 2013 P.Gumplinger (exampleRE02-V09-06-03/04)
- fix (or rather fool) MAC/clang32 compiler to avoid warnings.
Apr 01, 2013 A.Dotti (exampleRE02-V09-06-02)
- New interface for G4MT physics list.
Feb 15, 2013 I.Hrivnacova
- Applied coding guidelines (data members initialization)
Dec 27, 2012 G.Folger (exampleRE02-V09-06-01)
- re-tag, no change.
Tag exRunAndEvent-V09-06-00 in runAndEvent missed to inlcude this tag.
Dec 18, 2012 M.Kelsey (exampleRE02-V09-06-00)
- Replace G4AntiProtonAnnihiliationAtRest with G4AntiProtonAbsorptionFritiof.
Nov 11, 2012 I.Hrivnacova (exampleRE02-V09-05-03)
- Updated documentation:
- Fixed .README files for artefacts from Markdown support
- Removed obsolete instructions (how to compile & link)
Oct 12, 2012 A. Dotti (exampleRE02-V09-05-02)
Oct 12, 2012 A.Dotti (exampleRE02-V09-05-02)
- Adding forgotten system of units in physics list file
Oct 8, 2012 A.Kimura
Oct 8, 2012 A.Kimura
- revised all codes according to the coding guideline for extended examples
- the main program exampleRE02 was renamed RE02.
Jul 28, 2012 V.Ivanchenko (exampleRE02-V09-05-01)
Jul 28, 2012 V.Ivanchenko (exampleRE02-V09-05-01)
- fixed elastic physics for ions
Jan 27, 2012 T.Aso (exampleRE02-V09-05-00)
Jan 27, 2012 T.Aso (exampleRE02-V09-05-00)
- Fix the indexing scheme of CopyNo() method in the RunAction.
October 10th, 2011 G.Folger (exampleRE02-V09-04-00)
@@ -46,7 +83,7 @@ November 9th, 2010 M.Asai (exampleRE02-V09-03-04)
November 8th, 2010 M.Asai (exampleRE02-V09-03-03)
- Fixing warning messages.
November 8th, 2010 John Allison (exampleRE02-V09-03-02)
November 8th, 2010 J.Allison (exampleRE02-V09-03-02)
- Introduced G4UIExecutive.
June 4th, 2010 Joseph Perl (exampleRE02-V09-03-01)
+13 -7
View File
@@ -27,17 +27,20 @@
/// \brief Main program of the runAndEvent/RE02 example
//
//
// $Id$
// $Id: RE02.cc 76292 2013-11-08 13:10:20Z gcosmo $
//
//
#include "RE02DetectorConstruction.hh"
#include "QGS_BIC.hh"
#include "RE02PrimaryGeneratorAction.hh"
#include "RE02RunAction.hh"
#include "RE02EventAction.hh"
#include "RE02ActionInitialization.hh"
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "G4SystemOfUnits.hh"
@@ -53,7 +56,12 @@
int main(int argc,char** argv) {
// Run manager
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
//runManager->SetNumberOfThreads(4);
#else
G4RunManager * runManager = new G4RunManager;
#endif
// UserInitialization classes (mandatory)
//---
@@ -81,9 +89,7 @@ int main(int argc,char** argv) {
#endif
// UserAction classes
runManager->SetUserAction(new RE02PrimaryGeneratorAction);
runManager->SetUserAction(new RE02RunAction);
runManager->SetUserAction(new RE02EventAction);
runManager->SetUserInitialization(new RE02ActionInitialization);
//Initialize G4 kernel
runManager->Initialize();
+1 -1
View File
@@ -1,4 +1,4 @@
$Id: README,v 1.2 2006-11-18 01:37:22 asaim Exp $
$Id: README 66501 2012-12-19 09:25:23Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -0,0 +1,51 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RE02ActionInitialization.hh 66522 2012-12-19 12:26:04Z ihrivnac $
//
/// \file include/RE02ActionInitialization.hh
/// \brief Definition of the RE02ActionInitialization class
//
#ifndef RE02ActionInitialization_H
#define RE02ActionInitialization_H 1
#include "globals.hh"
#include "G4VUserActionInitialization.hh"
class RE02ActionInitialization : public G4VUserActionInitialization
{
public:
RE02ActionInitialization();//G4bool bParallelWorld);
virtual ~RE02ActionInitialization();
virtual void Build() const;
virtual void BuildForMaster() const;
private:
};
#endif
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02DetectorConstruction class
//
//
// $Id$
// $Id: RE02DetectorConstruction.hh 75682 2013-11-05 09:11:19Z gcosmo $
//
#ifndef RE02DetectorConstruction_h
@@ -116,8 +116,9 @@ public:
virtual ~RE02DetectorConstruction();
public:
// virtual method from G4VUserDetectorCOnstruction.
// virtual method from G4VUserDetectorConstruction.
virtual G4VPhysicalVolume* Construct();
virtual void ConstructSDandField();
public:
// Get/Set Access methods for data members
@@ -138,6 +139,7 @@ private:
G4ThreeVector fPhantomSize; // Size of Water Phantom
G4int fNx,fNy,fNz; // Number of segmentation of water phantom.
G4bool fInsertLead; // Flag for inserting lead plate in water phantom
G4LogicalVolume* fLVPhantomSens;
};
#endif
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02EventAction class
//
//
// $Id$
// $Id: RE02EventAction.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02EventAction_h
@@ -1,276 +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 runAndEvent/RE02/include/RE02HadronPhysics.hh
/// \brief Definition of the RE02HadronPhysics class
//
// $Id$
// --------------------------------------------------------------
//
// 10-Oct-2003 Full Hadron Processes with Parameterization Model T. Koi
#ifndef RE02HadronPhysics_h
#define RE02HadronPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4hMultipleScattering.hh"
#include "G4hIonisation.hh"
// Hadronic Processes
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#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 "G4LambdaInelasticProcess.hh"
#include "G4AntiLambdaInelasticProcess.hh"
#include "G4SigmaPlusInelasticProcess.hh"
#include "G4SigmaMinusInelasticProcess.hh"
#include "G4AntiSigmaPlusInelasticProcess.hh"
#include "G4AntiSigmaMinusInelasticProcess.hh"
#include "G4XiZeroInelasticProcess.hh"
#include "G4XiMinusInelasticProcess.hh"
#include "G4AntiXiZeroInelasticProcess.hh"
#include "G4AntiXiMinusInelasticProcess.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4OmegaMinusInelasticProcess.hh"
#include "G4AntiOmegaMinusInelasticProcess.hh"
// Binary Cascade Models
#include "G4BinaryCascade.hh"
// Low energy models
#include "G4LElastic.hh"
#include "G4LFission.hh"
#include "G4LCapture.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 "G4LELambdaInelastic.hh"
#include "G4LEAntiLambdaInelastic.hh"
#include "G4LESigmaPlusInelastic.hh"
#include "G4LESigmaMinusInelastic.hh"
#include "G4LEAntiSigmaPlusInelastic.hh"
#include "G4LEAntiSigmaMinusInelastic.hh"
#include "G4LEXiZeroInelastic.hh"
#include "G4LEXiMinusInelastic.hh"
#include "G4LEAntiXiZeroInelastic.hh"
#include "G4LEAntiXiMinusInelastic.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4LEOmegaMinusInelastic.hh"
#include "G4LEAntiOmegaMinusInelastic.hh"
// High-energy Models
#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"
#include "G4HELambdaInelastic.hh"
#include "G4HEAntiLambdaInelastic.hh"
#include "G4HESigmaPlusInelastic.hh"
#include "G4HESigmaMinusInelastic.hh"
#include "G4HEAntiSigmaPlusInelastic.hh"
#include "G4HEAntiSigmaMinusInelastic.hh"
#include "G4HEXiZeroInelastic.hh"
#include "G4HEXiMinusInelastic.hh"
#include "G4HEAntiXiZeroInelastic.hh"
#include "G4HEAntiXiMinusInelastic.hh"
#include "G4HEOmegaMinusInelastic.hh"
#include "G4HEAntiOmegaMinusInelastic.hh"
// Stopping processes
#include "G4AntiProtonAnnihilationAtRest.hh"
#include "G4AntiNeutronAnnihilationAtRest.hh"
//
/// User hadron physics constructor
///
/// applys related processes to hadrons
///
/// - void ConstructParticle()
/// does nothing
///
/// - void ConstructProcess()
/// adds processes to each particle
/// pi+ :
/// G4HadronElasticProcess with G4LElastic,
/// G4PionPlusInelasticProcess with G4LEPionPlusInelastic and
/// G4HEPionPlusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// pi- :
/// G4HadronElasticProcess with G4LElastic,
/// G4PionMinusInelasticProcess with G4LEPionMinusInelastic and
/// G4HEPionMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// K+ :
/// G4HadronElasticProcess with G4LElastic,
/// G4KaonPlusInelasticProcess with G4LEKaonPlusInelastic and
/// G4HEKaonPlusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// K- :
/// G4HadronElasticProcess with G4LElastic,
/// G4KaonMinusInelasticProcess with G4LEKaonMinusInelastic and
/// G4HEKaonMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// K0L :
/// G4HadronElasticProcess with G4LEastic and
/// G4KaonZeoLInelasticProcess with G4LEKaonZeroLInelastic and
/// G4HEKaonZeroInelastic
/// K0S :
/// G4HadronElasticProcess with G4LEastic and
/// G4KaonZeroSInelasticProcess with G4LEKaonZeroSInelastic and
/// G4HEKaonZeroInelastic.
/// proton :
/// G4HadronElasticProcess with G4LElastic,
/// G4ProtonInelasticProcess with G4BinaryCascade, G4LEProtonInelastic and
/// G4HEProtonInelastic,
/// G4hMultipleScattering and G4hIonisation
/// anti proton :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiProtonInelasticProcess with G4LEAntiProtonInelastic and
/// G4HEAntiProtonInelastic,
/// G4AntiProtonAnnihilationAtRest, G4hMultipleScattering and G4hIonisation
/// neutron :
/// G4HadronElasticProcess with G4LElastic,
/// G4NeutronInelasticProcess with G4BinaryCascade, G4LENeutronInelastic
/// and G4HENeutronInelastic,
/// G4HadronFissionProcess with G4LFission and
/// G4HadronCaptureProcess with G4LCapture
/// anti neutron :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiNeutronInelasticProcess with G4LEAntiNeutronInelastic and
/// G4HEAntiNeutronInelastic and
/// G4AntiNeutronAnnihilationAtRest
/// lambda :
/// G4HadronElasticProcess with G4LElastic,
/// G4LambdaInelasticProcess with G4LELambdaInelastic and
/// G4HELambdaInelastic
/// anti lambda :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiLambdaInelasticProcess with G4LEAntiLambdaInelastic and
/// G4HEAntiLambdaInelastic
/// sigma+ :
/// G4HadronElasticProcess with G4LElastic,
/// G4SigmaPlusInelasticProcess with G4LESigmaPlusInelastic and
/// G4HESigmaPlusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// anti sigma+ :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiSigmaPlusInelasticProcess with G4LEAntiSigmaPlusInelastic and
/// G4HEAntiSigmaPlusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// sigma- :
/// G4HadronElasticProcess with G4LElastic,
/// G4SigmaMinusInelasticProcess with G4LESigmaMinusInelastic and
/// G4HESigmaMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// anti sigma- :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiSigmaMinusInelasticProcess with G4LEAntiSigmaMinusInelastic and
/// G4HEAntiSigmaMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// Xi0 :
/// G4HadronElasticProcess with G4LElastic,
/// G4XiZeroInelasticProcess with G4LEXiZeroInelastic and
/// G4HEXiZeroInelastic
/// anti Xi0 :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiXiZeroInelasticProcess with G4LEAntiXiZeroInelastic and
/// G4HEAntiXiZeroInelastic
/// Xi- :
/// G4HadronElasticProcess with G4LElastic,
/// G4XiMinusInelasticProcess with G4LEXiMinusInelastic and
/// G4HEXiMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// anti Xi- :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiXiMinusInelasticProcess with G4LEAntiXiMinusInelastic and
/// G4HEAntiXiMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// omega- :
/// G4HadronElasticProcess with G4LElastic,
/// G4OmegaMinusInelasticProcess with G4LEOmegaMinusInelastic and
/// G4HEOmegaMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
/// anti omega- :
/// G4HadronElasticProcess with G4LElastic,
/// G4AntiOmegaMinusInelasticProcess with G4LEAntiOmegaMinusInelastic and
/// G4HEAntiOmegaMinusInelastic,
/// G4hMultipleScattering and G4hIonisation
//
class RE02HadronPhysics : public G4VPhysicsConstructor
{
public:
RE02HadronPhysics(const G4String& name="hadron");
virtual ~RE02HadronPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle(){;};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
};
#endif
@@ -1,111 +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 runAndEvent/RE02/include/RE02IonPhysics.hh
/// \brief Definition of the RE02IonPhysics class
//
// $Id$
// --------------------------------------------------------------
// 05-Jan-2004 Add G4ionIonisation T. Koi
//
#ifndef RE02IonPhysics_h
#define RE02IonPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronElasticProcess.hh"
#include "G4LElastic.hh"
#include "G4BinaryLightIonReaction.hh"
#include "G4TripathiCrossSection.hh"
#include "G4IonsShenCrossSection.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4LETritonInelastic.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4hIonisation.hh"
#include "G4ionIonisation.hh"
#include "G4hMultipleScattering.hh"
//
/// User ion physics constructor
///
/// applys related processes to ions
///
/// - void ConstructParticle()
/// does nothing
///
/// - void ConstructProcess()
/// adds processes to each particle
/// generic ion :
/// G4HadronInelasticProcess with G4TripathiCrossSection,
/// G4IonsShenCrossSection and G4BinaryLightIonReaction,
/// G4hMultipleScattering and G4ionIonisation
/// deuteron :
/// G4HadronElasticProcess with G4HadronElastic,
/// G4DeuteronInelasticProcess with G4LEDeuteronInelastic,
/// G4hMultipleScattering and G4hIonisation
/// triton :
/// G4HadronElasticProcess with G4HadronElastic,
/// G4TritonInelasticProcess with G4LETritonInelastic,
/// G4hMultipleScattering and G4hIonisation
/// alpha :
/// G4HadronElasticProcess with G4HadronElastic,
/// G4AlphaInelasticProcess with G4LEAlphaInelastic,
/// G4hMultipleScattering and G4hIonisation
/// He3 :
/// G4hMultipleScattering and G4hIonisation
//
class RE02IonPhysics : public G4VPhysicsConstructor
{
public:
RE02IonPhysics(const G4String& name="ion");
virtual ~RE02IonPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle(){;};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
};
#endif
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02NestedPhantomParameterisation class
//
//
// $Id$
// $Id: RE02NestedPhantomParameterisation.hh 73475 2013-08-28 15:23:19Z gcosmo $
//
#ifndef RE02NESTEDPARAMETERISATION_HH
#define RE02NESTEDPARAMETERISATION_HH
@@ -51,6 +51,7 @@ class G4Trap;
class G4Cons;
class G4Sphere;
class G4Orb;
class G4Ellipsoid;
class G4Torus;
class G4Para;
class G4Polycone;
@@ -95,25 +96,25 @@ class RE02NestedPhantomParameterisation: public G4VNestedParameterisation
RE02NestedPhantomParameterisation(const G4ThreeVector& voxelSize,
G4int nz,
std::vector<G4Material*>& mat);
virtual ~RE02NestedPhantomParameterisation();
~RE02NestedPhantomParameterisation();
// Methods required in derived classes
// -----------------------------------
virtual G4Material* ComputeMaterial(G4VPhysicalVolume *currentVol,
const G4int repNo,
const G4VTouchable *parentTouch=0
G4Material* ComputeMaterial(G4VPhysicalVolume *currentVol,
const G4int repNo,
const G4VTouchable *parentTouch=0
);
// Required method, as it is the reason for this class.
// Must cope with parentTouch=0 for navigator's SetupHierarchy
virtual G4int GetNumberOfMaterials() const;
virtual G4Material* GetMaterial(G4int idx) const;
G4int GetNumberOfMaterials() const;
G4Material* GetMaterial(G4int idx) const;
// Needed to define materials for instances of Nested Parameterisation
// Current convention: each call should return the materials
// of all instances with the same mother/ancestor volume.
virtual void ComputeTransformation(const G4int no,
G4VPhysicalVolume *currentPV) const;
void ComputeTransformation(const G4int no,
G4VPhysicalVolume *currentPV) const;
// Methods optional in derived classes
// -----------------------------------
@@ -121,32 +122,35 @@ class RE02NestedPhantomParameterisation: public G4VNestedParameterisation
// Additional standard Parameterisation methods,
// which can be optionally defined, in case solid is used.
virtual void ComputeDimensions(G4Box &,
void ComputeDimensions(G4Box &,
const G4int,
const G4VPhysicalVolume *) const;
private: // Dummy declarations to get rid of warnings ...
virtual void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Trd&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Trap&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Cons&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Sphere&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Orb&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Ellipsoid&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Torus&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Para&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Tubs&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Hype&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Tubs&,const G4int,const G4VPhysicalVolume*)
const {}
virtual void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*)
void ComputeDimensions (G4Polycone&,const G4int,const G4VPhysicalVolume*)
const {}
void ComputeDimensions (G4Polyhedra&,const G4int,const G4VPhysicalVolume*)
const {}
// G4Material* ComputeMaterial(const G4int repNo,
// G4VPhysicalVolume* currentVol,
@@ -155,6 +159,7 @@ private: // Dummy declarations to get rid of warnings ...
using G4VNestedParameterisation::ComputeMaterial;
private:
G4double fdX,fdY,fdZ;
G4int fNz;
//
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PSCellFlux class
//
//
// $Id$
// $Id: RE02PSCellFlux.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PSCellFlux_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PSEnergyDeposit class
//
//
// $Id$
// $Id: RE02PSEnergyDeposit.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PSEnergyDeposit_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PSFlatSurfaceCurrent class
//
//
// $Id$
// $Id: RE02PSFlatSurfaceCurrent.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PSFlatSurfaceCurrent_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PSFlatSurfaceFlux class
//
//
// $Id$
// $Id: RE02PSFlatSurfaceFlux.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PSFlatSurfaceFlux_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PSNofStep class
//
//
// $Id$
// $Id: RE02PSNofStep.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PSNofStep_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PSPassageCellFlux class
//
//
// $Id$
// $Id: RE02PSPassageCellFlux.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PSPassageCellFlux_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02PrimaryGeneratorAction class
//
//
// $Id$
// $Id: RE02PrimaryGeneratorAction.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
#ifndef RE02PrimaryGeneratorAction_h
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02Run class
//
//
// $Id$
// $Id: RE02Run.hh 75682 2013-11-05 09:11:19Z gcosmo $
//
#ifndef RE02Run_h
@@ -84,6 +84,7 @@ public:
// virtual method from G4Run.
// The method is overriden in this class for scoring.
virtual void RecordEvent(const G4Event*);
virtual void Merge(const G4Run*);
// Access methods for scoring information.
// - Number of HitsMap for this RUN.
@@ -27,7 +27,7 @@
/// \brief Definition of the RE02RunAction class
//
//
// $Id$
// $Id: RE02RunAction.hh 66501 2012-12-19 09:25:23Z gcosmo $
//
//
//
+1 -1
View File
@@ -1,4 +1,4 @@
# $Id: run.mac,v 1.2 2010-06-06 05:16:16 perl Exp $
# $Id: run.mac 66501 2012-12-19 09:25:23Z gcosmo $
#
# Macro file for "exampleRE02.cc"
#
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,4 +1,4 @@
# $Id: run2.mac,v 1.3 2010-06-06 05:16:16 perl Exp $
# $Id: run2.mac 66501 2012-12-19 09:25:23Z gcosmo $
#
# Macro file for "exampleRE02.cc"
#
+1 -1
View File
@@ -1,4 +1,4 @@
# $Id: run3.mac,v 1.3 2010-06-06 05:16:16 perl Exp $
# $Id: run3.mac 66501 2012-12-19 09:25:23Z gcosmo $
#
# Macro file for "exampleRE02.cc"
#
+1 -1
View File
@@ -1,4 +1,4 @@
# $Id: run4.mac,v 1.3 2010-06-06 05:16:16 perl Exp $
# $Id: run4.mac 66501 2012-12-19 09:25:23Z gcosmo $
#
# Macro file for "exampleRE02.cc"
#
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RE02ActionInitialization.cc 66522 2012-12-19 12:26:04Z ihrivnac $
//
/// \file src/RE02ActionInitialization.cc
/// \brief Implementation of the RE02ActionInitialization class
//
#include "RE02ActionInitialization.hh"
#include "RE02PrimaryGeneratorAction.hh"
#include "RE02RunAction.hh"
#include "RE02EventAction.hh"
RE02ActionInitialization::RE02ActionInitialization()
{;}
RE02ActionInitialization::~RE02ActionInitialization()
{;}
void RE02ActionInitialization::Build() const
{
//
SetUserAction(new RE02PrimaryGeneratorAction);
//
SetUserAction(new RE02RunAction);
//
SetUserAction(new RE02EventAction);
}
void RE02ActionInitialization::BuildForMaster() const
{
//
G4UserRunAction* run_action = new RE02RunAction;
SetUserAction(run_action);
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02DetectorConstruction class
//
//
// $Id$
// $Id: RE02DetectorConstruction.cc 75682 2013-11-05 09:11:19Z gcosmo $
//
#include "RE02DetectorConstruction.hh"
@@ -104,6 +104,7 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02DetectorConstruction::RE02DetectorConstruction()
: G4VUserDetectorConstruction()
{
// Default size of water phantom,and segmentation.
fPhantomSize.setX(200.*mm);
@@ -241,7 +242,7 @@ RE02DetectorConstruction::~RE02DetectorConstruction()
G4String zVoxName("phantomSens");
G4VSolid* solVoxel =
new G4Box(zVoxName,sensSize.x()/2.,sensSize.y()/2.,sensSize.z()/2.);
G4LogicalVolume* logicPhantomSens = new G4LogicalVolume(solVoxel,water,zVoxName);
fLVPhantomSens = new G4LogicalVolume(solVoxel,water,zVoxName);
//
//
std::vector<G4Material*> phantomMat(2,water);
@@ -254,7 +255,7 @@ RE02DetectorConstruction::~RE02DetectorConstruction()
= new RE02NestedPhantomParameterisation(sensSize/2.,nzCells,phantomMat);
//G4VPhysicalVolume * physiPhantomSens =
new G4PVParameterised("PhantomSens", // their name
logicPhantomSens, // their logical volume
fLVPhantomSens, // their logical volume
logXRep, // Mother logical volume
kUndefined, // Are placed along this axis
nzCells, // Number of cells
@@ -263,130 +264,11 @@ RE02DetectorConstruction::~RE02DetectorConstruction()
// kUndefined, kXAxis, kYAxis, kZAxis.
//
//================================================
// Sensitive detectors : MultiFunctionalDetector
//================================================
//
// Sensitive Detector Manager.
G4SDManager* pSDman = G4SDManager::GetSDMpointer();
//
// Sensitive Detector Name
G4String phantomSDname = "PhantomSD";
//------------------------
// MultiFunctionalDetector
//------------------------
//
// Define MultiFunctionalDetector with name.
G4MultiFunctionalDetector* mFDet
= new G4MultiFunctionalDetector(phantomSDname);
pSDman->AddNewDetector( mFDet ); // Register SD to SDManager.
logicPhantomSens->SetSensitiveDetector(mFDet); // Assign SD to the logical volume.
//---------------------------------------
// SDFilter : Sensitive Detector Filters
//---------------------------------------
//
// Particle Filter for Primitive Scorer with filter name(fltName)
// and particle name(particleName),
// or particle names are given by add("particle name"); method.
//
G4String fltName,particleName;
//
//-- proton filter
G4SDParticleFilter* protonFilter =
new G4SDParticleFilter(fltName="protonFilter", particleName="proton");
//
//-- electron filter
G4SDParticleFilter* electronFilter =
new G4SDParticleFilter(fltName="electronFilter");
electronFilter->add(particleName="e+"); // accept electrons.
electronFilter->add(particleName="e-"); // accept positorons.
//
//-- charged particle filter
G4SDChargedFilter* chargedFilter =
new G4SDChargedFilter(fltName="chargedFilter");
//------------------------
// PS : Primitive Scorers
//------------------------
// Primitive Scorers are used with SDFilters according to your purpose.
//
//
//-- Primitive Scorer for Energy Deposit.
// Total, by protons, by electrons.
G4String psName;
G4PSEnergyDeposit3D * scorer0 = new G4PSEnergyDeposit3D(psName="totalEDep",
fNx,fNy,fNz);
G4PSEnergyDeposit3D * scorer1 = new G4PSEnergyDeposit3D(psName="protonEDep",
fNx,fNy,fNz);
scorer1->SetFilter(protonFilter);
//
//-- Number of Steps for protons
G4PSNofStep3D * scorer2 =
new G4PSNofStep3D(psName="protonNStep",fNx,fNy,fNz);
scorer2->SetFilter(protonFilter);
//
//-- CellFlux for charged particles
G4PSPassageCellFlux3D * scorer3 =
new G4PSPassageCellFlux3D(psName="chargedPassCellFlux", fNx,fNy,fNz);
G4PSCellFlux3D * scorer4 =
new G4PSCellFlux3D(psName="chargedCellFlux", fNx,fNy,fNz);
G4PSFlatSurfaceFlux3D * scorer5 =
new G4PSFlatSurfaceFlux3D(psName="chargedSurfFlux", fFlux_InOut,fNx,fNy,fNz);
scorer3->SetFilter(chargedFilter);
scorer4->SetFilter(chargedFilter);
scorer5->SetFilter(chargedFilter);
//
//------------------------------------------------------------
// Register primitive scorers to MultiFunctionalDetector
//------------------------------------------------------------
mFDet->RegisterPrimitive(scorer0);
mFDet->RegisterPrimitive(scorer1);
mFDet->RegisterPrimitive(scorer2);
mFDet->RegisterPrimitive(scorer3);
mFDet->RegisterPrimitive(scorer4);
mFDet->RegisterPrimitive(scorer5);
//========================
// More additional Primitive Scoreres
//========================
//
//--- Surface Current for gamma with energy bin.
// This example creates four primitive scorers.
// 4 bins with energy --- Primitive Scorer Name
// 1. to 10 KeV, gammaSurfCurr000
// 10 keV to 100 KeV, gammaSurfCurr001
// 100 keV to 1 MeV, gammaSurfCurr002
// 1 MeV to 10 MeV. gammaSurfCurr003
//
char name[17];
for ( G4int i = 0; i < 4; i++){
std::sprintf(name,"gammaSurfCurr%03d",i);
G4String psgName(name);
G4double kmin = std::pow(10.,(G4double)i)*keV;
G4double kmax = std::pow(10.,(G4double)(i+1))*keV;
//-- Particle with kinetic energy filter.
G4SDParticleWithEnergyFilter* pkinEFilter =
new G4SDParticleWithEnergyFilter(fltName="gammaE filter",kmin,kmax);
pkinEFilter->add("gamma"); // Accept only gamma.
pkinEFilter->show(); // Show accepting condition to stdout.
//-- Surface Current Scorer which scores number of tracks in unit area.
G4PSFlatSurfaceCurrent3D * scorer =
new G4PSFlatSurfaceCurrent3D(psgName,fCurrent_InOut,fNx,fNy,fNz);
scorer->SetFilter(pkinEFilter); // Assign filter.
mFDet->RegisterPrimitive(scorer); // Register it to MultiFunctionalDetector.
}
//
//===============================
// Visualization attributes
// Visualization attributes
//===============================
G4VisAttributes* boxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
G4VisAttributes* boxVisAtt = new G4VisAttributes(G4Colour(1.0,1.0,1.0));
logicWorld ->SetVisAttributes(boxVisAtt);
//logicWorld->SetVisAttributes(G4VisAttributes::Invisible);
@@ -401,9 +283,131 @@ RE02DetectorConstruction::~RE02DetectorConstruction()
logXRep->SetVisAttributes(xRepVisAtt);
// Skip the visualization for those voxels.
logicPhantomSens->SetVisAttributes(G4VisAttributes::Invisible);
fLVPhantomSens->SetVisAttributes(G4VisAttributes::Invisible);
return physiWorld;
}
void RE02DetectorConstruction::ConstructSDandField() {
//================================================
// Sensitive detectors : MultiFunctionalDetector
//================================================
//
// Sensitive Detector Manager.
G4SDManager* pSDman = G4SDManager::GetSDMpointer();
//
// Sensitive Detector Name
G4String phantomSDname = "PhantomSD";
//------------------------
// MultiFunctionalDetector
//------------------------
//
// Define MultiFunctionalDetector with name.
G4MultiFunctionalDetector* mFDet
= new G4MultiFunctionalDetector(phantomSDname);
pSDman->AddNewDetector( mFDet ); // Register SD to SDManager.
fLVPhantomSens->SetSensitiveDetector(mFDet); // Assign SD to the logical volume.
//---------------------------------------
// SDFilter : Sensitive Detector Filters
//---------------------------------------
//
// Particle Filter for Primitive Scorer with filter name(fltName)
// and particle name(particleName),
// or particle names are given by add("particle name"); method.
//
G4String fltName,particleName;
//
//-- proton filter
G4SDParticleFilter* protonFilter =
new G4SDParticleFilter(fltName="protonFilter", particleName="proton");
//
//-- electron filter
G4SDParticleFilter* electronFilter =
new G4SDParticleFilter(fltName="electronFilter");
electronFilter->add(particleName="e+"); // accept electrons.
electronFilter->add(particleName="e-"); // accept positorons.
//
//-- charged particle filter
G4SDChargedFilter* chargedFilter =
new G4SDChargedFilter(fltName="chargedFilter");
//------------------------
// PS : Primitive Scorers
//------------------------
// Primitive Scorers are used with SDFilters according to your purpose.
//
//
//-- Primitive Scorer for Energy Deposit.
// Total, by protons, by electrons.
G4String psName;
G4PSEnergyDeposit3D * scorer0 = new G4PSEnergyDeposit3D(psName="totalEDep",
fNx,fNy,fNz);
G4PSEnergyDeposit3D * scorer1 = new G4PSEnergyDeposit3D(psName="protonEDep",
fNx,fNy,fNz);
scorer1->SetFilter(protonFilter);
//
//-- Number of Steps for protons
G4PSNofStep3D * scorer2 =
new G4PSNofStep3D(psName="protonNStep",fNx,fNy,fNz);
scorer2->SetFilter(protonFilter);
//
//-- CellFlux for charged particles
G4PSPassageCellFlux3D * scorer3 =
new G4PSPassageCellFlux3D(psName="chargedPassCellFlux", fNx,fNy,fNz);
G4PSCellFlux3D * scorer4 =
new G4PSCellFlux3D(psName="chargedCellFlux", fNx,fNy,fNz);
G4PSFlatSurfaceFlux3D * scorer5 =
new G4PSFlatSurfaceFlux3D(psName="chargedSurfFlux", fFlux_InOut,fNx,fNy,fNz);
scorer3->SetFilter(chargedFilter);
scorer4->SetFilter(chargedFilter);
scorer5->SetFilter(chargedFilter);
//
//------------------------------------------------------------
// Register primitive scorers to MultiFunctionalDetector
//------------------------------------------------------------
mFDet->RegisterPrimitive(scorer0);
mFDet->RegisterPrimitive(scorer1);
mFDet->RegisterPrimitive(scorer2);
mFDet->RegisterPrimitive(scorer3);
mFDet->RegisterPrimitive(scorer4);
mFDet->RegisterPrimitive(scorer5);
//========================
// More additional Primitive Scoreres
//========================
//
//--- Surface Current for gamma with energy bin.
// This example creates four primitive scorers.
// 4 bins with energy --- Primitive Scorer Name
// 1. to 10 KeV, gammaSurfCurr000
// 10 keV to 100 KeV, gammaSurfCurr001
// 100 keV to 1 MeV, gammaSurfCurr002
// 1 MeV to 10 MeV. gammaSurfCurr003
//
char name[17];
for ( G4int i = 0; i < 4; i++){
std::sprintf(name,"gammaSurfCurr%03d",i);
G4String psgName(name);
G4double kmin = std::pow(10.,(G4double)i)*keV;
G4double kmax = std::pow(10.,(G4double)(i+1))*keV;
//-- Particle with kinetic energy filter.
G4SDParticleWithEnergyFilter* pkinEFilter =
new G4SDParticleWithEnergyFilter(fltName="gammaE filter",kmin,kmax);
pkinEFilter->add("gamma"); // Accept only gamma.
pkinEFilter->show(); // Show accepting condition to stdout.
//-- Surface Current Scorer which scores number of tracks in unit area.
G4PSFlatSurfaceCurrent3D * scorer =
new G4PSFlatSurfaceCurrent3D(psgName,fCurrent_InOut,fNx,fNy,fNz);
scorer->SetFilter(pkinEFilter); // Assign filter.
mFDet->RegisterPrimitive(scorer); // Register it to MultiFunctionalDetector.
}
}
@@ -1,124 +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 runAndEvent/RE02/src/RE02EMPhysics.cc
/// \brief Implementation of the RE02EMPhysics class
//
// $Id$
// --------------------------------------------------------------
//
//
// 09-Oct-2003 Change gamma, electron, positorn process T. Koi
// 10-Jan-2004 Add Brems. of AlongStepDoIt for e+- T. Koi
#include "RE02EMPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02EMPhysics::RE02EMPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02EMPhysics::~RE02EMPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoE.hh"
#include "G4ProcessManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02EMPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
//Gamma
pManager = G4Gamma::Gamma()->GetProcessManager();
pManager->AddDiscreteProcess(new G4GammaConversion());
pManager->AddDiscreteProcess(new G4ComptonScattering());
pManager->AddDiscreteProcess(new G4PhotoElectricEffect());
//Electorn
pManager = G4Electron::Electron()->GetProcessManager();
G4VProcess* theeminusMultipleScattering = new G4eMultipleScattering();
G4VProcess* theeminusIonisation = new G4eIonisation();
G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
//
// add process
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);
//Positron
pManager = G4Positron::Positron()->GetProcessManager();
G4VProcess* theeplusMultipleScattering = new G4eMultipleScattering();
G4VProcess* theeplusIonisation = new G4eIonisation();
G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
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);
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02EventAction class
//
//
// $Id$
// $Id: RE02EventAction.cc 68026 2013-03-13 13:45:22Z gcosmo $
//
#include "RE02EventAction.hh"
@@ -39,6 +39,7 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02EventAction::RE02EventAction()
: G4UserEventAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,118 +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 runAndEvent/RE02/src/RE02GeneralPhysics.cc
/// \brief Implementation of the RE02GeneralPhysics class
//
// $Id$
// --------------------------------------------------------------
//
// 22-Nov-2004 Construct ALL Particles by T. Koi
#include "RE02GeneralPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02GeneralPhysics::RE02GeneralPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02GeneralPhysics::~RE02GeneralPhysics()
{
}
#include "G4BaryonConstructor.hh"
#include "G4BosonConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4LeptonConstructor.hh"
#include "G4MesonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02GeneralPhysics::ConstructParticle()
{
// In Alphabetical Order
// Construct all barions
G4BaryonConstructor* baryonConstructor = new G4BaryonConstructor();
baryonConstructor -> ConstructParticle();
delete baryonConstructor;
// Construct all bosons (including geantinos)
G4BosonConstructor* bosonConstructor = new G4BosonConstructor();
bosonConstructor -> ConstructParticle();
delete bosonConstructor;
// Construct all ions
G4IonConstructor* ionConstructor = new G4IonConstructor();
ionConstructor -> ConstructParticle();
delete ionConstructor;
// Construct all leptons
G4LeptonConstructor* leptonConstructor = new G4LeptonConstructor();
leptonConstructor -> ConstructParticle();
delete leptonConstructor;
// Construct all mesons
G4MesonConstructor* mesonConstructor = new G4MesonConstructor();
mesonConstructor -> ConstructParticle();
delete mesonConstructor;
// Construct resonaces and quarks
G4ShortLivedConstructor* shortLivedConstructor =
new G4ShortLivedConstructor();
shortLivedConstructor -> ConstructParticle();
delete shortLivedConstructor;
}
#include "G4Decay.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02GeneralPhysics::ConstructProcess()
{
// 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);
}
}
}
@@ -1,703 +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 runAndEvent/RE02/src/RE02HadronPhysics.cc
/// \brief Implementation of the RE02HadronPhysics class
//
// $Id$
// --------------------------------------------------------------
//
// 09-Oct-2003 Hadron Physics List with Parameterization Model by T. Koi
// 12-Oct-2003 Bug Fixed (KaonMinus) by T. Koi
// 16-Nov-2005 Binary Cascade for Protons. by T. Aso
// Proton : BinaryCascade < 6 GeV, 4 GeV < LE Model,
// Neutron: BinaryCascade < 6 GeV, 4 GeV < LE Model,
//
#include "RE02HadronPhysics.hh"
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4ios.hh"
#include <iomanip>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02HadronPhysics::RE02HadronPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02HadronPhysics::~RE02HadronPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02HadronPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
// Pi+ Physics
pManager = G4PionPlus::PionPlus()->GetProcessManager();
// add processes
G4HadronElasticProcess* theppElasticProcess = new G4HadronElasticProcess();
G4LElastic* theppElasticModel = new G4LElastic();
theppElasticProcess->RegisterMe(theppElasticModel);
pManager->AddDiscreteProcess(theppElasticProcess);
G4PionPlusInelasticProcess* thePionPlusInelasticProcess =
new G4PionPlusInelasticProcess();
G4LEPionPlusInelastic* thePionPlusLEPModel = new G4LEPionPlusInelastic();
G4HEPionPlusInelastic* thePionPlusHEPModel = new G4HEPionPlusInelastic();
thePionPlusInelasticProcess->RegisterMe(thePionPlusLEPModel);
thePionPlusInelasticProcess->RegisterMe(thePionPlusHEPModel);
pManager->AddDiscreteProcess(thePionPlusInelasticProcess);
G4VProcess* theppMultipleScattering = new G4hMultipleScattering();
G4VProcess* theppIonisation = new G4hIonisation();
//
pManager->AddProcess(theppIonisation);
pManager->AddProcess(theppMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theppMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theppIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theppMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theppIonisation, idxPostStep,2);
// Pi- Physics
pManager = G4PionMinus::PionMinus()->GetProcessManager();
G4HadronElasticProcess* thepmElasticProcess = new G4HadronElasticProcess();
G4LElastic* thepmElasticModel = new G4LElastic();
thepmElasticProcess->RegisterMe(thepmElasticModel);
pManager->AddDiscreteProcess(thepmElasticProcess);
G4PionMinusInelasticProcess* thePionMinusInelasticProcess =
new G4PionMinusInelasticProcess();
G4LEPionMinusInelastic* thePionMinusLEPModel = new G4LEPionMinusInelastic();
G4HEPionMinusInelastic* thePionMinusHEPModel = new G4HEPionMinusInelastic();
thePionMinusInelasticProcess->RegisterMe(thePionMinusLEPModel);
thePionMinusInelasticProcess->RegisterMe(thePionMinusHEPModel);
pManager->AddDiscreteProcess(thePionMinusInelasticProcess);
G4VProcess* thepmMultipleScattering = new G4hMultipleScattering();
G4VProcess* thepmIonisation = new G4hIonisation();
//
// add processes
pManager->AddProcess(thepmIonisation);
pManager->AddProcess(thepmMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thepmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thepmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thepmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thepmIonisation, idxPostStep,2);
// K+ Physics
pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
G4HadronElasticProcess* thekpElasticProcess = new G4HadronElasticProcess();
G4LElastic* thekpElasticModel = new G4LElastic();
thekpElasticProcess->RegisterMe(thekpElasticModel);
pManager->AddDiscreteProcess(thekpElasticProcess);
G4KaonPlusInelasticProcess* theKaonPlusInelasticProcess =
new G4KaonPlusInelasticProcess();
G4LEKaonPlusInelastic* theKaonPlusLEPModel = new G4LEKaonPlusInelastic();
G4HEKaonPlusInelastic* theKaonPlusHEPModel = new G4HEKaonPlusInelastic();
theKaonPlusInelasticProcess->RegisterMe(theKaonPlusLEPModel);
theKaonPlusInelasticProcess->RegisterMe(theKaonPlusHEPModel);
pManager->AddDiscreteProcess(theKaonPlusInelasticProcess);
G4VProcess* thekpMultipleScattering = new G4hMultipleScattering();
G4VProcess* thekpIonisation = new G4hIonisation();
//
// add processes
pManager->AddProcess(thekpIonisation);
pManager->AddProcess(thekpMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thekpMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thekpIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thekpMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thekpIonisation, idxPostStep,2);
// K- Physics
pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
// add processes
G4HadronElasticProcess* thekmElasticProcess = new G4HadronElasticProcess();
G4LElastic* thekmElasticModel = new G4LElastic();
thekmElasticProcess->RegisterMe(thekmElasticModel);
pManager->AddDiscreteProcess(thekmElasticProcess);
G4KaonMinusInelasticProcess* theKaonMinusInelasticProcess =
new G4KaonMinusInelasticProcess();
G4LEKaonMinusInelastic* theKaonMinusLEPModel = new G4LEKaonMinusInelastic();
G4HEKaonMinusInelastic* theKaonMinusHEPModel = new G4HEKaonMinusInelastic();
theKaonMinusInelasticProcess->RegisterMe(theKaonMinusLEPModel);
theKaonMinusInelasticProcess->RegisterMe(theKaonMinusHEPModel);
pManager->AddDiscreteProcess(theKaonMinusInelasticProcess);
G4VProcess* thekmMultipleScattering = new G4hMultipleScattering();
G4VProcess* thekmIonisation = new G4hIonisation();
pManager->AddProcess(thekmIonisation);
pManager->AddProcess(thekmMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thekmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thekmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thekmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thekmIonisation, idxPostStep,2);
// Kaon0L Physics
pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
G4HadronElasticProcess* thek0lElasticProcess = new G4HadronElasticProcess();
G4LElastic* thek0lElasticModel = new G4LElastic();
thek0lElasticProcess->RegisterMe(thek0lElasticModel);
pManager->AddDiscreteProcess(thek0lElasticProcess);
G4KaonZeroLInelasticProcess* theKaonZeroLInelasticProcess =
new G4KaonZeroLInelasticProcess();
G4LEKaonZeroLInelastic* theKaonZeroLLEPModel = new G4LEKaonZeroLInelastic();
G4HEKaonZeroInelastic* theKaonZerolHEPModel = new G4HEKaonZeroInelastic();
theKaonZeroLInelasticProcess->RegisterMe(theKaonZeroLLEPModel);
theKaonZeroLInelasticProcess->RegisterMe(theKaonZerolHEPModel);
pManager->AddDiscreteProcess(theKaonZeroLInelasticProcess);
// Kaon0S Physics
pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
G4HadronElasticProcess* thek0sElasticProcess = new G4HadronElasticProcess();
G4LElastic* thek0sElasticModel = new G4LElastic();
thek0sElasticProcess->RegisterMe(thek0sElasticModel);
pManager->AddDiscreteProcess(thek0sElasticProcess);
G4KaonZeroSInelasticProcess* theKaonZeroSInelasticProcess =
new G4KaonZeroSInelasticProcess();
G4LEKaonZeroSInelastic* theKaonZeroSLEPModel = new G4LEKaonZeroSInelastic();
G4HEKaonZeroInelastic* theKaonZerosHEPModel = new G4HEKaonZeroInelastic();
theKaonZeroSInelasticProcess->RegisterMe(theKaonZeroSLEPModel);
theKaonZeroSInelasticProcess->RegisterMe(theKaonZerosHEPModel);
pManager->AddDiscreteProcess(theKaonZeroSInelasticProcess);
// Proton Physics
pManager = G4Proton::Proton()->GetProcessManager();
// add process
G4HadronElasticProcess* thepElasticProcess = new G4HadronElasticProcess();
G4LElastic* thepElasticModel = new G4LElastic();
thepElasticProcess->RegisterMe(thepElasticModel);
pManager->AddDiscreteProcess(thepElasticProcess);
G4ProtonInelasticProcess* theProtonInelasticProcess =
new G4ProtonInelasticProcess();
G4BinaryCascade* theProtonBCModel = new G4BinaryCascade();
theProtonBCModel->SetMaxEnergy(6.*GeV);
G4LEProtonInelastic* theProtonLEPModel = new G4LEProtonInelastic();
theProtonLEPModel->SetMinEnergy(4.*GeV);
G4HEProtonInelastic* theProtonHEPModel = new G4HEProtonInelastic();
theProtonInelasticProcess->RegisterMe(theProtonBCModel);
theProtonInelasticProcess->RegisterMe(theProtonLEPModel);
theProtonInelasticProcess->RegisterMe(theProtonHEPModel);
pManager->AddDiscreteProcess(theProtonInelasticProcess);
G4VProcess* thepMultipleScattering = new G4hMultipleScattering();
G4VProcess* thepIonisation = new G4hIonisation();
pManager->AddProcess(thepIonisation);
pManager->AddProcess(thepMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thepMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thepIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thepMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thepIonisation, idxPostStep,2);
// anti-proton Physics
pManager = G4AntiProton::AntiProton()->GetProcessManager();
// add process
G4HadronElasticProcess* theapElasticProcess = new G4HadronElasticProcess();
G4LElastic* theapElasticModel = new G4LElastic();
theapElasticProcess->RegisterMe(theapElasticModel);
pManager->AddDiscreteProcess(theapElasticProcess);
G4AntiProtonInelasticProcess* theAntiProtonInelasticProcess =
new G4AntiProtonInelasticProcess();
G4LEAntiProtonInelastic* theAntiProtonLEPModel =
new G4LEAntiProtonInelastic();
G4HEAntiProtonInelastic* theAntiProtonHEPModel =
new G4HEAntiProtonInelastic();
theAntiProtonInelasticProcess->RegisterMe(theAntiProtonLEPModel);
theAntiProtonInelasticProcess->RegisterMe(theAntiProtonHEPModel);
pManager->AddDiscreteProcess(theAntiProtonInelasticProcess);
G4AntiProtonAnnihilationAtRest* theAntiProtonAnnihilation =
new G4AntiProtonAnnihilationAtRest();
pManager->AddRestProcess(theAntiProtonAnnihilation);
G4VProcess* theapMultipleScattering = new G4hMultipleScattering();
G4VProcess* theapIonisation = new G4hIonisation();
pManager->AddProcess(theapIonisation);
pManager->AddProcess(theapMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theapMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theapIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theapMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theapIonisation, idxPostStep,2);
// neutron Physics
pManager = G4Neutron::Neutron()->GetProcessManager();
// add process
G4HadronElasticProcess* thenElasticProcess = new G4HadronElasticProcess();
G4LElastic* thenElasticModel = new G4LElastic();
thenElasticProcess->RegisterMe(thenElasticModel);
pManager->AddDiscreteProcess(thenElasticProcess);
G4NeutronInelasticProcess* theNeutronInelasticProcess =
new G4NeutronInelasticProcess();
G4BinaryCascade* theNeutronBCModel = new G4BinaryCascade();
theNeutronBCModel->SetMaxEnergy(6.*GeV);
G4LENeutronInelastic* theNeutronLEPModel = new G4LENeutronInelastic();
theNeutronLEPModel->SetMinEnergy(4.*GeV);
G4HENeutronInelastic* theNeutronHEPModel = new G4HENeutronInelastic();
theNeutronInelasticProcess->RegisterMe(theNeutronBCModel);
theNeutronInelasticProcess->RegisterMe(theNeutronLEPModel);
theNeutronInelasticProcess->RegisterMe(theNeutronHEPModel);
pManager->AddDiscreteProcess(theNeutronInelasticProcess);
G4HadronFissionProcess* thenFission = new G4HadronFissionProcess();
G4LFission* thenFissionModel = new G4LFission();
thenFission->RegisterMe(thenFissionModel);
pManager->AddDiscreteProcess(thenFission);
G4HadronCaptureProcess* thenCapture = new G4HadronCaptureProcess();
G4LCapture* thenCaptureModel = new G4LCapture();
thenCapture->RegisterMe(thenCaptureModel);
pManager->AddDiscreteProcess(thenCapture);
// anti-neutron Physics
pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
// add process
G4HadronElasticProcess* theanElasticProcess = new G4HadronElasticProcess();
G4LElastic* theanElasticModel = new G4LElastic();
theanElasticProcess->RegisterMe(theanElasticModel);
pManager->AddDiscreteProcess(theanElasticProcess);
G4AntiNeutronInelasticProcess* theAntiNeutronInelasticProcess =
new G4AntiNeutronInelasticProcess();
G4LEAntiNeutronInelastic* theAntiNeutronLEPModel =
new G4LEAntiNeutronInelastic();
G4HEAntiNeutronInelastic* theAntiNeutronHEPModel =
new G4HEAntiNeutronInelastic();
theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronLEPModel);
theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronHEPModel);
pManager->AddDiscreteProcess(theAntiNeutronInelasticProcess);
G4AntiNeutronAnnihilationAtRest* theAntiNeutronAnnihilation =
new G4AntiNeutronAnnihilationAtRest();
pManager->AddRestProcess(theAntiNeutronAnnihilation);
// Lambda Physics
pManager = G4Lambda::Lambda()->GetProcessManager();
// add process
G4HadronElasticProcess* thel0ElasticProcess = new G4HadronElasticProcess();
G4LElastic* thel0ElasticModel = new G4LElastic();
thel0ElasticProcess->RegisterMe(thel0ElasticModel);
pManager->AddDiscreteProcess(thel0ElasticProcess);
G4LambdaInelasticProcess* theLambdaInelasticProcess =
new G4LambdaInelasticProcess();
G4LELambdaInelastic* theLambdaLEPModel = new G4LELambdaInelastic();
G4HELambdaInelastic* theLambdaHEPModel = new G4HELambdaInelastic();
theLambdaInelasticProcess->RegisterMe(theLambdaLEPModel);
theLambdaInelasticProcess->RegisterMe(theLambdaHEPModel);
pManager->AddDiscreteProcess(theLambdaInelasticProcess);
// Anti-Labda Physics
pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
// add process
G4HadronElasticProcess* theal0ElasticProcess = new G4HadronElasticProcess();
G4LElastic* theal0ElasticModel = new G4LElastic();
theal0ElasticProcess->RegisterMe(theal0ElasticModel);
pManager->AddDiscreteProcess(theal0ElasticProcess);
G4AntiLambdaInelasticProcess* theAntiLambdaInelasticProcess =
new G4AntiLambdaInelasticProcess();
G4LEAntiLambdaInelastic* theAntiLambdaLEPModel =
new G4LEAntiLambdaInelastic();
G4HEAntiLambdaInelastic* theAntiLambdaHEPModel =
new G4HEAntiLambdaInelastic();
theAntiLambdaInelasticProcess->RegisterMe(theAntiLambdaLEPModel);
theAntiLambdaInelasticProcess->RegisterMe(theAntiLambdaHEPModel);
pManager->AddDiscreteProcess(theAntiLambdaInelasticProcess);
// Sigma+ Physics
pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
// add process
G4HadronElasticProcess* thespElasticProcess = new G4HadronElasticProcess();
G4LElastic* thespElasticModel = new G4LElastic();
thespElasticProcess->RegisterMe(thespElasticModel);
pManager->AddDiscreteProcess(thespElasticProcess);
G4SigmaPlusInelasticProcess* theSigmaPlusInelasticProcess =
new G4SigmaPlusInelasticProcess();
G4LESigmaPlusInelastic* theSigmaPlusLEPModel = new G4LESigmaPlusInelastic();
G4HESigmaPlusInelastic* theSigmaPlusHEPModel = new G4HESigmaPlusInelastic();
theSigmaPlusInelasticProcess->RegisterMe(theSigmaPlusLEPModel);
theSigmaPlusInelasticProcess->RegisterMe(theSigmaPlusHEPModel);
pManager->AddDiscreteProcess(theSigmaPlusInelasticProcess);
G4VProcess* thespMultipleScattering = new G4hMultipleScattering();
G4VProcess* thespIonisation = new G4hIonisation();
pManager->AddProcess(thespIonisation);
pManager->AddProcess(thespMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thespMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thespIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thespMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thespIonisation, idxPostStep,2);
// anti-Sigma+ Physics
pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
// add process
G4HadronElasticProcess* theaspElasticProcess = new G4HadronElasticProcess();
G4LElastic* theaspElasticModel = new G4LElastic();
theaspElasticProcess->RegisterMe(theaspElasticModel);
pManager->AddDiscreteProcess(theaspElasticProcess);
G4AntiSigmaPlusInelasticProcess* theAntiSigmaPlusInelasticProcess =
new G4AntiSigmaPlusInelasticProcess();
G4LEAntiSigmaPlusInelastic* theAntiSigmaPlusLEPModel =
new G4LEAntiSigmaPlusInelastic();
G4HEAntiSigmaPlusInelastic* theAntiSigmaPlusHEPModel =
new G4HEAntiSigmaPlusInelastic();
theAntiSigmaPlusInelasticProcess->RegisterMe(theAntiSigmaPlusLEPModel);
theAntiSigmaPlusInelasticProcess->RegisterMe(theAntiSigmaPlusHEPModel);
pManager->AddDiscreteProcess(theAntiSigmaPlusInelasticProcess);
G4VProcess* theaspMultipleScattering = new G4hMultipleScattering();
G4VProcess* theaspIonisation = new G4hIonisation();
pManager->AddProcess(theaspIonisation);
pManager->AddProcess(theaspMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theaspMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theaspIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theaspMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theaspIonisation, idxPostStep,2);
// Sigma- Physics
pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
// add process
G4HadronElasticProcess* thesmElasticProcess = new G4HadronElasticProcess();
G4LElastic* thesmElasticModel = new G4LElastic();
thesmElasticProcess->RegisterMe(thesmElasticModel);
pManager->AddDiscreteProcess(thesmElasticProcess);
G4SigmaMinusInelasticProcess* theSigmaMinusInelasticProcess =
new G4SigmaMinusInelasticProcess();
G4LESigmaMinusInelastic* theSigmaMinusLEPModel =
new G4LESigmaMinusInelastic();
G4HESigmaMinusInelastic* theSigmaMinusHEPModel =
new G4HESigmaMinusInelastic();
theSigmaMinusInelasticProcess->RegisterMe(theSigmaMinusLEPModel);
theSigmaMinusInelasticProcess->RegisterMe(theSigmaMinusHEPModel);
pManager->AddDiscreteProcess(theSigmaMinusInelasticProcess);
G4VProcess* thesmMultipleScattering = new G4hMultipleScattering();
G4VProcess* thesmIonisation = new G4hIonisation();
pManager->AddProcess(thesmIonisation);
pManager->AddProcess(thesmMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thesmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thesmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thesmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thesmIonisation, idxPostStep,2);
// anti-Sigma- Physics
pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
// add process
G4HadronElasticProcess* theasmElasticProcess = new G4HadronElasticProcess();
G4LElastic* theasmElasticModel = new G4LElastic();
theasmElasticProcess->RegisterMe(theasmElasticModel);
pManager->AddDiscreteProcess(theasmElasticProcess);
G4AntiSigmaMinusInelasticProcess* theAntiSigmaMinusInelasticProcess =
new G4AntiSigmaMinusInelasticProcess();
G4LEAntiSigmaMinusInelastic* theAntiSigmaMinusLEPModel =
new G4LEAntiSigmaMinusInelastic();
G4HEAntiSigmaMinusInelastic* theAntiSigmaMinusHEPModel =
new G4HEAntiSigmaMinusInelastic();
theAntiSigmaMinusInelasticProcess->RegisterMe(theAntiSigmaMinusLEPModel);
theAntiSigmaMinusInelasticProcess->RegisterMe(theAntiSigmaMinusHEPModel);
pManager->AddDiscreteProcess(theAntiSigmaMinusInelasticProcess);
G4VProcess* theasmMultipleScattering = new G4hMultipleScattering();
G4VProcess* theasmIonisation = new G4hIonisation();
pManager->AddProcess(theasmIonisation);
pManager->AddProcess(theasmMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theasmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theasmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theasmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theasmIonisation, idxPostStep,2);
// Xi0 Physics
pManager = G4XiZero::XiZero()->GetProcessManager();
// add process
G4HadronElasticProcess* thex0ElasticProcess = new G4HadronElasticProcess();
G4LElastic* thex0ElasticModel = new G4LElastic();
thex0ElasticProcess->RegisterMe(thex0ElasticModel);
pManager->AddDiscreteProcess(thex0ElasticProcess);
G4XiZeroInelasticProcess* theXiZeroInelasticProcess =
new G4XiZeroInelasticProcess();
G4LEXiZeroInelastic* theXiZeroLEPModel = new G4LEXiZeroInelastic();
G4HEXiZeroInelastic* theXiZeroHEPModel = new G4HEXiZeroInelastic();
theXiZeroInelasticProcess->RegisterMe(theXiZeroLEPModel);
theXiZeroInelasticProcess->RegisterMe(theXiZeroHEPModel);
pManager->AddDiscreteProcess(theXiZeroInelasticProcess);
// Anti-Xi0 Physics
pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
// add process
G4HadronElasticProcess* theax0ElasticProcess = new G4HadronElasticProcess();
G4LElastic* theax0ElasticModel = new G4LElastic();
theax0ElasticProcess->RegisterMe(theax0ElasticModel);
pManager->AddDiscreteProcess(theax0ElasticProcess);
G4AntiXiZeroInelasticProcess* theAntiXiZeroInelasticProcess =
new G4AntiXiZeroInelasticProcess();
G4LEAntiXiZeroInelastic* theAntiXiZeroLEPModel =
new G4LEAntiXiZeroInelastic();
G4HEAntiXiZeroInelastic* theAntiXiZeroHEPModel =
new G4HEAntiXiZeroInelastic();
theAntiXiZeroInelasticProcess->RegisterMe(theAntiXiZeroLEPModel);
theAntiXiZeroInelasticProcess->RegisterMe(theAntiXiZeroHEPModel);
pManager->AddDiscreteProcess(theAntiXiZeroInelasticProcess);
// Xi- Physics
pManager = G4XiMinus::XiMinus()->GetProcessManager();
// add process
G4HadronElasticProcess* thexmElasticProcess = new G4HadronElasticProcess();
G4LElastic* thexmElasticModel = new G4LElastic();
thexmElasticProcess->RegisterMe(thexmElasticModel);
pManager->AddDiscreteProcess(thexmElasticProcess);
G4XiMinusInelasticProcess* theXiMinusInelasticProcess =
new G4XiMinusInelasticProcess();
G4LEXiMinusInelastic* theXiMinusLEPModel = new G4LEXiMinusInelastic();
G4HEXiMinusInelastic* theXiMinusHEPModel = new G4HEXiMinusInelastic();
theXiMinusInelasticProcess->RegisterMe(theXiMinusLEPModel);
theXiMinusInelasticProcess->RegisterMe(theXiMinusHEPModel);
pManager->AddDiscreteProcess(theXiMinusInelasticProcess);
G4VProcess* thexmMultipleScattering = new G4hMultipleScattering();
G4VProcess* thexmIonisation = new G4hIonisation();
pManager->AddProcess(thexmIonisation);
pManager->AddProcess(thexmMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thexmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thexmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thexmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thexmIonisation, idxPostStep,2);
// anti-Xi- Physics
pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
// add process
G4HadronElasticProcess* theaxmElasticProcess = new G4HadronElasticProcess();
G4LElastic* theaxmElasticModel = new G4LElastic();
theaxmElasticProcess->RegisterMe(theaxmElasticModel);
pManager->AddDiscreteProcess(theaxmElasticProcess);
G4AntiXiMinusInelasticProcess* theAntiXiMinusInelasticProcess =
new G4AntiXiMinusInelasticProcess();
G4LEAntiXiMinusInelastic* theAntiXiMinusLEPModel =
new G4LEAntiXiMinusInelastic();
G4HEAntiXiMinusInelastic* theAntiXiMinusHEPModel =
new G4HEAntiXiMinusInelastic();
theAntiXiMinusInelasticProcess->RegisterMe(theAntiXiMinusLEPModel);
theAntiXiMinusInelasticProcess->RegisterMe(theAntiXiMinusHEPModel);
pManager->AddDiscreteProcess(theAntiXiMinusInelasticProcess);
G4VProcess* theaxmMultipleScattering = new G4hMultipleScattering();
G4VProcess* theaxmIonisation = new G4hIonisation();
pManager->AddProcess(theaxmIonisation);
pManager->AddProcess(theaxmMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theaxmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theaxmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theaxmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theaxmIonisation, idxPostStep,2);
// Omega- Physics
pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
// add process
G4HadronElasticProcess* theomElasticProcess = new G4HadronElasticProcess();
G4LElastic* theomElasticModel = new G4LElastic();
theomElasticProcess->RegisterMe(theomElasticModel);
pManager->AddDiscreteProcess(theomElasticProcess);
G4OmegaMinusInelasticProcess* theOmegaMinusInelasticProcess =
new G4OmegaMinusInelasticProcess();
G4LEOmegaMinusInelastic* theOmegaMinusLEPModel =
new G4LEOmegaMinusInelastic();
G4HEOmegaMinusInelastic* theOmegaMinusHEPModel =
new G4HEOmegaMinusInelastic();
theOmegaMinusInelasticProcess->RegisterMe(theOmegaMinusLEPModel);
theOmegaMinusInelasticProcess->RegisterMe(theOmegaMinusHEPModel);
pManager->AddDiscreteProcess(theOmegaMinusInelasticProcess);
G4VProcess* theomMultipleScattering = new G4hMultipleScattering();
G4VProcess* theomIonisation = new G4hIonisation();
pManager->AddProcess(theomIonisation);
pManager->AddProcess(theomMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theomMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theomIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theomMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theomIonisation, idxPostStep,2);
// anti-Omega- Physics
pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
// add process
G4HadronElasticProcess* theaomElasticProcess = new G4HadronElasticProcess();
G4LElastic* theaomElasticModel = new G4LElastic();
theaomElasticProcess->RegisterMe(theaomElasticModel);
pManager->AddDiscreteProcess(theaomElasticProcess);
G4AntiOmegaMinusInelasticProcess* theAntiOmegaMinusInelasticProcess =
new G4AntiOmegaMinusInelasticProcess();
G4LEAntiOmegaMinusInelastic* theAntiOmegaMinusLEPModel =
new G4LEAntiOmegaMinusInelastic();
G4HEAntiOmegaMinusInelastic* theAntiOmegaMinusHEPModel =
new G4HEAntiOmegaMinusInelastic();
theAntiOmegaMinusInelasticProcess->RegisterMe(theAntiOmegaMinusLEPModel);
theAntiOmegaMinusInelasticProcess->RegisterMe(theAntiOmegaMinusHEPModel);
pManager->AddDiscreteProcess(theAntiOmegaMinusInelasticProcess);
G4VProcess* theaomMultipleScattering = new G4hMultipleScattering();
G4VProcess* theaomIonisation = new G4hIonisation();
pManager->AddProcess(theaomIonisation);
pManager->AddProcess(theaomMultipleScattering);
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(theaomMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(theaomIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(theaomMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(theaomIonisation, idxPostStep,2);
}
@@ -1,208 +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 runAndEvent/RE02/src/RE02IonPhysics.cc
/// \brief Implementation of the RE02IonPhysics class
//
// $Id$
// --------------------------------------------------------------
//
// 13-Oct-2003 Add Comment for Ionisation of Generic Ion by T. Koi
// 05-Jan-2004 Change G. Ion Ionisation from G4hIonisation
// to G4ionIonisation T. Koi
// 18-Nov-2005 Add Inelastic process with G4BinaryLightIonReaction.
// T. Aso
#include "RE02IonPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02IonPhysics::RE02IonPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02IonPhysics::~RE02IonPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
#include "G4HadronElastic.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02IonPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
// Generic Ion
pManager = G4GenericIon::GenericIon()->GetProcessManager();
// add process
G4VProcess* thegionMultipleScattering = new G4hMultipleScattering();
//
// G4hIonization may be not able to use for Geanric Ion in future
// Please take care using this physics list after v5.2.p02
// G4VProcess* thegionIonisation = new G4hIonisation();
//
// From V6.0 hIonisation does not work for GenericIon
G4VProcess* thegionIonisation = new G4ionIonisation();
// Inelastic process
G4HadronInelasticProcess* thegionInelastic =
new G4HadronInelasticProcess("IonInelastic",G4GenericIon::GenericIon());
thegionInelastic->AddDataSet(new G4TripathiCrossSection);
thegionInelastic->AddDataSet(new G4IonsShenCrossSection);
G4BinaryLightIonReaction* thegionBCModel = new G4BinaryLightIonReaction;
thegionInelastic->RegisterMe(thegionBCModel);
//
pManager->AddProcess(thegionIonisation);
pManager->AddProcess(thegionMultipleScattering);
pManager->AddDiscreteProcess(thegionInelastic);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thegionMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thegionIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thegionMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thegionIonisation, idxPostStep,2);
// Deuteron
pManager = G4Deuteron::Deuteron()->GetProcessManager();
// add process
G4HadronElasticProcess* thedueElasticProcess = new G4HadronElasticProcess();
thedueElasticProcess->RegisterMe(new G4HadronElastic());
pManager->AddDiscreteProcess(thedueElasticProcess);
G4DeuteronInelasticProcess* theDeuteronInelasticProcess =
new G4DeuteronInelasticProcess();
G4LEDeuteronInelastic* theDeuteronLEPModel = new G4LEDeuteronInelastic();
theDeuteronInelasticProcess->RegisterMe(theDeuteronLEPModel);
pManager->AddDiscreteProcess(theDeuteronInelasticProcess);
G4VProcess* thedueMultipleScattering = new G4hMultipleScattering();
G4VProcess* thedueIonisation = new G4hIonisation();
//
pManager->AddProcess(thedueIonisation);
pManager->AddProcess(thedueMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thedueMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thedueIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thedueMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thedueIonisation, idxPostStep,2);
// Triton
pManager = G4Triton::Triton()->GetProcessManager();
// add process
G4HadronElasticProcess* thetriElasticProcess = new G4HadronElasticProcess();
thetriElasticProcess->RegisterMe(new G4HadronElastic());
pManager->AddDiscreteProcess(thetriElasticProcess);
G4TritonInelasticProcess* theTritonInelasticProcess =
new G4TritonInelasticProcess();
G4LETritonInelastic* theTritonLEPModel = new G4LETritonInelastic();
theTritonInelasticProcess->RegisterMe(theTritonLEPModel);
pManager->AddDiscreteProcess(theTritonInelasticProcess);
G4VProcess* thetriMultipleScattering = new G4hMultipleScattering();
G4VProcess* thetriIonisation = new G4hIonisation();
//
pManager->AddProcess(thetriIonisation);
pManager->AddProcess(thetriMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thetriMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thetriIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thetriMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thetriIonisation, idxPostStep,2);
// Alpha
pManager = G4Alpha::Alpha()->GetProcessManager();
// add processes
G4HadronElasticProcess* thealElasticProcess = new G4HadronElasticProcess();
thealElasticProcess->RegisterMe(new G4HadronElastic());
pManager->AddDiscreteProcess(thealElasticProcess);
G4AlphaInelasticProcess* theAlphaInelasticProcess =
new G4AlphaInelasticProcess();
G4LEAlphaInelastic* theAlphaLEPModel = new G4LEAlphaInelastic();
theAlphaInelasticProcess->RegisterMe(theAlphaLEPModel);
pManager->AddDiscreteProcess(theAlphaInelasticProcess);
G4VProcess* thealpMultipleScattering = new G4hMultipleScattering();
G4VProcess* thealpIonisation = new G4hIonisation();
//
pManager->AddProcess(thealpIonisation);
pManager->AddProcess(thealpMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thealpMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thealpIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thealpMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thealpIonisation, idxPostStep,2);
// He3
pManager = G4He3::He3()->GetProcessManager();
// add processes
G4VProcess* thehe3MultipleScattering = new G4hMultipleScattering();
G4VProcess* thehe3Ionisation = new G4hIonisation();
//
pManager->AddProcess(thehe3Ionisation);
pManager->AddProcess(thehe3MultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thehe3MultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thehe3Ionisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thehe3MultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thehe3Ionisation, idxPostStep,2);
}
@@ -1,150 +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 runAndEvent/RE02/src/RE02MuonPhysics.cc
/// \brief Implementation of the RE02MuonPhysics class
//
// $Id$
// --------------------------------------------------------------
//
// 09-Oct-2003 mu+- tau+- processes are changed by T. Koi
// 05-Jan-2004 Add Brem. and PairProd. of AlongStepDoit for mu+- by T. Koi
#include "RE02MuonPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include <iomanip>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02MuonPhysics::RE02MuonPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02MuonPhysics::~RE02MuonPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4TauMinus.hh"
#include "G4TauPlus.hh"
#include "G4ProcessManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02MuonPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
//Muon+
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
G4VProcess* thempMultipleScattering = new G4MuMultipleScattering();
G4VProcess* thempBremsstrahlung = new G4MuBremsstrahlung();
G4VProcess* thempPairProduction = new G4MuPairProduction();
G4VProcess* thempIonisation = new G4MuIonisation();
//
// add processes
pManager->AddProcess(thempIonisation);
pManager->AddProcess(thempMultipleScattering);
pManager->AddProcess(thempBremsstrahlung);
pManager->AddProcess(thempPairProduction);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thempMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thempIonisation, idxAlongStep,2);
pManager->SetProcessOrdering(thempBremsstrahlung, idxAlongStep,3);
pManager->SetProcessOrdering(thempPairProduction, idxAlongStep,4);
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thempMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thempIonisation, idxPostStep,2);
pManager->SetProcessOrdering(thempBremsstrahlung, idxPostStep,3);
pManager->SetProcessOrdering(thempPairProduction, idxPostStep,4);
//Muon-
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
G4VProcess* themmMultipleScattering = new G4MuMultipleScattering();
G4VProcess* themmBremsstrahlung = new G4MuBremsstrahlung();
G4VProcess* themmPairProduction = new G4MuPairProduction();
G4VProcess* themmIonisation = new G4MuIonisation();
//
// add processes
pManager->AddProcess(themmIonisation);
pManager->AddProcess(themmMultipleScattering);
pManager->AddProcess(themmBremsstrahlung);
pManager->AddProcess(themmPairProduction);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(themmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(themmIonisation, idxAlongStep,2);
pManager->SetProcessOrdering(themmBremsstrahlung, idxAlongStep,3);
pManager->SetProcessOrdering(themmPairProduction, idxAlongStep,4);
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(themmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(themmIonisation, idxPostStep,2);
pManager->SetProcessOrdering(themmBremsstrahlung, idxPostStep,3);
pManager->SetProcessOrdering(themmPairProduction, idxPostStep,4);
// Tau+ Physics
pManager = G4TauPlus::TauPlus()->GetProcessManager();
G4VProcess* thetpMultipleScattering = new G4hMultipleScattering();
G4VProcess* thetpIonisation = new G4hIonisation();
//
// add processes
pManager->AddProcess(thetpIonisation);
pManager->AddProcess(thetpMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thetpMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thetpIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thetpMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thetpIonisation, idxPostStep,2);
// Tau- Physics
pManager = G4TauMinus::TauMinus()->GetProcessManager();
G4VProcess* thetmMultipleScattering = new G4hMultipleScattering();
G4VProcess* thetmIonisation = new G4hIonisation();
//
// add processes
pManager->AddProcess(thetmIonisation);
pManager->AddProcess(thetmMultipleScattering);
//
// set ordering for AlongStepDoIt
pManager->SetProcessOrdering(thetmMultipleScattering, idxAlongStep,1);
pManager->SetProcessOrdering(thetmIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pManager->SetProcessOrdering(thetmMultipleScattering, idxPostStep,1);
pManager->SetProcessOrdering(thetmIonisation, idxPostStep,2);
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PSCellFlux class
//
//
// $Id$
// $Id: RE02PSCellFlux.cc 72957 2013-08-14 14:27:23Z gcosmo $
//
// RE02PSCellFlux
#include "RE02PSCellFlux.hh"
@@ -73,6 +73,8 @@ G4int RE02PSCellFlux::GetIndex(G4Step* aStep)
G4int ix = touchable->GetReplicaNumber(1);
G4int iy = touchable->GetReplicaNumber(2);
G4int iz = touchable->GetReplicaNumber(0);
return iy*fNx*fNz+ix*fNz+iz;
G4int tmp = fNy;
if (tmp) return iy*fNx*fNz+ix*fNz+iz;
else return iy*fNx*fNz+ix*fNz+iz;
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PSEnergyDeposit class
//
//
// $Id$
// $Id: RE02PSEnergyDeposit.cc 72957 2013-08-14 14:27:23Z gcosmo $
//
// RE02PSEnergyDeposit
#include "RE02PSEnergyDeposit.hh"
@@ -74,5 +74,8 @@ G4int RE02PSEnergyDeposit::GetIndex(G4Step* aStep)
G4int ix = touchable->GetReplicaNumber(1);
G4int iy = touchable->GetReplicaNumber(2);
G4int iz = touchable->GetReplicaNumber(0);
return iy*fNx*fNz+ix*fNz+iz;
G4int tmp = fNy;
if (tmp) return iy*fNx*fNz+ix*fNz+iz;
else return iy*fNx*fNz+ix*fNz+iz;
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PSFlatSurfaceCurrent class
//
//
// $Id$
// $Id: RE02PSFlatSurfaceCurrent.cc 72957 2013-08-14 14:27:23Z gcosmo $
//
// RE02PSFlatSurfaceCurrent
#include "RE02PSFlatSurfaceCurrent.hh"
@@ -75,6 +75,8 @@ G4int RE02PSFlatSurfaceCurrent::GetIndex(G4Step* aStep)
G4int ix = touchable->GetReplicaNumber(1);
G4int iy = touchable->GetReplicaNumber(2);
G4int iz = touchable->GetReplicaNumber(0);
return iy*fNx*fNz+ix*fNz+iz;
G4int tmp = fNy;
if (tmp) return iy*fNx*fNz+ix*fNz+iz;
else return iy*fNx*fNz+ix*fNz+iz;
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PSFlatSurfaceFlux class
//
//
// $Id$
// $Id: RE02PSFlatSurfaceFlux.cc 72957 2013-08-14 14:27:23Z gcosmo $
//
// RE02PSFlatSurfaceFlux
#include "RE02PSFlatSurfaceFlux.hh"
@@ -74,6 +74,8 @@ G4int RE02PSFlatSurfaceFlux::GetIndex(G4Step* aStep)
G4int ix = touchable->GetReplicaNumber(1);
G4int iy = touchable->GetReplicaNumber(2);
G4int iz = touchable->GetReplicaNumber(0);
return iy*fNx*fNz+ix*fNz+iz;
G4int tmp = fNy;
if (tmp) return iy*fNx*fNz+ix*fNz+iz;
else return iy*fNx*fNz+ix*fNz+iz;
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PSNofStep class
//
//
// $Id$
// $Id: RE02PSNofStep.cc 72957 2013-08-14 14:27:23Z gcosmo $
//
// RE02PSNofStep
#include "RE02PSNofStep.hh"
@@ -73,6 +73,8 @@ G4int RE02PSNofStep::GetIndex(G4Step* aStep)
G4int ix = touchable->GetReplicaNumber(1);
G4int iy = touchable->GetReplicaNumber(2);
G4int iz = touchable->GetReplicaNumber(0);
return iy*fNx*fNz+ix*fNz+iz;
G4int tmp = fNy;
if (tmp) return iy*fNx*fNz+ix*fNz+iz;
else return iy*fNx*fNz+ix*fNz+iz;
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PSPassageCellFlux class
//
//
// $Id$
// $Id: RE02PSPassageCellFlux.cc 72957 2013-08-14 14:27:23Z gcosmo $
//
// RE02PSPassageCellFlux
#include "RE02PSPassageCellFlux.hh"
@@ -74,6 +74,8 @@ G4int RE02PSPassageCellFlux::GetIndex(G4Step* aStep)
G4int ix = touchable->GetReplicaNumber(1);
G4int iy = touchable->GetReplicaNumber(2);
G4int iz = touchable->GetReplicaNumber(0);
return iy*fNx*fNz+ix*fNz+iz;
G4int tmp = fNy;
if (tmp) return iy*fNx*fNz+ix*fNz+iz;
else return iy*fNx*fNz+ix*fNz+iz;
}
@@ -1,123 +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 runAndEvent/RE02/src/RE02PhysicsList.cc
/// \brief Implementation of the RE02PhysicsList class
//
// $Id$
// --------------------------------------------------------------
//
// 28-Jan-04 Add QGSP_BERT and QGSP_BIC for hadronic lists. T. Koi
// 22-Nov-04 Comment out QGSP_BERT and QGSP_BIC
// Output Notificaiton message
// All Particles are created in GeneralPhysics
#include "RE02PhysicsList.hh"
#include "globals.hh"
#include "G4SystemOfUnits.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 "RE02GeneralPhysics.hh"
#include "RE02EMPhysics.hh"
#include "RE02MuonPhysics.hh"
#include "RE02HadronPhysics.hh"
#include "RE02IonPhysics.hh"
//#include "HadronPhysicsQGSP_BERT.hh"
//#include "HadronPhysicsQGSP_BIC.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02PhysicsList::RE02PhysicsList() : G4VModularPhysicsList()
{
G4cout
<< "You are using the RE02PhysicsList\n"
<< "This PhysicsList originally comes from example/extended/analysis/A01,\n"
<< "and is modified in Hadron Physics in order to involve Binary Cascade\n"
<< "at low energy region and inelastic process for generic ions.\n"
<< "Full set of particles (barions bosons and mesons) will be created and\n"
<< "Standard EM Physics and Low & High Energy parameterized models will be "
<< "applied.\n"
<< "RE02PhysicsList is optimized for robustness and not for any particular "
<< "usage.\n"
<< "For the hadronic physics, educated guesses of physics list are "
<< "prepared\n"
<< "for various use cases.\n"
<< "When you will start REAL calculations for your own interest, please\n"
<< "consider the usage of hadronic_lists instead of RE02PhysicsLists.\n"
<< "More information can also be found from the Geant4 HyperNews.\n"
<< "http://geant4-hn.slac.stanford.edu:5090/Geant4-HyperNews/index\n"
<< G4endl;
// default cut value (1.0mm)
defaultCutValue = 1.0*mm;
SetVerboseLevel(1);
// General Physics ( Create ALL Particle and apply Decay )
RegisterPhysics( new RE02GeneralPhysics("general") );
// EM Physics ( Apply related Processes to gamma and e-/+)
RegisterPhysics( new RE02EMPhysics("standard EM"));
// Muon Physics ( Apply related processes to mu and tau
RegisterPhysics( new RE02MuonPhysics("muon"));
// Hadron Physics ( Apply related processes to hadrons )
RegisterPhysics( new RE02HadronPhysics("hadron"));
// We do not use hadronic lists since v7.
//RegisterPhysics( new HadronPhysicsQGSP_BERT("hadron"));
//RegisterPhysics( new HadronPhysicsQGSP_BIC("hadron"));
// Ion Physics ( Apply related processes to ions )
RegisterPhysics( new RE02IonPhysics("ion"));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RE02PhysicsList::~RE02PhysicsList()
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02PhysicsList::SetCuts()
{
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
}
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02PrimaryGeneratorAction class
//
//
// $Id$
// $Id: RE02PrimaryGeneratorAction.cc 68026 2013-03-13 13:45:22Z gcosmo $
//
#include "RE02PrimaryGeneratorAction.hh"
@@ -43,6 +43,8 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
RE02PrimaryGeneratorAction::RE02PrimaryGeneratorAction()
: G4VUserPrimaryGeneratorAction(),
fParticleGun(0)
{
G4int n_particle = 1;
fParticleGun = new G4ParticleGun(n_particle);
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02Run class
//
//
// $Id$
// $Id: RE02Run.cc 76292 2013-11-08 13:10:20Z gcosmo $
//
//=====================================================================
@@ -95,7 +95,8 @@ RE02Run::RE02Run(const std::vector<G4String> mfdName) : G4Run()
G4int collectionID = pSDman->GetCollectionID(fullCollectionName);
//
if ( collectionID >= 0 ){
G4cout << "++ "<<fullCollectionName<< " id " << collectionID << G4endl;
G4cout << "++ "<<fullCollectionName<< " id " << collectionID
<< G4endl;
// Store obtained HitsCollection information into data members.
// And, creates new G4THitsMap for accumulating quantities during RUN.
fCollName.push_back(fullCollectionName);
@@ -160,6 +161,24 @@ void RE02Run::RecordEvent(const G4Event* aEvent)
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RE02Run::Merge(const G4Run * aRun) {
const RE02Run * localRun = static_cast<const RE02Run *>(aRun);
//=======================================================
// Merge HitsMap of working threads
//=======================================================
G4int nCol = localRun->fCollID.size();
for ( G4int i = 0; i < nCol ; i++ ){ // Loop over HitsCollection
if ( localRun->fCollID[i] >= 0 ){
*fRunMap[i] += *localRun->fRunMap[i];
}
}
G4Run::Merge(aRun);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//
// Access method for HitsMap of the RUN
@@ -27,7 +27,7 @@
/// \brief Implementation of the RE02RunAction class
//
//
// $Id$
// $Id: RE02RunAction.cc 75682 2013-11-05 09:11:19Z gcosmo $
//
#include "RE02RunAction.hh"
#include "RE02Run.hh"
@@ -51,7 +51,8 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Constructor
RE02RunAction::RE02RunAction()
: fNx(0), fNy(0), fNz(0)
: G4UserRunAction(),
fNx(0), fNy(0), fNz(0)
{
// - Prepare data member for RE02Run.
// vector represents a list of MultiFunctionalDetector names.
@@ -86,6 +87,8 @@ void RE02RunAction::BeginOfRunAction(const G4Run* aRun)
//==
void RE02RunAction::EndOfRunAction(const G4Run* aRun)
{
if(!IsMaster()) return;
//- RE02Run object.
RE02Run* re02Run = (RE02Run*)aRun;
//--- Dump all socred quantities involved in RE02Run.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.1 2007-11-13 19:55:43 asaim Exp $
# $Id: GNUmakefile 66379 2012-12-18 09:46:33Z gcosmo $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -16,7 +16,7 @@ all: lib bin
include $(G4INSTALL)/config/binmake.gmk
visclean:
rm -f g4*.prim g4*.eps g4*.wrl
rm -f .DAWN_*
CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS))
CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O))
+17 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.4 2010-11-08 20:14:41 allison Exp $
$Id: History 69567 2013-05-08 12:43:15Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,22 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
May 02, 2013 M. Asai (exampleRE03-V09-06-03)
- Migrate to G4VUserActionInitalization so that it works
for both sequential and multi-threaded modes.
May 01, 2013 M. Asai (exampleRE03-V09-06-02)
- Fully migrated to the latest API.
Apr 17, 2013 M. Asai (exampleRE03-V09-06-01)
- Preparation for ref-04 API
Mar 27, 2013 M. Asai (exampleRE03-V09-06-00)
- Migrated to multi-threaded version. For internal use only
Feb 15, 2013 I. Hrivnacova
- Applied coding guidelines (data members initialization)
Oct 15, 2012 I.Hrivnacova (exampleRE03-V09-05-01)
- Replaced tabulators with space characters
+15 -7
View File
@@ -29,14 +29,17 @@
//
// $Id: $
//
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "G4ScoringManager.hh"
#include "RE03DetectorConstruction.hh"
#include "QGS_BIC.hh"
#include "RE03PrimaryGeneratorAction.hh"
#include "FTFP_BERT.hh"
#include "RE03ActionInitialization.hh"
#ifdef G4VIS_USE
#include "G4VisExecutive.hh"
@@ -55,7 +58,12 @@ int main(int argc,char** argv)
{
// Construct the run manager
//
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
runManager->SetNumberOfThreads(4);
#else
G4RunManager * runManager = new G4RunManager;
#endif
// Activate UI-command base scorer
G4ScoringManager * scManager = G4ScoringManager::GetScoringManager();
@@ -71,13 +79,13 @@ int main(int argc,char** argv)
G4VUserDetectorConstruction* detector = new RE03DetectorConstruction;
runManager->SetUserInitialization(detector);
//
G4VUserPhysicsList* physics = new QGS_BIC;
G4VUserPhysicsList* physics = new FTFP_BERT;
runManager->SetUserInitialization(physics);
// Set user action classes
// Set user action classes through Worker Initialization
//
G4VUserPrimaryGeneratorAction* gen_action = new RE03PrimaryGeneratorAction;
runManager->SetUserAction(gen_action);
RE03ActionInitialization* actions = new RE03ActionInitialization;
runManager->SetUserInitialization(actions);
#ifdef G4VIS_USE
// Visualization manager
@@ -0,0 +1,51 @@
//
// ********************************************************************
// * 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 runAndEvent/RE03/include/RE03ActionInitialization.hh
/// \brief Definition of the RE03ActionInitialization class
//
//
// $Id: RE03ActionInitialization.hh 66780 2013-01-12 14:56:35Z gcosmo $
//
#ifndef RE03ActionInitialization_h
#define RE03ActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
class RE03ActionInitialization : public G4VUserActionInitialization
{
public:
RE03ActionInitialization();
virtual ~RE03ActionInitialization();
public:
virtual void Build() const;
};
#endif

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