Import Geant4 9.4.0 source tree
This commit is contained in:
@@ -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("[40;01;36mhepmcEx02[40;33m(%s)[40;32m[%/][00;30m:");
|
||||
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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+13
-26
@@ -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
Reference in New Issue
Block a user