Import Geant4 9.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 16:25:56 +02:00
parent 74cad5e589
commit 89a9605df1
4440 changed files with 379508 additions and 189225 deletions
@@ -1,4 +1,4 @@
$Id: History,v 1.12 2006/11/22 15:09:21 gcosmo Exp $
$Id: History,v 1.15 2010/12/10 06:21:34 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,18 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
December 10th 2010 K.Murakami
- update codes for latest HEPMC version (2.06.03)
- change physics list from GGSP to QGSP_BERT
- update outputs
- update data/ directory for latest HEPMC version
June 4th 2010 J.Perl
- Updated vis usage
May 12th 2010 J.Allison
- Introduced GUIExecutive.
November, 22nd 2006 G.Cosmo
- Corrected GNUmakefile.
@@ -4,14 +4,12 @@ CLHEPINC := -I$(CLHEPD)/include
CLHEPLIB := -L$(CLHEPD)/lib -lCLHEP
# // HepMC
HEPMCD := /opt/heplib/HepMC/1.21
HEPMCINC := -I$(HEPMCD)
HEPMCLIB := -L$(HEPMCD) -lHepMC
#HEPMCLIB := $(HEPMCD)/libHepMC.so
HEPMCD := /opt/heplib/HepMC/2.06.03
HEPMCINC := -I$(HEPMCD)/include
HEPMCLIB := -L$(HEPMCD)/lib -lHepMC -lHepMCfio
# // CERN libraries
CLIBD := /cern/pro/lib
CLIB := -L$(CLIBD) -lpythia6
CLIB := $(shell cernlib -v pro pythia6205 pdflib804 mathlib) -lg2c
CXXFLAGS := $(CLHEPINC) $(HEPMCINC)
LOPT := -Wl,-rpath $(HEPMCD) $(HEPMCLIB) $(CLHEP) $(CLIB) -lg2c
@@ -47,7 +47,7 @@
#include <iostream>
#include "HepMC/PythiaWrapper.h"
#include "HepMC/IO_HEPEVT.h"
#include "HepMC/IO_Ascii.h"
#include "HepMC/IO_AsciiParticles.h"
#include "HepMC/GenEvent.h"
int main() {
@@ -88,7 +88,7 @@ int main() {
//
// Instantial an IO strategy to write the data to file - it uses the
// same ParticleDataTable
HepMC::IO_Ascii ascii_io("example_MyPythia.dat",std::ios::out);
HepMC::IO_AsciiParticles ascii_io("example_MyPythia.dat",std::ios::out);
//
//........................................EVENT LOOP
for ( int i = 1; i <= 10; i++ ) {
File diff suppressed because it is too large Load Diff
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: hepmcEx01.cc,v 1.5 2006/07/05 11:06:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: hepmcEx01.cc,v 1.7 2010/12/10 06:21:34 kmura Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
// --------------------------------------------------------------
@@ -34,11 +34,9 @@
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"
#include "ExN04DetectorConstruction.hh"
#include "QGSP.hh"
#include "QGSP_BERT.hh"
#include "ExN04PrimaryGeneratorAction.hh"
#include "ExN04RunAction.hh"
#include "ExN04EventAction.hh"
@@ -51,6 +49,10 @@
#include "G4VisExecutive.hh"
#endif
#ifdef G4UI_USE
#include "G4UIExecutive.hh"
#endif
int main(int argc,char** argv)
{
// User Verbose output class
@@ -67,15 +69,9 @@ int main(int argc,char** argv)
G4VUserDetectorConstruction* detector = new ExN04DetectorConstruction;
runManager->SetUserInitialization(detector);
//
G4VUserPhysicsList* physics = new QGSP;
G4VUserPhysicsList* physics = new QGSP_BERT;
runManager->SetUserInitialization(physics);
#ifdef G4VIS_USE
// Visualization, if you choose to have it!
G4VisManager* visManager = new G4VisExecutive;
visManager->Initialize();
#endif
runManager->Initialize();
// User Action classes
@@ -98,28 +94,32 @@ int main(int argc,char** argv)
G4UserSteppingAction* stepping_action = new ExN04SteppingAction;
runManager->SetUserAction(stepping_action);
#ifdef G4VIS_USE
// Visualization, if you choose to have it!
G4VisManager* visManager = new G4VisExecutive;
visManager->Initialize();
#endif
//get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
if(argc==1)
{
// G4UIterminal is a (dumb) terminal
//
#ifdef G4UI_USE_TCSH
G4UIsession* session = new G4UIterminal(new G4UItcsh);
#else
G4UIsession* session = new G4UIterminal();
#endif
UImanager->ApplyCommand("/control/execute vis.mac");
session->SessionStart();
delete session;
}
else // Batch mode
{
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
if (argc!=1) // batch mode
{
#ifdef G4VIS_USE
visManager->SetVerboseLevel("quiet");
#endif
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
else
{ // interactive mode : define UI session
#ifdef G4UI_USE
G4UIExecutive* ui = new G4UIExecutive(argc, argv);
ui->SessionStart();
delete ui;
#endif
}
// Free the store: user actions, physics_list and detector_description are
// owned and deleted by the run manager, so they should not
File diff suppressed because it is too large Load Diff
@@ -1,16 +1,17 @@
*************************************************************
Geant4 version Name: geant4-08-01-ref-00 (30-June-2006)
Geant4 version Name: geant4-09-04-ref-00 (17-December-2010)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
*************************************************************
<<< Geant4 Physics List engine packaging library: PACK 5.1
<<< Geant4 Physics List simulation engine: QGSP 3.1
<<< Geant4 Physics List engine packaging library: PACK 5.5
<<< Geant4 Physics List simulation engine: QGSP_BERT 3.4
Visualization Manager instantiating...
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
@@ -18,18 +19,20 @@ You have successfully registered the following graphics systems.
Current available graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
GAGTree (GAGTree)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
FukuiRenderer (DAWN)
OpenGLStoredX (OGL)
OpenGLImmediateX (OGLI)
OpenGLStoredX (OGLS)
OpenGLImmediateX (OGLIX)
OpenGLStoredX (OGLSX)
OpenGLImmediateXm (OGLIXm)
OpenGLStoredXm (OGLSXm)
OpenInventorXt (OIX)
OpenGLImmediateQt (OGLIQt)
OpenGLStoredQt (OGLSQt)
RayTracerX (RayTracerX)
VRML1 (VRML1)
VRML2 (VRML2)
@@ -42,17 +45,13 @@ Registered model factories:
drawByCharge
drawByParticleID
drawByOriginVolume
Registered models:
None
drawByAttribute
Registered filter factories:
chargeFilter
particleFilter
originVolumeFilter
Registered filters:
None
attributeFilter
current generator type: pythia
1
@@ -177,171 +176,363 @@ current generator type: pythia
********************** PYINIT: initialization completed **********************
phot: Total cross sections from Sandia parametrisation.
phot: for gamma SubType= 12
===== EM models for the G4Region DefaultRegionForTheWorld ======
PhotoElectric : Emin= 0 eV Emax= 10 TeV
compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV
Sampling according Klein-Nishina model
tables are built for gamma
Lambda tables from 100 eV to 100 GeV in 90 bins.
compt: for gamma SubType= 13
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 eV Emax= 10 TeV
conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z;
sampling secondary e+e- according to the Bethe-Heitler model
tables are built for gamma
Lambda tables from 1.022 MeV to 100 GeV in 100 bins.
conv: for gamma SubType= 14
Lambda tables from 1.022 MeV to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitler : Emin= 0 eV Emax= 10 TeV
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
msc: for e- SubType= 10
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc93 : Emin= 0 eV Emax= 10 TeV
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eIoni: for e- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 10 TeV
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eBrem: for e- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
LPM flag: 1 for E > 1 GeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBrem : Emin= 0 eV Emax= 1 GeV AngularGenUrban
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGenUrban
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eIoni: for e+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 10 TeV
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eBrem: for e+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
LPM flag: 1 for E > 1 GeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBrem : Emin= 0 eV Emax= 1 GeV AngularGenUrban
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGenUrban
annihil: Heilter model of formula of annihilation into 2 photons
tables are built for e+
Lambda tables from 100 eV to 100 TeV in 120 bins.
annihil: for e+ SubType= 5
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 10 TeV
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
msc: for proton SubType= 10
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc90 : Emin= 0 eV Emax= 10 TeV
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
hIoni: for proton SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 10 TeV
msc: Model variant of multiple scattering for GenericIon
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hBrems: for proton SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc90 : Emin= 0 eV Emax= 10 TeV
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
Stopping Power data for 17 ion/material pairs
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 10 TeV
muIoni: tables are built for mu+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below,
radiative corrections for E > 1 GeV
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
hIoni: for anti_proton SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 10 TeV
muBrems: tables are built for mu+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Parametrised model
msc: for kaon+ SubType= 10
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc90 : Emin= 0 eV Emax= 10 TeV
muPairProd: tables are built for mu+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Parametrised model
hIoni: for kaon+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 1.05231 MeV
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV
muIoni: tables are built for mu-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below,
radiative corrections for E > 1 GeV
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
hBrems: for kaon+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
muBrems: tables are built for mu-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Parametrised model
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
muPairProd: tables are built for mu-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Parametrised model
hIoni: for kaon- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 1.05231 MeV
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
hBrems: for kaon- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
muMsc: for mu+ SubType= 10
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 11.4592
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV
muIoni: for mu+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
muBrems: for mu+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 10 TeV
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for mu+ SubType= 1
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
11.4592 < Theta(degree) < 180, Eth(MeV)= 10; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
muIoni: for mu- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
muBrems: for mu- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 10 TeV
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for mu- SubType= 1
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
11.4592 < Theta(degree) < 180, Eth(MeV)= 10; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
hIoni: for pi+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 297.505 keV
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
hBrems: for pi+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for pi- SubType= 10
Lambda tables from 100 eV to 10 TeV in 77 bins, spline: 1
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc90 : Emin= 0 eV Emax= 10 TeV
hIoni: for pi- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 297.505 keV
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
hBrems: for pi- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
============================================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
Hadronic Processes for <anti_neutron>
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
AntiNeutronInelastic Models: G4LEAntiNeutronInelastic: Emin(GeV)= 0 Emax(GeV)= 25
G4HEAntiNeutronInelastic: Emin(GeV)= 20 Emax(GeV)= 100000
Hadronic Processes for <anti_proton>
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
AntiProtonInelastic Models: G4LEAntiProtonInelastic: Emin(GeV)= 0 Emax(GeV)= 25
G4HEAntiProtonInelastic: Emin(GeV)= 20 Emax(GeV)= 100000
Hadronic Processes for <e->
ElectroNuclear Models: CHIPS: Emin(GeV)= 0 Emax(GeV)= 30000
Hadronic Processes for <gamma>
PhotonInelastic Models: CHIPS: Emin(GeV)= 0 Emax(GeV)= 3.5
TheoFSGenerator: Emin(GeV)= 3 Emax(GeV)= 100000
Hadronic Processes for <kaon+>
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
KaonPlusInelastic Models: QGSP: Emin(GeV)= 12 Emax(GeV)= 100000
G4LEKaonPlusInelastic: Emin(GeV)= 9.5 Emax(GeV)= 25
Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 9.9
Hadronic Processes for <kaon->
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
KaonMinusInelastic Models: QGSP: Emin(GeV)= 12 Emax(GeV)= 100000
G4LEKaonMinusInelastic: Emin(GeV)= 9.5 Emax(GeV)= 25
Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 9.9
Hadronic Processes for <lambda>
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
LambdaInelastic Models: G4LELambdaInelastic: Emin(GeV)= 0 Emax(GeV)= 25
G4HELambdaInelastic: Emin(GeV)= 20 Emax(GeV)= 100000
Hadronic Processes for <mu->
muMinusCaptureAtRest
Hadronic Processes for <neutron>
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
NeutronInelastic Models: QGSP: Emin(GeV)= 12 Emax(GeV)= 100000
G4LENeutronInelastic: Emin(GeV)= 9.5 Emax(GeV)= 25
Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 9.9
nCapture Models: G4LCapture: Emin(GeV)= 0 Emax(GeV)= 20000
nFission Models: G4LFission: Emin(GeV)= 0 Emax(GeV)= 20000
Hadronic Processes for <pi+>
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
PionPlusInelastic Models: QGSP: Emin(GeV)= 12 Emax(GeV)= 100000
G4LEPionPlusInelastic: Emin(GeV)= 9.5 Emax(GeV)= 25
Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 9.9
Hadronic Processes for <pi->
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
PionMinusInelastic Models: QGSP: Emin(GeV)= 12 Emax(GeV)= 100000
G4LEPionMinusInelastic: Emin(GeV)= 9.5 Emax(GeV)= 25
Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 9.9
Hadronic Processes for <proton>
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
ProtonInelastic Models: QGSP: Emin(GeV)= 12 Emax(GeV)= 100000
G4LEProtonInelastic: Emin(GeV)= 9.5 Emax(GeV)= 25
Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 9.9
============================================================================================
### Run 0 start.
Stage 0->1 : 1 hits found in the muon chamber.
Stage 1->2 : 0 isolated muon found.
++++++++ event aborted
Stage 1->2 : 1 isolated muon found.
>>> Event 0
213 hits are stored in ExN04TrackerHitsCollection.
21 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 0.49951823 (GeV)
113 hits are stored in ExN04TrackerHitsCollection.
60 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.0056939629609 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
Stage 0->1 : 0 hits found in the muon chamber.
++++++++ event aborted
Stage 0->1 : 1 hits found in the muon chamber.
Stage 1->2 : 1 isolated muon found.
>>> Event 1
0 hits are stored in ExN04TrackerHitsCollection.
14 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 0.20789644 (GeV)
0 hits are stored in ExN04MuonHitsCollection.
195 hits are stored in ExN04TrackerHitsCollection.
83 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.1392749576813 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
Stage 0->1 : 1 hits found in the muon chamber.
Stage 1->2 : 1 isolated muon found.
>>> Event 2
129 hits are stored in ExN04TrackerHitsCollection.
45 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.808844 (GeV)
168 hits are stored in ExN04TrackerHitsCollection.
90 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.4249646122763 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
Stage 0->1 : 1 hits found in the muon chamber.
Stage 1->2 : 0 isolated muon found.
++++++++ event aborted
Stage 1->2 : 1 isolated muon found.
>>> Event 3
166 hits are stored in ExN04TrackerHitsCollection.
21 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 0.45672857 (GeV)
95 hits are stored in ExN04TrackerHitsCollection.
84 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.1816395689383 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
Stage 0->1 : 1 hits found in the muon chamber.
Stage 1->2 : 1 isolated muon found.
>>> Event 4
177 hits are stored in ExN04TrackerHitsCollection.
35 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 0.78347475 (GeV)
388 hits are stored in ExN04TrackerHitsCollection.
198 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 2.9995702701574 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
1********* PYSTAT: Statistics on Number of Events and Cross-sections *********
@@ -355,14 +546,12 @@ Stage 1->2 : 1 isolated muon found.
I I I I
==============================================================================
I I I I
I 0 All included subprocesses I 5 10 I 6.034E-12 I
I 102 g + g -> h0 I 2 4 I 2.874E-12 I
I 123 f + f' -> f + f' + h0 I 1 1 I 6.634E-13 I
I 124 f + f' -> f" + f"' + h0 I 2 5 I 2.497E-12 I
I 0 All included subprocesses I 5 17 I 4.146E-12 I
I 102 g + g -> h0 I 4 6 I 2.995E-12 I
I 123 f + f' -> f + f' + h0 I 0 3 I 4.272E-13 I
I 124 f + f' -> f" + f"' + h0 I 1 8 I 7.240E-13 I
I I I I
==============================================================================
********* Fraction of events that fail fragmentation cuts = 0.00000 *********
Graphics systems deleted.
Visualization Manager deleting...
@@ -26,21 +26,21 @@
// ====================================================================
//
// HepMCG4AsciiReader.hh
// $Id: HepMCG4AsciiReader.hh,v 1.3 2006/06/29 17:05:17 gunter Exp $
// $Id: HepMCG4AsciiReader.hh,v 1.4 2010/12/10 06:21:34 kmura Exp $
//
// ====================================================================
#ifndef HEPMC_G4_ASCII_READER_H
#define HEPMC_G4_ASCII_READER_H
#include "HepMCG4Interface.hh"
#include "HepMC/IO_Ascii.h"
#include "HepMC/IO_AsciiParticles.h"
class HepMCG4AsciiReaderMessenger;
class HepMCG4AsciiReader : public HepMCG4Interface {
protected:
G4String filename;
HepMC::IO_Ascii* asciiInput;
HepMC::IO_AsciiParticles* asciiInput;
G4int verbose;
HepMCG4AsciiReaderMessenger* messenger;
@@ -34,9 +34,6 @@
#include "G4EventManager.hh"
#include "G4HCofThisEvent.hh"
#include "G4VHitsCollection.hh"
#include "G4TrajectoryContainer.hh"
#include "G4Trajectory.hh"
#include "G4VVisManager.hh"
#include "G4SDManager.hh"
#include "G4UImanager.hh"
#include "G4ios.hh"
@@ -26,7 +26,7 @@
// ====================================================================
//
// HepMCG4AsciiReader.cc
// $Id: HepMCG4AsciiReader.cc,v 1.5 2006/06/29 17:06:37 gunter Exp $
// $Id: HepMCG4AsciiReader.cc,v 1.6 2010/12/10 06:21:34 kmura Exp $
//
// ====================================================================
#include "HepMCG4AsciiReader.hh"
@@ -40,7 +40,7 @@ HepMCG4AsciiReader::HepMCG4AsciiReader()
: filename("xxx.dat"), verbose(0)
////////////////////////////////////////
{
asciiInput= new HepMC::IO_Ascii(filename.c_str(), std::ios::in);
asciiInput= new HepMC::IO_AsciiParticles(filename.c_str(), std::ios::in);
messenger= new HepMCG4AsciiReaderMessenger(this);
}
@@ -59,7 +59,7 @@ void HepMCG4AsciiReader::Initialize()
{
delete asciiInput;
asciiInput= new HepMC::IO_Ascii(filename.c_str(), std::ios::in);
asciiInput= new HepMC::IO_AsciiParticles(filename.c_str(), std::ios::in);
asciiInput-> print();
}
@@ -26,7 +26,7 @@
// ====================================================================
//
// HepMCG4Interface.cc
// $Id: HepMCG4Interface.cc,v 1.3 2006/06/29 17:06:41 gunter Exp $
// $Id: HepMCG4Interface.cc,v 1.4 2010/12/10 06:21:34 kmura Exp $
//
// ====================================================================
#include "HepMCG4Interface.hh"
@@ -90,7 +90,8 @@ void HepMCG4Interface::HepMC2G4(const HepMC::GenEvent* hepmcevt,
if (!qvtx) continue;
// check world boundary
G4LorentzVector xvtx= (*vitr)-> position();
HepMC::FourVector pos= (*vitr)-> position();
G4LorentzVector xvtx(pos.x(), pos.y(), pos.z(), pos.t());
if (! CheckVertexInsideWorld(xvtx.vect()*mm)) continue;
// create G4PrimaryVertex and associated G4PrimaryParticles
@@ -105,7 +106,8 @@ void HepMCG4Interface::HepMC2G4(const HepMC::GenEvent* hepmcevt,
if( (*vpitr)->status() != 1 ) continue;
G4int pdgcode= (*vpitr)-> pdg_id();
G4LorentzVector p= (*vpitr)-> momentum();
pos= (*vpitr)-> momentum();
G4LorentzVector p(pos.px(), pos.py(), pos.pz(), pos.e());
G4PrimaryParticle* g4prim=
new G4PrimaryParticle(pdgcode, p.x()*GeV, p.y()*GeV, p.z()*GeV);
@@ -26,7 +26,7 @@
// ====================================================================
//
// HepMCG4PythiaInterface.cc
// $Id: HepMCG4PythiaInterface.cc,v 1.5 2006/07/05 11:06:36 gcosmo Exp $
// $Id: HepMCG4PythiaInterface.cc,v 1.6 2010/12/10 06:21:34 kmura Exp $
//
// ====================================================================
@@ -36,7 +36,7 @@
#include "HepMCG4PythiaMessenger.hh"
#include "HepMC/GenEvent.h"
#include "HepMC/PythiaWrapper6_152.h"
#include "HepMC/PythiaWrapper6_4.h"
// additional pythia calls
#define pygive pygive_
@@ -7,35 +7,73 @@
/control/verbose 2
/run/verbose 2
#
# create empty scene
# Use this open statement to create an OpenGL view:
/vis/open OGL 600x600-0+0
#
/vis/scene/create
# Use this open statement to create a .prim file suitable for
# viewing in DAWN:
#/vis/open DAWNFILE
#
# Create a scene handler for a specific graphics system
# (Edit the next line(s) to choose another graphic system)
# Use this open statement to create a .heprep file suitable for
# viewing in HepRApp:
#/vis/open HepRepFile
#
/vis/open OGLIX
# Use this open statement to create a .wrl file suitable for
# viewing in a VRML viewer:
#/vis/open VRML2FILE
#
####/vis/open DAWNFILE
# Disable auto refresh and quieten vis messages whilst scene and
# trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#
# draw scene
# Draw geometry:
/vis/drawVolume
#
/vis/viewer/set/viewpointThetaPhi 90 180 deg
# Specify view angle:
/vis/viewer/set/viewpointThetaPhi 90. 180.
#
# Specify zoom value:
/vis/viewer/zoom 1.4
/vis/viewer/flush
#
# for drawing the tracks
# Draw trajectories at end of event, showing trajectory points as
# markers of size 2 pixels
/vis/scene/add/trajectories
# Specify style (surface or wireframe):
#/vis/viewer/set/style wireframe
#
# Draw coordinate axes:
#/vis/scene/add/axes 0 0 0 1 m
#
# Draw smooth trajectories at end of event, showing trajectory points
# as markers 2 pixels wide:
/vis/scene/add/trajectories smooth
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
# (if too many tracks cause core dump => storeTrajectory 0)
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
#
# Draw hits at end of event:
#/vis/scene/add/hits
#
# To draw only gammas:
#/vis/filtering/trajectories/create/particleFilter
#/vis/filtering/trajectories/particleFilter-0/add gamma
#
# To invert the above, drawing all particles except gammas,
# keep the above two lines but also add:
#/vis/filtering/trajectories/particleFilter-0/invert true
#
# Many other options are available with /vis/modeling and /vis/filtering.
# For example, to select colour by particle ID:
#/vis/modeling/trajectories/create/drawByParticleID
#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
#
# To superimpose all of the events from a given run:
/vis/scene/endOfEventAction accumulate
#
# Refresh ready for run
/vis/viewer/refresh
# Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#
# For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
#
# Now ready for /run/beamOn.
@@ -1,4 +1,4 @@
$Id: History,v 1.8 2006/11/22 15:09:07 gcosmo Exp $
$Id: History,v 1.11 2010/12/10 06:22:25 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,19 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
December 10th 2010 K.Murakami
- change physics list from GGSP to QGSP_BERT
- update outputs
- update data/ directory for latest HEPMC version
Nov 2, 2010 J.Allison
- hepmcEx02.cc: Removed #include "G4UIterminal.hh" and #include "G4UItcsh.hh".
May 24, 2010 K.Murakami
- use QGSP physics list instead of old flag physics list
- introduce G4UIExective
- modify for HepMC ver.2 (2.06.00)
Nov, 22nd, 2006 G.Cosmo
- Corrected GNUmakefile.
@@ -1,4 +1,4 @@
$Id: README,v 1.1 2002/05/28 14:20:36 murakami Exp $
$Id: README,v 1.2 2010/05/24 05:32:50 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -33,8 +33,7 @@ in every event.
3. Physics List
Full set of "ordinary" physics processes, which is the same one as
ExN04PhysicsList.
QGSP predefined physics list
4. User actions
@@ -4,14 +4,12 @@ CLHEPINC := -I$(CLHEPD)/include
CLHEPLIB := -L$(CLHEPD)/lib -lCLHEP
# // HepMC
HEPMCD := /opt/heplib/HepMC/1.21
HEPMCINC := -I$(HEPMCD)
HEPMCLIB := -L$(HEPMCD) -lHepMC
#HEPMCLIB := $(HEPMCD)/libHepMC.so
HEPMCD := /opt/heplib/HepMC/2.06.03
HEPMCINC := -I$(HEPMCD)/include
HEPMCLIB := -L$(HEPMCD)/lib -lHepMC -lHepMCfio
# // CERN libraries
CLIBD := /cern/pro/lib
CLIB := -L$(CLIBD) -lpythia6
CLIB := $(shell cernlib -v pro pythia6205 pdflib804 mathlib) -lg2c
CXXFLAGS := $(CLHEPINC) $(HEPMCINC)
LOPT := -Wl,-rpath $(HEPMCD) $(HEPMCLIB) $(CLHEP) $(CLIB) -lg2c
@@ -47,7 +47,7 @@
#include <iostream>
#include "HepMC/PythiaWrapper.h"
#include "HepMC/IO_HEPEVT.h"
#include "HepMC/IO_Ascii.h"
#include "HepMC/IO_AsciiParticles.h"
#include "HepMC/GenEvent.h"
int main() {
@@ -88,7 +88,7 @@ int main() {
//
// Instantial an IO strategy to write the data to file - it uses the
// same ParticleDataTable
HepMC::IO_Ascii ascii_io("example_MyPythia.dat",std::ios::out);
HepMC::IO_AsciiParticles ascii_io("example_MyPythia.dat",std::ios::out);
//
//........................................EVENT LOOP
for ( int i = 1; i <= 10; i++ ) {
File diff suppressed because it is too large Load Diff
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: hepmcEx02.cc,v 1.5 2006/07/05 12:04:07 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: hepmcEx02.cc,v 1.8 2010/12/10 06:22:25 kmura Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
// --------------------------------------------------------------
@@ -34,11 +34,9 @@
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"
#include "H02DetectorConstruction.hh"
#include "H02PhysicsList.hh"
#include "QGSP_BERT.hh"
#include "H02PrimaryGeneratorAction.hh"
#include "H02EventAction.hh"
#include "H02SteppingAction.hh"
@@ -47,6 +45,10 @@
#include "G4VisExecutive.hh"
#endif
#ifdef G4UI_USE
#include "G4UIExecutive.hh"
#endif
int main(int argc, char** argv)
{
G4RunManager* runManager= new G4RunManager;
@@ -56,7 +58,7 @@ int main(int argc, char** argv)
G4VUserDetectorConstruction* detector = new H02DetectorConstruction;
runManager-> SetUserInitialization(detector);
//
G4VUserPhysicsList* physics = new H02PhysicsList;
G4VUserPhysicsList* physics = new QGSP_BERT;
runManager-> SetUserInitialization(physics);
runManager-> Initialize();
@@ -80,27 +82,22 @@ int main(int argc, char** argv)
G4cout << G4endl;
#endif
if(argc==1) // G4UIterminal is a (dumb) terminal
{
#ifdef QERAUOY
G4UItcsh* tcsh= new
G4UItcsh("hepmcEx02(%s)[%/]:");
G4UIterminal* session= new G4UIterminal(tcsh);
tcsh-> SetLsColor(RED, GREEN);
#else
G4UItcsh* tcsh= new G4UItcsh("hepmcEx01(%s)[%/]:");
G4UIterminal* session= new G4UIterminal(tcsh);
#endif
session->SessionStart();
delete session;
//get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
}
else // Batch mode
{
G4UImanager* UImanager= G4UImanager::GetUIpointer();
G4String command= "/control/execute ";
G4String fileName= argv[1];
UImanager-> ApplyCommand(command+fileName);
if (argc!=1) { // batch mode
#ifdef G4VIS_USE
visManager-> SetVerboseLevel("quiet");
#endif
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager-> ApplyCommand(command+fileName);
} else { // interactive mode : define UI session
#ifdef G4UI_USE
G4UIExecutive* ui = new G4UIExecutive(argc, argv);
ui-> SessionStart();
delete ui;
#endif
}
// Free the store: user actions, physics_list and detector_description are
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -26,21 +26,21 @@
// ====================================================================
//
// HepMCG4AsciiReader.hh
// $Id: HepMCG4AsciiReader.hh,v 1.4 2006/06/29 17:10:08 gunter Exp $
// $Id: HepMCG4AsciiReader.hh,v 1.5 2010/05/24 05:31:10 kmura Exp $
//
// ====================================================================
#ifndef HEPMC_G4_ASCII_READER_H
#define HEPMC_G4_ASCII_READER_H
#include "HepMCG4Interface.hh"
#include "HepMC/IO_Ascii.h"
#include "HepMC/IO_AsciiParticles.h"
class HepMCG4AsciiReaderMessenger;
class HepMCG4AsciiReader : public HepMCG4Interface {
protected:
G4String filename;
HepMC::IO_Ascii* asciiInput;
HepMC::IO_AsciiParticles* asciiInput;
G4int verbose;
HepMCG4AsciiReaderMessenger* messenger;
@@ -1,242 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: H02PhysicsList.cc,v 1.5 2006/07/05 12:04:13 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "globals.hh"
#include "H02PhysicsList.hh"
#include "G4ProcessManager.hh"
#include "G4ParticleTypes.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
H02PhysicsList::H02PhysicsList(): G4VUserPhysicsList()
{
defaultCutValue = 1.0*cm;
SetVerboseLevel(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
H02PhysicsList::~H02PhysicsList()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
ConstructBosons();
ConstructLeptons();
ConstructMesons();
ConstructBaryons();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructBosons()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructLeptons()
{
// leptons
// e+/-
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
// mu+/-
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
// nu_e
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
// nu_mu
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructMesons()
{
// mesons
// light mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
G4Eta::EtaDefinition();
G4EtaPrime::EtaPrimeDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
G4KaonZero::KaonZeroDefinition();
G4AntiKaonZero::AntiKaonZeroDefinition();
G4KaonZeroLong::KaonZeroLongDefinition();
G4KaonZeroShort::KaonZeroShortDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructBaryons()
{
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructProcess()
{
AddTransportation();
ConstructEM();
ConstructGeneral();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
#include "G4StepLimiter.hh"
#include "G4UserSpecialCuts.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::ConstructEM()
{
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
pmanager->AddDiscreteProcess(new G4ComptonScattering);
pmanager->AddDiscreteProcess(new G4GammaConversion);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4hIonisation, -1, 2,2);
//step limit
pmanager->AddProcess(new G4StepLimiter, -1,-1,3);
///pmanager->AddProcess(new G4UserSpecialCuts, -1,-1,4);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4Decay.hh"
void H02PhysicsList::ConstructGeneral()
{
// Add Decay Process
G4Decay* theDecayProcess = new G4Decay();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle)) {
pmanager ->AddProcess(theDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void H02PhysicsList::SetCuts()
{
//G4VUserPhysicsList::SetCutsWithDefault method sets
//the default cut value for all particle types
//
SetCutsWithDefault();
if (verboseLevel>0) DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -26,7 +26,7 @@
// ====================================================================
//
// HepMCG4AsciiReader.cc
// $Id: HepMCG4AsciiReader.cc,v 1.5 2006/06/29 17:12:09 gunter Exp $
// $Id: HepMCG4AsciiReader.cc,v 1.6 2010/05/24 05:29:44 kmura Exp $
//
// ====================================================================
#include "HepMCG4AsciiReader.hh"
@@ -40,7 +40,7 @@ HepMCG4AsciiReader::HepMCG4AsciiReader()
: filename("xxx.dat"), verbose(0)
////////////////////////////////////////
{
asciiInput= new HepMC::IO_Ascii(filename.c_str(), std::ios::in);
asciiInput= new HepMC::IO_AsciiParticles(filename.c_str(), std::ios::in);
messenger= new HepMCG4AsciiReaderMessenger(this);
}
@@ -59,7 +59,7 @@ void HepMCG4AsciiReader::Initialize()
{
delete asciiInput;
asciiInput= new HepMC::IO_Ascii(filename.c_str(), std::ios::in);
asciiInput= new HepMC::IO_AsciiParticles(filename.c_str(), std::ios::in);
asciiInput-> print();
}
@@ -26,7 +26,7 @@
// ====================================================================
//
// HepMCG4Interface.cc
// $Id: HepMCG4Interface.cc,v 1.4 2006/06/29 17:12:24 gunter Exp $
// $Id: HepMCG4Interface.cc,v 1.5 2010/05/24 05:29:44 kmura Exp $
//
// ====================================================================
#include "HepMCG4Interface.hh"
@@ -90,7 +90,8 @@ void HepMCG4Interface::HepMC2G4(const HepMC::GenEvent* hepmcevt,
if (!qvtx) continue;
// check world boundary
G4LorentzVector xvtx= (*vitr)-> position();
HepMC::FourVector pos= (*vitr)-> position();
G4LorentzVector xvtx(pos.x(), pos.y(), pos.z(), pos.t());
if (! CheckVertexInsideWorld(xvtx.vect()*mm)) continue;
// create G4PrimaryVertex and associated G4PrimaryParticles
@@ -105,7 +106,8 @@ void HepMCG4Interface::HepMC2G4(const HepMC::GenEvent* hepmcevt,
if( (*vpitr)->status() != 1 ) continue;
G4int pdgcode= (*vpitr)-> pdg_id();
G4LorentzVector p= (*vpitr)-> momentum();
pos= (*vpitr)-> momentum();
G4LorentzVector p(pos.px(), pos.py(), pos.pz(), pos.e());
G4PrimaryParticle* g4prim=
new G4PrimaryParticle(pdgcode, p.x()*GeV, p.y()*GeV, p.z()*GeV);
@@ -26,7 +26,7 @@
// ====================================================================
//
// HepMCG4PythiaInterface.cc
// $Id: HepMCG4PythiaInterface.cc,v 1.6 2006/07/05 12:04:13 gcosmo Exp $
// $Id: HepMCG4PythiaInterface.cc,v 1.7 2010/05/24 05:29:44 kmura Exp $
//
// ====================================================================
@@ -36,7 +36,7 @@
#include "HepMCG4PythiaMessenger.hh"
#include "HepMC/GenEvent.h"
#include "HepMC/PythiaWrapper6_152.h"
#include "HepMC/PythiaWrapper6_4.h"
// additional pythia calls
#define pygive pygive_
@@ -1,5 +1,5 @@
#
# Macro file for the initialization phase
# Macro file for the initialization phase of "exampleN02.cc"
# when runing in interactive mode
#
# Sets some default verbose
@@ -7,26 +7,73 @@
/control/verbose 2
/run/verbose 2
#
# create empty scene
# Use this open statement to create an OpenGL view:
/vis/open OGL 600x600-0+0
#
/vis/scene/create
# Use this open statement to create a .prim file suitable for
# viewing in DAWN:
#/vis/open DAWNFILE
#
# Create a scene handler for a specific graphics system
# (Edit the next line(s) to choose another graphic system)
# Use this open statement to create a .heprep file suitable for
# viewing in HepRApp:
#/vis/open HepRepFile
#
/vis/open OGLIX
# Use this open statement to create a .wrl file suitable for
# viewing in a VRML viewer:
#/vis/open VRML2FILE
#
####/vis/open DAWNFILE
# Disable auto refresh and quieten vis messages whilst scene and
# trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#
# draw scene
# Draw geometry:
/vis/drawVolume
#
/vis/viewer/set/viewpointThetaPhi 90 180 deg
# Specify view angle:
/vis/viewer/set/viewpointThetaPhi 90. 180.
#
# Specify zoom value:
/vis/viewer/zoom 1.4
/vis/viewer/flush
#
# for drawing the tracks
# (if too many tracks cause core dump => storeTrajectory 0)
/tracking/storeTrajectory 1
/vis/scene/add/trajectories
# Specify style (surface or wireframe):
#/vis/viewer/set/style wireframe
#
# Draw coordinate axes:
#/vis/scene/add/axes 0 0 0 1 m
#
# Draw smooth trajectories at end of event, showing trajectory points
# as markers 2 pixels wide:
/vis/scene/add/trajectories smooth
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
#
# Draw hits at end of event:
#/vis/scene/add/hits
#
# To draw only gammas:
#/vis/filtering/trajectories/create/particleFilter
#/vis/filtering/trajectories/particleFilter-0/add gamma
#
# To invert the above, drawing all particles except gammas,
# keep the above two lines but also add:
#/vis/filtering/trajectories/particleFilter-0/invert true
#
# Many other options are available with /vis/modeling and /vis/filtering.
# For example, to select colour by particle ID:
#/vis/modeling/trajectories/create/drawByParticleID
#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
#
# To superimpose all of the events from a given run:
/vis/scene/endOfEventAction accumulate
#
# Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#
# For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
#
# Now ready for /run/beamOn.
+17 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.18 2006/11/22 15:09:43 gcosmo Exp $
$Id: History,v 1.22 2010/12/10 06:23:16 kmura Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,22 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
December 10th 2010 K.Murakami (exHepMC-V09-03-03)
- HepMCEx01: update for latest HepMC version (2.06.03)
- HepMCEx01/02 : use QGSP_BERT physics list
update outputs
update data/ directory for latest HepMC
June 4, 2010 J. Perl (exHepMC-V09-03-02)
May 24, 2010 K. Murakami (exHepMC-V09-03-01)
- HepMCEx02: Introdiced G4UIExecutive.
update for latest HepMC (2.06.00)
use QGSP physics list
May 12, 2010 J.Allison (exHepMC-V09-03-00)
- HepMCEx01: Introduced GUIExecutive.
Nov 22, 2006 G.Cosmo (exHepMC-V08-01-05)
- Added new example 'MCTruth' showing handling of MC truth information
through the HepMC package (W.Pokorski).
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.1 2006/11/22 14:51:26 gcosmo Exp $
# $Id: GNUmakefile,v 1.2 2010/12/02 15:37:20 witoldp Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module.
# --------------------------------------------------------------
@@ -21,5 +21,5 @@ all: lib bin
else
all:
@echo 'ERROR - HEPMC_DIR not defined in the environment !'
@echo ' Requires HepMC release 1.27.'
@echo ' Tested with HepMC release 2.06.03.'
endif
@@ -1,4 +1,4 @@
$Id: History,v 1.1 2006/11/22 14:51:26 gcosmo Exp $
$Id: History,v 1.4 2010/12/03 12:51:29 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,5 +15,9 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
22 November 2006 G.Cosmo (mctruth-V08-01-00)
2 December 2010 W.Pokorski (mctruthex-V09-03-00)
- Updated to use HepMC-2.06.03; reviewd use of 4-vectors.
- Migrated to use particle-based multiple-scattering.
22 November 2006 G.Cosmo
- Created from original example provided by W.Pokorski.
@@ -1,4 +1,4 @@
$Id: README,v 1.1 2006/11/22 14:51:26 gcosmo Exp $
$Id: README,v 1.2 2010/12/02 15:37:20 witoldp Exp $
-------------------------------------------------------------------
=========================================================
@@ -19,7 +19,7 @@ MCTruthConfig class.
HOW TO BUILD THE EXAMPLE ?
- install HepMC event record (version 1.27)
- install HepMC event record (version 2.06.03)
- set HEPMC_DIR variable to point to the directory where HepMC is installed;
add the path "$HEPMC_DIR/lib" to your LD_LIBRARY_PATH variable.
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: MCTruthManager.cc,v 1.2 2006/12/13 15:42:36 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: MCTruthManager.cc,v 1.4 2010/12/15 07:38:50 gunter Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
// --------------------------------------------------------------
@@ -95,7 +95,8 @@ void MCTruthManager::AddParticle(G4LorentzVector& momentum,
// we first check whether the mother's end vertex corresponds to the particle's
// production vertex
HepMC::GenVertex* motherendvtx = mother->end_vertex();
G4LorentzVector motherendpos = motherendvtx->position();
HepMC::FourVector mp0 = motherendvtx->position();
G4LorentzVector motherendpos(mp0.x(), mp0.y(), mp0.z(), mp0.t());
if( motherendpos.x() == prodpos.x() &&
motherendpos.y() == prodpos.y() &&
@@ -118,7 +119,8 @@ void MCTruthManager::AddParticle(G4LorentzVector& momentum,
{
if((*it)->pdg_id()==-999999)
{
G4LorentzVector dummypos = (*it)->end_vertex()->position();
HepMC::FourVector dp0 = (*it)->end_vertex()->position();
G4LorentzVector dummypos(dp0.x(), dp0.y(), dp0.z(), dp0.t());;
if( dummypos.x() == prodpos.x() &&
dummypos.y() == prodpos.y() &&
@@ -259,7 +261,11 @@ void MCTruthManager::printTree(HepMC::GenParticle* particle, G4String offset)
{
G4cout << offset << "--- barcode: " << particle->barcode() << " pdg: "
<< particle->pdg_id() << " energy: " << particle->momentum().e()
<< " production vertex: "<< particle->production_vertex()->position()
<< " production vertex: "
<< particle->production_vertex()->position().x() << ", "
<< particle->production_vertex()->position().y() << ", "
<< particle->production_vertex()->position().z() << ", "
<< particle->production_vertex()->position().t()
<< G4endl;
for(HepMC::GenVertex::particles_out_const_iterator
@@ -269,7 +275,9 @@ void MCTruthManager::printTree(HepMC::GenParticle* particle, G4String offset)
{
G4String deltaoffset = "";
if( std::fmod((*it)->barcode(),10000000) != std::fmod(particle->barcode(),10000000) )
G4int curr = std::fmod((*it)->barcode(),10000000);
G4int part = std::fmod(particle->barcode(),10000000);
if( curr != part )
{
deltaoffset = " | ";
}
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: PhysicsList.cc,v 1.1 2006/11/22 14:51:30 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: PhysicsList.cc,v 1.2 2010/12/02 15:37:20 witoldp Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
// --------------------------------------------------------------
@@ -129,16 +129,17 @@ void PhysicsList::ConstructProcess()
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuMultipleScattering.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hMultipleScattering.hh"
#include "G4hIonisation.hh"
#include "G4StepLimiter.hh"
@@ -160,13 +161,13 @@ void PhysicsList::ConstructEM()
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4eMultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4eMultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
@@ -174,7 +175,7 @@ void PhysicsList::ConstructEM()
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuMultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
@@ -183,7 +184,7 @@ void PhysicsList::ConstructEM()
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4hIonisation, -1, 2,2);
//step limit
pmanager->AddProcess(new G4StepLimiter, -1,-1,3);
@@ -9,9 +9,8 @@ It also include an example for demonstrating MC truth handling with HepMC.
Requirements for external software packages
-------------------------------------------
HepMC:
tested version : 1.27.02
http://lcgapp.cern.ch/project/spi/extsoft/packages.php?pkg=HepMC
http://cern.ch/mdobbs/HepMC/
tested version : 2.06.03
http://lcgapp.cern.ch/project/simu/HepMC/
Note: examples were tested only on Linux with gcc.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.5 2008/12/02 21:42:48 flei Exp $
# $Id: GNUmakefile,v 1.6 2010/01/11 16:33:59 gcosmo Exp $
# --------------------------------------------------------------
# GNUmakefile for tests module. Gabriele Cosmo, 27/06/98.
# --------------------------------------------------------------
@@ -8,15 +8,10 @@ G4TARGET := $(name)
G4EXLIB := true
ifndef G4INSTALL
G4INSTALL = ../../..
G4INSTALL = ../../../..
endif
.PHONY: all
all: lib bin
include $(G4INSTALL)/config/binmake.gmk
#G4VIS_BUILD_OPENGLX_DRIVER = 0
#G4VIS_USE_OPENGLX = 0
#LDFLAGS += -static
@@ -11,6 +11,30 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
10/11/2010 - F.Lei (exgps-V09-03-05)
- Added extra tests in the macros directory
test35,36,37 for automatic energy biasing
test38 for import energy spectrum in ascii file
- Changed all test*.g4mac files to produced .root rather than .aida files
- Added plotfiles.py and plotall.py and plottest35.C for plotting the results
using pyRoot and Root.
09/11/2010 - J.Allison (exgps-V09-03-04)
- Removed #include G4UIXm.hh (causes conflict with G4UIExecutive.hh)
22/10/2010 - G.Folger (exgps-V09-03-03)
- Correct exgps_batch.in removing Vis
18/10/2010 - G.Folger (exgps-V09-03-02)
- Fix compilation warning; occurs only if G4ANALYSIS_USE not set
- add exgps_batch.in, a copy of exgpgs.in without /analysis commands
03/06/2010 - J.Perl (exgps-V09-03-01)
- Updated vis usage
12/05/2010 J.Allison (exgps-V09-03-00)
- Introduced GUIExecutive.
08/12/2008 G.Barrand
- correct / compleete the part concerning AIDA in the README file.
@@ -34,7 +34,7 @@
5. VISUALIZATION:
Visualisation of the geometry and the tracks is possible with many of the G4 visualisation packages. An
example of displaying the geometry and tracks using VRML is given in the macro file display_vrml.mac.
example of displaying the geometry and tracks using VRML is given in the macro file vis.mac.
6. ANALYSIS:
@@ -1,12 +0,0 @@
/vis/scene/create
/vis/open VRML2FILE
/vis/viewer/reset
/vis/viewer/zoom 1.
/vis/viewer/set/style wireframe
/vis/drawVolume
/vis/scene/endOfEventAction accumulate
/tracking/storeTrajectory 1
#
# Flush visualization
#/vis/viewer/update
+19 -35
View File
@@ -25,12 +25,6 @@
//
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"
#ifdef G4UI_USE_XM
#include "G4UIXm.hh"
#endif
#ifdef G4ANALYSIS_USE
#include "exGPSAnalysisManager.hh"
@@ -40,6 +34,10 @@
#include "G4VisExecutive.hh"
#endif
#ifdef G4UI_USE
#include "G4UIExecutive.hh"
#endif
#include "exGPSGeometryConstruction.hh"
#include "exGPSPhysicsList.hh"
#include "exGPSPrimaryGeneratorAction.hh"
@@ -71,48 +69,34 @@ int main(int argc,char** argv) {
runManager->SetUserAction(runAction);
runManager->SetUserAction(eventAction);
G4UIsession* session=0;
if (argc==1) // Define UI session for interactive mode.
{
// G4UIterminal is a (dumb) terminal.
#ifdef G4UI_USE_XM
session = new G4UIXm(argc,argv);
#else
#ifdef G4UI_USE_TCSH
session = new G4UIterminal(new G4UItcsh);
#else
session = new G4UIterminal();
#endif
#endif
}
//Initialize G4 kernel
runManager->Initialize();
// visualization manager
#ifdef G4VIS_USE
G4VisManager* visManager = new G4VisExecutive;
visManager->Initialize();
#endif
//Initialize G4 kernel
runManager->Initialize();
// get the pointer to the User Interface manager
G4UImanager* UI = G4UImanager::GetUIpointer();
G4UImanager* UImanager = G4UImanager::GetUIpointer();
// UI->ApplyCommand("/control/execute display.mac");
if (session) // Define UI session for interactive mode.
if (argc!=1) // batch mode
{
// G4UIterminal is a (dumb) terminal.
session->SessionStart();
delete session;
}
else // Batch mode
{
G4String command = "/control/execute ";
G4String fileName = argv[1];
UI->ApplyCommand(command+fileName);
UImanager->ApplyCommand(command+fileName);
}
else
{ // interactive mode : define UI session
#ifdef G4UI_USE
G4UIExecutive* ui = new G4UIExecutive(argc, argv);
ui->SessionStart();
delete ui;
#endif
}
// job termination
#ifdef G4ANALYSIS_USE
@@ -34,7 +34,7 @@
/event/printModulo 1000
#/tracking/verbose 1
#
/control/execute display_vrml.mac
/control/execute macros/display.mac
#
/run/beamOn 2000
@@ -0,0 +1,40 @@
# focused beam
#
/gps/verbose 0
/gps/particle geantino
#
# the incident surface is in the y-z plane
/gps/pos/type Plane
/gps/pos/rot1 0 1 0
/gps/pos/rot2 0 0 1
#
# the incident surface is a disc of 10 cm
/gps/pos/shape Circle
/gps/pos/centre -10. 0. 0. cm
/gps/pos/radius 10. cm
# set the focusing point, default is (0, 0, 0)
/gps/ang/type focused
/gps/ang/focuspoint 10 -5 0 cm
#
# the beam energy is in gaussian profile centered at 400 MeV
/gps/ene/type Gauss
/gps/ene/mono 400 MeV
/gps/ene/sigma 50. MeV
#
# commands below are independent of gps
#
#/analysis/filename exgps.root
#/analysis/filetype root
#/analysis/maxeng 800 MeV
#/analysis/mineng 200 MeV
#/analysis/maxpos 10 cm
#/analysis/minpos -10 cm
/event/printModulo 1000
#/tracking/verbose 1
#
#/control/execute macros/display.mac
#
/run/beamOn 2000
@@ -140,3 +140,21 @@ Focused angular distribution.
test34.g4mac
------------
Two simultaneous sources, both fired at the same time.
test35.g4mac
------------
automatic biasing of the energy distribution sampling, original in power-law
test36.g4mac
------------
automatic biasing of the energy distribution sampling, original in arbitrary data points
test37.g4mac
------------
automatic biasing of the energy distribution sampling, original in exponetial form
test38.g4mac
------------
arbitrary energy distribution, defined using the ascii (spectrum.dat) file input.
@@ -1,12 +1,68 @@
# Use this open statement to create an OpenGL view:
#/vis/open OGL 600x600-0+0
#
/vis/scene/create
/vis/sceneHandler/create VRML2FILE
/vis/viewer/create
# Use this open statement to create a .prim file suitable for
# viewing in DAWN:
#/vis/open DAWNFILE
#
# Use this open statement to create a .heprep file suitable for
# viewing in HepRApp:
#/vis/open HepRepFile
#
# Use this open statement to create a .wrl file suitable for
# viewing in a VRML viewer:
/vis/open VRML2FILE
#
# Disable auto refresh and quieten vis messages whilst scene and
# trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#
# Draw geometry:
/vis/drawVolume
#/vis/viewer/viewpointThetaPhi 30 30
#/vis/viewer/update
/vis/scene/endOfEventAction accumulate
/tracking/storeTrajectory 1
#
# Specify view angle:
#/vis/viewer/set/viewpointThetaPhi 90. 0.
#
# Specify zoom value:
#/vis/viewer/zoom 2.
#
# Specify style (surface or wireframe):
#/vis/viewer/set/style wireframe
#
# Draw coordinate axes:
#/vis/scene/add/axes 0 0 0 1 m
#
# Draw smooth trajectories at end of event, showing trajectory points
# as markers 2 pixels wide:
/vis/scene/add/trajectories smooth
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
#
# Draw hits at end of event:
#/vis/scene/add/hits
#
# To draw only gammas:
#/vis/filtering/trajectories/create/particleFilter
#/vis/filtering/trajectories/particleFilter-0/add gamma
#
# To invert the above, drawing all particles except gammas,
# keep the above two lines but also add:
#/vis/filtering/trajectories/particleFilter-0/invert true
#
# Many other options are available with /vis/modeling and /vis/filtering.
# For example, to select colour by particle ID:
#/vis/modeling/trajectories/create/drawByParticleID
#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
#
# To superimpose all of the events from a given run:
#/vis/scene/endOfEventAction accumulate
#
# Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#
# For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
@@ -1,10 +0,0 @@
/vis/scene/create
/vis/open DAWNFILE
/vis/viewer/reset
/vis/viewer/zoom 1.
/visviewer/set/style wireframe
/vis/drawVolume
/vis/viewer/update
/tracking/storeTrajectory 1
@@ -1,9 +0,0 @@
/vis/scene/create
/vis/open VRML2FILE
/vis/viewer/reset
/vis/viewer/zoom 1.
/vis/viewer/set/style wireframe
/vis/drawVolume
/vis/scene/endOfEventAction accumulate
/tracking/storeTrajectory 1
@@ -0,0 +1,11 @@
#!/usr/bin/python
from plotfiles import *
for i in range (1,35):
plot_1_file("test"+str(i))
plot_1_file('test38')
for i in range (35,38):
plot_2_files("test"+str(i))
@@ -0,0 +1,87 @@
#!/usr/bin/python
from ROOT import *
from array import array
def plot_1_file (file):
gROOT.Reset()
input_file_1=TFile(file+'.root','READ')
h1 = input_file_1.Get("Source Energy Spectrum")
h2 = input_file_1.Get("Source X-Y distribution")
h3 = input_file_1.Get("Source X-Z distribution")
h4 = input_file_1.Get("Source Y-Z distribution")
h5 = input_file_1.Get("Source phi-std::cos(theta) distribution")
h6 = input_file_1.Get("Source phi-theta distribution")
c1 = TCanvas('c1', file, 200, 10, 700, 900)
c1.Divide(2,3)
c1.cd(1)
h1.Draw()
c1.cd(2)
h2.Draw()
c1.cd(3)
h3.Draw()
c1.cd(4)
h4.Draw()
c1.cd(5)
h5.Draw()
c1.cd(6)
h6.Draw()
c1.Update()
c1.Print("./"+file+".png")
input_file_1.Close()
# h_gam.SetLineColor(2)
def plot_2_files (file):
gROOT.Reset()
input_file_1=TFile(file+'a.root','READ')
input_file_2=TFile(file+'b.root','READ')
#input_file_1.cd()
#h_1_1 = input_file_1.Get("h16")
c1 = TCanvas('c1', file, 200, 10, 700, 500)
c1.SetGridx()
c1.SetGridy()
c1.SetLogx()
c1.SetLogy()
# histogram for energy spectra
n = 41
bin = array( 'f' )
for i in range( n ):
bin.append(pow(10,(-2+0.1*i)))
#
h_1 = TH1F('unbiased','Source Spectrum',40,bin)
h_2 = TH1F('biased','Source Spectrum',40,bin)
#
input_file_1.cd()
# get the tuple t1
t1 = gROOT.FindObject('MyTuple')
for i in range(t1.GetEntries()):
t1.GetEntry(i)
h_1.Fill(t1.Energy,t1.Weight)
input_file_2.cd()
# get the tuple t1
t2 = gROOT.FindObject("MyTuple")
for i in range(t2.GetEntries()):
t2.GetEntry(i)
h_2.Fill(t2.Energy,t2.Weight)
h_2.SetLineStyle(kDashed);
h_2.SetLineColor(kBlue);
h_2.Draw();
h_1.Draw("same") ;
c1.Update()
c1.Print("./"+file+".png")
input_file_1.Close()
input_file_2.Close()
@@ -0,0 +1,54 @@
{
TFile *input_file_1 = new TFile("test35a.root");
TFile *input_file_2 = new TFile("test35b.root");
TCanvas *c1 = new TCanvas("c1", "test35", 200, 10, 700, 500);
c1->SetGridx();
c1->SetGridy();
c1->SetLogx();
c1->SetLogy();
// histogram for energy spectra
int n = 41;
float bin[41];
for (int i = 0; i < n; i++) {
bin[i] =pow(10,(-2+0.1*i));
}
//
TH1 *h_1 = new TH1D("unbiased","Source spectrum",40,bin);
TH1 *h_2 = new TH1D("biased","Source spectrum",40,bin);
input_file_1->cd();
input_file_1->ls();
// get the tuple t1
double energy, weight;
TTree *t1 = (TTree *) input_file_1->Get("MyTuple");
t1->SetBranchAddress("Energy", &energy);
t1->SetBranchAddress("Weight", &weight);
cout <<t1->GetEntries() << endl;
for (int i = 0; i < t1->GetEntries(); i++) {
t1.GetEntry(i);
// cout << energy << " " << weight << endl;
h_1->Fill(energy,weight);
}
input_file_2->cd();
TTree *t2 = (TTree *) input_file_2->Get("MyTuple");
t2->SetBranchAddress("Energy", &energy);
t2->SetBranchAddress("Weight", &weight);
cout <<t2->GetEntries() << endl;
for (int i = 0; i < t1->GetEntries(); i++) {
t2.GetEntry(i);
h_2->Fill(energy,weight);
}
// h_2->SetFillColor(kRed);
h_2->SetLineStyle(kDashed);
h_2->SetLineColor(kBlue);
h_2->Draw();
h_1->Draw("same") ;
c1->Update();
c1->Print("./test35.png");
input_file_1->Close();
input_file_2->Close();
}
@@ -0,0 +1,57 @@
#!/usr/bin/python
from ROOT import *
from array import array
gROOT.Reset()
input_file_1=TFile('test35a.root','READ')
input_file_2=TFile('test35b.root','READ')
#input_file_1.cd()
#h_1_1 = input_file_1.Get("h16")
c1 = TCanvas('c1', 'test35', 200, 10, 700, 500)
c1.SetGridx()
c1.SetGridy()
c1.SetLogx()
c1.SetLogy()
# histogram for energy spectra
n = 41
bin = array( 'f' )
for i in range( n ):
bin.append(pow(10,(-2+0.1*i)))
#
h_1 = TH1F('unbiased','Source Spectrum',40,bin)
h_2 = TH1F('biased','Source Spectrum',40,bin)
#
input_file_1.cd()
# get the tuple t1
t1 = gROOT.FindObject('MyTuple')
for i in range(t1.GetEntries()):
t1.GetEntry(i)
h_1.Fill(t1.Energy,t1.Weight)
input_file_2.cd()
# get the tuple t1
t1 = gROOT.FindObject("MyTuple")
for i in range(t1.GetEntries()):
t1.GetEntry(i)
h_2.Fill(t1.Energy,t1.Weight)
h_2.SetLineStyle(kDashed);
h_2.SetLineColor(kBlue);
h_2.Draw();
h_1.Draw("same") ;
c1.Update()
c1.Print("./test35.png")
input_file_1.Close()
input_file_2.Close()
@@ -1,5 +1,5 @@
#!/bin/csh -f
foreach i (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34)
foreach i (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38)
../bin/Linux-g++/exGPS test$i.g4mac
end
@@ -0,0 +1,7 @@
0.01 100.
0.1 10.
1.0 2.
2.0 5.
7.0 1.
10. 1.
100. 0.01
@@ -10,7 +10,8 @@
# commands below are independent of gps
#
/analysis/filename test1.aida
/analysis/filetype root
/analysis/filename test1.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test10.aida
/analysis/filetype root
/analysis/filename test10.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 8 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test11.aida
/analysis/filetype root
/analysis/filename test11.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 8 cm
@@ -13,7 +13,8 @@
# commands below are independent of gps
#
/analysis/filename test12.aida
/analysis/filetype root
/analysis/filename test12.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 8 cm
@@ -16,7 +16,8 @@
# commands below are independent of gps
#
/analysis/filename test13.aida
/analysis/filetype root
/analysis/filename test13.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 8 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test14.aida
/analysis/filetype root
/analysis/filename test14.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -13,7 +13,8 @@
# commands below are independent of gps
#
/analysis/filename test15.aida
/analysis/filetype root
/analysis/filename test15.root
/analysis/maxeng 20 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 8 cm
@@ -16,7 +16,8 @@
# commands below are independent of gps
#
/analysis/filename test16.aida
/analysis/filetype root
/analysis/filename test16.root
/analysis/maxeng 2 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 8 cm
@@ -15,7 +15,8 @@
# commands below are independent of gps
#
/analysis/filename test17.aida
/analysis/filetype root
/analysis/filename test17.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 10 cm
@@ -15,7 +15,8 @@
# commands below are independent of gps
#
/analysis/filename test18.aida
/analysis/filetype root
/analysis/filename test18.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -15,7 +15,8 @@
# commands below are independent of gps
#
/analysis/filename test19.aida
/analysis/filetype root
/analysis/filename test19.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -16,7 +16,8 @@
# commands below are independent of gps
#
/analysis/filename test2.aida
/analysis/filetype root
/analysis/filename test2.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -15,7 +15,8 @@
# commands below are independent of gps
#
/analysis/filename test20.aida
/analysis/filetype root
/analysis/filename test20.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -16,7 +16,8 @@
# commands below are independent of gps
#
/analysis/filename test21.aida
/analysis/filetype root
/analysis/filename test21.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -8,8 +8,7 @@
/gps/ang/type cos
/gps/ene/type Arb
/gps/hist/type arb
/gps/hist/type arb
/gps/hist/point 1.0 2
/gps/hist/point 1.0 2.
/gps/hist/point 2.0 5.
/gps/hist/point 7.0 1.
/gps/hist/point 10. 1.
@@ -17,11 +16,13 @@
# commands below are independent of gps
#
/analysis/filename test22.aida
/analysis/filetype root
/analysis/filename test22.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
/analysis/minpos -5 cm
/event/printModulo 10000
#/control/execute display.mac
/gps/verbose 0
/run/beamOn 10000
@@ -42,7 +42,8 @@
# commands below are independent of gps
#
/analysis/filename test23.aida
/analysis/filetype root
/analysis/filename test23.root
/analysis/maxeng 50 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -41,7 +41,8 @@
# commands below are independent of gps
#
/analysis/filename test24.aida
/analysis/filetype root
/analysis/filename test24.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -32,7 +32,8 @@
# commands below are independent of gps
#
/analysis/filename test25.aida
/analysis/filetype root
/analysis/filename test25.root
/analysis/maxeng 15 MeV
/analysis/mineng 0. MeV
/analysis/maxpos 5 cm
@@ -24,7 +24,8 @@
# commands below are independent of gps
#
/analysis/filename test26.aida
/analysis/filetype root
/analysis/filename test26.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -27,7 +27,8 @@
# commands below are independent of gps
#
/analysis/filename test27.aida
/analysis/filetype root
/analysis/filename test27.root
/analysis/maxeng 2 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -11,7 +11,8 @@
# commands below are independent of gps
#
/analysis/filename test28.aida
/analysis/filetype root
/analysis/filename test28.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test29.aida
/analysis/filetype root
/analysis/filename test29.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -15,7 +15,8 @@
# commands below are independent of gps
#
/analysis/filename test3.aida
/analysis/filetype root
/analysis/filename test3.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -28,7 +28,8 @@
#
# commands below are independent of gps
#
/analysis/filename test30.aida
/analysis/filetype root
/analysis/filename test30.root
/analysis/maxeng 800 MeV
/analysis/mineng 200 MeV
/analysis/maxpos 5 mm
@@ -55,7 +55,8 @@
/gps/ene/sigma 50. MeV
#
#
/analysis/filename test31.aida
/analysis/filetype root
/analysis/filename test31.root
/analysis/maxeng 800 MeV
/analysis/mineng 200 MeV
/analysis/maxpos 5 mm
@@ -50,7 +50,8 @@
# commands below are independent of gps
#
/analysis/filename test32.aida
/analysis/filetype root
/analysis/filename test32.root
/analysis/maxeng 15 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
@@ -25,7 +25,8 @@
#
# commands below are independent of gps
#
/analysis/filename test33.aida
/analysis/filetype root
/analysis/filename test33.root
/analysis/maxeng 800 MeV
/analysis/mineng 200 MeV
/analysis/maxpos 10 cm
@@ -33,7 +34,7 @@
/event/printModulo 1000
#/tracking/verbose 1
#
/control/execute display_vrml.mac
/control/execute display.mac
#
/run/beamOn 20
@@ -48,8 +48,9 @@
#
# commands below are independent of gps
#
#/analysis/filetype root
/analysis/filename test34.aida
#
/analysis/filetype root
/analysis/filename test34.root
/analysis/maxeng 5 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 10 cm
@@ -0,0 +1,31 @@
/gps/particle geantino
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/centre 2. 2. 2. cm
/gps/pos/radius 2.5 cm
/gps/pos/halfz 4. cm
/gps/ang/type iso
/gps/ene/type Pow
/gps/ene/min 0.01 MeV
/gps/ene/max 100 MeV
/gps/ene/alpha -2.5
# commands below are independent of gps
#
/analysis/filetype root
/analysis/filename test35a.root
/analysis/maxeng 100 MeV
/analysis/mineng 0.01 MeV
/analysis/maxpos 8 cm
/analysis/minpos -8 cm
/event/printModulo 10000
#/control/execute display.mac
/run/beamOn 100000
/analysis/filename test35b.root
/gps/ene/biasAlpha -1.
/run/beamOn 100000
@@ -0,0 +1,32 @@
/gps/particle geantino
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/centre 2. 2. 2. cm
/gps/pos/radius 2.5 cm
/gps/pos/halfz 4. cm
/gps/ang/type iso
/gps/ene/type Arb
/gps/hist/file spectrum.dat
/gps/hist/inter Lin
# commands below are independent of gps
#
/analysis/filetype root
/analysis/filename test36a.root
/analysis/maxeng 100 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 8 cm
/analysis/minpos -8 cm
/event/printModulo 10000
#/control/execute display.mac
/run/beamOn 100000
/analysis/filename test36b.root
/gps/ene/min 0.01 MeV
/gps/ene/max 100. MeV
/gps/ene/biasAlpha -1.
#/gps/verbose 1
/run/beamOn 100000
@@ -0,0 +1,31 @@
/gps/particle geantino
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/centre 2. 2. 2. cm
/gps/pos/radius 2.5 cm
/gps/pos/halfz 4. cm
/gps/ang/type iso
/gps/ene/min 0.01 MeV
/gps/ene/max 100. MeV
/gps/ene/type Exp
/gps/ene/ezero 1.
# commands below are independent of gps
#
/analysis/filetype root
/analysis/filename test37a.root
/analysis/maxeng 100 MeV
/analysis/mineng 0.01 MeV
/analysis/maxpos 8 cm
/analysis/minpos -8 cm
/event/printModulo 10000
#/control/execute display.mac
/run/beamOn 100000
/analysis/filename test37b.root
/gps/ene/biasAlpha -1.
/run/beamOn 100000
@@ -0,0 +1,23 @@
/gps/particle geantino
/gps/pos/type Plane
/gps/pos/shape Square
/gps/pos/centre 1. 2. 1. cm
/gps/pos/halfx 2. cm
/gps/pos/halfy 2. cm
/gps/ang/type cos
/gps/ene/type Arb
/gps/hist/file spectrum.dat
/gps/hist/inter Exp
# commands below are independent of gps
#
/analysis/filetype root
/analysis/filename test38.root
/analysis/maxeng 100 MeV
/analysis/mineng 0 MeV
/analysis/maxpos 5 cm
/analysis/minpos -5 cm
/event/printModulo 10000
#/control/execute display.mac
/run/beamOn 100000
@@ -14,7 +14,8 @@
# commands below are independent of gps
#
/analysis/filename test4.aida
/analysis/filetype root
/analysis/filename test4.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test5.aida
/analysis/filetype root
/analysis/filename test5.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test6.aida
/analysis/filetype root
/analysis/filename test6.root
/analysis/maxeng 15 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 5 cm
@@ -12,7 +12,8 @@
# commands below are independent of gps
#
/analysis/filename test7.aida
/analysis/filetype root
/analysis/filename test7.root
/analysis/maxeng 1 MeV
/analysis/mineng 10 keV
/analysis/maxpos 10 cm
@@ -15,7 +15,8 @@
# commands below are independent of gps
#
/analysis/filename test8.aida
/analysis/filetype root
/analysis/filename test8.root
/analysis/maxeng 20 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 10 cm
@@ -17,7 +17,8 @@
# commands below are independent of gps
#
/analysis/filename test9.aida
/analysis/filetype root
/analysis/filename test9.root
/analysis/maxeng 20 MeV
/analysis/mineng 1 MeV
/analysis/maxpos 10 cm
@@ -34,9 +34,6 @@
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "G4TrajectoryContainer.hh"
#include "G4Trajectory.hh"
#include "G4VVisManager.hh"
#include "G4ios.hh"
#include "G4UnitsTable.hh"
#include "G4ThreeVector.hh"
@@ -70,8 +67,11 @@ void exGPSEventAction::BeginOfEventAction(const G4Event* evt)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifdef G4ANALYSIS_USE
void exGPSEventAction::EndOfEventAction(const G4Event* evt)
#else
void exGPSEventAction::EndOfEventAction(const G4Event*)
#endif
{
// G4int evtNb = evt->GetEventID();
@@ -106,24 +106,6 @@ void exGPSEventAction::EndOfEventAction(const G4Event* evt)
}
#endif
#ifdef G4VIS_USE
// extract the trajectories and draw them
if (G4VVisManager::GetConcreteInstance())
{
G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer();
G4int n_trajectories = 0;
if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();
for (G4int i=0; i<n_trajectories; i++)
{ G4Trajectory* trj = (G4Trajectory*)((*(evt->GetTrajectoryContainer()))[i]);
if (drawFlag == "all") trj->DrawTrajectory(0);
else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.))
trj->DrawTrajectory(0);
else if ((drawFlag == "neutral")&&(trj->GetCharge() == 0.))
trj->DrawTrajectory(0);
}
}
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -0,0 +1,19 @@
name := particleGun
G4TARGET := $(name)
G4EXLIB := true
ifndef G4INSTALL
G4INSTALL = ../../../..
endif
.PHONY: all
all: lib bin
#### G4ANALYSIS_USE := true
include $(G4INSTALL)/config/architecture.gmk
include $(G4INSTALL)/config/binmake.gmk
histclean:
rm ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/HistoManager.o
@@ -0,0 +1,32 @@
$Id: History,v 1.6 2010/07/16 07:37:48 maire Exp $
-----------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
ParticleGun History file
------------------------
This file should be used by the G4 example coordinator to briefly
summarize all major modifications introduced in the code and keep
track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
15-07-10 mma (particleGunExample-V09-03-03)
- remove static data members and functions.
- UI commands : /testem/ -> /gunExample/
06-07-10 mma (particleGunExample-V09-03-02)
- split PrimaryGeneratorAction2 in two : sampling methods
rotateUz
11-06-10 mma (particleGunExample-V09-03-01)
- update vis.mac
- split run1.mac
10-06-10 Makoto Asai (particleGunExample-V09-03-00)
- Combine three original examples into one.
13-05-10 Michel Maire
- Created.
@@ -0,0 +1,78 @@
$Id: InstallAida.txt,v 1.1 2010/06/09 01:55:38 asaim Exp $
-----------------------------------------------------------
--------------
Install AIDA
--------------
To use histograms, at least one of the AIDA implementations should be
available.
You can use various file formats to write histograms (hbook, root, AIDA-XML).
1 - OpenScientist (lal/in2p3)
-------------------------
OpenScientist is available at http://OpenScientist.lal.in2p3.fr.
OpenScientist_batch is a small package ( ~ 6MB), easy to install.
It provides an AIDA interface to write files in ROOT or PAW format.
Download and gunzip (for Linux system) :
http://openscientist.lal.in2p3.fr/download/16.3/osc_batch-v16r3-Linux-i386-gcc_323.zip
(or more recent version, or Windows or Mac system)
Installation:
prompt%> cd osc_batch/v16r3 (or more recent version)
prompt%> ./install
prompt%> source aida-setup.csh
(on Windows : dos%> call <<OpenScientist install path>/aida-setup.bat)
2 - RAIDA (desy)
------------
It is a ROOT based AIDA interface. It can be downloaded from
http://ilcsoft.desy.de/portal/software_packages/raida/index_eng.html
3 - iAIDA
-----
Another package including AIDA (an evolution of the former cern PI project)
is the iAIDA package: http://iaida.dynalias.net
Once you have installed iAIDA in a specified local area $MYIAIDA, it is
required to add the installation path to $PATH, i.e. for example, for
release 1.0.11 of iAIDA:
setenv PATH ${PATH}:$MYIAIDA/bin
Before running the example the command should be issued:
eval `aida-config --runtime csh`
4 - JAIDA (slac)
------------
JAIDA is an implementation of AIDA in Java. To use it, one needs Java
as well as AIDAJNI, a connector between AIDA-C++ and AIDA-Java.
Available for: Linux-g++2, Linux-g++3, WIN32-VC, SUN-CC,
Darwin-g++2, Darwin-g++3
To compile and link with JAIDA using AIDAJNI, make sure you have:
1. JAIDA version 3.2.0, see http://java.freehep.org/jaida
2. set enviroment variable JAIDA_HOME to your JAIDA installation
3. source the aida-setup script $JAIDA_HOME/bin/aida-setup.[sh|csh|win32]
4. AIDAJNI version 3.0.4 or 3.2.0, or better: see http://java.freehep.org/aidajni
5. set environment variable AIDAJNI_HOME to your AIDAJNI installation
6. set environment variable JDK_HOME to your Java Standard Development Kit (1.4.x or up).
7. source the aidajni-setup script $AIDAJNI_HOME/bin/$G4SYSTEM/aidajni-setup.[sh|csh|win32]
now execute:
source setup-analysis (.csh, .sh, .win32)
gmake clean
gmake
@@ -0,0 +1,166 @@
$Id: README,v 1.6 2010/07/16 07:37:48 maire Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
ParticleGun
-----------
History:
10-06-2010 : Makoto Asai - merge into one example
13-05-2010 : Michel Maire - create as three examples
This example demonstrates 4 ways of the usage of G4ParticleGun shooting
primary particles in different cases. These are
1) Generate several vertices and particles per event
2) Show how to sample a tabulated function (eg. energy spectrum)
3) Divergent beam in an arbitrary direction
4) Shooting primaries in spherical coordinates with rotation matrix.
These usages can be chosen by a UI command
/gunExample/selectGunAction <actionID>
where <actionID> corresponds to above cases.
1- Geometry construction
---------------------
It is a simple box which represents an 'infinite' homogeneous medium.
2- Physics list
------------
PhysicsList.cc defines only geantino and transportation process.
3- Primary generator
-----------------
There are 4 concrete primary generator action classes
(PrimaryGeneratorActionN, N=1,2,3,4) which can be used as an independent sample
code.
PrimaryGeneratorAction is the class which uses and switches between these
4 concrete action classes. Each concrete generator action shoots geantinoes
in a distribution decribed below.
3.1- Generate several vertices and particles per event
-------------------------------------------------
particle 1 : a geantino uniformly randomized on a cylinder surface.
particle 2 and 3 : on opposite side of the cylnder surface to particle 1
3.2- Show how to sample a tabulated function (energy spectrum)
---------------------------------------------------------
Energy is sampled from a tabulated function defined in InitFunction().
The function is assumed positive, linear per segment, continuous.
Two sampling methods are illustrated : RejectAccept() and InverseCumul()
(see Particle Data book, Monte Carlo techniques).
Histogram 1 shows generated energy spectrum.
3.3- Divergent beam in an arbitrary direction with rotation matrix
-------------------------------------------------------------
A geantino uniformly randomized around a given direction (theta, phi).
One wants to limit particle direction uniformly around this direction.
First, one generates momentum direction in the master frame (eg. World).
AlphaMax = opening angle around z axis.
Then one rotates momentum in local frame, using rotateUz() function.
RotateUz() transforms uz to newUz. It is composition of two simple rotations:
theta around oy, then phi around oz (non commutative).
http://proj-clhep.web.cern.ch/proj-clhep/manual/UserGuide/VectorDefs/node49.html
Histograms 2,3 show momentum direction in local frame.
3.4- Shooting primaries in spherical coordinates with rotation matrix
----------------------------------------------------------------
a geantino uniformly randomized within a spherical shell.
a) Vertex position
One wishes to shoot uniformly within a spherical shell.
One works in spherical coordinates. One uses inverse cumulative method with
analytical formulae.
Histograms 4,5,6 demonstrate uniform distribution of vertex position.
b) Momentum direction
One wants to limit particle direction uniformly within (alphaMin, alphaMax).
First, one generates momentum direction in the master frame (eg. World).
Then, one rotates momentum in vertex_position frame, using rotateUz() function.
RotateUz() transforms uz to ur. It is composition of two elementary rotations:
theta around oy, then phi around oz (non commutative).
http://proj-clhep.web.cern.ch/proj-clhep/manual/UserGuide/VectorDefs/node49.html
Histograms 7,8 show momentum direction in vertex_position frame.
4- Visualisation
-------------
Visualization Manager is set in the main().
Initialisation of the drawing is done via the commands
/vis/.. in the macro vis.mac. This macro is automatically read from the main
in case of interactive running mode.
5- How to start ?
--------------
- compile and link to generate an executable
% cd gun
% gmake
- execute particleGun in 'batch' mode from macro files
% ParticleGun run1.mac
- execute particleGun2 in 'interactive mode' with visualization
% particleGun
....
Idle> ---> type your commands. For instance:
Idle> /gunExample/selectGunAction 1
Idle> /run/beamOn 10
....
Idle> exit
6- Histograms
----------
particleGun produces several 1D histograms which are saved as
particleGun.root by default.
1 : energy spectrum dN/dE = f(E)
2 : momentum direction: angular distr dN/dOmega = f(alpha)
3 : momentum direction: angular distr dN/dOmega = f(psi)
4 : vertex position: radial distr dN/dv = f(r)
5 : vertex position: angular distr dN/dv = f(theta)
6 : vertex position: angular distr dN/dv = f(phi)
7 : momentum direction: angular distr dN/dOmega = f(alpha)
8 : momentum direction: angular distr dN/dOmega = f(psi)
Please note that histogram 1 will be filled only if you use
PrimaryGeneratorAction2, histos 2,3 with PrimaryGeneratorAction3
and 4 through 8 will be filled with PrimaryGeneratorAction4.
The histograms are managed by the HistoManager class and its Messenger.
The histos can be individually activated with the command :
/gunExample/histo/setHisto id nbBins valMin valMax unit
where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..)
One can control the name of the histograms file with the command:
/gunExample/histo/setFileName name (default particleGun)
It is possible to choose the format of the histogram file (hbook, root, XML)
with the command /gunExample/histo/setFileType (root by default)
It is also possible to print selected histograms on an ascii file:
/gunExample/histo/printHisto id
All selected histos will be written on a file name.ascii (default particleGun)
Note that, by default, histograms are disabled. To activate them, uncomment
the flag G4ANALYSIS_USE in GNUmakefile.
Before compilation of the example it is optimal to clean up old files:
gmake histclean
gmake
7- Using histograms
----------------
To use histograms, at least one of the AIDA implementations should be
available. See the file InstallAida.txt
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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: DetectorConstruction.hh,v 1.1 2010/06/09 01:55:38 asaim Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorConstruction_h
#define DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction();
~DetectorConstruction();
G4VPhysicalVolume* Construct();
G4double GetWorldSizeXY() {return worldSizeXY;};
G4double GetWorldSizeZ() {return worldSizeZ;};
private:
G4double worldSizeXY, worldSizeZ;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * 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: HistoManager.hh,v 1.1 2010/06/09 01:55:38 asaim Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoManager_h
#define HistoManager_h 1
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
namespace AIDA {
class IAnalysisFactory;
class ITree;
class IHistogram1D;
}
class HistoMessenger;
const G4int MaxHisto = 9;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoManager
{
public:
HistoManager();
~HistoManager();
void SetFileName (const G4String& name) { fileName[0] = name;};
void SetFileType (const G4String& name) { fileType = name;};
void SetFileOption (const G4String& name) { fileOption = name;};
void book();
void save();
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
void RemoveHisto (G4int);
void PrintHisto (G4int);
G4bool HistoExist (G4int id) {return exist[id];}
G4double GetHistoUnit(G4int id) {return Unit[id];}
G4double GetBinWidth (G4int id) {return Width[id];}
private:
G4String fileName[2];
G4String fileType;
G4String fileOption;
AIDA::IAnalysisFactory* af;
AIDA::ITree* tree;
AIDA::IHistogram1D* histo[MaxHisto];
G4bool exist[MaxHisto];
G4String Label[MaxHisto];
G4String Title[MaxHisto];
G4int Nbins[MaxHisto];
G4double Vmin [MaxHisto];
G4double Vmax [MaxHisto];
G4double Unit [MaxHisto];
G4double Width[MaxHisto];
G4bool ascii[MaxHisto];
G4bool factoryOn;
HistoMessenger* histoMessenger;
private:
void saveAscii();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * 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: HistoMessenger.hh,v 1.2 2010/07/16 07:37:48 maire Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoMessenger_h
#define HistoMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoManager;
class G4UIdirectory;
class G4UIcommand;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoMessenger: public G4UImessenger
{
public:
HistoMessenger(HistoManager* );
~HistoMessenger();
void SetNewValue(G4UIcommand* ,G4String );
private:
HistoManager* histoManager;
G4UIdirectory* histoDir;
G4UIcmdWithAString* factoryCmd;
G4UIcmdWithAString* typeCmd;
G4UIcmdWithAString* optionCmd;
G4UIcommand* histoCmd;
G4UIcmdWithAnInteger* prhistoCmd;
G4UIcmdWithAnInteger* rmhistoCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,49 +24,36 @@
// ********************************************************************
//
//
// $Id: H02PhysicsList.hh,v 1.3 2006/07/05 12:04:12 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-02 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// $Id: PhysicsList.hh,v 1.1 2010/06/09 01:55:38 asaim Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef H02PhysicsList_h
#define H02PhysicsList_h 1
#ifndef PhysicsList_h
#define PhysicsList_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class H02PhysicsList: public G4VUserPhysicsList
class PhysicsList: public G4VUserPhysicsList
{
public:
H02PhysicsList();
~H02PhysicsList();
PhysicsList();
~PhysicsList();
protected:
// Construct particle and physics
void ConstructParticle();
void ConstructProcess();
void SetCuts();
protected:
// these methods Construct particles
void ConstructBosons();
void ConstructLeptons();
void ConstructMesons();
void ConstructBaryons();
protected:
// these methods Construct physics processes and register them
void ConstructGeneral();
void ConstructEM();
void ConstructProcess();
void SetCuts();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
// $Id: PrimaryGeneratorAction.hh,v 1.3 2010/07/16 07:37:48 maire Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PrimaryGeneratorAction_h
#define PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class PrimaryGeneratorAction1;
class PrimaryGeneratorAction2;
class PrimaryGeneratorAction3;
class PrimaryGeneratorAction4;
class PrimaryGeneratorMessenger;
class G4ParticleGun;
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
~PrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event*);
public:
G4ParticleGun* GetParticleGun() { return particleGun; };
void SelectAction(G4int i) { selectedAction = i; };
G4int GetSelectedAction() { return selectedAction; };
PrimaryGeneratorAction1* GetAction1() { return action1; };
PrimaryGeneratorAction2* GetAction2() { return action2; };
PrimaryGeneratorAction3* GetAction3() { return action3; };
PrimaryGeneratorAction4* GetAction4() { return action4; };
private:
G4ParticleGun* particleGun;
PrimaryGeneratorAction1* action1;
PrimaryGeneratorAction2* action2;
PrimaryGeneratorAction3* action3;
PrimaryGeneratorAction4* action4;
G4int selectedAction;
PrimaryGeneratorMessenger* gunMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -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: PrimaryGeneratorAction1.hh,v 1.2 2010/07/16 07:37:48 maire Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PrimaryGeneratorAction1_h
#define PrimaryGeneratorAction1_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class G4ParticleGun;
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PrimaryGeneratorAction1
{
public:
PrimaryGeneratorAction1(G4ParticleGun*);
~PrimaryGeneratorAction1();
public:
void GeneratePrimaries(G4Event*);
private:
G4ParticleGun* particleGun;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif

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