Import Geant4 4.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:39:52 +02:00
parent 921d3b1cda
commit 330b82b769
4524 changed files with 178689 additions and 43575 deletions
@@ -0,0 +1,75 @@
# $Id: GNUmakefile,v 1.2 2002/05/28 14:05:16 murakami Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
name := hepmcEx01
G4TARGET := $(name)
G4EXLIB := true
#ifndef G4WORKDIR
# G4WORKDIR := .
#endif
.PHONY: all
all : lib bin
include $(G4INSTALL)/config/binmake.gmk
# -----------------------------------------------------------------
# HepMC and PYTHIA
# if you donnot use Pythia library, comment out.
USE_PYTHIA := 1
# HepMC
HEPMC_DIR := /opt/heplib/HepMC/1.21
INCFLAGS += -I$(HEPMC_DIR)
# check gcc
USE_GCC := 0
ifeq ($(G4SYSTEM),Linux-g++)
USE_GCC := 1
endif
ifeq ($(G4SYSTEM),Linux-egcs)
USE_GCC := 1
endif
ifeq ($(USE_GCC),1)
LDLIBS1 += -Wl,-rpath $(HEPMC_DIR)
endif
ifdef USE_PYTHIA
LDLIBS1 += -L$(HEPMC_DIR) -lHepMC
else
LDLIBS1 += -L$(HEPMC_DIR) -lHepMC $(G4TMPDIR)/HEPEvtcom.o
endif
ifdef USE_PYTHIA
CERNLIB_DIR := /cern/pro/lib
LDLIBS1 += -L$(CERNLIB_DIR) -lpythia6
# if you get pythia initialization errors, try the next flag.
#NEED_INITPYDATA := 1
ifdef NEED_INITPYDATA
CXXFLAGS += -DNEED_INITPYDATA
LDLIBS1 += $(HepMC_DIR)/src/initpydata.o
#LDLIBS1 += external/initpydata.o
endif
LDLIBS1 += $(FCLIBS)
endif
# -----------------------------------------------------------------
CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS))
CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O))
# On HP-acc optimization has to be turned off to compile ExN04HadronPhysics.
#
ifeq ($(G4SYSTEM),HP-aCC)
COMPILER := $(shell aCC -V 2>&1)
ifeq ($(COMPILER), aCC: HP ANSI C++ B3910B A.01.15)
$(G4TMP)/$(G4SYSTEM)/$(name)/XXHadronPhysics.o: src/XXHadronPhysics.cc
$(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/XXHadronPhysics.cc
endif
endif
@@ -0,0 +1,99 @@
$Id: History,v 1.2 2002/05/28 14:05:17 murakami Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Example HepMCEx01 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 *
----------------------------------------------------------
May. 28, 2002 K.Murakami
- rename classes and filenames.
Apr. 15, 2002 K.Murakami
- Creared.
- Replace N04PrimaryGeneatorAction with HepMC-interface version.
- Resize the world volume.
Example N04 History file
------------------------
December 18, 2001 Gabriele Cosmo (exampleN04-V04-00-00)
- ExN04PhysicsList.cc: added call to DumpCutValuesTable().
Reference outputs will be modified (V.Ivantchenko)
- GNUmakefile: removed restriction for egcs compiler
October 19, 2001 Steve O'Neale
- Updated reference output
March 07 2001 H.Kurashige (exampleN04-V03-00-07)
- Add G4MuonMinusCaptureAtRest in G4MuonPhysics
February 25 2001 S.W.O'Neale (exampleN04-V03-00-06)
- Add exampleN04.EMtest.large_N.out reference output and remove
some empty "reference" .err files
February 20 2001 S.W.O'Neale (exampleN04-V03-00-05)
- Update reference outputs following materials-V03-00-04
February 9 2001 S.W.O'Neale (exampleN04-V03-00-04)
- Update SUN CC reference outouts for test104 and test104.EMtest
February 9 2001 H.Kurashige (exampleN04-V03-00-03)
- Introduce Modular Physics List
25th November 2000 Steve O'Neale (tagset210)
- Update test outputs for min.delta energy cut
- Update test outputs for small"ish" changes from em tags
August 18, 2000 Michel Maire
- standard G4ionIonisation removed from the PhysicsList
June 24, 2000 John Allison (exampleN04-V01-01-03)
- Updated exampleN04*.out for stand-V01-01-05 and utils-V01-01-03.
June 19, 2000 John Allison (exampleN04-V01-01-02)
- Updated exampleN04.out for geant4-01-01-cand-07.
June 17, 2000 John Allison (exampleN04-V01-01-01)
- Updated exampleN04*.out for geant4-01-01-ref-06.
9th June 2000 Makoto Asai (exampleN04-V01-01-00)
- ExN04StackingAction.cc: protection against illegal value of an argument.
5th June 1999 John Allison
- GNUmakefile: Force non-optimised compliation of some files on HP with
aCC: HP ANSI C++ B3910B A.01.15.
23th April 1999 H.Kurashige
- remove ConstructLeptHad, AddParameterisation inExN04PhysicsList
16th April 1999 H.Kurashige
- modify ExN04RunAction ExN04StackingAction ExN04SteppingAction ExN04TrackingAction
- modify ExN04PhysicsList::SetCuts
- modify ExN04PhysicsList::ConstructParticle
21st November 1998 John Allison
- Made ExN04Field compatible with G4Field.
9 Oct, 1998 M.Asai
- A bug fixed in ExN04DetectorParameterDef.icc.
26th August 1998 John Allison.
- /vis/Draw/current -> /vis/draw/current in ExN04EventAction.cc.
9th August 1998 John Allison.
- Changed G4UIterminal to G4UIGAG.
April 09, 98 G. Cosmo
- Created.
@@ -0,0 +1,52 @@
$Id: README,v 1.2 2002/05/28 14:05:17 murakami Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
HepMCEx01
---------
HepMCEx01 is based on ExampleN04, which has a simplified collider detector
geometry. Only part of the primary generator action is replaced with new one.
This example demonstrates the following features.
1. HepMC interface
ExN04PrimaryGeneratorAction has HepMCG4Interface as the generator.
There are two types of generators provided as samples. One generator reads
primary information from a HepMC Ascii file (data/example_MyPythia.dat).
The other one generates primaries directly invoking PYTHIA routines
in every event.
2. Readout geometry
ExN04DetectorConstruction defines a simplified collider detecor
geometry, tracker made of cylindrical tubes, calorimeter made of
cylindrical tubes, and muon trackers made of planes.
Cylindrical calorimeter is made of tubes of lead and scintirator
without cut in phi nor z direction. Energy deposition in scintirator
is accumulated by ExN04CalorimeterSD sensitive detector, which has
a readout geometry to find the phi-z cell.
3. Full set of "ordinary" physics processes
ExN04PhysicsList defines almost all of leptons and hadrons which
Geant4 has dedicated classes for. Also almost all physics processes
Geant4 has are defined.
4. Event filtering by the stacking mechanism.
Higgs events in "pythia_event.data" have two lepton pairs produced
by the Higgs decay via Z0. At the first stage of each event, only the
primary muons are tracked without tracking secondaries. then the number
of hits on the muon trackers are examined. At the next stage, only
the primary charged particles are tracked only inside the barrel
tracking area and the isolation of the primary muons are examined.
At the third stage, all particles in the RoI (Region of Interest) along
the isolated muons are tracked. All these examinations are applied in
ExN04StackingAction.
@@ -0,0 +1,26 @@
# // CLHEP
CLHEPD := /usr/local/CLHEP
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
# // CERN libraries
CLIBD := /cern/pro/lib
CLIB := -L$(CLIBD) -lpythia6
CXXFLAGS := $(CLHEPINC) $(HEPMCINC)
LOPT := -Wl,-rpath $(HEPMCD) $(HEPMCLIB) $(CLHEP) $(CLIB) -lg2c
%.o: %.cxx
$(CXX) -c -o $@ $(CXXFLAGS) $*.cxx
example_MyPythia : example_MyPythia.o
$(CXX) -o $@ $< $(LOPT)
example_MyPythia.o : example_MyPythia.cxx
@@ -0,0 +1,114 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
//////////////////////////////////////////////////////////////////////////
// Matt.Dobbs@Cern.CH, December 1999
// November 2000, updated to use Pythia 6.1
// example of generating events with Pythia
// using HepMC/PythiaWrapper.h
// Events are read into the HepMC event record from the FORTRAN HEPEVT
// common block using the IO_HEPEVT strategy and then output to file in
// ascii format using the IO_Ascii strategy.
//////////////////////////////////////////////////////////////////////////
// To Compile: go to the HepMC directory and type:
// gmake examples/example_MyPythia.exe
//
// In this example the precision and number of entries for the HEPEVT
// fortran common block are explicitly defined to correspond to those
// used in the Pythia version of the HEPEVT common block.
//
// If you get funny output from HEPEVT in your own code, probably you have
// set these values incorrectly!
//
#include <iostream>
#include "HepMC/PythiaWrapper.h"
#include "HepMC/IO_HEPEVT.h"
#include "HepMC/IO_Ascii.h"
#include "HepMC/GenEvent.h"
int main() {
//
//........................................HEPEVT
// Pythia 6.1 uses HEPEVT with 4000 entries and 8-byte floating point
// numbers. We need to explicitly pass this information to the
// HEPEVT_Wrapper.
//
HepMC::HEPEVT_Wrapper::set_max_number_entries(4000);
HepMC::HEPEVT_Wrapper::set_sizeof_real(8);
//
//........................................PYTHIA INITIALIZATIONS
// (Some platforms may require the initialization of pythia PYDATA block
// data as external - if you get pythia initialization errors try
// commenting in/out the below call to initpydata() )
// initpydata();
//
// Select W+gamma process (process number 20)
// (here we have to be careful of C/F77 differences: arrays in C
// start at 0, F77 at 1, so we need to subtract 1 from the process #)
pysubs.msel=0;
pysubs.msub[20-1] = 1;
// set random number seed (mandatory!)
pydatr.mrpy[0]=55122 ;
// Tell Pythia not to write multiple copies of particles in event record.
pypars.mstp[128-1] = 2;
// Example of setting a Pythia parameter: set the top mass
pydat2.pmas[1-1][6-1]= 175;
//
// Call pythia initialization
call_pyinit( "CMS", "p", "p", 14000. );
//........................................HepMC INITIALIZATIONS
//
// Instantiate an IO strategy for reading from HEPEVT.
HepMC::IO_HEPEVT hepevtio;
//
// 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);
//
//........................................EVENT LOOP
for ( int i = 1; i <= 10; i++ ) {
if ( i%50==1 ) std::cout << "Processing Event Number "
<< i << std::endl;
call_pyevnt(); // generate one event with Pythia
// pythia pyhepc routine converts common PYJETS in common HEPEVT
call_pyhepc( 1 );
HepMC::GenEvent* evt = hepevtio.read_next_event();
// add some information to the event
evt->set_event_number(i);
evt->set_signal_process_id(20);
// write the event out to the ascii file
ascii_io << evt;
// we also need to delete the created event from memory
delete evt;
}
//........................................TERMINATION
// write out some information from Pythia to the screen
call_pystat( 1 );
return 0;
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,13 @@
include $(G4INSTALL)/config/sys/$(G4SYSTEM).gmk
%.o: %.f
@echo "Compiling $< with $(FC) ..."
$(FC) -c $(FCFLAGS) -o $@ $<
initpydata.o : initpydata.f
.PHONY: clean
clean:
@rm initpydata.o
@@ -0,0 +1,11 @@
c
c Matt.Dobbs@Cern.CH, December 1999
c EXTERNAL statement links PYDATA on most machines.
c (Often necessary for the initialization of Pythia)
c
subroutine initpydata
EXTERNAL PYDATA
return
end
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: hepmcEx01.cc,v 1.1 2002/04/29 20:43:22 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// GEANT 4 - exampleN04
//
// --------------------------------------------------------------
// Comments
//
//
// --------------------------------------------------------------
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "ExN04DetectorConstruction.hh"
#include "ExN04PhysicsList.hh"
#include "ExN04PrimaryGeneratorAction.hh"
#include "ExN04EventAction.hh"
#include "ExN04StackingAction.hh"
#include "ExN04TrackingAction.hh"
#include "ExN04SteppingAction.hh"
int main(int argc,char** argv)
{
G4RunManager* runManager = new G4RunManager;
runManager->SetUserInitialization(new ExN04DetectorConstruction);
runManager->SetUserInitialization(new ExN04PhysicsList);
runManager->Initialize();
runManager->SetUserAction(new ExN04PrimaryGeneratorAction);
runManager->SetUserAction(new ExN04EventAction);
runManager->SetUserAction(new ExN04StackingAction);
runManager->SetUserAction(new ExN04TrackingAction);
runManager->SetUserAction(new ExN04SteppingAction);
if(argc==1)
{
// G4UIterminal is a (dumb) terminal.
G4UIsession* session = new G4UIterminal;
session->SessionStart();
delete session;
}
else
{
G4UImanager* UImanager = G4UImanager::GetUIpointer();
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
delete runManager;
return 0;
}
@@ -0,0 +1,5 @@
/generator/select hepmcAscii
/generator/hepmcAscii/open data/example_MyPythia.dat
/generator/hepmcAscii/verbose 1
/run/beamOn 3
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
/mydet/RoIangle 10 deg
/mydet/reqmuon 1
/mydet/isomuon 1
/control/execute pyset.mac
/run/beamOn 5
/generator/pythia/pystat 1
@@ -0,0 +1,259 @@
**********************************************
Geant4 version $Name: geant4-04-01 $
(28-Feb-2002)
Copyright : Geant4 Collaboration
**********************************************
MuonMinusCaptureAtRest is created
phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z
Sandia crossSection below 50 KeV
PhysicsTables from 50 keV to 50 MeV in 100 bins.
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 10 keV to 100 GeV in 100 bins.
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
log scale extrapolation above 100 GeV
Gamma energy sampled from a parametrised formula.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuBrems: theoretical cross section
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuPairProd: theoretical cross sections
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
current generator type: pythia
1
******************************************************************************
******************************************************************************
** **
** **
** *......* Welcome to the Lund Monte Carlo! **
** *:::!!:::::::::::* **
** *::::::!!::::::::::::::* PPP Y Y TTTTT H H III A **
** *::::::::!!::::::::::::::::* P P Y Y T H H I A A **
** *:::::::::!!:::::::::::::::::* PPP Y T HHHHH I AAAAA **
** *:::::::::!!:::::::::::::::::* P Y T H H I A A **
** *::::::::!!::::::::::::::::*! P Y T H H III A A **
** *::::::!!::::::::::::::* !! **
** !! *:::!!:::::::::::* !! This is PYTHIA version 6.205 **
** !! !* -><- * !! Last date of change: 1 Mar 2002 **
** !! !! !! **
** !! !! !! Now is 0 Jan 2000 at 0:00:00 **
** !! !! **
** !! lh !! Disclaimer: this program comes **
** !! !! without any guarantees. Beware **
** !! hh !! of errors and use common sense **
** !! ll !! when interpreting results. **
** !! !! **
** !! Copyright T. Sjostrand (2001) **
** **
** An archive of program versions and documentation is found on the web: **
** http://www.thep.lu.se/~torbjorn/Pythia.html **
** **
** When you cite this program, currently the official reference is **
** T. Sjostrand, P. Eden, C. Friberg, L. Lonnblad, G. Miu, S. Mrenna and **
** E. Norrbin, Computer Physics Commun. 135 (2001) 238. **
** The large manual is **
** T. Sjostrand, L. Lonnblad and S. Mrenna, LU TP 01-21 [hep-ph/0108264]. **
** Also remember that the program, to a large extent, represents original **
** physics research. Other publications of special relevance to your **
** studies may therefore deserve separate mention. **
** **
** Main author: Torbjorn Sjostrand; Department of Theoretical Physics 2, **
** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
** phone: + 46 - 46 - 222 48 16; e-mail: torbjorn@thep.lu.se **
** Author: Leif Lonnblad; Department of Theoretical Physics 2, **
** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
** phone: + 46 - 46 - 222 77 80; e-mail: leif@thep.lu.se **
** Author: Stephen Mrenna; Computing Division, Simulations Group, **
** Fermi National Accelerator Laboratory, MS 234, Batavia, IL 60510, USA; **
** phone: + 1 - 630 - 840 - 2556; e-mail: mrenna@fnal.gov **
** Author: Peter Skands; Department of Theoretical Physics 2, **
** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
** phone: + 46 - 46 - 222 31 92; e-mail: zeiler@thep.lu.se **
** **
** **
******************************************************************************
******************************************************************************
PMAS(6,1) changed from 175.00000 to 174.30000
PMAS(25,1) changed from 115.00000 to 200.00000
MSEL changed from 1 to 0
MSUB(102) changed from 0 to 1
MSUB(123) changed from 0 to 1
MSUB(124) changed from 0 to 1
MDME(210,1) changed from 1 to 0
MDME(211,1) changed from 1 to 0
MDME(212,1) changed from 1 to 0
MDME(213,1) changed from 1 to 0
MDME(214,1) changed from 1 to 0
MDME(215,1) changed from 1 to 0
MDME(218,1) changed from 1 to 0
MDME(219,1) changed from 1 to 0
MDME(220,1) changed from 1 to 0
MDME(222,1) changed from 1 to 0
MDME(223,1) changed from 1 to 0
MDME(224,1) changed from 1 to 0
MDME(225,1) changed from 1 to 1
MDME(226,1) changed from 1 to 0
MDME(216,1) changed from -1 to -1
MDME(217,1) changed from -1 to -1
MDME(218,1) changed from 0 to -1
MDME(174,1) changed from 1 to 0
MDME(175,1) changed from 1 to 0
MDME(176,1) changed from 1 to 0
MDME(177,1) changed from 1 to 0
MDME(178,1) changed from 1 to 0
MDME(179,1) changed from 1 to 0
MDME(182,1) changed from 1 to 0
MDME(183,1) changed from 1 to 0
MDME(184,1) changed from 1 to 1
MDME(185,1) changed from 1 to 0
MDME(186,1) changed from 1 to 0
MDME(187,1) changed from 1 to 0
MDME(180,1) changed from -1 to -1
MDME(181,1) changed from -1 to -1
MDME(188,1) changed from -1 to -1
MDME(189,1) changed from -1 to -1
MSTP(61) changed from 2 to 1
MSTP(71) changed from 1 to 1
MSTP(81) changed from 1 to 1
MSTP(111) changed from 1 to 1
1****************** PYINIT: initialization of PYTHIA routines *****************
==============================================================================
I I
I PYTHIA will be initialized for a p on p collider I
I at 14000.000 GeV center-of-mass energy I
I I
==============================================================================
******** PYMAXI: summary of differential cross-section maximum search ********
==========================================================
I I I
I ISUB Subprocess name I Maximum value I
I I I
==========================================================
I I I
I 96 Semihard QCD 2 -> 2 I 1.8679E+03 I
I 102 g + g -> h0 I 5.1617E-12 I
I 123 f + f' -> f + f' + h0 I 4.0000E-12 I
I 124 f + f' -> f" + f"' + h0 I 8.9419E-12 I
I I I
==========================================================
********************** PYINIT: initialization completed **********************
Stage 0->1 : 1 hits found in the muon chamber.
Stage 1->2 : 1 isolated muon found.
>>> Event 0
75 hits are stored in ExN04TrackerHitsCollection.
58 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 0.917237 (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 1
174 hits are stored in ExN04TrackerHitsCollection.
84 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.55103 (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
177 hits are stored in ExN04TrackerHitsCollection.
83 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 1.28925 (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 3
117 hits are stored in ExN04TrackerHitsCollection.
85 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 0.982027 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
Stage 0->1 : 1 hits found in the muon chamber.
G4VContinuousDiscreteProcess::PostStepGetPhysicalInteractionLength [ hIoni]
Particle type - pi-
mass: 0.13957[GeV]
charge: 5.9304e+251[e]
Direction x: 0.632245, y: 0.524612, z: 0.570131
Total Momentum = 0.240455[GeV]
Momentum: 0.152026[GeV], y: 0.126145[GeV], z: 0.137091[GeV]
Total Energy = 0.278026[GeV]
Kinetic Energy = 0.138456[GeV]
ProperTime = 0[ns]
in Material Air
MeanFreePath = 0[cm]
Stage 1->2 : 1 isolated muon found.
>>> Event 4
386 hits are stored in ExN04TrackerHitsCollection.
140 hits are stored in ExN04CalorimeterHitsCollection.
Total energy deposition in calorimeter : 2.25866 (GeV)
1 hits are stored in ExN04MuonHitsCollection.
1********* PYSTAT: Statistics on Number of Events and Cross-sections *********
==============================================================================
I I I I
I Subprocess I Number of points I Sigma I
I I I I
I----------------------------------I----------------------------I (mb) I
I I I I
I N:o Type I Generated Tried I I
I I I I
==============================================================================
I I I 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 *********
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04CalorimeterHit_h
#define ExN04CalorimeterHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
#include "G4LogicalVolume.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
class ExN04CalorimeterHit : public G4VHit
{
public:
ExN04CalorimeterHit();
ExN04CalorimeterHit(G4LogicalVolume* logVol,G4int z,G4int phi);
~ExN04CalorimeterHit();
ExN04CalorimeterHit(const ExN04CalorimeterHit &right);
const ExN04CalorimeterHit& operator=(const ExN04CalorimeterHit &right);
int operator==(const ExN04CalorimeterHit &right) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
void Draw();
void Print();
private:
G4int ZCellID;
G4int PhiCellID;
G4double edep;
G4ThreeVector pos;
G4RotationMatrix rot;
const G4LogicalVolume* pLogV;
public:
inline void SetCellID(G4int z,G4int phi)
{
ZCellID = z;
PhiCellID = phi;
}
inline G4int GetZ() { return ZCellID; }
inline G4int GetPhi() { return PhiCellID; }
inline void SetEdep(G4double de)
{ edep = de; }
inline void AddEdep(G4double de)
{ edep += de; }
inline G4double GetEdep()
{ return edep; }
inline void SetPos(G4ThreeVector xyz)
{ pos = xyz; }
inline G4ThreeVector GetPos()
{ return pos; }
inline void SetRot(G4RotationMatrix rmat)
{ rot = rmat; }
inline G4RotationMatrix GetRot()
{ return rot; }
inline const G4LogicalVolume * GetLogV()
{ return pLogV; }
};
typedef G4THitsCollection<ExN04CalorimeterHit> ExN04CalorimeterHitsCollection;
extern G4Allocator<ExN04CalorimeterHit> ExN04CalorimeterHitAllocator;
inline void* ExN04CalorimeterHit::operator new(size_t)
{
void *aHit;
aHit = (void *) ExN04CalorimeterHitAllocator.MallocSingle();
return aHit;
}
inline void ExN04CalorimeterHit::operator delete(void *aHit)
{
ExN04CalorimeterHitAllocator.FreeSingle((ExN04CalorimeterHit*) aHit);
}
#endif
@@ -0,0 +1,53 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04CalorimeterParametrisation_H
#define ExN04CalorimeterParametrisation_H 1
#include "globals.hh"
#include "G4VPVParameterisation.hh"
class G4VPhysicalVolume;
class G4Tubs;
class ExN04CalorimeterParametrisation : public G4VPVParameterisation
{
public:
ExN04CalorimeterParametrisation();
virtual ~ExN04CalorimeterParametrisation();
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeDimensions( G4Tubs & calorimeterLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
private:
#include "ExN04DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,42 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04CalorimeterROGeometry_h
#define ExN04CalorimeterROGeometry_h 1
#include "G4VReadOutGeometry.hh"
class ExN04CalorimeterROGeometry : public G4VReadOutGeometry
{
public:
ExN04CalorimeterROGeometry();
ExN04CalorimeterROGeometry(G4String);
~ExN04CalorimeterROGeometry();
private:
G4VPhysicalVolume* Build();
#include "ExN04DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04CalorimeterSD_h
#define ExN04CalorimeterSD_h 1
#include "G4VSensitiveDetector.hh"
#include "ExN04CalorimeterHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class ExN04CalorimeterSD : public G4VSensitiveDetector
{
public:
ExN04CalorimeterSD(G4String name);
~ExN04CalorimeterSD();
void Initialize(G4HCofThisEvent*HCE);
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
void EndOfEvent(G4HCofThisEvent*HCE);
void clear();
void DrawAll();
void PrintAll();
private:
ExN04CalorimeterHitsCollection *CalCollection;
int CellID[20][48];
const int numberOfCellsInZ;
const int numberOfCellsInPhi;
};
#endif
@@ -0,0 +1,48 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04DetectorConstruction_h
#define ExN04DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4VPhysicalVolume;
class ExN04DetectorConstruction : public G4VUserDetectorConstruction
{
public:
ExN04DetectorConstruction();
~ExN04DetectorConstruction();
public:
G4VPhysicalVolume* Construct();
private:
#include "ExN04DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
G4double expHall_x;
G4double expHall_y;
G4double expHall_z;
G4double trkTubs_rmax;
G4double trkTubs_rmin;
G4double trkTubs_dz;
G4double trkTubs_sphi;
G4double trkTubs_dphi;
G4int notrkLayers;
G4double tracker_radius[5];
G4double tracker_thick;
G4double tracker_length[5];
G4double caloTubs_rmax;
G4double caloTubs_rmin;
G4double caloTubs_dz;
G4double caloTubs_sphi;
G4double caloTubs_dphi;
G4int nocaloLayers;
G4double absorber_thick;
G4double scinti_thick;
G4int segmentsinZ;
G4double caloRing_rmax;
G4double caloRing_rmin;
G4double caloRing_dz;
G4double caloRing_sphi;
G4double caloRing_dphi;
G4int segmentsinPhi;
G4double caloCell_rmax;
G4double caloCell_rmin;
G4double caloCell_dz;
G4double caloCell_sphi;
G4double caloCell_dphi;
G4int nomucounter;
G4double muBox_radius;
G4double muBox_width;
G4double muBox_thick;
G4double muBox_length;
@@ -0,0 +1,50 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// Dummy sensitive used only to flag sensitivity
// in cells of RO geometry.
//
#ifndef ExN04DummySD_h
#define ExN04DummySD_h 1
#include "G4VSensitiveDetector.hh"
class G4Step;
class ExN04DummySD : public G4VSensitiveDetector
{
public:
ExN04DummySD();
~ExN04DummySD() {};
void Initialize(G4HCofThisEvent*HCE) {};
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist) {return false;}
void EndOfEvent(G4HCofThisEvent*HCE) {};
void clear() {};
void DrawAll() {};
void PrintAll() {};
};
ExN04DummySD::ExN04DummySD()
: G4VSensitiveDetector("dummySD")
{}
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04EMPhysics.hh,v 1.1 2002/04/29 20:43:37 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef ExN04EMPhysics_h
#define ExN04EMPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
class ExN04EMPhysics : public G4VPhysicsConstructor
{
public:
ExN04EMPhysics(const G4String& name ="EM");
virtual ~ExN04EMPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Gamma physics
G4PhotoElectricEffect thePhotoEffect;
G4ComptonScattering theComptonEffect;
G4GammaConversion thePairProduction;
// Electron physics
G4MultipleScattering theElectronMultipleScattering;
G4eIonisation theElectronIonisation;
G4eBremsstrahlung theElectronBremsStrahlung;
//Positron physics
G4MultipleScattering thePositronMultipleScattering;
G4eIonisation thePositronIonisation;
G4eBremsstrahlung thePositronBremsStrahlung;
G4eplusAnnihilation theAnnihilation;
};
#endif
@@ -0,0 +1,48 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04EventAction_h
#define ExN04EventAction_h 1
#include "G4UserEventAction.hh"
#include "globals.hh"
class ExN04EventAction : public G4UserEventAction
{
public:
ExN04EventAction();
~ExN04EventAction();
public:
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
private:
G4int trackerCollID;
G4int calorimeterCollID;
G4int muonCollID;
};
#endif
@@ -0,0 +1,46 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04Field_H
#define ExN04Field_H 1
#include "globals.hh"
#include "G4MagneticField.hh"
class ExN04Field : public G4MagneticField
{
public:
ExN04Field();
~ExN04Field();
void GetFieldValue( const double Point[3],
double *Bfield ) const;
private:
G4double Bz;
G4double rmax_sq;
G4double zmax;
};
#endif
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04GeneralPhysics.hh,v 1.1 2002/04/29 20:43:39 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef ExN04GeneralPhysics_h
#define ExN04GeneralPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4Decay.hh"
class ExN04GeneralPhysics : public G4VPhysicsConstructor
{
public:
ExN04GeneralPhysics(const G4String& name = "general");
virtual ~ExN04GeneralPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
G4Decay fDecayProcess;
};
#endif
@@ -0,0 +1,331 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04HadronPhysics.hh,v 1.1 2002/04/29 20:43:40 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef ExN04HadronPhysics_h
#define ExN04HadronPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/vector"
#include "G4VPhysicsConstructor.hh"
#include "G4MultipleScattering.hh"
#include "G4hIonisation.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4PionPlusInelasticProcess.hh"
#include "G4PionMinusInelasticProcess.hh"
#include "G4KaonPlusInelasticProcess.hh"
#include "G4KaonZeroSInelasticProcess.hh"
#include "G4KaonZeroLInelasticProcess.hh"
#include "G4KaonMinusInelasticProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4AntiProtonInelasticProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4AntiNeutronInelasticProcess.hh"
#include "G4LambdaInelasticProcess.hh"
#include "G4AntiLambdaInelasticProcess.hh"
#include "G4SigmaPlusInelasticProcess.hh"
#include "G4SigmaMinusInelasticProcess.hh"
#include "G4AntiSigmaPlusInelasticProcess.hh"
#include "G4AntiSigmaMinusInelasticProcess.hh"
#include "G4XiZeroInelasticProcess.hh"
#include "G4XiMinusInelasticProcess.hh"
#include "G4AntiXiZeroInelasticProcess.hh"
#include "G4AntiXiMinusInelasticProcess.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4OmegaMinusInelasticProcess.hh"
#include "G4AntiOmegaMinusInelasticProcess.hh"
// Low-energy Models
#include "G4LElastic.hh"
#include "G4LFission.hh"
#include "G4LCapture.hh"
#include "G4LEPionPlusInelastic.hh"
#include "G4LEPionMinusInelastic.hh"
#include "G4LEKaonPlusInelastic.hh"
#include "G4LEKaonZeroSInelastic.hh"
#include "G4LEKaonZeroLInelastic.hh"
#include "G4LEKaonMinusInelastic.hh"
#include "G4LEProtonInelastic.hh"
#include "G4LEAntiProtonInelastic.hh"
#include "G4LENeutronInelastic.hh"
#include "G4LEAntiNeutronInelastic.hh"
#include "G4LELambdaInelastic.hh"
#include "G4LEAntiLambdaInelastic.hh"
#include "G4LESigmaPlusInelastic.hh"
#include "G4LESigmaMinusInelastic.hh"
#include "G4LEAntiSigmaPlusInelastic.hh"
#include "G4LEAntiSigmaMinusInelastic.hh"
#include "G4LEXiZeroInelastic.hh"
#include "G4LEXiMinusInelastic.hh"
#include "G4LEAntiXiZeroInelastic.hh"
#include "G4LEAntiXiMinusInelastic.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4LEOmegaMinusInelastic.hh"
#include "G4LEAntiOmegaMinusInelastic.hh"
// High-energy Models
#include "G4HEPionPlusInelastic.hh"
#include "G4HEPionMinusInelastic.hh"
#include "G4HEKaonPlusInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonMinusInelastic.hh"
#include "G4HEProtonInelastic.hh"
#include "G4HEAntiProtonInelastic.hh"
#include "G4HENeutronInelastic.hh"
#include "G4HEAntiNeutronInelastic.hh"
#include "G4HELambdaInelastic.hh"
#include "G4HEAntiLambdaInelastic.hh"
#include "G4HESigmaPlusInelastic.hh"
#include "G4HESigmaMinusInelastic.hh"
#include "G4HEAntiSigmaPlusInelastic.hh"
#include "G4HEAntiSigmaMinusInelastic.hh"
#include "G4HEXiZeroInelastic.hh"
#include "G4HEXiMinusInelastic.hh"
#include "G4HEAntiXiZeroInelastic.hh"
#include "G4HEAntiXiMinusInelastic.hh"
#include "G4HEOmegaMinusInelastic.hh"
#include "G4HEAntiOmegaMinusInelastic.hh"
// Stopping processes
#include "G4AntiProtonAnnihilationAtRest.hh"
#include "G4AntiNeutronAnnihilationAtRest.hh"
#ifdef TRIUMF_STOP_PIMINUS
#include "G4PionMinusAbsorptionAtRest.hh"
#else
#include "G4PiMinusAbsorptionAtRest.hh"
#endif
#ifdef TRIUMF_STOP_KMINUS
#include "G4KaonMinusAbsorption.hh"
#else
#include "G4KaonMinusAbsorptionAtRest.hh"
#endif
class ExN04HadronPhysics : public G4VPhysicsConstructor
{
public:
ExN04HadronPhysics(const G4String& name ="hadron");
virtual ~ExN04HadronPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Elastic Process
G4HadronElasticProcess theElasticProcess;
G4LElastic* theElasticModel;
// Pi +
G4PionPlusInelasticProcess thePionPlusInelastic;
G4LEPionPlusInelastic* theLEPionPlusModel;
G4HEPionPlusInelastic* theHEPionPlusModel;
G4MultipleScattering thePionPlusMult;
G4hIonisation thePionPlusIonisation;
// Pi -
G4PionMinusInelasticProcess thePionMinusInelastic;
G4LEPionMinusInelastic* theLEPionMinusModel;
G4HEPionMinusInelastic* theHEPionMinusModel;
G4MultipleScattering thePionMinusMult;
G4hIonisation thePionMinusIonisation;
#ifdef TRIUMF_STOP_PIMINUS
G4PionMinusAbsorptionAtRest thePionMinusAbsorption;
#else
G4PiMinusAbsorptionAtRest thePionMinusAbsorption;
#endif
// K +
G4KaonPlusInelasticProcess theKaonPlusInelastic;
G4LEKaonPlusInelastic* theLEKaonPlusModel;
G4HEKaonPlusInelastic* theHEKaonPlusModel;
G4MultipleScattering theKaonPlusMult;
G4hIonisation theKaonPlusIonisation;
// K -
G4KaonMinusInelasticProcess theKaonMinusInelastic;
G4LEKaonMinusInelastic* theLEKaonMinusModel;
G4HEKaonMinusInelastic* theHEKaonMinusModel;
G4MultipleScattering theKaonMinusMult;
G4hIonisation theKaonMinusIonisation;
#ifdef TRIUMF_STOP_KMINUS
G4KaonMinusAbsorption theKaonMinusAbsorption;
#else
G4PiMinusAbsorptionAtRest theKaonMinusAbsorption;
#endif
// K0L
G4KaonZeroLInelasticProcess theKaonZeroLInelastic;
G4LEKaonZeroLInelastic* theLEKaonZeroLModel;
G4HEKaonZeroInelastic* theHEKaonZeroLModel;
// K0S
G4KaonZeroSInelasticProcess theKaonZeroSInelastic;
G4LEKaonZeroSInelastic* theLEKaonZeroSModel;
G4HEKaonZeroInelastic* theHEKaonZeroSModel;
// Proton
G4ProtonInelasticProcess theProtonInelastic;
G4LEProtonInelastic* theLEProtonModel;
G4HEProtonInelastic* theHEProtonModel;
G4MultipleScattering theProtonMult;
G4hIonisation theProtonIonisation;
// anti-proton
G4AntiProtonInelasticProcess theAntiProtonInelastic;
G4LEAntiProtonInelastic* theLEAntiProtonModel;
G4HEAntiProtonInelastic* theHEAntiProtonModel;
G4MultipleScattering theAntiProtonMult;
G4hIonisation theAntiProtonIonisation;
G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation;
// neutron
G4NeutronInelasticProcess theNeutronInelastic;
G4LENeutronInelastic* theLENeutronModel;
G4HENeutronInelastic* theHENeutronModel;
G4HadronFissionProcess theNeutronFission;
G4LFission* theNeutronFissionModel;
G4HadronCaptureProcess theNeutronCapture;
G4LCapture* theNeutronCaptureModel;
// anti-neutron
G4AntiNeutronInelasticProcess theAntiNeutronInelastic;
G4LEAntiNeutronInelastic* theLEAntiNeutronModel;
G4HEAntiNeutronInelastic* theHEAntiNeutronModel;
G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation;
// Lambda
G4LambdaInelasticProcess theLambdaInelastic;
G4LELambdaInelastic* theLELambdaModel;
G4HELambdaInelastic* theHELambdaModel;
// AntiLambda
G4AntiLambdaInelasticProcess theAntiLambdaInelastic;
G4LEAntiLambdaInelastic* theLEAntiLambdaModel;
G4HEAntiLambdaInelastic* theHEAntiLambdaModel;
// SigmaMinus
G4SigmaMinusInelasticProcess theSigmaMinusInelastic;
G4LESigmaMinusInelastic* theLESigmaMinusModel;
G4HESigmaMinusInelastic* theHESigmaMinusModel;
G4MultipleScattering theSigmaMinusMult;
G4hIonisation theSigmaMinusIonisation;
// AntiSigmaMinus
G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic;
G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusModel;
G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusModel;
G4MultipleScattering theAntiSigmaMinusMult;
G4hIonisation theAntiSigmaMinusIonisation;
// SigmaPlus
G4SigmaPlusInelasticProcess theSigmaPlusInelastic;
G4LESigmaPlusInelastic* theLESigmaPlusModel;
G4HESigmaPlusInelastic* theHESigmaPlusModel;
G4MultipleScattering theSigmaPlusMult;
G4hIonisation theSigmaPlusIonisation;
// AntiSigmaPlus
G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic;
G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusModel;
G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusModel;
G4MultipleScattering theAntiSigmaPlusMult;
G4hIonisation theAntiSigmaPlusIonisation;
// XiZero
G4XiZeroInelasticProcess theXiZeroInelastic;
G4LEXiZeroInelastic* theLEXiZeroModel;
G4HEXiZeroInelastic* theHEXiZeroModel;
// AntiXiZero
G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic;
G4LEAntiXiZeroInelastic* theLEAntiXiZeroModel;
G4HEAntiXiZeroInelastic* theHEAntiXiZeroModel;
// XiMinus
G4XiMinusInelasticProcess theXiMinusInelastic;
G4LEXiMinusInelastic* theLEXiMinusModel;
G4HEXiMinusInelastic* theHEXiMinusModel;
G4MultipleScattering theXiMinusMult;
G4hIonisation theXiMinusIonisation;
// AntiXiMinus
G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic;
G4LEAntiXiMinusInelastic* theLEAntiXiMinusModel;
G4HEAntiXiMinusInelastic* theHEAntiXiMinusModel;
G4MultipleScattering theAntiXiMinusMult;
G4hIonisation theAntiXiMinusIonisation;
// OmegaMinus
G4OmegaMinusInelasticProcess theOmegaMinusInelastic;
G4LEOmegaMinusInelastic* theLEOmegaMinusModel;
G4HEOmegaMinusInelastic* theHEOmegaMinusModel;
G4MultipleScattering theOmegaMinusMult;
G4hIonisation theOmegaMinusIonisation;
// AntiOmegaMinus
G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic;
G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusModel;
G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusModel;
G4MultipleScattering theAntiOmegaMinusMult;
G4hIonisation theAntiOmegaMinusIonisation;
};
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04IonPhysics.hh,v 1.1 2002/04/29 20:43:41 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef ExN04IonPhysics_h
#define ExN04IonPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronElasticProcess.hh"
#include "G4LElastic.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4LETritonInelastic.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4hIonisation.hh"
#include "G4MultipleScattering.hh"
class ExN04IonPhysics : public G4VPhysicsConstructor
{
public:
ExN04IonPhysics(const G4String& name="ion");
virtual ~ExN04IonPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Elastic Process
G4HadronElasticProcess theElasticProcess;
G4LElastic* theElasticModel;
// Generic Ion physics
G4MultipleScattering fIonMultipleScattering;
G4hIonisation fIonIonisation;
// Deuteron physics
G4MultipleScattering fDeuteronMultipleScattering;
G4hIonisation fDeuteronIonisation;
G4DeuteronInelasticProcess fDeuteronProcess;
G4LEDeuteronInelastic* fDeuteronModel;
// Triton physics
G4MultipleScattering fTritonMultipleScattering;
G4hIonisation fTritonIonisation;
G4TritonInelasticProcess fTritonProcess;
G4LETritonInelastic* fTritonModel;
// Alpha physics
G4MultipleScattering fAlphaMultipleScattering;
G4hIonisation fAlphaIonisation;
G4AlphaInelasticProcess fAlphaProcess;
G4LEAlphaInelastic* fAlphaModel;
// He3 physics
G4MultipleScattering fHe3MultipleScattering;
G4hIonisation fHe3Ionisation;
};
#endif
@@ -0,0 +1,85 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04MuonHit_h
#define ExN04MuonHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
class ExN04MuonHit : public G4VHit
{
public:
ExN04MuonHit();
~ExN04MuonHit();
ExN04MuonHit(const ExN04MuonHit &right);
const ExN04MuonHit& operator=(const ExN04MuonHit &right);
int operator==(const ExN04MuonHit &right) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
void Draw();
void Print();
private:
G4double edep;
G4ThreeVector pos;
public:
inline void SetEdep(G4double de)
{ edep = de; }
inline void AddEdep(G4double de)
{ edep += de; }
inline G4double GetEdep()
{ return edep; }
inline void SetPos(G4ThreeVector xyz)
{ pos = xyz; }
inline G4ThreeVector GetPos()
{ return pos; }
};
typedef G4THitsCollection<ExN04MuonHit> ExN04MuonHitsCollection;
extern G4Allocator<ExN04MuonHit> ExN04MuonHitAllocator;
inline void* ExN04MuonHit::operator new(size_t)
{
void *aHit;
aHit = (void *) ExN04MuonHitAllocator.MallocSingle();
return aHit;
}
inline void ExN04MuonHit::operator delete(void *aHit)
{
ExN04MuonHitAllocator.FreeSingle((ExN04MuonHit*) aHit);
}
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04MuonPhysics.hh,v 1.1 2002/04/29 20:43:43 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef ExN04MuonPhysics_h
#define ExN04MuonPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4MultipleScattering.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4MuIonisation.hh"
#include "G4hIonisation.hh"
#include "G4MuonMinusCaptureAtRest.hh"
class ExN04MuonPhysics : public G4VPhysicsConstructor
{
public:
ExN04MuonPhysics(const G4String& name="muon");
virtual ~ExN04MuonPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Muon physics
G4MultipleScattering fMuPlusMultipleScattering;
G4MuBremsstrahlung fMuPlusBremsstrahlung ;
G4MuPairProduction fMuPlusPairProduction;
G4MuIonisation fMuPlusIonisation;
G4MultipleScattering fMuMinusMultipleScattering;
G4MuBremsstrahlung fMuMinusBremsstrahlung ;
G4MuPairProduction fMuMinusPairProduction;
G4MuIonisation fMuMinusIonisation;
G4MuonMinusCaptureAtRest fMuMinusCaptureAtRest;
// Tau physics
G4MultipleScattering fTauPlusMultipleScattering;
G4hIonisation fTauPlusIonisation;
G4MultipleScattering fTauMinusMultipleScattering;
G4hIonisation fTauMinusIonisation;
};
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04MuonSD_h
#define ExN04MuonSD_h 1
#include "G4VSensitiveDetector.hh"
#include "ExN04MuonHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class ExN04MuonSD : public G4VSensitiveDetector
{
public:
ExN04MuonSD(G4String name);
~ExN04MuonSD();
void Initialize(G4HCofThisEvent*HCE);
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
void EndOfEvent(G4HCofThisEvent*HCE);
void clear();
void DrawAll();
void PrintAll();
private:
ExN04MuonHitsCollection * muonCollection;
G4double positionResolution;
};
#endif
@@ -0,0 +1,46 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04PhysicsList_h
#define ExN04PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
class ExN04PhysicsList: public G4VModularPhysicsList
{
public:
ExN04PhysicsList();
virtual ~ExN04PhysicsList();
public:
// SetCuts()
virtual void SetCuts();
};
#endif
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// ExN04PrimaryGeneratorAction.hh
// $Id: ExN04PrimaryGeneratorAction.hh,v 1.1 2002/04/29 20:43:45 asaim Exp $
//
// ====================================================================
#ifndef EXN04_PRIMARY_GENERATOR_ACTION_H
#define EXN04_PRIMARY_GENERATOR_ACTION_H
#include "g4std/map"
#include "globals.hh"
#include "G4VUserPrimaryGeneratorAction.hh"
class G4Event;
class G4VPrimaryGenerator;
class ExN04PrimaryGeneratorMessenger;
class ExN04PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction {
private:
G4VPrimaryGenerator* particleGun;
G4VPrimaryGenerator* hepmcAscii;
G4VPrimaryGenerator* pythiaGen;
G4VPrimaryGenerator* currentGenerator;
G4String currentGeneratorName;
std::map<G4String, G4VPrimaryGenerator*> gentypeMap;
ExN04PrimaryGeneratorMessenger* messenger;
public:
ExN04PrimaryGeneratorAction();
~ExN04PrimaryGeneratorAction();
virtual void GeneratePrimaries(G4Event* anEvent);
void SetGenerator(G4VPrimaryGenerator* gen);
void SetGenerator(G4String genname);
G4VPrimaryGenerator* GetGenerator() const;
G4String GetGeneratorName() const;
};
// ====================================================================
// inline functions
// ====================================================================
inline void ExN04PrimaryGeneratorAction::SetGenerator
(G4VPrimaryGenerator* gen)
{
currentGenerator= gen;
}
inline void ExN04PrimaryGeneratorAction::SetGenerator(G4String genname)
{
map<G4String, G4VPrimaryGenerator*>::iterator pos= gentypeMap.find(genname);
if(pos != gentypeMap.end()) {
currentGenerator= pos->second;
currentGeneratorName= genname;
}
}
inline G4VPrimaryGenerator* ExN04PrimaryGeneratorAction::GetGenerator() const
{
return currentGenerator;
}
inline G4String ExN04PrimaryGeneratorAction::GetGeneratorName() const
{
return currentGeneratorName;
}
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// ExN04PrimaryGeneratorMessenger.hh
// $Id: ExN04PrimaryGeneratorMessenger.hh,v 1.1 2002/04/29 20:43:46 asaim Exp $
//
// ====================================================================
#ifndef EXN04_PRIMARY_GENERATOR_MESSENGER_H
#define EXN04_PRIMARY_GENERATOR_MESSENGER_H
#include "globals.hh"
#include "G4UImessenger.hh"
class ExN04PrimaryGeneratorAction;
class G4UIdirectory;
class G4UIcommand;
class G4UIcmdWithoutParameter;
class G4UIcmdWithABool;
class G4UIcmdWithAnInteger;
class G4UIcmdWithAString;
class ExN04PrimaryGeneratorMessenger : public G4UImessenger {
private:
ExN04PrimaryGeneratorAction* primaryAction;
G4UIdirectory* dir;
G4UIdirectory* mydetdir;
G4UIcmdWithAString* select;
public:
ExN04PrimaryGeneratorMessenger(ExN04PrimaryGeneratorAction* genaction);
~ExN04PrimaryGeneratorMessenger();
void SetNewValue(G4UIcommand* command, G4String newValues);
G4String GetCurrentValue(G4UIcommand* command);
};
#endif
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04StackingAction_H
#define ExN04StackingAction_H 1
#include "globals.hh"
#include "G4UserStackingAction.hh"
#include "G4ThreeVector.hh"
class G4Track;
#include "ExN04TrackerHit.hh"
#include "ExN04MuonHit.hh"
class ExN04StackingActionMessenger;
class ExN04StackingAction : public G4UserStackingAction
{
public:
ExN04StackingAction();
virtual ~ExN04StackingAction();
public:
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
virtual void NewStage();
virtual void PrepareNewEvent();
private:
G4bool InsideRoI(const G4Track * aTrack,G4double ang);
G4VHitsCollection* GetCollection(G4String colName);
ExN04TrackerHitsCollection* trkHits;
ExN04MuonHitsCollection* muonHits;
ExN04StackingActionMessenger* theMessenger;
G4int stage;
G4int reqMuon;
G4int reqIsoMuon;
G4int reqIso;
G4double angRoI;
public:
inline void SetNRequestMuon(G4int val) { reqMuon = val; }
inline G4int GetNRequestMuon() const { return reqMuon; }
inline void SetNRequestIsoMuon(G4int val) { reqIsoMuon = val; }
inline G4int GetNRequestIsoMuon() const { return reqIsoMuon; }
inline void SetNIsolation(G4int val) { reqIso = val; }
inline G4int GetNIsolation() const { return reqIso; }
inline void SetRoIAngle(G4double val) { angRoI = val; }
inline G4double GetRoIAngle() const { return angRoI; }
};
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04StackingActionMessenger_h
#define ExN04StackingActionMessenger_h 1
class ExN04StackingAction;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADoubleAndUnit;
#include "G4UImessenger.hh"
#include "globals.hh"
class ExN04StackingActionMessenger: public G4UImessenger
{
public:
ExN04StackingActionMessenger(ExN04StackingAction* msa);
~ExN04StackingActionMessenger();
public:
void SetNewValue(G4UIcommand * command,G4String newValues);
G4String GetCurrentValue(G4UIcommand * command);
private:
ExN04StackingAction * myAction;
private: //commands
G4UIcmdWithAnInteger * muonCmd;
G4UIcmdWithAnInteger * isomuonCmd;
G4UIcmdWithAnInteger * isoCmd;
G4UIcmdWithADoubleAndUnit * roiCmd;
};
#endif
@@ -0,0 +1,40 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04SteppingAction_H
#define ExN04SteppingAction_H 1
#include "globals.hh"
#include "G4UserSteppingAction.hh"
class ExN04SteppingAction : public G4UserSteppingAction
{
public:
ExN04SteppingAction();
virtual ~ExN04SteppingAction();
virtual void UserSteppingAction(const G4Step*);
};
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04TrackerHit_h
#define ExN04TrackerHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
class ExN04TrackerHit : public G4VHit
{
public:
ExN04TrackerHit();
~ExN04TrackerHit();
ExN04TrackerHit(const ExN04TrackerHit &right);
const ExN04TrackerHit& operator=(const ExN04TrackerHit &right);
int operator==(const ExN04TrackerHit &right) const;
inline void *operator new(size_t);
inline void operator delete(void *aHit);
void Draw();
void Print();
private:
G4double edep;
G4ThreeVector pos;
public:
inline void SetEdep(G4double de)
{ edep = de; }
inline G4double GetEdep()
{ return edep; }
inline void SetPos(G4ThreeVector xyz)
{ pos = xyz; }
inline G4ThreeVector GetPos()
{ return pos; }
};
typedef G4THitsCollection<ExN04TrackerHit> ExN04TrackerHitsCollection;
extern G4Allocator<ExN04TrackerHit> ExN04TrackerHitAllocator;
inline void* ExN04TrackerHit::operator new(size_t)
{
void *aHit;
aHit = (void *) ExN04TrackerHitAllocator.MallocSingle();
return aHit;
}
inline void ExN04TrackerHit::operator delete(void *aHit)
{
ExN04TrackerHitAllocator.FreeSingle((ExN04TrackerHit*) aHit);
}
#endif
@@ -0,0 +1,53 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04TrackerParametrisation_H
#define ExN04TrackerParametrisation_H 1
#include "globals.hh"
#include "G4VPVParameterisation.hh"
class G4VPhysicalVolume;
class G4Tubs;
class ExN04TrackerParametrisation : public G4VPVParameterisation
{
public:
ExN04TrackerParametrisation();
virtual ~ExN04TrackerParametrisation();
void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume *physVol) const;
void ComputeDimensions( G4Tubs & trackerLayer,
const G4int copyNo,
const G4VPhysicalVolume * physVol) const;
private:
#include "ExN04DetectorParameterDef.hh"
};
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04TrackerSD_h
#define ExN04TrackerSD_h 1
#include "G4VSensitiveDetector.hh"
#include "ExN04TrackerHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class ExN04TrackerSD : public G4VSensitiveDetector
{
public:
ExN04TrackerSD(G4String name);
~ExN04TrackerSD();
void Initialize(G4HCofThisEvent*HCE);
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
void EndOfEvent(G4HCofThisEvent*HCE);
void clear();
void DrawAll();
void PrintAll();
private:
ExN04TrackerHitsCollection *trackerCollection;
public:
};
#endif
@@ -0,0 +1,40 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN04TrackingAction_h
#define ExN04TrackingAction_h 1
#include "G4UserTrackingAction.hh"
class ExN04TrackingAction : public G4UserTrackingAction {
public:
ExN04TrackingAction(){};
virtual ~ExN04TrackingAction(){};
virtual void PreUserTrackingAction(const G4Track*);
};
#endif
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4AsciiReader.hh
// $Id: HepMCG4AsciiReader.hh,v 1.1 2002/05/28 13:52:40 murakami Exp $
//
// ====================================================================
#ifndef HEPMC_G4_ASCII_READER_H
#define HEPMC_G4_ASCII_READER_H
#include "HepMCG4Interface.hh"
#include "HepMC/IO_Ascii.h"
class HepMCG4AsciiReaderMessenger;
class HepMCG4AsciiReader : public HepMCG4Interface {
protected:
G4String filename;
HepMC::IO_Ascii* asciiInput;
G4int verbose;
HepMCG4AsciiReaderMessenger* messenger;
virtual HepMC::GenEvent* GenerateHepMCEvent();
public:
HepMCG4AsciiReader();
~HepMCG4AsciiReader();
// set/get methods
void SetFileName(G4String name);
G4String GetFileName() const;
void SetVerboseLevel(G4int i);
G4int GetVerboseLevel() const;
// methods...
void Initialize();
};
// ====================================================================
// inline functions
// ====================================================================
inline void HepMCG4AsciiReader::SetFileName(G4String name)
{
filename= name;
}
inline G4String HepMCG4AsciiReader::GetFileName() const
{
return filename;
}
inline void HepMCG4AsciiReader::SetVerboseLevel(G4int i)
{
verbose= i;
}
inline G4int HepMCG4AsciiReader::GetVerboseLevel() const
{
return verbose;
}
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4AsciiReaderMessenger.hh
// $Id: HepMCG4AsciiReaderMessenger.hh,v 1.1 2002/05/28 13:52:40 murakami Exp $
//
// ====================================================================
#ifndef HEPMC_G4_ASCII_READER_MESSENGER_H
#define HEPMC_G4_ASCII_READER_MESSENGER_H
#include "G4UImessenger.hh"
class HepMCG4AsciiReader;
class G4UIdirectory;
class G4UIcmdWithoutParameter;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class HepMCG4AsciiReaderMessenger : public G4UImessenger {
private:
HepMCG4AsciiReader* gen;
G4UIdirectory* dir;
G4UIcmdWithAnInteger* verbose;
G4UIcmdWithAString* open;
public:
HepMCG4AsciiReaderMessenger(HepMCG4AsciiReader* agen);
~HepMCG4AsciiReaderMessenger();
void SetNewValue(G4UIcommand* command, G4String newValues);
G4String GetCurrentValue(G4UIcommand* command);
};
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4Interface.hh
// $Id: HepMCG4Interface.hh,v 1.1 2002/05/28 13:52:40 murakami Exp $
//
// A base class for primary generation via HepMC object.
// This class is derived from G4VPrimaryGenerator.
//
// ====================================================================
#ifndef HEPMC_G4_INTERFACE_H
#define HEPMC_G4_INTERFACE_H
#include "G4VPrimaryGenerator.hh"
#include "HepMC/GenEvent.h"
class HepMCG4Interface : public G4VPrimaryGenerator {
protected:
// Note that the life of HepMC event object must be handled by users.
// In the default implementation, a current HepMC event will be
// deleted at GeneratePrimaryVertex() in the next event.
HepMC::GenEvent* hepmcEvent; // (care for single event case only)
// We have to take care for the position of primaries because
// primary vertices outside the world voulme give rise to G4Execption.
// If the default implementation is not adequate, an alternative
// can be implemented in your own class.
virtual G4bool CheckVertexInsideWorld(const G4ThreeVector& pos) const;
// service method for conversion from HepMC::GenEvent to G4Event
void HepMC2G4(const HepMC::GenEvent* hepmcevt, G4Event* g4event);
// Implement this method in his/her own concrete class.
// An empty event will be created in default.
virtual HepMC::GenEvent* GenerateHepMCEvent();
public:
HepMCG4Interface();
virtual ~HepMCG4Interface();
// set/get methods
HepMC::GenEvent* GetHepMCGenEvent() const;
// The default behavior is that a single HepMC event generated by
// GenerateHepMCEvent() will be converted to G4Event through HepMC2G4().
virtual void GeneratePrimaryVertex(G4Event* anEvent);
};
// ====================================================================
// inline functions
// ====================================================================
inline HepMC::GenEvent* HepMCG4Interface::GetHepMCGenEvent() const
{
return hepmcEvent;
}
#endif
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4PythiaInterface.hh
// $Id: HepMCG4PythiaInterface.hh,v 1.1 2002/05/28 13:52:40 murakami Exp $
//
// A generic interface class with Pythia event generator via HepMC.
//
// ====================================================================
#ifndef HEPMC_G4_PYTHIA_INTERFACE_H
#define HEPMC_G4_PYTHIA_INTERFACE_H
#include "HepMCG4Interface.hh"
#include "HepMC/IO_HEPEVT.h"
class HepMCG4PythiaMessenger;
class HepMCG4PythiaInterface : public HepMCG4Interface {
protected:
G4int verbose;
G4int mpylist;
HepMC::IO_HEPEVT hepevtio;
HepMCG4PythiaMessenger* messenger;
// In default, this is automatic conversion, Pythia->HEPEVT->HepMC,
// by HepMC utilities.
virtual HepMC::GenEvent* GenerateHepMCEvent();
public:
HepMCG4PythiaInterface();
~HepMCG4PythiaInterface();
// set/get methods
void SetVerboseLevel(G4int i);
G4int GetVerboseLevel() const;
void SetPylist(G4int i);
G4int GetPylist() const;
// call pyxxx
void CallPyinit(G4String frame, G4String beam, G4String target,
G4double win);
void CallPystat(G4int istat);
// random numbers operations
void SetRandomSeed(G4int iseed);
void CallPygive(G4String par);
void CallPyrget(G4int lun, G4int move);
void CallPyrset(G4int lun, G4int move);
void PrintRandomStatus(G4std::ostream& ostr=G4std::cout) const;
// setup user parameters (empty in default).
// Implement your parameters in a delived class if you want.
virtual void SetUserParameters();
virtual void Print() const;
};
// ====================================================================
// inline functions
// ====================================================================
inline void HepMCG4PythiaInterface::SetVerboseLevel(G4int i)
{
verbose= i;
}
inline G4int HepMCG4PythiaInterface::GetVerboseLevel() const
{
return verbose;
}
inline void HepMCG4PythiaInterface::SetPylist(G4int i)
{
mpylist= i;
}
inline G4int HepMCG4PythiaInterface::GetPylist() const
{
return mpylist;
}
#endif
@@ -0,0 +1,65 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4GenericPythiaMessenger.hh
// $Id: HepMCG4PythiaMessenger.hh,v 1.1 2002/05/28 13:52:40 murakami Exp $
//
// ====================================================================
#ifndef HEPMC_G4_PYTHIA_MESSENGER_H
#define HEPMC_G4_PYTHIA_MESSENGER_H
#include "G4UImessenger.hh"
class HepMCG4PythiaInterface;
class G4UIdirectory;
class G4UIcmdWithoutParameter;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class HepMCG4PythiaMessenger : public G4UImessenger {
private:
HepMCG4PythiaInterface* gen;
G4UIdirectory* dir;
G4UIcmdWithAnInteger* verbose;
G4UIcmdWithAnInteger* mpylist;
G4UIcmdWithoutParameter* print;
G4UIcommand* cpyinit;
G4UIcmdWithAnInteger* cpystat;
G4UIcommand* cpygive;
G4UIcommand* setUserParameters;
G4UIcmdWithAnInteger* setSeed;
G4UIcommand* cpyrget;
G4UIcommand* cpyrset;
G4UIcmdWithAString* printRandomStatus;
public:
HepMCG4PythiaMessenger(HepMCG4PythiaInterface* agen);
~HepMCG4PythiaMessenger();
void SetNewValue(G4UIcommand* command, G4String newValues);
G4String GetCurrentValue(G4UIcommand* command);
};
#endif
@@ -0,0 +1,47 @@
/generator/pythia/pygive PMAS(6,1)=174.3D0
/generator/pythia/pygive PMAS(25,1)=200.D0
/generator/pythia/pygive MSEL=0
/generator/pythia/pygive MSUB(102)=1
/generator/pythia/pygive MSUB(123)=1
/generator/pythia/pygive MSUB(124)=1
/generator/pythia/pygive MDME(210,1)=0
/generator/pythia/pygive MDME(211,1)=0
/generator/pythia/pygive MDME(212,1)=0
/generator/pythia/pygive MDME(213,1)=0
/generator/pythia/pygive MDME(214,1)=0
/generator/pythia/pygive MDME(215,1)=0
/generator/pythia/pygive MDME(218,1)=0
/generator/pythia/pygive MDME(219,1)=0
/generator/pythia/pygive MDME(220,1)=0
/generator/pythia/pygive MDME(222,1)=0
/generator/pythia/pygive MDME(223,1)=0
/generator/pythia/pygive MDME(224,1)=0
/generator/pythia/pygive MDME(225,1)=1
/generator/pythia/pygive MDME(226,1)=0
/generator/pythia/pygive MDME(216,1)=-1
/generator/pythia/pygive MDME(217,1)=-1
/generator/pythia/pygive MDME(218,1)=-1
/generator/pythia/pygive MDME(174,1)=0
/generator/pythia/pygive MDME(175,1)=0
/generator/pythia/pygive MDME(176,1)=0
/generator/pythia/pygive MDME(177,1)=0
/generator/pythia/pygive MDME(178,1)=0
/generator/pythia/pygive MDME(179,1)=0
/generator/pythia/pygive MDME(182,1)=0
/generator/pythia/pygive MDME(183,1)=0
/generator/pythia/pygive MDME(184,1)=1
/generator/pythia/pygive MDME(185,1)=0
/generator/pythia/pygive MDME(186,1)=0
/generator/pythia/pygive MDME(187,1)=0
/generator/pythia/pygive MDME(180,1)=-1
/generator/pythia/pygive MDME(181,1)=-1
/generator/pythia/pygive MDME(188,1)=-1
/generator/pythia/pygive MDME(189,1)=-1
/generator/pythia/pygive MSTP(61)=1
/generator/pythia/pygive MSTP(71)=1
/generator/pythia/pygive MSTP(81)=1
/generator/pythia/pygive MSTP(111)=1
@@ -0,0 +1,4 @@
/generator/select pythia
/control/execute pyh4mu.mac
/generator/pythia/pyinit cms p p 14000
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04CalorimeterHit.hh"
#include "G4ios.hh"
#include "G4VVisManager.hh"
#include "G4Colour.hh"
#include "G4VisAttributes.hh"
#include "G4LogicalVolume.hh"
G4Allocator<ExN04CalorimeterHit> ExN04CalorimeterHitAllocator;
ExN04CalorimeterHit::ExN04CalorimeterHit()
{pLogV=0;}
ExN04CalorimeterHit::ExN04CalorimeterHit(G4LogicalVolume* logVol,G4int z,G4int phi)
: ZCellID(z), PhiCellID(phi), pLogV(logVol)
{;}
ExN04CalorimeterHit::~ExN04CalorimeterHit()
{;}
ExN04CalorimeterHit::ExN04CalorimeterHit(const ExN04CalorimeterHit &right)
{
ZCellID = right.ZCellID;
PhiCellID = right.PhiCellID;
edep = right.edep;
pos = right.pos;
rot = right.rot;
pLogV = right.pLogV;
}
const ExN04CalorimeterHit& ExN04CalorimeterHit::operator=(const ExN04CalorimeterHit &right)
{
ZCellID = right.ZCellID;
PhiCellID = right.PhiCellID;
edep = right.edep;
pos = right.pos;
rot = right.rot;
pLogV = right.pLogV;
return *this;
}
int ExN04CalorimeterHit::operator==(const ExN04CalorimeterHit &right) const
{
return ((ZCellID==right.ZCellID)&&(PhiCellID==right.PhiCellID));
}
void ExN04CalorimeterHit::Draw()
{
G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
if(pVVisManager)
{
G4Transform3D trans(rot,pos);
G4VisAttributes attribs;
const G4VisAttributes* pVA = pLogV->GetVisAttributes();
if(pVA) attribs = *pVA;
G4Colour colour(1.,0.,0.);
attribs.SetColour(colour);
attribs.SetForceWireframe(false);
attribs.SetForceSolid(true);
pVVisManager->Draw(*pLogV,attribs,trans);
}
}
void ExN04CalorimeterHit::Print()
{;}
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04CalorimeterParametrisation.hh"
#include "G4VPhysicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4Tubs.hh"
ExN04CalorimeterParametrisation::ExN04CalorimeterParametrisation()
{
#include "ExN04DetectorParameterDef.icc"
}
ExN04CalorimeterParametrisation::~ExN04CalorimeterParametrisation()
{;}
void ExN04CalorimeterParametrisation::ComputeTransformation
(const G4int copyNo,G4VPhysicalVolume *physVol) const
{
G4ThreeVector origin;
physVol->SetTranslation(origin);
}
void ExN04CalorimeterParametrisation::ComputeDimensions
(G4Tubs & calorimeterLayer, const G4int copyNo,
const G4VPhysicalVolume * physVol) const
{
G4double innerRad = caloTubs_rmin
+ copyNo*(absorber_thick+scinti_thick);
calorimeterLayer.SetInnerRadius(innerRad);
calorimeterLayer.SetOuterRadius(innerRad+absorber_thick);
calorimeterLayer.SetZHalfLength(caloTubs_dz);
calorimeterLayer.SetStartPhiAngle(caloTubs_sphi);
calorimeterLayer.SetDeltaPhiAngle(caloTubs_dphi);
}
@@ -0,0 +1,109 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04CalorimeterROGeometry.hh"
#include "ExN04DummySD.hh"
#include "G4LogicalVolume.hh"
#include "G4VPhysicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4PVReplica.hh"
#include "G4SDManager.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4ThreeVector.hh"
#include "G4Material.hh"
ExN04CalorimeterROGeometry::ExN04CalorimeterROGeometry()
: G4VReadOutGeometry()
{
#include "ExN04DetectorParameterDef.icc"
}
ExN04CalorimeterROGeometry::ExN04CalorimeterROGeometry(G4String aString)
: G4VReadOutGeometry(aString)
{
#include "ExN04DetectorParameterDef.icc"
}
ExN04CalorimeterROGeometry::~ExN04CalorimeterROGeometry()
{
}
G4VPhysicalVolume* ExN04CalorimeterROGeometry::Build()
{
// A dummy material is used to fill the volumes of the readout geometry.
// ( It will be allowed to set a NULL pointer in volumes of such virtual
// division in future, since this material is irrelevant for tracking.)
G4Material* dummyMat = new G4Material(name="dummyMat", 1., 1.*g/mole, 1.*g/cm3);
//Builds the ReadOut World:
G4Box *ROWorldBox = new G4Box("ROWorldBox", expHall_x, expHall_y, expHall_z);
G4LogicalVolume *ROWorldLog = new G4LogicalVolume(ROWorldBox, dummyMat,
"ROWorldLogical", 0, 0, 0);
G4PVPlacement *ROWorldPhys = new G4PVPlacement(0,G4ThreeVector(),
"ROWorldPhysical",
ROWorldLog,
0,false,0);
// Calorimeter volume:
G4VSolid * caloROtub
= new G4Tubs("caloROtub",caloTubs_rmin,caloTubs_rmax,
caloTubs_dz,caloTubs_sphi,caloTubs_dphi);
G4LogicalVolume * caloROlog
= new G4LogicalVolume(caloROtub,dummyMat,"caloROlogical",0,0,0);
G4VPhysicalVolume * caloROphys
= new G4PVPlacement(0,G4ThreeVector(),"calROphysical",caloROlog,
ROWorldPhys,false,0);
// -------------------------------
// Calorimeter readout division:
// -------------------------------
// Phi division first: 48 sectors
G4VSolid * caloROphiDivisionTub
= new G4Tubs("caloROphiDivision", caloCell_rmin, caloCell_rmax,
caloCell_dz, caloCell_sphi, caloCell_dphi);
G4LogicalVolume * caloROphiDivisionLog
= new G4LogicalVolume(caloROphiDivisionTub, dummyMat, "caloROphiDivisionLogical",0,0,0);
G4VPhysicalVolume * caloROphiDivisionPhys
= new G4PVReplica("caloROphiDivisionPhysical", caloROphiDivisionLog, caloROphys,
kPhi, segmentsinPhi, caloCell_dphi);
// then z division: 20 slices:
G4VSolid * caloROcellTub
= new G4Tubs("caloROcellTub", caloRing_rmin, caloRing_rmax,
caloRing_dz, caloRing_sphi, caloRing_dphi);
G4LogicalVolume * caloROcellLog
= new G4LogicalVolume(caloROcellTub, dummyMat, "caloROcellLogical",0,0,0);
// G4VPhysicalVolume * caloROcellPhys =
new G4PVReplica("caloROcellPhysical", caloROcellLog, caloROphiDivisionPhys,
kZAxis, segmentsinZ,2.*caloRing_dz);
//Flags the cells as sensitive .The pointer here serves
// as a flag only to check for sensitivity.
// (Could we make it by a simple cast of a non-NULL value ?)
ExN04DummySD * dummySensi = new ExN04DummySD;
caloROcellLog->SetSensitiveDetector(dummySensi);
return ROWorldPhys;
}
@@ -0,0 +1,115 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04CalorimeterSD.hh"
#include "ExN04CalorimeterHit.hh"
#include "G4VPhysicalVolume.hh"
#include "G4LogicalVolume.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include "G4ParticleDefinition.hh"
#include "G4VTouchable.hh"
#include "G4TouchableHistory.hh"
#include "G4ios.hh"
ExN04CalorimeterSD::ExN04CalorimeterSD(G4String name)
:G4VSensitiveDetector(name),
numberOfCellsInZ(20),numberOfCellsInPhi(48)
{
G4String HCname;
collectionName.insert(HCname="calCollection");
}
ExN04CalorimeterSD::~ExN04CalorimeterSD()
{;}
void ExN04CalorimeterSD::Initialize(G4HCofThisEvent*HCE)
{
CalCollection = new ExN04CalorimeterHitsCollection
(SensitiveDetectorName,collectionName[0]);
for(int j=0;j<numberOfCellsInZ;j++)
for(int k=0;k<numberOfCellsInPhi;k++)
{
CellID[j][k] = -1;
}
}
G4bool ExN04CalorimeterSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist)
{
if(!ROhist) return false;
G4double edep = aStep->GetTotalEnergyDeposit();
if(edep==0.) return false;
G4VPhysicalVolume* physVol = ROhist->GetVolume();
//ROhist->MoveUpHistory();
//G4VPhysicalVolume* mothVol = ROhist->GetVolume(1);
int copyIDinZ = ROhist->GetReplicaNumber();
int copyIDinPhi = ROhist->GetReplicaNumber(1);
if(CellID[copyIDinZ][copyIDinPhi]==-1)
{
ExN04CalorimeterHit* calHit
= new ExN04CalorimeterHit
(physVol->GetLogicalVolume(),copyIDinZ,copyIDinPhi);
G4RotationMatrix rotM;
if(physVol->GetObjectRotation()) rotM = *(physVol->GetObjectRotation());
calHit->SetEdep( edep );
calHit->SetPos( physVol->GetTranslation() );
calHit->SetRot( rotM );
int icell = CalCollection->insert( calHit );
CellID[copyIDinZ][copyIDinPhi] = icell - 1;
if(verboseLevel>0)
{ G4cout << " New Calorimeter Hit on CellID "
<< copyIDinZ << " " << copyIDinPhi << G4endl; }
}
else
{
(*CalCollection)[CellID[copyIDinZ][copyIDinPhi]]->AddEdep(edep);
if(verboseLevel>0)
{ G4cout << " Energy added to CellID "
<< copyIDinZ << " " << copyIDinPhi << G4endl; }
}
return true;
}
void ExN04CalorimeterSD::EndOfEvent(G4HCofThisEvent*HCE)
{
static G4int HCID = -1;
if(HCID<0)
{ HCID = GetCollectionID(0); }
HCE->AddHitsCollection( HCID, CalCollection );
}
void ExN04CalorimeterSD::clear()
{
}
void ExN04CalorimeterSD::DrawAll()
{
}
void ExN04CalorimeterSD::PrintAll()
{
}
@@ -0,0 +1,262 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04DetectorConstruction.hh"
#include "ExN04TrackerSD.hh"
#include "ExN04CalorimeterSD.hh"
#include "ExN04CalorimeterROGeometry.hh"
#include "ExN04MuonSD.hh"
#include "ExN04TrackerParametrisation.hh"
#include "ExN04CalorimeterParametrisation.hh"
#include "ExN04Field.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4Element.hh"
#include "G4ElementTable.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4LogicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4PVPlacement.hh"
#include "G4PVParameterised.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
#include "G4FieldManager.hh"
#include "G4TransportationManager.hh"
#include "G4SDManager.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
ExN04DetectorConstruction::ExN04DetectorConstruction()
{
#include "ExN04DetectorParameterDef.icc"
}
ExN04DetectorConstruction::~ExN04DetectorConstruction()
{;}
G4VPhysicalVolume* ExN04DetectorConstruction::Construct()
{
//-------------------------------------------------------------------------
// Magnetic field
//-------------------------------------------------------------------------
static G4bool fieldIsInitialized = false;
if(!fieldIsInitialized)
{
ExN04Field* myField = new ExN04Field;
G4FieldManager* fieldMgr
= G4TransportationManager::GetTransportationManager()
->GetFieldManager();
fieldMgr->SetDetectorField(myField);
fieldMgr->CreateChordFinder(myField);
fieldIsInitialized = true;
}
//-------------------------------------------------------------------------
// Materials
//-------------------------------------------------------------------------
G4double a, iz, z, density;
G4String name, symbol;
G4int nel;
a = 1.01*g/mole;
G4Element* elH = new G4Element(name="Hydrogen", symbol="H", iz=1., a);
a = 12.01*g/mole;
G4Element* elC = new G4Element(name="Carbon", symbol="C", iz=6., a);
a = 14.01*g/mole;
G4Element* elN = new G4Element(name="Nitrogen", symbol="N", iz=7., a);
a = 16.00*g/mole;
G4Element* elO = new G4Element(name="Oxygen", symbol="O", iz=8., a);
density = 1.29e-03*g/cm3;
G4Material* Air = new G4Material(name="Air", density, nel=2);
Air->AddElement(elN, .7);
Air->AddElement(elO, .3);
a = 207.19*g/mole;
density = 11.35*g/cm3;
G4Material* Lead = new G4Material(name="Lead", z=82., a, density);
a = 39.95*g/mole;
density = 1.782e-03*g/cm3;
G4Material* Ar = new G4Material(name="ArgonGas", z=18., a, density);
a = 28.09*g/mole;
density = 2.33*g/cm3;
G4Material * Silicon = new G4Material(name="Silicon", z=14., a, density);
density = 1.032*g/cm3;
G4Material* Scinti = new G4Material(name="Scintillator", density, nel=2);
Scinti->AddElement(elC, 9);
Scinti->AddElement(elH, 10);
//-------------------------------------------------------------------------
// Detector geometry
//-------------------------------------------------------------------------
//------------------------------ experimental hall
G4Box * experimentalHall_box
= new G4Box("expHall_b",expHall_x,expHall_y,expHall_z);
G4LogicalVolume * experimentalHall_log
= new G4LogicalVolume(experimentalHall_box,Air,"expHall_L",0,0,0);
G4VPhysicalVolume * experimentalHall_phys
= new G4PVPlacement(0,G4ThreeVector(),"expHall_P",
experimentalHall_log,0,false,0);
G4VisAttributes* experimentalHallVisAtt
= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
experimentalHallVisAtt->SetForceWireframe(true);
experimentalHall_log->SetVisAttributes(experimentalHallVisAtt);
//------------------------------ tracker
G4VSolid * tracker_tubs
= new G4Tubs("trkTubs_tubs",trkTubs_rmin,trkTubs_rmax,trkTubs_dz,
trkTubs_sphi,trkTubs_dphi);
G4LogicalVolume * tracker_log
= new G4LogicalVolume(tracker_tubs,Ar,"trackerT_L",0,0,0);
G4VPhysicalVolume * tracker_phys
= new G4PVPlacement(0,G4ThreeVector(),"tracker_phys",tracker_log,
experimentalHall_phys,false,0);
G4VisAttributes* tracker_logVisAtt
= new G4VisAttributes(G4Colour(1.0,0.0,1.0));
tracker_logVisAtt->SetForceWireframe(true);
tracker_log->SetVisAttributes(tracker_logVisAtt);
//------------------------------ tracker layers
// As an example for Parameterised volume
// dummy values for G4Tubs -- modified by parameterised volume
G4VSolid * trackerLayer_tubs
= new G4Tubs("trackerLayer_tubs",trkTubs_rmin,trkTubs_rmax,trkTubs_dz,
trkTubs_sphi,trkTubs_dphi);
G4LogicalVolume * trackerLayer_log
= new G4LogicalVolume(trackerLayer_tubs,Silicon,"trackerB_L",0,0,0);
G4VPVParameterisation * trackerParam
= new ExN04TrackerParametrisation;
// dummy value : kXAxis -- modified by parameterised volume
// G4VPhysicalVolume *trackerLayer_phys =
new G4PVParameterised("trackerLayer_phys",trackerLayer_log,tracker_phys,
kXAxis, notrkLayers, trackerParam);
G4VisAttributes* trackerLayer_logVisAtt
= new G4VisAttributes(G4Colour(0.5,0.0,1.0));
trackerLayer_logVisAtt->SetForceWireframe(true);
trackerLayer_log->SetVisAttributes(trackerLayer_logVisAtt);
//------------------------------ calorimeter
G4VSolid * calorimeter_tubs
= new G4Tubs("calorimeter_tubs",caloTubs_rmin,caloTubs_rmax,
caloTubs_dz,caloTubs_sphi,caloTubs_dphi);
G4LogicalVolume * calorimeter_log
= new G4LogicalVolume(calorimeter_tubs,Scinti,"caloT_L",0,0,0);
G4VPhysicalVolume * calorimeter_phys
= new G4PVPlacement(0,G4ThreeVector(),"caloM_P",calorimeter_log,
experimentalHall_phys,false,0);
G4VisAttributes* calorimeter_logVisATT
= new G4VisAttributes(G4Colour(1.0,1.0,0.0));
calorimeter_logVisATT->SetForceWireframe(true);
calorimeter_log->SetVisAttributes(calorimeter_logVisATT);
//------------------------------- Lead layers
// As an example for Parameterised volume
// dummy values for G4Tubs -- modified by parameterised volume
G4VSolid * caloLayer_tubs
= new G4Tubs("caloLayer_tubs",caloRing_rmin,caloRing_rmax,
caloRing_dz,caloRing_sphi,caloRing_dphi);
G4LogicalVolume * caloLayer_log
= new G4LogicalVolume(caloLayer_tubs,Lead,"caloR_L",0,0,0);
G4VPVParameterisation * calorimeterParam
= new ExN04CalorimeterParametrisation;
// dummy value : kXAxis -- modified by parameterised volume
// G4VPhysicalVolume * caloLayer_phys =
new G4PVParameterised("caloLayer_phys",caloLayer_log,calorimeter_phys,
kXAxis, nocaloLayers, calorimeterParam);
G4VisAttributes* caloLayer_logVisAtt
= new G4VisAttributes(G4Colour(0.7,1.0,0.0));
caloLayer_logVisAtt->SetForceWireframe(true);
caloLayer_log->SetVisAttributes(caloLayer_logVisAtt);
//------------------------------ muon counters
// As an example of CSG volumes with rotation
G4VSolid * muoncounter_box
= new G4Box("muoncounter_box",muBox_width,muBox_thick,
muBox_length);
G4LogicalVolume * muoncounter_log
= new G4LogicalVolume(muoncounter_box,Scinti,"mucounter_L",0,0,0);
G4VPhysicalVolume * muoncounter_phys;
for(int i=0; i<nomucounter ; i++)
{
G4double phi, x, y, z;
phi = 360.*deg/nomucounter*i;
x = muBox_radius*sin(phi);
y = muBox_radius*cos(phi);
z = 0.*cm;
G4RotationMatrix rm;
rm.rotateZ(phi);
muoncounter_phys
= new G4PVPlacement(G4Transform3D(rm,G4ThreeVector(x,y,z)),
"muoncounter_P",muoncounter_log,
experimentalHall_phys,false,i);
}
G4VisAttributes* muoncounter_logVisAtt
= new G4VisAttributes(G4Colour(0.0,1.0,1.0));
muoncounter_logVisAtt->SetForceWireframe(true);
muoncounter_log->SetVisAttributes(muoncounter_logVisAtt);
//------------------------------------------------------------------
// Sensitive Detector
//------------------------------------------------------------------
G4SDManager* SDman = G4SDManager::GetSDMpointer();
G4String trackerSDname = "/mydet/tracker";
ExN04TrackerSD * trackerSD = new ExN04TrackerSD(trackerSDname);
SDman->AddNewDetector(trackerSD);
trackerLayer_log->SetSensitiveDetector(trackerSD);
G4String calorimeterSDname = "/mydet/calorimeter";
ExN04CalorimeterSD * calorimeterSD = new ExN04CalorimeterSD(calorimeterSDname);
G4String ROgeometryName = "CalorimeterROGeom";
G4VReadOutGeometry* calRO = new ExN04CalorimeterROGeometry(ROgeometryName);
calRO->BuildROGeometry();
calorimeterSD->SetROgeometry(calRO);
SDman->AddNewDetector(calorimeterSD);
calorimeter_log->SetSensitiveDetector(calorimeterSD);
G4String muonSDname = "/mydet/muon";
ExN04MuonSD * muonSD = new ExN04MuonSD(muonSDname);
SDman->AddNewDetector(muonSD);
muoncounter_log->SetSensitiveDetector(muonSD);
//------------------------------------------------------------------
// Digitizer modules
//------------------------------------------------------------------
return experimentalHall_phys;
}
@@ -0,0 +1,76 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
expHall_x = 800.*cm;
expHall_y = 800.*cm;
expHall_z = 800.*cm;
trkTubs_rmax = 50.*cm;
trkTubs_rmin = 20.*cm;
trkTubs_dz = 100.*cm;
trkTubs_sphi = 0.*deg;
trkTubs_dphi = 360.*deg;
notrkLayers = 5;
tracker_radius[0] = 25.*cm;
tracker_radius[1] = 30.*cm;
tracker_radius[2] = 35.*cm;
tracker_radius[3] = 40.*cm;
tracker_radius[4] = 45.*cm;
tracker_thick = 0.5*cm;
for(int il=0;il<5;il++)
{
tracker_length[il] = tracker_radius[il];
}
caloTubs_rmax = 300.*cm;
caloTubs_rmin = 50.*cm;
caloTubs_dz = 200.*cm;
caloTubs_sphi = 0.*deg;
caloTubs_dphi = 360.*deg;
absorber_thick = 3.*cm;
scinti_thick = 2.*cm;
nocaloLayers = int((caloTubs_rmax-caloTubs_rmin)/(absorber_thick+scinti_thick));
segmentsinPhi = 48;
caloCell_rmax = caloTubs_rmax;
caloCell_rmin = caloTubs_rmin;
caloCell_dz = caloTubs_dz;
caloCell_sphi = caloTubs_sphi;
caloCell_dphi = caloTubs_dphi/segmentsinPhi;
segmentsinZ = 20;
caloRing_rmax = caloCell_rmax;
caloRing_rmin = caloCell_rmin;
caloRing_dz = caloCell_dz/segmentsinZ ;
caloRing_sphi = caloCell_sphi;
caloRing_dphi = caloCell_dphi;
nomucounter = 4;
muBox_radius = 350.*cm;
muBox_width = muBox_radius - 5.*cm;
muBox_thick = 1.*cm;
muBox_length = 2.*muBox_radius;
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04EMPhysics.cc,v 1.1 2002/04/29 20:43:59 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
#include "ExN04EMPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/iomanip"
ExN04EMPhysics::ExN04EMPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
ExN04EMPhysics::~ExN04EMPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4NeutrinoE.hh"
#include "G4AntiNeutrinoE.hh"
void ExN04EMPhysics::ConstructParticle()
{
// gamma
G4Gamma::GammaDefinition();
// electron
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
}
#include "G4ProcessManager.hh"
void ExN04EMPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
// Gamma Physics
pManager = G4Gamma::Gamma()->GetProcessManager();
pManager->AddDiscreteProcess(&thePhotoEffect);
pManager->AddDiscreteProcess(&theComptonEffect);
pManager->AddDiscreteProcess(&thePairProduction);
// Electron Physics
pManager = G4Electron::Electron()->GetProcessManager();
// add processes
pManager->AddDiscreteProcess(&theElectronBremsStrahlung);
pManager->AddProcess(&theElectronIonisation, ordInActive,2, 2);
pManager->AddProcess(&theElectronMultipleScattering);
pManager->SetProcessOrdering(&theElectronMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&theElectronMultipleScattering, idxPostStep, 1);
//Positron Physics
pManager = G4Positron::Positron()->GetProcessManager();
// add processes
pManager->AddDiscreteProcess(&thePositronBremsStrahlung);
pManager->AddDiscreteProcess(&theAnnihilation);
pManager->AddRestProcess(&theAnnihilation);
pManager->AddProcess(&thePositronIonisation, ordInActive,2, 2);
pManager->AddProcess(&thePositronMultipleScattering);
pManager->SetProcessOrdering(&thePositronMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&thePositronMultipleScattering, idxPostStep, 1);
}
@@ -0,0 +1,105 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04EventAction.hh"
#include "ExN04TrackerHit.hh"
#include "ExN04CalorimeterHit.hh"
#include "ExN04MuonHit.hh"
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "G4HCofThisEvent.hh"
#include "G4VHitsCollection.hh"
#include "G4TrajectoryContainer.hh"
#include "G4Trajectory.hh"
#include "G4SDManager.hh"
#include "G4UImanager.hh"
#include "G4ios.hh"
ExN04EventAction::ExN04EventAction()
{
trackerCollID = -1;
calorimeterCollID = -1;
muonCollID = -1;
}
ExN04EventAction::~ExN04EventAction()
{;}
void ExN04EventAction::BeginOfEventAction(const G4Event*)
{
G4SDManager * SDman = G4SDManager::GetSDMpointer();
if(trackerCollID<0||calorimeterCollID<0||muonCollID<0)
{
G4String colNam;
trackerCollID = SDman->GetCollectionID(colNam="trackerCollection");
calorimeterCollID = SDman->GetCollectionID(colNam="calCollection");
muonCollID = SDman->GetCollectionID(colNam="muonCollection");
}
}
void ExN04EventAction::EndOfEventAction(const G4Event* evt)
{
G4cout << ">>> Event " << evt->GetEventID() << G4endl;
if(trackerCollID<0||calorimeterCollID<0||muonCollID<0) return;
G4HCofThisEvent * HCE = evt->GetHCofThisEvent();
ExN04TrackerHitsCollection* THC = 0;
ExN04CalorimeterHitsCollection* CHC = 0;
ExN04MuonHitsCollection* MHC = 0;
if(HCE)
{
THC = (ExN04TrackerHitsCollection*)(HCE->GetHC(trackerCollID));
CHC = (ExN04CalorimeterHitsCollection*)(HCE->GetHC(calorimeterCollID));
MHC = (ExN04MuonHitsCollection*)(HCE->GetHC(muonCollID));
}
if(THC)
{
int n_hit = THC->entries();
G4cout << " " << n_hit
<< " hits are stored in ExN04TrackerHitsCollection." << G4endl;
}
if(CHC)
{
int n_hit = CHC->entries();
G4cout << " " << n_hit
<< " hits are stored in ExN04CalorimeterHitsCollection." << G4endl;
G4double totE = 0;
for(int i=0;i<n_hit;i++)
{ totE += (*CHC)[i]->GetEdep(); }
G4cout << " Total energy deposition in calorimeter : "
<< totE / GeV << " (GeV)" << G4endl;
}
if(MHC)
{
int n_hit = MHC->entries();
G4cout << " " << n_hit
<< " hits are stored in ExN04MuonHitsCollection." << G4endl;
}
}
@@ -0,0 +1,45 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04Field.hh"
ExN04Field::ExN04Field()
{
Bz = 3.0*tesla;
rmax_sq = sqr(50.*cm);
zmax = 100.*cm;
}
ExN04Field::~ExN04Field()
{;}
void ExN04Field::GetFieldValue(const double Point[3],double *Bfield) const
{
Bfield[0] = 0.;
Bfield[1] = 0.;
if(abs(Point[2])<zmax && (sqr(Point[0])+sqr(Point[1]))<rmax_sq)
{ Bfield[2] = Bz; }
else
{ Bfield[2] = 0.; }
}
@@ -0,0 +1,73 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04GeneralPhysics.cc,v 1.1 2002/04/29 20:44:01 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
#include "ExN04GeneralPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/iomanip"
ExN04GeneralPhysics::ExN04GeneralPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
ExN04GeneralPhysics::~ExN04GeneralPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
// Bosons
#include "G4ChargedGeantino.hh"
#include "G4Geantino.hh"
void ExN04GeneralPhysics::ConstructParticle()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
}
void ExN04GeneralPhysics::ConstructProcess()
{
// Add Decay Process
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (fDecayProcess.IsApplicable(*particle)) {
pmanager ->AddProcess(&fDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(&fDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(&fDecayProcess, idxAtRest);
}
}
}
@@ -0,0 +1,428 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04HadronPhysics.cc,v 1.1 2002/04/29 20:44:01 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
#include "ExN04HadronPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/iomanip"
ExN04HadronPhysics::ExN04HadronPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
ExN04HadronPhysics::~ExN04HadronPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
// Nuclei
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
void ExN04HadronPhysics::ConstructParticle()
{
// Construct all mesons
G4MesonConstructor pMesonConstructor;
pMesonConstructor.ConstructParticle();
// Construct all barions
G4BaryonConstructor pBaryonConstructor;
pBaryonConstructor.ConstructParticle();
// Construct resonaces and quarks
G4ShortLivedConstructor pShortLivedConstructor;
pShortLivedConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void ExN04HadronPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
// Elastic Process
theElasticModel = new G4LElastic();
theElasticProcess.RegisterMe(theElasticModel);
// PionPlus
pManager = G4PionPlus::PionPlus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEPionPlusModel = new G4LEPionPlusInelastic();
theHEPionPlusModel = new G4HEPionPlusInelastic();
thePionPlusInelastic.RegisterMe(theLEPionPlusModel);
thePionPlusInelastic.RegisterMe(theHEPionPlusModel);
pManager->AddDiscreteProcess(&thePionPlusInelastic);
pManager->AddProcess(&thePionPlusIonisation, ordInActive,2, 2);
pManager->AddProcess(&thePionPlusMult);
pManager->SetProcessOrdering(&thePionPlusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&thePionPlusMult, idxPostStep, 1);
// PionMinus
pManager = G4PionMinus::PionMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEPionMinusModel = new G4LEPionMinusInelastic();
theHEPionMinusModel = new G4HEPionMinusInelastic();
thePionMinusInelastic.RegisterMe(theLEPionMinusModel);
thePionMinusInelastic.RegisterMe(theHEPionMinusModel);
pManager->AddDiscreteProcess(&thePionMinusInelastic);
pManager->AddProcess(&thePionMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&thePionMinusMult);
pManager->SetProcessOrdering(&thePionMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&thePionMinusMult, idxPostStep, 1);
pManager->AddRestProcess(&thePionMinusAbsorption, ordDefault);
// KaonPlus
pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEKaonPlusModel = new G4LEKaonPlusInelastic();
theHEKaonPlusModel = new G4HEKaonPlusInelastic();
theKaonPlusInelastic.RegisterMe(theLEKaonPlusModel);
theKaonPlusInelastic.RegisterMe(theHEKaonPlusModel);
pManager->AddDiscreteProcess(&theKaonPlusInelastic);
pManager->AddProcess(&theKaonPlusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theKaonPlusMult);
pManager->SetProcessOrdering(&theKaonPlusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theKaonPlusMult, idxPostStep, 1);
// KaonMinus
pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEKaonMinusModel = new G4LEKaonMinusInelastic();
theHEKaonMinusModel = new G4HEKaonMinusInelastic();
theKaonMinusInelastic.RegisterMe(theLEKaonMinusModel);
theKaonMinusInelastic.RegisterMe(theHEKaonMinusModel);
pManager->AddDiscreteProcess(&theKaonMinusInelastic);
pManager->AddProcess(&theKaonMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theKaonMinusMult);
pManager->SetProcessOrdering(&theKaonMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theKaonMinusMult, idxPostStep, 1);
pManager->AddRestProcess(&theKaonMinusAbsorption, ordDefault);
// KaonZeroL
pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
theHEKaonZeroLModel = new G4HEKaonZeroInelastic();
theKaonZeroLInelastic.RegisterMe(theLEKaonZeroLModel);
theKaonZeroLInelastic.RegisterMe(theHEKaonZeroLModel);
pManager->AddDiscreteProcess(&theKaonZeroLInelastic);
// KaonZeroS
pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
theHEKaonZeroSModel = new G4HEKaonZeroInelastic();
theKaonZeroSInelastic.RegisterMe(theLEKaonZeroSModel);
theKaonZeroSInelastic.RegisterMe(theHEKaonZeroSModel);
pManager->AddDiscreteProcess(&theKaonZeroSInelastic);
// Proton
pManager = G4Proton::Proton()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEProtonModel = new G4LEProtonInelastic();
theHEProtonModel = new G4HEProtonInelastic();
theProtonInelastic.RegisterMe(theLEProtonModel);
theProtonInelastic.RegisterMe(theHEProtonModel);
pManager->AddDiscreteProcess(&theProtonInelastic);
pManager->AddProcess(&theProtonIonisation, ordInActive,2, 2);
pManager->AddProcess(&theProtonMult);
pManager->SetProcessOrdering(&theProtonMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theProtonMult, idxPostStep, 1);
// anti-Proton
pManager = G4AntiProton::AntiProton()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiProtonModel = new G4LEAntiProtonInelastic();
theHEAntiProtonModel = new G4HEAntiProtonInelastic();
theAntiProtonInelastic.RegisterMe(theLEAntiProtonModel);
theAntiProtonInelastic.RegisterMe(theHEAntiProtonModel);
pManager->AddDiscreteProcess(&theAntiProtonInelastic);
pManager->AddProcess(&theAntiProtonIonisation, ordInActive,2, 2);
pManager->AddProcess(&theAntiProtonMult);
pManager->SetProcessOrdering(&theAntiProtonMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theAntiProtonMult, idxPostStep, 1);
pManager->AddRestProcess(&theAntiProtonAnnihilation);
// Neutron
pManager = G4Neutron::Neutron()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLENeutronModel = new G4LENeutronInelastic();
theHENeutronModel = new G4HENeutronInelastic();
theNeutronInelastic.RegisterMe(theLENeutronModel);
theNeutronInelastic.RegisterMe(theHENeutronModel);
pManager->AddDiscreteProcess(&theNeutronInelastic);
//theNeutronFissionModel = new G4LFission();
//theNeutronFission.RegisterMe(theNeutronFissionModel);
//pManager->AddDiscreteProcess(&NeutronFission);
//theNeutronCaptureModel = new G4LCapture();
//theNeutronCapture.RegisterMe(theNeutronCaptureModel);
//pManager->AddDiscreteProcess(&theNeutronCapture);
// AntiNeutron
pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
theAntiNeutronInelastic.RegisterMe(theLEAntiNeutronModel);
theAntiNeutronInelastic.RegisterMe(theHEAntiNeutronModel);
pManager->AddDiscreteProcess(&theAntiNeutronInelastic);
pManager->AddRestProcess(&theAntiNeutronAnnihilation);
// Lambda
pManager = G4Lambda::Lambda()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLELambdaModel = new G4LELambdaInelastic();
theHELambdaModel = new G4HELambdaInelastic();
theLambdaInelastic.RegisterMe(theLELambdaModel);
theLambdaInelastic.RegisterMe(theHELambdaModel);
pManager->AddDiscreteProcess(&theLambdaInelastic);
// AntiLambda
pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
theAntiLambdaInelastic.RegisterMe(theLEAntiLambdaModel);
theAntiLambdaInelastic.RegisterMe(theHEAntiLambdaModel);
pManager->AddDiscreteProcess(&theAntiLambdaInelastic);
// SigmaMinus
pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLESigmaMinusModel = new G4LESigmaMinusInelastic();
theHESigmaMinusModel = new G4HESigmaMinusInelastic();
theSigmaMinusInelastic.RegisterMe(theLESigmaMinusModel);
theSigmaMinusInelastic.RegisterMe(theHESigmaMinusModel);
pManager->AddDiscreteProcess(&theSigmaMinusInelastic);
pManager->AddProcess(&theSigmaMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theSigmaMinusMult);
pManager->SetProcessOrdering(&theSigmaMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theSigmaMinusMult, idxPostStep, 1);
// anti-SigmaMinus
pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
theAntiSigmaMinusInelastic.RegisterMe(theLEAntiSigmaMinusModel);
theAntiSigmaMinusInelastic.RegisterMe(theHEAntiSigmaMinusModel);
pManager->AddDiscreteProcess(&theAntiSigmaMinusInelastic);
pManager->AddProcess(&theAntiSigmaMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theAntiSigmaMinusMult);
pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxPostStep, 1);
// SigmaPlus
pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLESigmaPlusModel = new G4LESigmaPlusInelastic();
theHESigmaPlusModel = new G4HESigmaPlusInelastic();
theSigmaPlusInelastic.RegisterMe(theLESigmaPlusModel);
theSigmaPlusInelastic.RegisterMe(theHESigmaPlusModel);
pManager->AddDiscreteProcess(&theSigmaPlusInelastic);
pManager->AddProcess(&theSigmaPlusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theSigmaPlusMult);
pManager->SetProcessOrdering(&theSigmaPlusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theSigmaPlusMult, idxPostStep, 1);
// anti-SigmaPlus
pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
theAntiSigmaPlusInelastic.RegisterMe(theLEAntiSigmaPlusModel);
theAntiSigmaPlusInelastic.RegisterMe(theHEAntiSigmaPlusModel);
pManager->AddDiscreteProcess(&theAntiSigmaPlusInelastic);
pManager->AddProcess(&theAntiSigmaPlusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theAntiSigmaPlusMult);
pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxPostStep, 1);
// XiMinus
pManager = G4XiMinus::XiMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEXiMinusModel = new G4LEXiMinusInelastic();
theHEXiMinusModel = new G4HEXiMinusInelastic();
theXiMinusInelastic.RegisterMe(theLEXiMinusModel);
theXiMinusInelastic.RegisterMe(theHEXiMinusModel);
pManager->AddDiscreteProcess(&theXiMinusInelastic);
pManager->AddProcess(&theXiMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theXiMinusMult);
pManager->SetProcessOrdering(&theXiMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theXiMinusMult, idxPostStep, 1);
// anti-XiMinus
pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
theAntiXiMinusInelastic.RegisterMe(theLEAntiXiMinusModel);
theAntiXiMinusInelastic.RegisterMe(theHEAntiXiMinusModel);
pManager->AddDiscreteProcess(&theAntiXiMinusInelastic);
pManager->AddProcess(&theAntiXiMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theAntiXiMinusMult);
pManager->SetProcessOrdering(&theAntiXiMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theAntiXiMinusMult, idxPostStep, 1);
// XiZero
pManager = G4XiZero::XiZero()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEXiZeroModel = new G4LEXiZeroInelastic();
theHEXiZeroModel = new G4HEXiZeroInelastic();
theXiZeroInelastic.RegisterMe(theLEXiZeroModel);
theXiZeroInelastic.RegisterMe(theHEXiZeroModel);
pManager->AddDiscreteProcess(&theXiZeroInelastic);
// anti-XiZero
pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
theAntiXiZeroInelastic.RegisterMe(theLEAntiXiZeroModel);
theAntiXiZeroInelastic.RegisterMe(theHEAntiXiZeroModel);
pManager->AddDiscreteProcess(&theAntiXiZeroInelastic);
// OmegaMinus
pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
theOmegaMinusInelastic.RegisterMe(theLEOmegaMinusModel);
theOmegaMinusInelastic.RegisterMe(theHEOmegaMinusModel);
pManager->AddDiscreteProcess(&theOmegaMinusInelastic);
pManager->AddProcess(&theOmegaMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theOmegaMinusMult);
pManager->SetProcessOrdering(&theOmegaMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theOmegaMinusMult, idxPostStep, 1);
// anti-OmegaMinus
pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
theAntiOmegaMinusInelastic.RegisterMe(theLEAntiOmegaMinusModel);
theAntiOmegaMinusInelastic.RegisterMe(theHEAntiOmegaMinusModel);
pManager->AddDiscreteProcess(&theAntiOmegaMinusInelastic);
pManager->AddProcess(&theAntiOmegaMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&theAntiOmegaMinusMult);
pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxAlongStep, 1);
pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxPostStep, 1);
}
@@ -0,0 +1,140 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04IonPhysics.cc,v 1.1 2002/04/29 20:44:01 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
#include "ExN04IonPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/iomanip"
ExN04IonPhysics::ExN04IonPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
ExN04IonPhysics::~ExN04IonPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
// Nuclei
#include "G4IonConstructor.hh"
void ExN04IonPhysics::ConstructParticle()
{
// Construct light ions
G4IonConstructor pConstructor;
pConstructor.ConstructParticle();
}
#include "G4ProcessManager.hh"
void ExN04IonPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
// Elastic Process
theElasticModel = new G4LElastic();
theElasticProcess.RegisterMe(theElasticModel);
// Generic Ion
pManager = G4GenericIon::GenericIon()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
pManager->AddProcess(&fIonIonisation, ordInActive, 2, 2);
pManager->AddProcess(&fIonMultipleScattering);
pManager->SetProcessOrdering(&fIonMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fIonMultipleScattering, idxPostStep, 1);
// Deuteron
pManager = G4Deuteron::Deuteron()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
fDeuteronModel = new G4LEDeuteronInelastic();
fDeuteronProcess.RegisterMe(fDeuteronModel);
pManager->AddDiscreteProcess(&fDeuteronProcess);
pManager->AddProcess(&fDeuteronIonisation, ordInActive, 2, 2);
pManager->AddProcess(&fDeuteronMultipleScattering);
pManager->SetProcessOrdering(&fDeuteronMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fDeuteronMultipleScattering, idxPostStep, 1);
// Triton
pManager = G4Triton::Triton()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
fTritonModel = new G4LETritonInelastic();
fTritonProcess.RegisterMe(fTritonModel);
pManager->AddDiscreteProcess(&fTritonProcess);
pManager->AddProcess(&fTritonIonisation, ordInActive, 2, 2);
pManager->AddProcess(&fTritonMultipleScattering);
pManager->SetProcessOrdering(&fTritonMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fTritonMultipleScattering, idxPostStep, 1);
// Alpha
pManager = G4Alpha::Alpha()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
fAlphaModel = new G4LEAlphaInelastic();
fAlphaProcess.RegisterMe(fAlphaModel);
pManager->AddDiscreteProcess(&fAlphaProcess);
pManager->AddProcess(&fAlphaIonisation, ordInActive, 2, 2);
pManager->AddProcess(&fAlphaMultipleScattering);
pManager->SetProcessOrdering(&fAlphaMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fAlphaMultipleScattering, idxPostStep, 1);
// He3
pManager = G4He3::He3()->GetProcessManager();
// add process
pManager->AddDiscreteProcess(&theElasticProcess);
pManager->AddProcess(&fHe3Ionisation, ordInActive, 2, 2);
pManager->AddProcess(&fHe3MultipleScattering);
pManager->SetProcessOrdering(&fHe3MultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fHe3MultipleScattering, idxPostStep, 1);
}
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04MuonHit.hh"
#include "G4VVisManager.hh"
#include "G4Circle.hh"
#include "G4Colour.hh"
#include "G4VisAttributes.hh"
G4Allocator<ExN04MuonHit> ExN04MuonHitAllocator;
ExN04MuonHit::ExN04MuonHit()
{;}
ExN04MuonHit::~ExN04MuonHit()
{;}
ExN04MuonHit::ExN04MuonHit(const ExN04MuonHit &right)
{
edep = right.edep;
pos = right.pos;
}
const ExN04MuonHit& ExN04MuonHit::operator=(const ExN04MuonHit &right)
{
edep = right.edep;
pos = right.pos;
return *this;
}
int ExN04MuonHit::operator==(const ExN04MuonHit &right) const
{
return 0;
}
void ExN04MuonHit::Draw()
{
G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
if(pVVisManager)
{
G4Circle circle(pos);
circle.SetScreenSize(0.04);
circle.SetFillStyle(G4Circle::filled);
G4Colour colour(1.,0.,0.);
G4VisAttributes attribs(colour);
circle.SetVisAttributes(attribs);
pVVisManager->Draw(circle);
}
}
void ExN04MuonHit::Print()
{;}
@@ -0,0 +1,128 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04MuonPhysics.cc,v 1.1 2002/04/29 20:44:03 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
#include "ExN04MuonPhysics.hh"
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/iomanip"
ExN04MuonPhysics::ExN04MuonPhysics(const G4String& name)
: G4VPhysicsConstructor(name)
{
}
ExN04MuonPhysics::~ExN04MuonPhysics()
{
}
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
#include "G4TauMinus.hh"
#include "G4TauPlus.hh"
#include "G4NeutrinoTau.hh"
#include "G4AntiNeutrinoTau.hh"
#include "G4NeutrinoMu.hh"
#include "G4AntiNeutrinoMu.hh"
void ExN04MuonPhysics::ConstructParticle()
{
// Mu
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
// Tau
G4TauMinus::TauMinusDefinition();
G4TauPlus::TauPlusDefinition();
G4NeutrinoTau::NeutrinoTauDefinition();
G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
}
#include "G4ProcessManager.hh"
void ExN04MuonPhysics::ConstructProcess()
{
G4ProcessManager * pManager = 0;
// Muon Plus Physics
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
// add processes
pManager->AddProcess(&fMuPlusIonisation, ordInActive,2, 2);
pManager->AddDiscreteProcess(&fMuPlusBremsstrahlung);
pManager->AddDiscreteProcess(&fMuPlusPairProduction);
pManager->AddProcess(&fMuPlusMultipleScattering);
pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fMuPlusMultipleScattering, idxPostStep, 1);
// Muon Minus Physics
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
// add processes
pManager->AddProcess(&fMuMinusIonisation, ordInActive,2, 2);
pManager->AddDiscreteProcess(&fMuMinusBremsstrahlung);
pManager->AddDiscreteProcess(&fMuMinusPairProduction);
pManager->AddProcess(&fMuMinusMultipleScattering);
pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fMuMinusMultipleScattering, idxPostStep, 1);
pManager->AddRestProcess(&fMuMinusCaptureAtRest);
// Tau Plus Physics
pManager = G4TauPlus::TauPlus()->GetProcessManager();
// add processes
pManager->AddProcess(&fTauPlusIonisation, ordInActive,2, 2);
pManager->AddProcess(&fTauPlusMultipleScattering);
pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fTauPlusMultipleScattering, idxPostStep, 1);
// Tau Minus Physics
pManager = G4TauMinus::TauMinus()->GetProcessManager();
// add processes
pManager->AddProcess(&fTauMinusIonisation, ordInActive,2, 2);
pManager->AddProcess(&fTauMinusMultipleScattering);
pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxAlongStep, 1);
pManager->SetProcessOrdering(&fTauMinusMultipleScattering, idxPostStep, 1);
}
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04MuonSD.hh"
#include "ExN04MuonHit.hh"
#include "G4HCofThisEvent.hh"
#include "G4TouchableHistory.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include "G4ios.hh"
ExN04MuonSD::ExN04MuonSD(G4String name)
:G4VSensitiveDetector(name)
{
G4String HCname;
collectionName.insert(HCname="muonCollection");
positionResolution = 5*cm;
}
ExN04MuonSD::~ExN04MuonSD(){;}
void ExN04MuonSD::Initialize(G4HCofThisEvent*HCE)
{
static int HCID = -1;
muonCollection = new ExN04MuonHitsCollection
(SensitiveDetectorName,collectionName[0]);
if(HCID<0)
{ HCID = GetCollectionID(0); }
HCE->AddHitsCollection(HCID,muonCollection);
}
G4bool ExN04MuonSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist)
{
G4double edep = aStep->GetTotalEnergyDeposit();
if(edep==0.) return true;
ExN04MuonHit* aHit;
int nHit = muonCollection->entries();
G4ThreeVector hitpos = aStep->GetPreStepPoint()->GetPosition();
for(int i=0;i<nHit;i++)
{
aHit = (*muonCollection)[i];
G4ThreeVector pos = aHit->GetPos();
G4double dist2 = sqr(pos.x()-hitpos.x())
+sqr(pos.y()-hitpos.y())+sqr(pos.z()-hitpos.z());
if(dist2<=sqr(positionResolution))
aHit->AddEdep(edep);
return true;
}
aHit = new ExN04MuonHit();
aHit->SetEdep( edep );
aHit->SetPos( aStep->GetPreStepPoint()->GetPosition() );
muonCollection->insert( aHit );
return true;
}
void ExN04MuonSD::EndOfEvent(G4HCofThisEvent*HCE)
{;}
void ExN04MuonSD::clear()
{
}
void ExN04MuonSD::DrawAll()
{
}
void ExN04MuonSD::PrintAll()
{
}
@@ -0,0 +1,86 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN04PhysicsList.cc,v 1.1 2002/04/29 20:44:04 asaim Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
#include "ExN04PhysicsList.hh"
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include "g4std/iomanip"
#include "ExN04GeneralPhysics.hh"
#include "ExN04EMPhysics.hh"
#include "ExN04MuonPhysics.hh"
#include "ExN04HadronPhysics.hh"
#include "ExN04IonPhysics.hh"
ExN04PhysicsList::ExN04PhysicsList(): G4VModularPhysicsList()
{
// default cut value (1.0mm)
defaultCutValue = 1.0*mm;
SetVerboseLevel(1);
// General Physics
RegisterPhysics( new ExN04GeneralPhysics("general") );
// EM Physics
RegisterPhysics( new ExN04EMPhysics("standard EM"));
// Muon Physics
RegisterPhysics( new ExN04MuonPhysics("muon"));
// Hadron Physics
RegisterPhysics( new ExN04HadronPhysics("hadron"));
// Ion Physics
RegisterPhysics( new ExN04IonPhysics("ion"));
}
ExN04PhysicsList::~ExN04PhysicsList()
{
}
void ExN04PhysicsList::SetCuts()
{
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
}
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// ExN04PrimaryGeneratorAction.cc
// $Id: ExN04PrimaryGeneratorAction.cc,v 1.2 2002/05/28 13:58:12 murakami Exp $
//
// ====================================================================
#include "ExN04PrimaryGeneratorAction.hh"
#include "ExN04PrimaryGeneratorMessenger.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "HepMCG4AsciiReader.hh"
#include "HepMCG4PythiaInterface.hh"
//////////////////////////////////////////////////////////
ExN04PrimaryGeneratorAction::ExN04PrimaryGeneratorAction()
//////////////////////////////////////////////////////////
{
// default generator is particle gun.
currentGenerator= particleGun= new G4ParticleGun();
currentGeneratorName= "particleGun";
hepmcAscii= new HepMCG4AsciiReader();
pythiaGen= new HepMCG4PythiaInterface();
gentypeMap["particleGun"]= particleGun;
gentypeMap["hepmcAscii"]= hepmcAscii;
gentypeMap["pythia"]= pythiaGen;
messenger= new ExN04PrimaryGeneratorMessenger(this);
}
///////////////////////////////////////////////////////////
ExN04PrimaryGeneratorAction::~ExN04PrimaryGeneratorAction()
///////////////////////////////////////////////////////////
{
delete messenger;
}
/////////////////////////////////////////////////////////////////////
void ExN04PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
/////////////////////////////////////////////////////////////////////
{
if(currentGenerator)
currentGenerator-> GeneratePrimaryVertex(anEvent);
else
G4Exception("generator is not instanciated.");
}
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// ExN04PrimaryGeneratorMessenger.cc
// $Id: ExN04PrimaryGeneratorMessenger.cc,v 1.1 2002/04/29 20:44:06 asaim Exp $
//
// ====================================================================
#include "G4UIcommand.hh"
#include "G4UIparameter.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIdirectory.hh"
#include "ExN04PrimaryGeneratorMessenger.hh"
#include "ExN04PrimaryGeneratorAction.hh"
////////////////////////////////////////////////////////////////////
ExN04PrimaryGeneratorMessenger::ExN04PrimaryGeneratorMessenger
(ExN04PrimaryGeneratorAction* genaction)
: primaryAction(genaction)
////////////////////////////////////////////////////////////////////
{
mydetdir = new G4UIdirectory("/mydet/");
mydetdir-> SetGuidance("ExN04 detector control commands.");
dir= new G4UIdirectory("/generator/");
dir-> SetGuidance("Control commands for primary generator");
select= new G4UIcmdWithAString("/generator/select", this);
select-> SetGuidance("select generator type");
select-> SetParameterName("generator_type", false, false);
select-> SetCandidates("particleGun pythia hepmcAscii");
select-> SetDefaultValue("particleGun");
}
/////////////////////////////////////////////////////////////////
ExN04PrimaryGeneratorMessenger::~ExN04PrimaryGeneratorMessenger()
/////////////////////////////////////////////////////////////////
{
delete select;
delete mydetdir;
delete dir;
}
//////////////////////////////////////////////////////////////////////
void ExN04PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command,
G4String newValues)
//////////////////////////////////////////////////////////////////////
{
if ( command==select) {
primaryAction-> SetGenerator(newValues);
G4cout << "current generator type: "
<< primaryAction-> GetGeneratorName() << G4endl;
} else {
}
}
//////////////////////////////////////////////////////////////////////////////
G4String ExN04PrimaryGeneratorMessenger::GetCurrentValue(G4UIcommand* command)
//////////////////////////////////////////////////////////////////////////////
{
G4String cv, st;
if (command == select) {
cv= primaryAction-> GetGeneratorName();
}
return cv;
}
@@ -0,0 +1,203 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04StackingAction.hh"
#include "G4SDManager.hh"
#include "G4RunManager.hh"
#include "G4Event.hh"
#include "G4HCofThisEvent.hh"
#include "G4Track.hh"
#include "G4TrackStatus.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTypes.hh"
#include "ExN04StackingActionMessenger.hh"
#include "G4ios.hh"
ExN04StackingAction::ExN04StackingAction()
: trkHits(0), muonHits(0), stage(0)
{
angRoI = 30.0*deg;
reqMuon = 2;
reqIso = 10;
theMessenger = new ExN04StackingActionMessenger(this);
}
ExN04StackingAction::~ExN04StackingAction()
{ delete theMessenger; }
G4ClassificationOfNewTrack
ExN04StackingAction::ClassifyNewTrack(const G4Track * aTrack)
{
G4ClassificationOfNewTrack classification = fWaiting;
switch(stage)
{
case 0: // Stage 0 : Primary muons only
if(aTrack->GetParentID()==0)
{
G4ParticleDefinition * particleType = aTrack->GetDefinition();
if((particleType==G4MuonPlus::MuonPlusDefinition())
||(particleType==G4MuonMinus::MuonMinusDefinition()))
{ classification = fUrgent; }
}
break;
case 1: // Stage 1 : Charged primaries only
// Suspended tracks will be sent to the waiting stack
if(aTrack->GetParentID()!=0) { break; }
if(aTrack->GetTrackStatus()==fSuspend) { break; }
if(aTrack->GetDefinition()->GetPDGCharge()==0.) { break; }
classification = fUrgent;
break;
default: // Stage 2 : Accept all primaries
// Accept all secondaries in RoI
// Kill secondaries outside RoI
if(aTrack->GetParentID()==0)
{
classification = fUrgent;
break;
}
if((angRoI<0.)||InsideRoI(aTrack,angRoI))
{
classification = fUrgent;
break;
}
classification = fKill;
}
return classification;
}
G4bool ExN04StackingAction::InsideRoI(const G4Track * aTrack,G4double ang)
{
if(!muonHits)
{ muonHits = (ExN04MuonHitsCollection*)GetCollection("muonCollection"); }
if(!muonHits)
{ G4cerr << "muonCollection NOT FOUND" << G4endl;
return true; }
G4int nhits = muonHits->entries();
const G4ThreeVector trPos = aTrack->GetPosition();
for(G4int i=0;i<nhits;i++)
{
G4ThreeVector muHitPos = (*muonHits)[i]->GetPos();
G4double angl = muHitPos.angle(trPos);
if(angl<ang) { return true; }
}
return false;
}
G4VHitsCollection* ExN04StackingAction::GetCollection(G4String colName)
{
G4SDManager* SDMan = G4SDManager::GetSDMpointer();
G4RunManager* runMan = G4RunManager::GetRunManager();
int colID = SDMan->GetCollectionID(colName);
if(colID>=0)
{
const G4Event* currentEvent = runMan->GetCurrentEvent();
G4HCofThisEvent* HCE = currentEvent->GetHCofThisEvent();
return HCE->GetHC(colID);
}
return 0;
}
void ExN04StackingAction::NewStage()
{
stage++;
G4int nhits;
if(stage==1)
{
// Stage 0->1 : check if at least "reqMuon" hits on muon chamber
// otherwise abort current event
if(!muonHits)
{ muonHits = (ExN04MuonHitsCollection*)GetCollection("muonCollection"); }
if(!muonHits)
{ G4cerr << "muonCollection NOT FOUND" << G4endl;
return; }
nhits = muonHits->entries();
G4cout << "Stage 0->1 : " << nhits << " hits found in the muon chamber."
<< G4endl;
if(nhits<reqMuon)
{
stackManager->clear();
G4cout << "++++++++ event aborted" << G4endl;
return;
}
stackManager->ReClassify();
return;
}
else if(stage==2)
{
// Stage 1->2 : check the isolation of muon tracks
// at least "reqIsoMuon" isolated muons
// otherwise abort current event.
// Isolation requires "reqIso" or less hits
// (including own hits) in the RoI region
// in the tracker layers.
nhits = muonHits->entries();
if(!trkHits)
{ trkHits = (ExN04TrackerHitsCollection*)GetCollection("trackerCollection"); }
if(!trkHits)
{ G4cerr << "trackerCollection NOT FOUND" << G4endl;
return; }
G4int nTrkhits = trkHits->entries();
G4int isoMuon = 0;
for(G4int j=0;j<nhits;j++)
{
G4ThreeVector hitPos = (*muonHits)[j]->GetPos();
G4int nhitIn = 0;
for(G4int jj=0;(jj<nTrkhits)&&(nhitIn<=reqIso);jj++)
{
G4ThreeVector trkhitPos = (*trkHits)[jj]->GetPos();
if(trkhitPos.angle(hitPos)<angRoI) nhitIn++;
}
if(nhitIn<=reqIso) isoMuon++;
}
G4cout << "Stage 1->2 : " << isoMuon << " isolated muon found." << G4endl;
if(isoMuon<reqIsoMuon)
{
stackManager->clear();
G4cout << "++++++++ event aborted" << G4endl;
return;
}
stackManager->ReClassify();
return;
}
else
{
// Other stage change : just re-classify
stackManager->ReClassify();
}
}
void ExN04StackingAction::PrepareNewEvent()
{
stage = 0;
trkHits = 0;
muonHits = 0;
}
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04StackingActionMessenger.hh"
#include "ExN04StackingAction.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4ios.hh"
ExN04StackingActionMessenger::ExN04StackingActionMessenger(ExN04StackingAction * msa)
:myAction(msa)
{
muonCmd = new G4UIcmdWithAnInteger("/mydet/reqmuon",this);
muonCmd->SetGuidance("Number of muon for the trigger.");
muonCmd->SetParameterName("N",true);
muonCmd->SetDefaultValue(2);
muonCmd->SetRange("N>=0");
isomuonCmd = new G4UIcmdWithAnInteger("/mydet/isomuon",this);
isomuonCmd->SetGuidance("Number of isolated muon for the trigger.");
isomuonCmd->SetParameterName("N",true);
isomuonCmd->SetDefaultValue(2);
isomuonCmd->SetRange("N>=0");
isoCmd = new G4UIcmdWithAnInteger("/mydet/isolation",this);
isoCmd->SetGuidance("Maximum allowed number of hits in tracker");
isoCmd->SetGuidance(" for an isolated muon track (includes hits by muon)");
isoCmd->SetParameterName("N",true);
isoCmd->SetDefaultValue(10);
isoCmd->SetRange("N>=0");
roiCmd = new G4UIcmdWithADoubleAndUnit("/mydet/RoIangle",this);
roiCmd->SetGuidance("Define RoI angle");
roiCmd->SetParameterName("theta",true,true);
roiCmd->SetDefaultUnit("deg");
}
ExN04StackingActionMessenger::~ExN04StackingActionMessenger()
{
delete muonCmd;
delete isomuonCmd;
delete isoCmd;
delete roiCmd;
}
void ExN04StackingActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue)
{
if( command==muonCmd )
{ myAction->SetNRequestMuon(muonCmd->GetNewIntValue(newValue)); }
else if( command==isomuonCmd )
{ myAction->SetNRequestIsoMuon(isomuonCmd->GetNewIntValue(newValue)); }
else if( command==isoCmd )
{ myAction->SetNIsolation(isoCmd->GetNewIntValue(newValue)); }
else if( command==roiCmd )
{ myAction->SetRoIAngle(roiCmd->GetNewDoubleValue(newValue)); }
}
G4String ExN04StackingActionMessenger::GetCurrentValue(G4UIcommand * command)
{
G4String cv;
if( command==muonCmd )
{ cv = muonCmd->ConvertToString(myAction->GetNRequestMuon()); }
else if( command==isomuonCmd )
{ cv = isomuonCmd->ConvertToString(myAction->GetNRequestIsoMuon()); }
else if( command==isoCmd )
{ cv = isoCmd->ConvertToString(myAction->GetNIsolation()); }
else if( command==roiCmd )
{ cv = roiCmd->ConvertToString(myAction->GetRoIAngle(),"deg"); }
return cv;
}
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04SteppingAction.hh"
#include "G4SteppingManager.hh"
#include "G4Track.hh"
#include "G4Step.hh"
#include "G4StepPoint.hh"
#include "G4TrackStatus.hh"
#include "G4VPhysicalVolume.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTypes.hh"
ExN04SteppingAction::ExN04SteppingAction()
{;}
ExN04SteppingAction::~ExN04SteppingAction()
{;}
void ExN04SteppingAction::UserSteppingAction(const G4Step * theStep)
{
G4Track * theTrack = theStep->GetTrack();
// check if it is alive
if(theTrack->GetTrackStatus()!=fAlive) { return; }
// check if it is primary
if(theTrack->GetParentID()!=0) { return; }
// check if it is NOT muon
G4ParticleDefinition * particleType = theTrack->GetDefinition();
if((particleType==G4MuonPlus::MuonPlusDefinition())
||(particleType==G4MuonMinus::MuonMinusDefinition()))
{ return; }
// check if it is entering to the calorimeter volume
G4StepPoint * thePrePoint = theStep->GetPreStepPoint();
G4VPhysicalVolume * thePrePV = thePrePoint->GetPhysicalVolume();
G4String thePrePVname = thePrePV->GetName();
if(thePrePVname(0,4)=="calo") { return; }
G4StepPoint * thePostPoint = theStep->GetPostStepPoint();
G4VPhysicalVolume * thePostPV = thePostPoint->GetPhysicalVolume();
G4String thePostPVname = thePostPV->GetName();
if(thePostPVname(0,4)!="calo") { return; }
// then suspend the track
theTrack->SetTrackStatus(fSuspend);
}
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04TrackerHit.hh"
#include "G4VVisManager.hh"
#include "G4Circle.hh"
#include "G4Colour.hh"
#include "G4VisAttributes.hh"
G4Allocator<ExN04TrackerHit> ExN04TrackerHitAllocator;
ExN04TrackerHit::ExN04TrackerHit()
{;}
ExN04TrackerHit::~ExN04TrackerHit()
{;}
ExN04TrackerHit::ExN04TrackerHit(const ExN04TrackerHit &right)
{
edep = right.edep;
pos = right.pos;
}
const ExN04TrackerHit& ExN04TrackerHit::operator=(const ExN04TrackerHit &right)
{
edep = right.edep;
pos = right.pos;
return *this;
}
int ExN04TrackerHit::operator==(const ExN04TrackerHit &right) const
{
return 0;
}
void ExN04TrackerHit::Draw()
{
G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
if(pVVisManager)
{
G4Circle circle(pos);
circle.SetScreenSize(0.04);
circle.SetFillStyle(G4Circle::filled);
G4Colour colour(1.,0.,0.);
G4VisAttributes attribs(colour);
circle.SetVisAttributes(attribs);
pVVisManager->Draw(circle);
}
}
void ExN04TrackerHit::Print()
{;}
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04TrackerParametrisation.hh"
#include "G4VPhysicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4Tubs.hh"
ExN04TrackerParametrisation::ExN04TrackerParametrisation()
{
#include "ExN04DetectorParameterDef.icc"
}
ExN04TrackerParametrisation::~ExN04TrackerParametrisation()
{;}
void ExN04TrackerParametrisation::ComputeTransformation
(const G4int copyNo,G4VPhysicalVolume *physVol) const
{
G4ThreeVector origin;
physVol->SetTranslation(origin);
}
void ExN04TrackerParametrisation::ComputeDimensions
(G4Tubs & trackerLayer, const G4int copyNo,
const G4VPhysicalVolume * physVol) const
{
trackerLayer.SetInnerRadius(tracker_radius[copyNo]);
trackerLayer.SetOuterRadius(tracker_radius[copyNo]+tracker_thick);
trackerLayer.SetZHalfLength(tracker_length[copyNo]);
trackerLayer.SetStartPhiAngle(trkTubs_sphi);
trackerLayer.SetDeltaPhiAngle(trkTubs_dphi);
}
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04TrackerSD.hh"
#include "ExN04TrackerHit.hh"
#include "G4Step.hh"
#include "G4HCofThisEvent.hh"
#include "G4TouchableHistory.hh"
#include "G4ios.hh"
ExN04TrackerSD::ExN04TrackerSD(G4String name)
:G4VSensitiveDetector(name)
{
G4String HCname;
collectionName.insert(HCname="trackerCollection");
}
ExN04TrackerSD::~ExN04TrackerSD(){;}
void ExN04TrackerSD::Initialize(G4HCofThisEvent*HCE)
{
static int HCID = -1;
trackerCollection = new ExN04TrackerHitsCollection
(SensitiveDetectorName,collectionName[0]);
if(HCID<0)
{ HCID = GetCollectionID(0); }
HCE->AddHitsCollection(HCID,trackerCollection);
}
G4bool ExN04TrackerSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist)
{
G4double edep = aStep->GetTotalEnergyDeposit();
if(edep==0.) return false;
ExN04TrackerHit* newHit = new ExN04TrackerHit();
newHit->SetEdep( edep );
newHit->SetPos( aStep->GetPreStepPoint()->GetPosition() );
trackerCollection->insert( newHit );
return true;
}
void ExN04TrackerSD::EndOfEvent(G4HCofThisEvent*HCE)
{;}
void ExN04TrackerSD::clear()
{
}
void ExN04TrackerSD::DrawAll()
{
}
void ExN04TrackerSD::PrintAll()
{
}
@@ -0,0 +1,38 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN04TrackingAction.hh"
#include "G4TrackingManager.hh"
#include "G4Track.hh"
void ExN04TrackingAction::PreUserTrackingAction(const G4Track* aTrack)
{
// Create trajectory only for primaries
if(aTrack->GetParentID()==0)
{ fpTrackingManager->SetStoreTrajectory(true); }
else
{ fpTrackingManager->SetStoreTrajectory(false); }
}
@@ -0,0 +1,81 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//$Id: HEPEvtcom.cc,v 1.1 2002/05/28 14:00:40 murakami Exp $
// ======================================================================
// PARAMETER (NMXHEP=4000)
// COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
// & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
// ======================================================================
///**********************************************************/
///* D E S C R I P T I O N : */
///*--------------------------------------------------------*/
///* NEVHEP - event number (or some special meaning*/
///* (see documentation for details) */
///* NHEP - actual number of entries in current */
///* event. */
///* ISTHEP[IHEP] - status code for IHEP'th entry - see */
///* documentation for details */
///* IDHEP [IHEP] - IHEP'th particle identifier according*/
///* to PDG. */
///* JMOHEP[IHEP][0] - pointer to position of 1st mother */
///* JMOHEP[IHEP][1] - pointer to position of 2nd mother */
///* JDAHEP[IHEP][0] - pointer to position of 1st daughter */
///* JDAHEP[IHEP][1] - pointer to position of 2nd daughter */
///* PHEP [IHEP][0] - X momentum [Gev/c] */
///* PHEP [IHEP][1] - Y momentum [Gev/c] */
///* PHEP [IHEP][2] - Z momentum [Gev/c] */
///* PHEP [IHEP][3] - Energy [Gev] */
///* PHEP [IHEP][4] - Mass[Gev/c^2] */
///* VHEP [IHEP][0] - X vertex [mm] */
///* VHEP [IHEP][1] - Y vertex [mm] */
///* VHEP [IHEP][2] - Z vertex [mm] */
///* VHEP [IHEP][3] - production time [mm/c] */
///*========================================================*/
//
// This interface to HEPEVT common block treats the block as
// an array of bytes --- the precision and number of entries
// is determined "on the fly" by the wrapper and used to decode
// each entry.
//
// HEPEVT_EntriesAllocation is the maximum size of the HEPEVT common block
// that can be interfaced. It is NOT the actual size of the HEPEVT common
// used in each individual application. The actual size can be changed on
// the fly using HepMC::HEPEVT_Wrapper::set_max_number_entries().
// Thus HEPEVT_EntriesAllocation should typically be set
// to the maximum possible number of entries --- 10000 is a good choice
// (and is the number used by ATLAS versions of Pythia).
#include <ctype.h>
enum {HEPEVT_EntriesAllocation=4000};
const unsigned int hepevt_bytes_allocation =
sizeof(long int) * ( 2 + 4 * HEPEVT_EntriesAllocation )
+ sizeof(double) * ( 9 * HEPEVT_EntriesAllocation );
extern "C" struct hepevt{
char data[hepevt_bytes_allocation];
};
hepevt hepevt_;
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4AsciiReader.cc
// $Id: HepMCG4AsciiReader.cc,v 1.1 2002/05/28 14:00:40 murakami Exp $
//
// ====================================================================
#include "HepMCG4AsciiReader.hh"
#include "HepMCG4AsciiReaderMessenger.hh"
#include "g4std/iostream"
#include "g4std/fstream"
////////////////////////////////////////
HepMCG4AsciiReader::HepMCG4AsciiReader()
: filename("xxx.dat"), verbose(0)
////////////////////////////////////////
{
asciiInput= new HepMC::IO_Ascii(filename.c_str(), ios::in);
messenger= new HepMCG4AsciiReaderMessenger(this);
}
/////////////////////////////////////////
HepMCG4AsciiReader::~HepMCG4AsciiReader()
/////////////////////////////////////////
{
delete asciiInput;
delete messenger;
}
/////////////////////////////////////
void HepMCG4AsciiReader::Initialize()
/////////////////////////////////////
{
delete asciiInput;
asciiInput= new HepMC::IO_Ascii(filename.c_str(), ios::in);
asciiInput-> print();
}
/////////////////////////////////////////////////////////
HepMC::GenEvent* HepMCG4AsciiReader::GenerateHepMCEvent()
/////////////////////////////////////////////////////////
{
HepMC::GenEvent* evt= asciiInput-> read_next_event();
if(!evt) return 0; // no more event
if(verbose>0) evt-> print();
return evt;
}
@@ -0,0 +1,97 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4AsciiReaderMessenger.cc
// $Id: HepMCG4AsciiReaderMessenger.cc,v 1.1 2002/05/28 14:00:40 murakami Exp $
//
// ====================================================================
#include "HepMCG4AsciiReaderMessenger.hh"
#include "HepMCG4AsciiReader.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
////////////////////////////////////////////////////////
HepMCG4AsciiReaderMessenger::HepMCG4AsciiReaderMessenger
(HepMCG4AsciiReader* agen)
: gen(agen)
////////////////////////////////////////////////////////
{
dir= new G4UIdirectory("/generator/hepmcAscii/");
dir-> SetGuidance("Reading HepMC event from an Ascii file");
verbose=
new G4UIcmdWithAnInteger("/generator/hepmcAscii/verbose", this);
verbose-> SetGuidance("Set verbose level");
verbose-> SetParameterName("verboseLevel", false, false);
verbose-> SetRange("verboseLevel>=0 && verboseLevel<=1");
open= new G4UIcmdWithAString("/generator/hepmcAscii/open", this);
open-> SetGuidance("(re)open data file (HepMC Ascii format)");
open-> SetParameterName("input ascii file", true, true);
}
///////////////////////////////////////////////////////////
HepMCG4AsciiReaderMessenger::~HepMCG4AsciiReaderMessenger()
///////////////////////////////////////////////////////////
{
delete verbose;
delete open;
delete dir;
}
///////////////////////////////////////////////////////////////////
void HepMCG4AsciiReaderMessenger::SetNewValue(G4UIcommand* command,
G4String newValues)
///////////////////////////////////////////////////////////////////
{
if (command==verbose) {
int level= verbose-> GetNewIntValue(newValues);
gen-> SetVerboseLevel(level);
} else if (command==open) {
gen-> SetFileName(newValues);
G4cout << "HepMC Ascii inputfile: "
<< gen-> GetFileName() << G4endl;
gen-> Initialize();
}
}
///////////////////////////////////////////////////////////////////////////
G4String HepMCG4AsciiReaderMessenger::GetCurrentValue(G4UIcommand* command)
///////////////////////////////////////////////////////////////////////////
{
G4String cv;
if (command == verbose) {
cv= verbose-> ConvertToString(gen-> GetVerboseLevel());
} else if (command == open) {
cv= gen-> GetFileName();
}
return cv;
}
@@ -0,0 +1,141 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4Interface.cc
// $Id: HepMCG4Interface.cc,v 1.1 2002/05/28 14:00:40 murakami Exp $
//
// ====================================================================
#include "HepMCG4Interface.hh"
#include "G4RunManager.hh"
#include "G4LorentzVector.hh"
#include "G4Event.hh"
#include "G4PrimaryParticle.hh"
#include "G4PrimaryVertex.hh"
#include "G4TransportationManager.hh"
////////////////////////////////////
HepMCG4Interface::HepMCG4Interface()
: hepmcEvent(0)
////////////////////////////////////
{
}
/////////////////////////////////////
HepMCG4Interface::~HepMCG4Interface()
/////////////////////////////////////
{
delete hepmcEvent;
}
/////////////////////////////////////////////////////////
G4bool HepMCG4Interface::CheckVertexInsideWorld
(const G4ThreeVector& pos) const
/////////////////////////////////////////////////////////
{
G4Navigator* navigator= G4TransportationManager::GetTransportationManager()
-> GetNavigatorForTracking();
G4VPhysicalVolume* world= navigator-> GetWorldVolume();
G4VSolid* solid= world-> GetLogicalVolume()-> GetSolid();
EInside qinside= solid-> Inside(pos);
if( qinside != kInside) return false;
else return true;
}
////////////////////////////////////////////////////////////////
void HepMCG4Interface::HepMC2G4(const HepMC::GenEvent* hepmcevt,
G4Event* g4event)
////////////////////////////////////////////////////////////////
{
for(HepMC::GenEvent::vertex_const_iterator vitr= hepmcevt->vertices_begin();
vitr != hepmcevt->vertices_end(); ++vitr ) { // loop for vertex ...
// real vertex?
G4bool qvtx=false;
for (HepMC::GenVertex::particle_iterator
pitr= (*vitr)->particles_begin(HepMC::children);
pitr != (*vitr)->particles_end(HepMC::children); ++pitr) {
if (!(*pitr)->end_vertex() && (*pitr)->status()==1) {
qvtx=true;
break;
}
}
if (!qvtx) continue;
// check world boundary
G4LorentzVector xvtx= (*vitr)-> position();
if (! CheckVertexInsideWorld(xvtx.vect()*mm)) continue;
// create G4PrimaryVertex and associated G4PrimaryParticles
G4PrimaryVertex* g4vtx=
new G4PrimaryVertex(xvtx.x()*mm, xvtx.y()*mm, xvtx.z()*mm,
xvtx.t()*mm/c_light);
for (HepMC::GenVertex::particle_iterator
vpitr= (*vitr)->particles_begin(HepMC::children);
vpitr != (*vitr)->particles_end(HepMC::children); ++vpitr) {
if( (*vpitr)->status() != 1 ) continue;
G4int pdgcode= (*vpitr)-> pdg_id();
G4LorentzVector p= (*vpitr)-> momentum();
G4PrimaryParticle* g4prim=
new G4PrimaryParticle(pdgcode, p.x()*GeV, p.y()*GeV, p.z()*GeV);
g4vtx-> SetPrimary(g4prim);
}
g4event-> AddPrimaryVertex(g4vtx);
}
}
///////////////////////////////////////////////////////
HepMC::GenEvent* HepMCG4Interface::GenerateHepMCEvent()
///////////////////////////////////////////////////////
{
HepMC::GenEvent* aevent= new HepMC::GenEvent();
return aevent;
}
//////////////////////////////////////////////////////////////
void HepMCG4Interface::GeneratePrimaryVertex(G4Event* anEvent)
//////////////////////////////////////////////////////////////
{
// delete previous event object
delete hepmcEvent;
// generate next event
hepmcEvent= GenerateHepMCEvent();
if(! hepmcEvent) {
G4cout << "HepMCInterface: no generated particles. run terminated..."
<< G4endl;
G4RunManager::GetRunManager()-> AbortRun();
return;
}
HepMC2G4(hepmcEvent, anEvent);
}
@@ -0,0 +1,161 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4PythiaInterface.cc
// $Id: HepMCG4PythiaInterface.cc,v 1.1 2002/05/28 14:00:40 murakami Exp $
//
// ====================================================================
#include "HepMCG4PythiaInterface.hh"
#include "HepMCG4PythiaMessenger.hh"
#include "HepMC/GenEvent.h"
#include "HepMC/PythiaWrapper6_152.h"
// additional pythia calls
#define pygive pygive_
#define pyrget pyrget_
#define pyrset pyrset_
extern "C" {
void pygive(const char*, int);
void pyrget(int*, int*);
void pyrset(int*, int*);
}
void call_pygive(G4String s) { pygive(s.c_str(), s.length()); }
void call_pyrget(int a, int b) { pyrget(&a, &b); }
void call_pyrset(int a, int b) { pyrset(&a, &b); }
////////////////////////////////////////////////
HepMCG4PythiaInterface::HepMCG4PythiaInterface()
: verbose(0), mpylist(0)
////////////////////////////////////////////////
{
#ifdef NEED_INITPYDATA
initpydata();
// Some platforms may require the initialization of pythia PYDATA block
// data as external - if you get pythia initialization errors try
// commenting in/out the below call to initpydata().
#endif
messenger= new HepMCG4PythiaMessenger(this);
}
/////////////////////////////////////////////////
HepMCG4PythiaInterface::~HepMCG4PythiaInterface()
/////////////////////////////////////////////////
{
delete messenger;
}
/////////////////////////////////////////////////////
void HepMCG4PythiaInterface::CallPygive(G4String par)
/////////////////////////////////////////////////////
{
call_pygive(par);
}
//////////////////////////////////////////////////////////////////////
void HepMCG4PythiaInterface::CallPyinit(G4String frame, G4String beam,
G4String target, G4double win)
//////////////////////////////////////////////////////////////////////
{
call_pyinit(frame.c_str(), beam.c_str(), target.c_str(), win);
}
////////////////////////////////////////////////////
void HepMCG4PythiaInterface::CallPystat(G4int istat)
////////////////////////////////////////////////////
{
call_pystat(istat);
}
///////////////////////////////////////////////////////
void HepMCG4PythiaInterface::SetRandomSeed(G4int iseed)
///////////////////////////////////////////////////////
{
pydatr.mrpy[1-1]= iseed;
}
//////////////////////////////////////////////////////////////
void HepMCG4PythiaInterface::CallPyrget(G4int lun, G4int move)
//////////////////////////////////////////////////////////////
{
call_pyrget(lun, move);
}
//////////////////////////////////////////////////////////////
void HepMCG4PythiaInterface::CallPyrset(G4int lun, G4int move)
//////////////////////////////////////////////////////////////
{
call_pyrset(lun, move);
}
//////////////////////////////////////////////////////////////////////////
void HepMCG4PythiaInterface::PrintRandomStatus(G4std::ostream& ostr) const
//////////////////////////////////////////////////////////////////////////
{
ostr << "# Pythia random numbers status" << G4endl;
for (G4int j=0; j<6; j++) {
ostr << "pydatr.mrpy[" << j << "]= " << pydatr.mrpy[j] << G4endl;
}
for (G4int k=0; k<100; k++) {
ostr << "pydatr.rrpy[" << k << "]= " << pydatr.rrpy[k] << G4endl;
}
}
////////////////////////////////////////////////
void HepMCG4PythiaInterface::SetUserParameters()
////////////////////////////////////////////////
{
G4cout << "set user parameters of PYTHIA common." << G4endl
<< "nothing to be done in default."
<< G4endl;
}
/////////////////////////////////////////////////////////////
HepMC::GenEvent* HepMCG4PythiaInterface::GenerateHepMCEvent()
/////////////////////////////////////////////////////////////
{
static G4int nevent= 0; // event counter
call_pyevnt(); // generate one event with Pythia
if(mpylist >=1 && mpylist<= 3) call_pylist(mpylist);
call_pyhepc(1);
HepMC::GenEvent* evt= hepevtio.read_next_event();
evt-> set_event_number(nevent++);
if(verbose>0) evt-> print();
return evt;
}
//////////////////////////////////////////
void HepMCG4PythiaInterface::Print() const
//////////////////////////////////////////
{
G4cout << "PythiaInterface::Print()..." << G4endl;
}
@@ -0,0 +1,212 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// HepMCG4PythiaMessenger.cc
// $Id: HepMCG4PythiaMessenger.cc,v 1.1 2002/05/28 14:00:40 murakami Exp $
//
// ====================================================================
#include "HepMCG4PythiaMessenger.hh"
#include "HepMCG4PythiaInterface.hh"
#include "g4std/fstream"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
////////////////////////////////////////////////////////////////////////////
HepMCG4PythiaMessenger::HepMCG4PythiaMessenger(HepMCG4PythiaInterface* agen)
: gen(agen)
////////////////////////////////////////////////////////////////////////////
{
dir= new G4UIdirectory("/generator/pythia/");
dir-> SetGuidance("Commands for Pythia event generation");
verbose= new G4UIcmdWithAnInteger("/generator/pythia/verbose",this);
verbose-> SetGuidance("set verbose level");
verbose-> SetParameterName("verboseLevel", false, false);
verbose-> SetRange("verboseLevel>=0 && verboseLevel<=2");
mpylist= new G4UIcmdWithAnInteger("/generator/pythia/pylist",this);
mpylist-> SetGuidance("set argument of pylist (not called if mlist=0)");
mpylist-> SetParameterName("mlist", false, false);
mpylist-> SetRange("mlist>=0 && mlist<=3");
print= new G4UIcmdWithoutParameter("/generator/pythia/print", this);
print-> SetGuidance("print user information.");
cpyinit= new G4UIcommand("/generator/pythia/pyinit", this);
cpyinit-> SetGuidance("call PYINIT");
G4UIparameter* frame=
new G4UIparameter("frame of the experiment", 's', false);
cpyinit-> SetParameter(frame);
G4UIparameter* beam= new G4UIparameter("beam particle", 's', false);
cpyinit-> SetParameter(beam);
G4UIparameter* target= new G4UIparameter("target particle", 's', false);
cpyinit-> SetParameter(target);
G4UIparameter* win= new G4UIparameter("energy of system (GeV)", 'd', false);
cpyinit-> SetParameter(win);
cpystat= new G4UIcmdWithAnInteger("/generator/pythia/pystat", this);
cpystat-> SetGuidance("call PYSTAT");
cpystat-> SetParameterName("mstat", false, false);
cpystat-> SetRange("mstat>=1 && mstat<=5");
cpygive= new G4UIcommand("/generator/pythia/pygive",this);
cpygive-> SetGuidance("call PYGIVE");
G4UIparameter* parameter= new G4UIparameter ("Parameter", 's', false);
cpygive-> SetParameter(parameter);
setUserParameters=
new G4UIcmdWithoutParameter("/generator/pythia/setUserParameters",this);
setUserParameters->
SetGuidance("Set user parameters in the Pythia common blocks");
setSeed= new G4UIcmdWithAnInteger("/generator/pythia/setSeed", this);
setSeed-> SetGuidance("set initial seed.");
cpyrget= new G4UIcommand("/generator/pythia/pyrget", this);
cpyrget-> SetGuidance("call PYRGET");
G4UIparameter* lun, *move;
lun= new G4UIparameter("logical file number", 'i', false);
cpyrget-> SetParameter(lun);
move= new G4UIparameter("choice of adding a new record", 'i', true);
move-> SetDefaultValue(-1);
cpyrget-> SetParameter(move);
cpyrset= new G4UIcommand("/generator/pythia/pyrset", this);
cpyrset-> SetGuidance("call PYRSET");
lun= new G4UIparameter("logical file number", 'i', false);
cpyrset-> SetParameter(lun);
move= new G4UIparameter("choice of adding a new record", 'i', true);
move-> SetDefaultValue(0);
cpyrset-> SetParameter(move);
printRandomStatus=
new G4UIcmdWithAString("/generator/pythia/printRandomStatus", this);
printRandomStatus-> SetGuidance("print random number status.");
printRandomStatus-> SetParameterName("filename", true, false);
printRandomStatus-> SetDefaultValue("std::cout");
}
/////////////////////////////////////////////////
HepMCG4PythiaMessenger::~HepMCG4PythiaMessenger()
/////////////////////////////////////////////////
{
delete verbose;
delete mpylist;
delete print;
delete cpyinit;
delete cpystat;
delete cpygive;
delete setUserParameters;
delete setSeed;
delete cpyrget;
delete cpyrset;
delete printRandomStatus;
delete dir;
}
//////////////////////////////////////////////////////////////
void HepMCG4PythiaMessenger::SetNewValue(G4UIcommand* command,
G4String newValues)
//////////////////////////////////////////////////////////////
{
if(command == verbose) { // /verbose ...
G4int level= verbose-> GetNewIntValue(newValues);
gen-> SetVerboseLevel(level);
} else if (command == mpylist) { // /mpylist ...
G4int mlist= mpylist-> GetNewIntValue(newValues);
gen-> SetPylist(mlist);
} else if (command == print) { // /print ...
gen-> Print();
} else if (command == cpyinit) { // /pyinit ...
const char* strvaluelist= newValues.c_str();
G4std::istrstream is((char*)strvaluelist);
G4String sframe, sbeam, starget; G4double dwin;
is >> sframe >> sbeam >> starget >> dwin;
gen-> CallPyinit(sframe, sbeam, starget, dwin);
} else if (command == cpystat) { // /pystat ...
G4int imod= cpystat-> GetNewIntValue(newValues);
gen-> CallPystat(imod);
} else if (command == cpygive) { // /pygive ...
G4String s= newValues;
gen-> CallPygive(s);
} else if (command == setUserParameters) { // /setUserParameters ...
gen-> SetUserParameters();
} else if (command == setSeed) { // /setSeed ...
G4int iseed= setSeed-> GetNewIntValue(newValues);
gen-> SetRandomSeed(iseed);
} else if (command == cpyrget) { // /pyrget ...
const char* strvaluelist= newValues.c_str();
G4std::istrstream is((char*)strvaluelist);
G4int lun, move;
is >> lun >> move;
gen-> CallPyrget(lun, move);
} else if (command == cpyrset) { // /pyrset ...
const char* strvaluelist= newValues.c_str();
G4std::istrstream is((char*)strvaluelist);
G4int lun, move;
is >> lun >> move;
gen-> CallPyrset(lun, move);
} else if (command == printRandomStatus) { // /printRandomStatus ...
G4String s= newValues;
if (newValues == "std::cout") {
gen-> PrintRandomStatus();
} else {
// to a file (overwrite mode)
G4std::ofstream ofs;
ofs.open(s.c_str(), std::ios::out);
//ofs.open(randomStatusFileName.c_str(), std::ios::out|std::ios::app);
ofs.setf(std::ios::fixed | std::ios::showpoint);
gen-> PrintRandomStatus(ofs);
ofs.close();
}
}
}
//////////////////////////////////////////////////////////////////////
G4String HepMCG4PythiaMessenger::GetCurrentValue(G4UIcommand* command)
//////////////////////////////////////////////////////////////////////
{
G4String cv;
if (command == verbose) {
cv= verbose-> ConvertToString(gen->GetVerboseLevel());
} else if (command == mpylist) {
cv= verbose-> ConvertToString(gen->GetPylist());
}
return cv;
}
@@ -0,0 +1,75 @@
# $Id: GNUmakefile,v 1.2 2002/05/28 14:19:07 murakami Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
name := hepmcEx02
G4TARGET := $(name)
G4EXLIB := true
#ifndef G4WORKDIR
# G4WORKDIR := .
#endif
.PHONY: all
all : lib bin
include $(G4INSTALL)/config/binmake.gmk
# -----------------------------------------------------------------
# HepMC and PYTHIA
# if you donnot use Pythia library, comment out.
USE_PYTHIA := 1
# HepMC
HEPMC_DIR := /opt/heplib/HepMC/1.21
INCFLAGS += -I$(HEPMC_DIR)
# check gcc
USE_GCC := 0
ifeq ($(G4SYSTEM),Linux-g++)
USE_GCC := 1
endif
ifeq ($(G4SYSTEM),Linux-egcs)
USE_GCC := 1
endif
ifeq ($(USE_GCC),1)
LDLIBS1 += -Wl,-rpath $(HEPMC_DIR)
endif
ifdef USE_PYTHIA
LDLIBS1 += -L$(HEPMC_DIR) -lHepMC
else
LDLIBS1 += -L$(HEPMC_DIR) -lHepMC $(G4TMPDIR)/HEPEvtcom.o
endif
ifdef USE_PYTHIA
CERNLIB_DIR := /cern/pro/lib
LDLIBS1 += -L$(CERNLIB_DIR) -lpythia6
# if you get pythia initialization errors, try the next flag.
#NEED_INITPYDATA := 1
ifdef NEED_INITPYDATA
CXXFLAGS += -DNEED_INITPYDATA
LDLIBS1 += $(HepMC_DIR)/src/initpydata.o
#LDLIBS1 += external/initpydata.o
endif
LDLIBS1 += $(FCLIBS)
endif
# -----------------------------------------------------------------
CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS))
CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O))
# On HP-acc optimization has to be turned off to compile ExN04HadronPhysics.
#
ifeq ($(G4SYSTEM),HP-aCC)
COMPILER := $(shell aCC -V 2>&1)
ifeq ($(COMPILER), aCC: HP ANSI C++ B3910B A.01.15)
$(G4TMP)/$(G4SYSTEM)/$(name)/XXHadronPhysics.o: src/XXHadronPhysics.cc
$(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/XXHadronPhysics.cc
endif
endif
@@ -0,0 +1,23 @@
$Id: History,v 1.2 2002/05/28 14:19:07 murakami Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Example HepMCEx02 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 *
----------------------------------------------------------
May. 28, 2002 K.Murakami
- rename classes and filenames.
April 15, 02 K.Murakami
- Created.
@@ -0,0 +1,42 @@
$Id: README,v 1.1 2002/05/28 14:20:36 murakami Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
HepMCEx02
---------
This example demonstrates how to interface primary particles in Geant4
with various event generators via the HepMC Monte Carlo event interface.
This is another example having the same generator action as HepMCEx01,
but much simpler user control.
1. Primary Generator
H02PrimaryGeneratorAction has HepMCG4Interface as the generator.
There are two types of generators provided as samples. One generator reads
primary information from a HepMC Ascii file (data/example_MyPythia.dat).
The other one generates primaries directly invoking PYTHIA routines
in every event.
2. Geometry
A simplified collider-type geometry, which consists of
- endcap calorimeter (a set of tubes filled with lead),
- barrel calorimeter (tube filled with lead),
- barrel muon detector (8 sets of plates filled with Ar),
- endcap muon detecror, (a set of tubes filled with Ar) and
- uniform magnetic field along the z axis of 3 Tesla at the
central region.
3. Physics List
Full set of "ordinary" physics processes, which is the same one as
ExN04PhysicsList.
4. User actions
All particles except muons are killed in the calorimeter section.
@@ -0,0 +1,26 @@
# // CLHEP
CLHEPD := /usr/local/CLHEP
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
# // CERN libraries
CLIBD := /cern/pro/lib
CLIB := -L$(CLIBD) -lpythia6
CXXFLAGS := $(CLHEPINC) $(HEPMCINC)
LOPT := -Wl,-rpath $(HEPMCD) $(HEPMCLIB) $(CLHEP) $(CLIB) -lg2c
%.o: %.cxx
$(CXX) -c -o $@ $(CXXFLAGS) $*.cxx
example_MyPythia : example_MyPythia.o
$(CXX) -o $@ $< $(LOPT)
example_MyPythia.o : example_MyPythia.cxx
@@ -0,0 +1,114 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
//////////////////////////////////////////////////////////////////////////
// Matt.Dobbs@Cern.CH, December 1999
// November 2000, updated to use Pythia 6.1
// example of generating events with Pythia
// using HepMC/PythiaWrapper.h
// Events are read into the HepMC event record from the FORTRAN HEPEVT
// common block using the IO_HEPEVT strategy and then output to file in
// ascii format using the IO_Ascii strategy.
//////////////////////////////////////////////////////////////////////////
// To Compile: go to the HepMC directory and type:
// gmake examples/example_MyPythia.exe
//
// In this example the precision and number of entries for the HEPEVT
// fortran common block are explicitly defined to correspond to those
// used in the Pythia version of the HEPEVT common block.
//
// If you get funny output from HEPEVT in your own code, probably you have
// set these values incorrectly!
//
#include <iostream>
#include "HepMC/PythiaWrapper.h"
#include "HepMC/IO_HEPEVT.h"
#include "HepMC/IO_Ascii.h"
#include "HepMC/GenEvent.h"
int main() {
//
//........................................HEPEVT
// Pythia 6.1 uses HEPEVT with 4000 entries and 8-byte floating point
// numbers. We need to explicitly pass this information to the
// HEPEVT_Wrapper.
//
HepMC::HEPEVT_Wrapper::set_max_number_entries(4000);
HepMC::HEPEVT_Wrapper::set_sizeof_real(8);
//
//........................................PYTHIA INITIALIZATIONS
// (Some platforms may require the initialization of pythia PYDATA block
// data as external - if you get pythia initialization errors try
// commenting in/out the below call to initpydata() )
// initpydata();
//
// Select W+gamma process (process number 20)
// (here we have to be careful of C/F77 differences: arrays in C
// start at 0, F77 at 1, so we need to subtract 1 from the process #)
pysubs.msel=0;
pysubs.msub[20-1] = 1;
// set random number seed (mandatory!)
pydatr.mrpy[0]=55122 ;
// Tell Pythia not to write multiple copies of particles in event record.
pypars.mstp[128-1] = 2;
// Example of setting a Pythia parameter: set the top mass
pydat2.pmas[1-1][6-1]= 175;
//
// Call pythia initialization
call_pyinit( "CMS", "p", "p", 14000. );
//........................................HepMC INITIALIZATIONS
//
// Instantiate an IO strategy for reading from HEPEVT.
HepMC::IO_HEPEVT hepevtio;
//
// 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);
//
//........................................EVENT LOOP
for ( int i = 1; i <= 10; i++ ) {
if ( i%50==1 ) std::cout << "Processing Event Number "
<< i << std::endl;
call_pyevnt(); // generate one event with Pythia
// pythia pyhepc routine converts common PYJETS in common HEPEVT
call_pyhepc( 1 );
HepMC::GenEvent* evt = hepevtio.read_next_event();
// add some information to the event
evt->set_event_number(i);
evt->set_signal_process_id(20);
// write the event out to the ascii file
ascii_io << evt;
// we also need to delete the created event from memory
delete evt;
}
//........................................TERMINATION
// write out some information from Pythia to the screen
call_pystat( 1 );
return 0;
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,13 @@
include $(G4INSTALL)/config/sys/$(G4SYSTEM).gmk
%.o: %.f
@echo "Compiling $< with $(FC) ..."
$(FC) -c $(FCFLAGS) -o $@ $<
initpydata.o : initpydata.f
.PHONY: clean
clean:
@rm initpydata.o
@@ -0,0 +1,11 @@
c
c Matt.Dobbs@Cern.CH, December 1999
c EXTERNAL statement links PYDATA on most machines.
c (Often necessary for the initialization of Pythia)
c
subroutine initpydata
EXTERNAL PYDATA
return
end
@@ -0,0 +1,102 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: hepmcEx02.cc,v 1.2 2002/05/28 14:19:07 murakami Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// GEANT 4 - example of HepMC-interface
//
// --------------------------------------------------------------
// Comments
//
//
// --------------------------------------------------------------
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"
#include "H02DetectorConstruction.hh"
#include "H02PhysicsList.hh"
#include "H02PrimaryGeneratorAction.hh"
#include "H02EventAction.hh"
#include "H02SteppingAction.hh"
#ifdef G4VIS_USE
#include "H02VisManager.hh"
#endif
int main(int argc, char** argv)
{
G4RunManager* runManager= new G4RunManager;
runManager-> SetUserInitialization(new H02DetectorConstruction);
runManager-> SetUserInitialization(new H02PhysicsList);
runManager-> Initialize();
runManager-> SetUserAction(new H02PrimaryGeneratorAction);
runManager-> SetUserAction(new H02EventAction);
runManager-> SetUserAction(new H02SteppingAction);
#ifdef G4VIS_USE
// initialize visualization package
G4VisManager* visManager= new H02VisManager;
visManager-> Initialize();
G4cout << G4endl;
#endif
if(argc==1) {
// G4UIterminal is a (dumb) terminal.
#ifdef QERAUOY
G4UItcsh* tcsh= new
G4UItcsh("hepmcEx02(%s)[%/]:");
G4UIterminal* session= new G4UIterminal(tcsh);
tcsh-> SetLsColor(RED, GREEN);
#else
G4UItcsh* tcsh= new G4UItcsh("hepmcEx01(%s)[%/]:");
G4UIterminal* session= new G4UIterminal(tcsh);
#endif
session->SessionStart();
delete session;
} else {
G4UImanager* UImanager= G4UImanager::GetUIpointer();
G4String command= "/control/execute ";
G4String fileName= argv[1];
UImanager-> ApplyCommand(command+fileName);
}
#ifdef G4VIS_USE
delete visManager;
#endif
delete runManager;
return 0;
}
@@ -0,0 +1,5 @@
/generator/select hepmcAscii
/generator/hepmcAscii/open data/example_MyPythia.dat
/generator/hepmcAscii/verbose 1
/run/beamOn 3
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,4 @@
/control/execute pyset.mac
/run/beamOn 10
/generator/pythia/pystat 1
@@ -0,0 +1,421 @@
**********************************************
Geant4 version $Name: geant4-04-01 $
(28-Feb-2002)
Copyright : Geant4 Collaboration
**********************************************
MuonMinusCaptureAtRest is created
phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z
Sandia crossSection below 50 KeV
PhysicsTables from 50 keV to 50 MeV in 100 bins.
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 10 keV to 100 GeV in 100 bins.
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
log scale extrapolation above 100 GeV
Gamma energy sampled from a parametrised formula.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuBrems: theoretical cross section
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuPairProd: theoretical cross sections
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
Visualization Manager instantiating...
Visualization Manager initialising...
Registering graphics systems...
* Visualizaton Driver: DAWN
* Visualizaton Driver: VRML1/2
* Visualizaton Driver: VRML1/2 File
You have successfully chosen to use the following graphics systems.
Current available graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
OpenGLImmediateX (OGLIX)
OpenGLStoredX (OGLSX)
OpenGLImmediateXm (OGLIXm)
OpenGLStoredXm (OGLSXm)
VRML1 (VRML1)
VRML2 (VRML2)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
current generator type: pythia
1
******************************************************************************
******************************************************************************
** **
** **
** *......* Welcome to the Lund Monte Carlo! **
** *:::!!:::::::::::* **
** *::::::!!::::::::::::::* PPP Y Y TTTTT H H III A **
** *::::::::!!::::::::::::::::* P P Y Y T H H I A A **
** *:::::::::!!:::::::::::::::::* PPP Y T HHHHH I AAAAA **
** *:::::::::!!:::::::::::::::::* P Y T H H I A A **
** *::::::::!!::::::::::::::::*! P Y T H H III A A **
** *::::::!!::::::::::::::* !! **
** !! *:::!!:::::::::::* !! This is PYTHIA version 6.205 **
** !! !* -><- * !! Last date of change: 1 Mar 2002 **
** !! !! !! **
** !! !! !! Now is 0 Jan 2000 at 0:00:00 **
** !! !! **
** !! lh !! Disclaimer: this program comes **
** !! !! without any guarantees. Beware **
** !! hh !! of errors and use common sense **
** !! ll !! when interpreting results. **
** !! !! **
** !! Copyright T. Sjostrand (2001) **
** **
** An archive of program versions and documentation is found on the web: **
** http://www.thep.lu.se/~torbjorn/Pythia.html **
** **
** When you cite this program, currently the official reference is **
** T. Sjostrand, P. Eden, C. Friberg, L. Lonnblad, G. Miu, S. Mrenna and **
** E. Norrbin, Computer Physics Commun. 135 (2001) 238. **
** The large manual is **
** T. Sjostrand, L. Lonnblad and S. Mrenna, LU TP 01-21 [hep-ph/0108264]. **
** Also remember that the program, to a large extent, represents original **
** physics research. Other publications of special relevance to your **
** studies may therefore deserve separate mention. **
** **
** Main author: Torbjorn Sjostrand; Department of Theoretical Physics 2, **
** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
** phone: + 46 - 46 - 222 48 16; e-mail: torbjorn@thep.lu.se **
** Author: Leif Lonnblad; Department of Theoretical Physics 2, **
** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
** phone: + 46 - 46 - 222 77 80; e-mail: leif@thep.lu.se **
** Author: Stephen Mrenna; Computing Division, Simulations Group, **
** Fermi National Accelerator Laboratory, MS 234, Batavia, IL 60510, USA; **
** phone: + 1 - 630 - 840 - 2556; e-mail: mrenna@fnal.gov **
** Author: Peter Skands; Department of Theoretical Physics 2, **
** Lund University, Solvegatan 14A, S-223 62 Lund, Sweden; **
** phone: + 46 - 46 - 222 31 92; e-mail: zeiler@thep.lu.se **
** **
** **
******************************************************************************
******************************************************************************
PMAS(6,1) changed from 175.00000 to 174.30000
PMAS(25,1) changed from 115.00000 to 200.00000
MSEL changed from 1 to 0
MSUB(102) changed from 0 to 1
MSUB(123) changed from 0 to 1
MSUB(124) changed from 0 to 1
MDME(210,1) changed from 1 to 0
MDME(211,1) changed from 1 to 0
MDME(212,1) changed from 1 to 0
MDME(213,1) changed from 1 to 0
MDME(214,1) changed from 1 to 0
MDME(215,1) changed from 1 to 0
MDME(218,1) changed from 1 to 0
MDME(219,1) changed from 1 to 0
MDME(220,1) changed from 1 to 0
MDME(222,1) changed from 1 to 0
MDME(223,1) changed from 1 to 0
MDME(224,1) changed from 1 to 0
MDME(225,1) changed from 1 to 1
MDME(226,1) changed from 1 to 0
MDME(216,1) changed from -1 to -1
MDME(217,1) changed from -1 to -1
MDME(218,1) changed from 0 to -1
MDME(174,1) changed from 1 to 0
MDME(175,1) changed from 1 to 0
MDME(176,1) changed from 1 to 0
MDME(177,1) changed from 1 to 0
MDME(178,1) changed from 1 to 0
MDME(179,1) changed from 1 to 0
MDME(182,1) changed from 1 to 0
MDME(183,1) changed from 1 to 0
MDME(184,1) changed from 1 to 1
MDME(185,1) changed from 1 to 0
MDME(186,1) changed from 1 to 0
MDME(187,1) changed from 1 to 0
MDME(180,1) changed from -1 to -1
MDME(181,1) changed from -1 to -1
MDME(188,1) changed from -1 to -1
MDME(189,1) changed from -1 to -1
MSTP(61) changed from 2 to 1
MSTP(71) changed from 1 to 1
MSTP(81) changed from 1 to 1
MSTP(111) changed from 1 to 1
1****************** PYINIT: initialization of PYTHIA routines *****************
==============================================================================
I I
I PYTHIA will be initialized for a p on p collider I
I at 14000.000 GeV center-of-mass energy I
I I
==============================================================================
******** PYMAXI: summary of differential cross-section maximum search ********
==========================================================
I I I
I ISUB Subprocess name I Maximum value I
I I I
==========================================================
I I I
I 96 Semihard QCD 2 -> 2 I 1.8679E+03 I
I 102 g + g -> h0 I 5.1617E-12 I
I 123 f + f' -> f + f' + h0 I 4.0000E-12 I
I 124 f + f' -> f" + f"' + h0 I 8.9419E-12 I
I I I
==========================================================
********************** PYINIT: initialization completed **********************
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=11)
E0 : pi+ : pT=0.119 : TOF=27 : x=(-0.325,1.07,7.9)
E0 : mu- : pT=0.271 : TOF=26.7 : x=(1.11,0.388,7.9)
E1 : pi- : pT=0.299 : TOF=26.7 : x=(1.05,0.409,-7.9)
E1 : pi+ : pT=0.535 : TOF=26.6 : x=(-0.53,0.88,-7.9)
E1 : pi+ : pT=1.14 : TOF=27 : x=(-0.652,0.758,-8.02)
E0 : pi- : pT=0.297 : TOF=26.6 : x=(0.351,-0.96,7.9)
E1 : e- : pT=0.000632 : TOF=37.3 : x=(-0.575,1.66,-8.1)
B3 : mu+ : pT=42.7 : TOF=15 : x=(-4.04,1.97,-0.032)
B1 : mu- : pT=58.3 : TOF=21.4 : x=(2.08,3.93,-4.61)
B4 : mu+ : pT=21.8 : TOF=24.2 : x=(-4.25,-1.08,5.77)
E1 : mu- : pT=25.9 : TOF=28.6 : x=(-1.86,2.72,-7.9)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=15)
E1 : pi- : pT=0.297 : TOF=26.7 : x=(0.011,-1.06,-7.9)
E0 : e- : pT=0.000664 : TOF=29.2 : x=(0.573,1.12,7.9)
E0 : e- : pT=0.000499 : TOF=31.4 : x=(0.778,0.87,7.9)
E1 : mu- : pT=0.626 : TOF=26.7 : x=(-1.21,-0.17,-7.9)
E1 : pi- : pT=0.113 : TOF=27 : x=(-0.607,-0.921,-7.9)
E1 : e- : pT=0.000587 : TOF=29.9 : x=(-0.545,-1.33,-7.9)
E1 : e- : pT=0.000537 : TOF=30.7 : x=(-0.493,-1.47,-7.9)
E1 : e- : pT=0.000303 : TOF=31.4 : x=(-0.358,-1.45,-7.9)
E1 : pi- : pT=0.358 : TOF=26.6 : x=(-0.144,1.02,-7.9)
E1 : pi+ : pT=0.124 : TOF=26.7 : x=(-0.631,-0.99,-7.9)
E1 : pi+ : pT=0.617 : TOF=27.1 : x=(-1.22,-1.25,-7.9)
B6 : mu+ : pT=26.8 : TOF=16.9 : x=(-0.234,-4.25,-2.74)
E0 : mu- : pT=18.6 : TOF=27.8 : x=(2.62,-0.617,7.9)
E1 : mu- : pT=8.64 : TOF=26.9 : x=(-1.44,0.692,-7.9)
B4 : mu+ : pT=51 : TOF=17.3 : x=(-4.25,0.677,2.92)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=30)
E1 : e+ : pT=0.00741 : TOF=26.6 : x=(0.82,-0.592,-7.9)
E0 : pi- : pT=0.536 : TOF=26.7 : x=(0.746,-0.967,7.9)
E1 : pi- : pT=1.23 : TOF=26.6 : x=(-1.05,0.00119,-7.9)
E1 : mu+ : pT=0.164 : TOF=27 : x=(0.496,0.868,-8)
E0 : pi- : pT=3.4 : TOF=26.6 : x=(0.697,-0.808,7.9)
E0 : pi- : pT=0.584 : TOF=27 : x=(-0.797,-0.604,8.03)
E0 : kaon+ : pT=0.531 : TOF=26.8 : x=(0.13,1.05,7.9)
E0 : pi- : pT=0.294 : TOF=26.6 : x=(0.147,1.05,7.9)
E1 : pi- : pT=0.42 : TOF=26.6 : x=(-0.0944,1.05,-7.9)
E1 : pi+ : pT=0.307 : TOF=26.7 : x=(0.0136,-1.23,-7.9)
E1 : kaon+ : pT=2.03 : TOF=26.6 : x=(0.373,0.992,-7.9)
E0 : kaon- : pT=0.218 : TOF=27.9 : x=(-1.09,-0.0267,7.9)
E1 : kaon+ : pT=1.37 : TOF=26.8 : x=(1.38,-0.309,-7.9)
E0 : pi+ : pT=1.7 : TOF=26.7 : x=(-0.926,0.783,7.9)
E0 : mu+ : pT=0.48 : TOF=27.9 : x=(-1.06,2.53,7.9)
E1 : pi+ : pT=1.08 : TOF=26.9 : x=(-1.09,-0.742,-7.9)
E1 : pi+ : pT=0.299 : TOF=28.6 : x=(-0.256,-1.52,-7.9)
E1 : proton : pT=0.241 : TOF=27.6 : x=(-0.957,-0.798,-7.9)
E1 : mu+ : pT=0.101 : TOF=31.8 : x=(-0.485,-1.9,-7.9)
E1 : proton : pT=0.419 : TOF=27.1 : x=(-0.951,-0.863,-7.9)
E1 : pi+ : pT=0.334 : TOF=30.6 : x=(0.684,-1.27,-7.9)
E1 : pi- : pT=0.483 : TOF=31 : x=(-2.53,-1.06,-7.9)
E1 : proton : pT=0.338 : TOF=27 : x=(-0.912,-0.684,-7.9)
E1 : mu- : pT=0.274 : TOF=28 : x=(1.29,2.27,-7.9)
E1 : pi+ : pT=0.3 : TOF=27.1 : x=(-0.882,-0.471,-8.05)
B6 : mu- : pT=42 : TOF=14.9 : x=(-1.27,-4.25,0.409)
B6 : e- : pT=0.0158 : TOF=15 : x=(-1.3,-4.25,0.547)
E1 : mu+ : pT=24 : TOF=27.9 : x=(-2.65,0.758,-7.9)
B7 : mu+ : pT=42.8 : TOF=17.2 : x=(2.11,-3.9,-2.61)
B2 : mu- : pT=52.5 : TOF=22 : x=(1.45,4.25,-4.83)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=23)
E0 : e- : pT=0.0121 : TOF=26.6 : x=(1.18,0.138,7.9)
E1 : pi- : pT=3.55 : TOF=26.7 : x=(0.739,-1.02,-7.9)
E1 : proton : pT=0.26 : TOF=41.2 : x=(-1.33,0.205,-7.9)
E1 : mu+ : pT=0.411 : TOF=26.6 : x=(-0.669,0.798,-7.9)
E1 : e- : pT=0.000313 : TOF=26.8 : x=(-0.732,0.801,-7.9)
B2 : pi+ : pT=0.376 : TOF=29.2 : x=(-0.469,4.25,-5.92)
E0 : e- : pT=0.000679 : TOF=29.9 : x=(0.544,0.839,7.96)
E1 : pi- : pT=0.293 : TOF=26.7 : x=(0.0569,-1.1,-7.9)
E1 : e- : pT=0.00276 : TOF=28 : x=(1.29,0.432,-7.9)
E1 : pi- : pT=0.83 : TOF=26.6 : x=(-0.0938,1.01,-7.9)
E1 : pi+ : pT=1.9 : TOF=26.6 : x=(0.495,0.974,-7.9)
E1 : pi- : pT=0.428 : TOF=26.7 : x=(0.687,1.04,-7.9)
E1 : pi- : pT=13 : TOF=26.7 : x=(0.375,1.15,-7.9)
E1 : pi- : pT=2.59 : TOF=26.6 : x=(0.23,1.1,-7.9)
E1 : pi- : pT=1.06 : TOF=26.6 : x=(0.00362,1.1,-7.9)
E1 : pi+ : pT=0.695 : TOF=26.6 : x=(0.699,0.891,-7.9)
E1 : pi- : pT=0.551 : TOF=26.6 : x=(0.681,-0.888,-7.9)
E1 : pi- : pT=0.309 : TOF=26.7 : x=(-0.981,0.195,-7.94)
E1 : e- : pT=0.000682 : TOF=28.9 : x=(0.702,-0.743,-7.9)
E1 : e- : pT=0.000116 : TOF=30 : x=(0.794,-0.923,-8.1)
B6 : mu- : pT=42.2 : TOF=25.1 : x=(1.51,-4.25,-6.04)
E1 : mu+ : pT=29.4 : TOF=26.9 : x=(1.59,0.0322,-7.9)
E1 : mu- : pT=69.8 : TOF=26.6 : x=(-1.14,-0.105,-7.9)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=11)
E0 : mu- : pT=0.173 : TOF=26.7 : x=(-0.798,0.707,7.9)
E1 : pi- : pT=0.065 : TOF=33.6 : x=(0.197,0.98,-7.96)
E1 : mu+ : pT=0.0974 : TOF=27 : x=(-0.666,-0.958,-7.9)
E0 : anti_proton : pT=0.653 : TOF=27.1 : x=(0.922,-0.59,7.9)
E1 : mu+ : pT=0.0996 : TOF=27.6 : x=(1.18,-1.18,-7.9)
E1 : pi- : pT=0.797 : TOF=26.6 : x=(-0.265,-1.06,-7.9)
E1 : kaon+ : pT=0.467 : TOF=26.8 : x=(0.614,-0.801,-7.9)
B5 : mu- : pT=17 : TOF=22.1 : x=(-2.87,-3.14,-5.09)
B4 : mu+ : pT=74.1 : TOF=20.4 : x=(-4.25,1.13,4.25)
E0 : mu- : pT=23.6 : TOF=27.5 : x=(-1.05,2.14,7.9)
B5 : mu+ : pT=64.9 : TOF=16 : x=(-2.56,-3.45,2.1)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=10)
E0 : pi- : pT=0.1 : TOF=27.1 : x=(0.94,0.65,7.9)
E0 : pi- : pT=0.106 : TOF=27.2 : x=(1.09,0.622,7.9)
E0 : pi+ : pT=0.174 : TOF=27.2 : x=(1.16,0.556,7.9)
E1 : mu- : pT=0.108 : TOF=26.9 : x=(-0.236,1.11,-7.9)
E1 : pi- : pT=0.124 : TOF=26.7 : x=(-1.17,-0.277,-7.9)
E0 : pi+ : pT=0.377 : TOF=26.7 : x=(0.701,0.914,7.9)
B5 : mu+ : pT=16.3 : TOF=15 : x=(-4.07,-1.94,0.178)
B1 : mu- : pT=98.2 : TOF=14.3 : x=(3.37,2.64,0.179)
B1 : mu+ : pT=62.2 : TOF=17.9 : x=(3.08,2.93,3.26)
B4 : mu- : pT=29.7 : TOF=19.3 : x=(-4.25,-0.461,3.89)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=15)
E1 : mu- : pT=0.15 : TOF=26.8 : x=(-0.784,0.955,-7.9)
E1 : pi+ : pT=0.115 : TOF=27.2 : x=(1.06,-0.669,-7.9)
E1 : e+ : pT=0.145 : TOF=26.6 : x=(0.402,0.918,-7.9)
E1 : e- : pT=0.0496 : TOF=26.6 : x=(0.41,0.92,-7.9)
E1 : pi- : pT=0.644 : TOF=26.6 : x=(-0.561,0.839,-7.9)
E0 : pi+ : pT=0.633 : TOF=26.7 : x=(-0.722,-0.932,7.9)
E0 : e- : pT=0.00119 : TOF=27.8 : x=(0.335,-1.06,7.9)
E0 : pi+ : pT=0.692 : TOF=26.6 : x=(-0.168,-0.998,7.9)
E1 : pi- : pT=0.913 : TOF=26.6 : x=(1.02,0.463,-7.9)
E1 : kaon- : pT=0.814 : TOF=26.7 : x=(0.159,-1.16,-7.9)
E1 : e- : pT=0.000238 : TOF=27.1 : x=(-0.748,0.677,-7.9)
E0 : mu+ : pT=4.26 : TOF=27.6 : x=(-2.23,-0.935,7.9)
E1 : mu- : pT=24.6 : TOF=27 : x=(0.371,1.72,-7.9)
E1 : mu+ : pT=21.5 : TOF=28.7 : x=(3.33,-0.623,-7.9)
B5 : mu- : pT=22.7 : TOF=23.5 : x=(-3.65,-2.36,5.53)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=7)
E1 : pi- : pT=0.189 : TOF=26.8 : x=(1.06,0.813,-7.9)
E0 : pi+ : pT=0.0723 : TOF=28 : x=(-1.19,-0.228,7.9)
E1 : e- : pT=0.00102 : TOF=28.9 : x=(0.772,-0.651,-7.9)
B1 : mu- : pT=19.6 : TOF=21.6 : x=(1.89,4.12,4.62)
E1 : mu+ : pT=11.3 : TOF=26.7 : x=(-1.15,-0.41,-7.9)
B6 : mu+ : pT=15.1 : TOF=18.8 : x=(-0.0189,-4.25,3.69)
E1 : mu- : pT=39.4 : TOF=27.7 : x=(-0.917,-2.4,-7.9)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=9)
E1 : pi- : pT=0.881 : TOF=26.6 : x=(0.986,-0.539,-7.9)
E0 : mu+ : pT=0.0765 : TOF=27 : x=(0.376,-0.961,7.9)
E1 : pi+ : pT=0.353 : TOF=26.7 : x=(0.441,-1.1,-7.9)
E1 : e- : pT=0.00138 : TOF=28.5 : x=(1.43,0.967,-7.9)
E0 : mu- : pT=0.172 : TOF=34.3 : x=(1.47,-0.372,7.9)
B1 : mu+ : pT=29.4 : TOF=15.6 : x=(4.05,1.96,-1.33)
B4 : mu- : pT=67.6 : TOF=14.7 : x=(-4.25,0.69,-1)
B1 : mu- : pT=43.1 : TOF=14.3 : x=(3.15,2.86,0.524)
B4 : mu+ : pT=34.2 : TOF=20.1 : x=(-4.25,-0.722,4.21)
Print out hit information
------------------------------------------
*** Muon System Hit (#hits=16)
E0 : pi- : pT=0.152 : TOF=26.8 : x=(0.186,-1.01,7.9)
E0 : pi- : pT=0.482 : TOF=26.7 : x=(0.123,-1.15,7.9)
E1 : pi- : pT=0.316 : TOF=26.7 : x=(1.19,-0.193,-7.9)
E0 : e- : pT=0.000452 : TOF=30 : x=(0.825,-0.624,7.9)
E0 : pi+ : pT=0.272 : TOF=26.6 : x=(0.689,-0.774,7.9)
E0 : pi- : pT=1.08 : TOF=26.6 : x=(0.412,-0.944,7.9)
E0 : pi+ : pT=1.21 : TOF=26.6 : x=(0.749,-0.67,7.9)
E0 : mu+ : pT=0.466 : TOF=27.7 : x=(0.945,-2.1,7.9)
E0 : proton : pT=0.535 : TOF=27.5 : x=(0.93,-0.697,7.9)
E0 : pi- : pT=2 : TOF=26.7 : x=(0.667,0.992,7.9)
E1 : mu- : pT=3.3 : TOF=28 : x=(-0.0478,2.8,-7.9)
E0 : pi+ : pT=0.586 : TOF=26.7 : x=(-1.12,-0.471,7.9)
E0 : pi+ : pT=0.67 : TOF=26.6 : x=(0.106,1.03,7.9)
E0 : mu- : pT=29.9 : TOF=27.5 : x=(-2.25,-0.52,7.9)
B7 : mu- : pT=55.4 : TOF=15.6 : x=(1.92,-4.09,1.27)
E0 : mu+ : pT=18.1 : TOF=27.2 : x=(1.26,1.59,7.9)
1********* PYSTAT: Statistics on Number of Events and Cross-sections *********
==============================================================================
I I I I
I Subprocess I Number of points I Sigma I
I I I I
I----------------------------------I----------------------------I (mb) I
I I I I
I N:o Type I Generated Tried I I
I I I I
==============================================================================
I I I I
I 0 All included subprocesses I 10 43 I 3.988E-12 I
I 102 g + g -> h0 I 7 13 I 2.929E-12 I
I 123 f + f' -> f + f' + h0 I 1 9 I 3.282E-13 I
I 124 f + f' -> f" + f"' + h0 I 2 21 I 7.305E-13 I
I I I I
==============================================================================
********* Fraction of events that fail fragmentation cuts = 0.00000 *********
Graphics systems deleted.
Visualization Manager deleting...
@@ -0,0 +1,44 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// H02DetectorConstruction.hh
// $Id: H02DetectorConstruction.hh,v 1.1 2002/05/28 14:10:50 murakami Exp $
//
// ====================================================================
#ifndef H02_DETECTOR_CONSTRUCTION_H
#define H02_DETECTOR_CONSTRUCTION_H
#include "G4Types.hh"
#include "G4VUserDetectorConstruction.hh"
class H02DetectorConstruction : public G4VUserDetectorConstruction {
public:
H02DetectorConstruction();
~H02DetectorConstruction();
virtual G4VPhysicalVolume* Construct();
};
#endif
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: H02EMPhysics.hh,v 1.1 2002/05/28 14:10:50 murakami Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef H02EMPhysics_h
#define H02EMPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
class H02EMPhysics : public G4VPhysicsConstructor
{
public:
H02EMPhysics(const G4String& name ="EM");
virtual ~H02EMPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Gamma physics
G4PhotoElectricEffect thePhotoEffect;
G4ComptonScattering theComptonEffect;
G4GammaConversion thePairProduction;
// Electron physics
G4MultipleScattering theElectronMultipleScattering;
G4eIonisation theElectronIonisation;
G4eBremsstrahlung theElectronBremsStrahlung;
//Positron physics
G4MultipleScattering thePositronMultipleScattering;
G4eIonisation thePositronIonisation;
G4eBremsstrahlung thePositronBremsStrahlung;
G4eplusAnnihilation theAnnihilation;
};
#endif
@@ -0,0 +1,43 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// H02EventAction.hh
// $Id: H02EventAction.hh,v 1.1 2002/05/28 14:10:51 murakami Exp $
//
// ====================================================================
#ifndef H02_EVENT_ACTION_H
#define H02_EVENT_ACTION_H
#include "G4UserEventAction.hh"
class H02EventAction : public G4UserEventAction {
public:
H02EventAction();
~H02EventAction();
virtual void BeginOfEventAction(const G4Event* anEvent);
virtual void EndOfEventAction(const G4Event* anEvent);
};
#endif
@@ -0,0 +1,45 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// H02Field.hh
// $Id: H02Field.hh,v 1.1 2002/05/28 14:10:51 murakami Exp $
//
// ====================================================================
#ifndef H02_FIELD_H
#define H02_FIELD_H
#include "globals.hh"
#include "G4MagneticField.hh"
class H02Field : public G4MagneticField {
public:
H02Field() { }
~H02Field() { }
void GetFieldValue(const G4double Point[3], G4double* Bfield ) const;
};
#endif
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: H02GeneralPhysics.hh,v 1.1 2002/05/28 14:10:51 murakami Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef H02GeneralPhysics_h
#define H02GeneralPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4Decay.hh"
class H02GeneralPhysics : public G4VPhysicsConstructor
{
public:
H02GeneralPhysics(const G4String& name = "general");
virtual ~H02GeneralPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
G4Decay fDecayProcess;
};
#endif
@@ -0,0 +1,331 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: H02HadronPhysics.hh,v 1.1 2002/05/28 14:10:51 murakami Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef H02HadronPhysics_h
#define H02HadronPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "g4std/vector"
#include "G4VPhysicsConstructor.hh"
#include "G4MultipleScattering.hh"
#include "G4hIonisation.hh"
#include "G4HadronElasticProcess.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "G4PionPlusInelasticProcess.hh"
#include "G4PionMinusInelasticProcess.hh"
#include "G4KaonPlusInelasticProcess.hh"
#include "G4KaonZeroSInelasticProcess.hh"
#include "G4KaonZeroLInelasticProcess.hh"
#include "G4KaonMinusInelasticProcess.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4AntiProtonInelasticProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4AntiNeutronInelasticProcess.hh"
#include "G4LambdaInelasticProcess.hh"
#include "G4AntiLambdaInelasticProcess.hh"
#include "G4SigmaPlusInelasticProcess.hh"
#include "G4SigmaMinusInelasticProcess.hh"
#include "G4AntiSigmaPlusInelasticProcess.hh"
#include "G4AntiSigmaMinusInelasticProcess.hh"
#include "G4XiZeroInelasticProcess.hh"
#include "G4XiMinusInelasticProcess.hh"
#include "G4AntiXiZeroInelasticProcess.hh"
#include "G4AntiXiMinusInelasticProcess.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4OmegaMinusInelasticProcess.hh"
#include "G4AntiOmegaMinusInelasticProcess.hh"
// Low-energy Models
#include "G4LElastic.hh"
#include "G4LFission.hh"
#include "G4LCapture.hh"
#include "G4LEPionPlusInelastic.hh"
#include "G4LEPionMinusInelastic.hh"
#include "G4LEKaonPlusInelastic.hh"
#include "G4LEKaonZeroSInelastic.hh"
#include "G4LEKaonZeroLInelastic.hh"
#include "G4LEKaonMinusInelastic.hh"
#include "G4LEProtonInelastic.hh"
#include "G4LEAntiProtonInelastic.hh"
#include "G4LENeutronInelastic.hh"
#include "G4LEAntiNeutronInelastic.hh"
#include "G4LELambdaInelastic.hh"
#include "G4LEAntiLambdaInelastic.hh"
#include "G4LESigmaPlusInelastic.hh"
#include "G4LESigmaMinusInelastic.hh"
#include "G4LEAntiSigmaPlusInelastic.hh"
#include "G4LEAntiSigmaMinusInelastic.hh"
#include "G4LEXiZeroInelastic.hh"
#include "G4LEXiMinusInelastic.hh"
#include "G4LEAntiXiZeroInelastic.hh"
#include "G4LEAntiXiMinusInelastic.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4LETritonInelastic.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4LEOmegaMinusInelastic.hh"
#include "G4LEAntiOmegaMinusInelastic.hh"
// High-energy Models
#include "G4HEPionPlusInelastic.hh"
#include "G4HEPionMinusInelastic.hh"
#include "G4HEKaonPlusInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonZeroInelastic.hh"
#include "G4HEKaonMinusInelastic.hh"
#include "G4HEProtonInelastic.hh"
#include "G4HEAntiProtonInelastic.hh"
#include "G4HENeutronInelastic.hh"
#include "G4HEAntiNeutronInelastic.hh"
#include "G4HELambdaInelastic.hh"
#include "G4HEAntiLambdaInelastic.hh"
#include "G4HESigmaPlusInelastic.hh"
#include "G4HESigmaMinusInelastic.hh"
#include "G4HEAntiSigmaPlusInelastic.hh"
#include "G4HEAntiSigmaMinusInelastic.hh"
#include "G4HEXiZeroInelastic.hh"
#include "G4HEXiMinusInelastic.hh"
#include "G4HEAntiXiZeroInelastic.hh"
#include "G4HEAntiXiMinusInelastic.hh"
#include "G4HEOmegaMinusInelastic.hh"
#include "G4HEAntiOmegaMinusInelastic.hh"
// Stopping processes
#include "G4AntiProtonAnnihilationAtRest.hh"
#include "G4AntiNeutronAnnihilationAtRest.hh"
#ifdef TRIUMF_STOP_PIMINUS
#include "G4PionMinusAbsorptionAtRest.hh"
#else
#include "G4PiMinusAbsorptionAtRest.hh"
#endif
#ifdef TRIUMF_STOP_KMINUS
#include "G4KaonMinusAbsorption.hh"
#else
#include "G4KaonMinusAbsorptionAtRest.hh"
#endif
class H02HadronPhysics : public G4VPhysicsConstructor
{
public:
H02HadronPhysics(const G4String& name ="hadron");
virtual ~H02HadronPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Elastic Process
G4HadronElasticProcess theElasticProcess;
G4LElastic* theElasticModel;
// Pi +
G4PionPlusInelasticProcess thePionPlusInelastic;
G4LEPionPlusInelastic* theLEPionPlusModel;
G4HEPionPlusInelastic* theHEPionPlusModel;
G4MultipleScattering thePionPlusMult;
G4hIonisation thePionPlusIonisation;
// Pi -
G4PionMinusInelasticProcess thePionMinusInelastic;
G4LEPionMinusInelastic* theLEPionMinusModel;
G4HEPionMinusInelastic* theHEPionMinusModel;
G4MultipleScattering thePionMinusMult;
G4hIonisation thePionMinusIonisation;
#ifdef TRIUMF_STOP_PIMINUS
G4PionMinusAbsorptionAtRest thePionMinusAbsorption;
#else
G4PiMinusAbsorptionAtRest thePionMinusAbsorption;
#endif
// K +
G4KaonPlusInelasticProcess theKaonPlusInelastic;
G4LEKaonPlusInelastic* theLEKaonPlusModel;
G4HEKaonPlusInelastic* theHEKaonPlusModel;
G4MultipleScattering theKaonPlusMult;
G4hIonisation theKaonPlusIonisation;
// K -
G4KaonMinusInelasticProcess theKaonMinusInelastic;
G4LEKaonMinusInelastic* theLEKaonMinusModel;
G4HEKaonMinusInelastic* theHEKaonMinusModel;
G4MultipleScattering theKaonMinusMult;
G4hIonisation theKaonMinusIonisation;
#ifdef TRIUMF_STOP_KMINUS
G4KaonMinusAbsorption theKaonMinusAbsorption;
#else
G4PiMinusAbsorptionAtRest theKaonMinusAbsorption;
#endif
// K0L
G4KaonZeroLInelasticProcess theKaonZeroLInelastic;
G4LEKaonZeroLInelastic* theLEKaonZeroLModel;
G4HEKaonZeroInelastic* theHEKaonZeroLModel;
// K0S
G4KaonZeroSInelasticProcess theKaonZeroSInelastic;
G4LEKaonZeroSInelastic* theLEKaonZeroSModel;
G4HEKaonZeroInelastic* theHEKaonZeroSModel;
// Proton
G4ProtonInelasticProcess theProtonInelastic;
G4LEProtonInelastic* theLEProtonModel;
G4HEProtonInelastic* theHEProtonModel;
G4MultipleScattering theProtonMult;
G4hIonisation theProtonIonisation;
// anti-proton
G4AntiProtonInelasticProcess theAntiProtonInelastic;
G4LEAntiProtonInelastic* theLEAntiProtonModel;
G4HEAntiProtonInelastic* theHEAntiProtonModel;
G4MultipleScattering theAntiProtonMult;
G4hIonisation theAntiProtonIonisation;
G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation;
// neutron
G4NeutronInelasticProcess theNeutronInelastic;
G4LENeutronInelastic* theLENeutronModel;
G4HENeutronInelastic* theHENeutronModel;
G4HadronFissionProcess theNeutronFission;
G4LFission* theNeutronFissionModel;
G4HadronCaptureProcess theNeutronCapture;
G4LCapture* theNeutronCaptureModel;
// anti-neutron
G4AntiNeutronInelasticProcess theAntiNeutronInelastic;
G4LEAntiNeutronInelastic* theLEAntiNeutronModel;
G4HEAntiNeutronInelastic* theHEAntiNeutronModel;
G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation;
// Lambda
G4LambdaInelasticProcess theLambdaInelastic;
G4LELambdaInelastic* theLELambdaModel;
G4HELambdaInelastic* theHELambdaModel;
// AntiLambda
G4AntiLambdaInelasticProcess theAntiLambdaInelastic;
G4LEAntiLambdaInelastic* theLEAntiLambdaModel;
G4HEAntiLambdaInelastic* theHEAntiLambdaModel;
// SigmaMinus
G4SigmaMinusInelasticProcess theSigmaMinusInelastic;
G4LESigmaMinusInelastic* theLESigmaMinusModel;
G4HESigmaMinusInelastic* theHESigmaMinusModel;
G4MultipleScattering theSigmaMinusMult;
G4hIonisation theSigmaMinusIonisation;
// AntiSigmaMinus
G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic;
G4LEAntiSigmaMinusInelastic* theLEAntiSigmaMinusModel;
G4HEAntiSigmaMinusInelastic* theHEAntiSigmaMinusModel;
G4MultipleScattering theAntiSigmaMinusMult;
G4hIonisation theAntiSigmaMinusIonisation;
// SigmaPlus
G4SigmaPlusInelasticProcess theSigmaPlusInelastic;
G4LESigmaPlusInelastic* theLESigmaPlusModel;
G4HESigmaPlusInelastic* theHESigmaPlusModel;
G4MultipleScattering theSigmaPlusMult;
G4hIonisation theSigmaPlusIonisation;
// AntiSigmaPlus
G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic;
G4LEAntiSigmaPlusInelastic* theLEAntiSigmaPlusModel;
G4HEAntiSigmaPlusInelastic* theHEAntiSigmaPlusModel;
G4MultipleScattering theAntiSigmaPlusMult;
G4hIonisation theAntiSigmaPlusIonisation;
// XiZero
G4XiZeroInelasticProcess theXiZeroInelastic;
G4LEXiZeroInelastic* theLEXiZeroModel;
G4HEXiZeroInelastic* theHEXiZeroModel;
// AntiXiZero
G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic;
G4LEAntiXiZeroInelastic* theLEAntiXiZeroModel;
G4HEAntiXiZeroInelastic* theHEAntiXiZeroModel;
// XiMinus
G4XiMinusInelasticProcess theXiMinusInelastic;
G4LEXiMinusInelastic* theLEXiMinusModel;
G4HEXiMinusInelastic* theHEXiMinusModel;
G4MultipleScattering theXiMinusMult;
G4hIonisation theXiMinusIonisation;
// AntiXiMinus
G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic;
G4LEAntiXiMinusInelastic* theLEAntiXiMinusModel;
G4HEAntiXiMinusInelastic* theHEAntiXiMinusModel;
G4MultipleScattering theAntiXiMinusMult;
G4hIonisation theAntiXiMinusIonisation;
// OmegaMinus
G4OmegaMinusInelasticProcess theOmegaMinusInelastic;
G4LEOmegaMinusInelastic* theLEOmegaMinusModel;
G4HEOmegaMinusInelastic* theHEOmegaMinusModel;
G4MultipleScattering theOmegaMinusMult;
G4hIonisation theOmegaMinusIonisation;
// AntiOmegaMinus
G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic;
G4LEAntiOmegaMinusInelastic* theLEAntiOmegaMinusModel;
G4HEAntiOmegaMinusInelastic* theHEAntiOmegaMinusModel;
G4MultipleScattering theAntiOmegaMinusMult;
G4hIonisation theAntiOmegaMinusIonisation;
};
#endif
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: H02IonPhysics.hh,v 1.1 2002/05/28 14:10:51 murakami Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef H02IonPhysics_h
#define H02IonPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4HadronElasticProcess.hh"
#include "G4LElastic.hh"
#include "G4DeuteronInelasticProcess.hh"
#include "G4LEDeuteronInelastic.hh"
#include "G4TritonInelasticProcess.hh"
#include "G4LETritonInelastic.hh"
#include "G4AlphaInelasticProcess.hh"
#include "G4LEAlphaInelastic.hh"
#include "G4hIonisation.hh"
#include "G4MultipleScattering.hh"
class H02IonPhysics : public G4VPhysicsConstructor
{
public:
H02IonPhysics(const G4String& name="ion");
virtual ~H02IonPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Elastic Process
G4HadronElasticProcess theElasticProcess;
G4LElastic* theElasticModel;
// Generic Ion physics
G4MultipleScattering fIonMultipleScattering;
G4hIonisation fIonIonisation;
// Deuteron physics
G4MultipleScattering fDeuteronMultipleScattering;
G4hIonisation fDeuteronIonisation;
G4DeuteronInelasticProcess fDeuteronProcess;
G4LEDeuteronInelastic* fDeuteronModel;
// Triton physics
G4MultipleScattering fTritonMultipleScattering;
G4hIonisation fTritonIonisation;
G4TritonInelasticProcess fTritonProcess;
G4LETritonInelastic* fTritonModel;
// Alpha physics
G4MultipleScattering fAlphaMultipleScattering;
G4hIonisation fAlphaIonisation;
G4AlphaInelasticProcess fAlphaProcess;
G4LEAlphaInelastic* fAlphaModel;
// He3 physics
G4MultipleScattering fHe3MultipleScattering;
G4hIonisation fHe3Ionisation;
};
#endif
@@ -0,0 +1,114 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// H02MuonHit.hh
// $Id: H02MuonHit.hh,v 1.1 2002/05/28 14:10:52 murakami Exp $
//
// ====================================================================
#ifndef H02_MUON_HIT_H
#define H02_MUON_HIT_H
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
class H02MuonHit : public G4VHit {
private:
G4int moduleID;
G4String pname;
G4ThreeVector momentum;
G4ThreeVector position;
G4double tof;
public:
H02MuonHit();
H02MuonHit(G4int imod, G4String aname, const G4ThreeVector& pxyz,
const G4ThreeVector& xyz, G4double atof);
~H02MuonHit();
H02MuonHit(const H02MuonHit& right);
const H02MuonHit& operator=(const H02MuonHit& right);
int operator==(const H02MuonHit& right) const;
void* operator new(size_t);
void operator delete(void* aHit);
// set/get functions...
void SetModuleID(G4int i);
G4int GetModuleID() const;
void SetParticle(G4String aname);
G4String GetParticle() const;
void SetMomentum(const G4ThreeVector& pxyz);
G4ThreeVector GetMomentum() const;
void SetPosition(const G4ThreeVector& xyz);
G4ThreeVector GetPosition() const;
void SetTOF(G4double atof);
G4double GetTOF() const;
// methods...
virtual void Draw();
virtual void Print();
};
// ====================================================================
// inline functions
// ====================================================================
inline void H02MuonHit::SetModuleID(G4int i) { moduleID=i; }
inline G4int H02MuonHit::GetModuleID() const { return moduleID; }
inline void H02MuonHit::SetParticle(G4String aname) { pname=aname; }
inline G4String H02MuonHit::GetParticle() const { return pname; }
inline void H02MuonHit::SetMomentum(const G4ThreeVector& pxyz)
{ momentum=pxyz; }
inline G4ThreeVector H02MuonHit::GetMomentum() const { return momentum; }
inline void H02MuonHit::SetPosition(const G4ThreeVector& xyz) { position=xyz; }
inline G4ThreeVector H02MuonHit::GetPosition() const { return position; }
inline void H02MuonHit::SetTOF(G4double atof) { tof=atof; }
inline G4double H02MuonHit::GetTOF() const { return tof; }
typedef G4THitsCollection<H02MuonHit> H02MuonHitsCollection;
extern G4Allocator<H02MuonHit> H02MuonHitAllocator;
inline void* H02MuonHit::operator new(size_t)
{
void* aHit;
aHit= (void*)H02MuonHitAllocator.MallocSingle();
return aHit;
}
inline void H02MuonHit::operator delete(void* aHit)
{
H02MuonHitAllocator.FreeSingle((H02MuonHit*) aHit);
}
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: H02MuonPhysics.hh,v 1.1 2002/05/28 14:10:52 murakami Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
//
// -------------------------------------------
// History
// first version 12 Nov. 2000 by H.Kurashige
// ------------------------------------------------------------
#ifndef H02MuonPhysics_h
#define H02MuonPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4MultipleScattering.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4MuIonisation.hh"
#include "G4hIonisation.hh"
#include "G4MuonMinusCaptureAtRest.hh"
class H02MuonPhysics : public G4VPhysicsConstructor
{
public:
H02MuonPhysics(const G4String& name="muon");
virtual ~H02MuonPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
protected:
// Muon physics
G4MultipleScattering fMuPlusMultipleScattering;
G4MuBremsstrahlung fMuPlusBremsstrahlung ;
G4MuPairProduction fMuPlusPairProduction;
G4MuIonisation fMuPlusIonisation;
G4MultipleScattering fMuMinusMultipleScattering;
G4MuBremsstrahlung fMuMinusBremsstrahlung ;
G4MuPairProduction fMuMinusPairProduction;
G4MuIonisation fMuMinusIonisation;
G4MuonMinusCaptureAtRest fMuMinusCaptureAtRest;
// Tau physics
G4MultipleScattering fTauPlusMultipleScattering;
G4hIonisation fTauPlusIonisation;
G4MultipleScattering fTauMinusMultipleScattering;
G4hIonisation fTauMinusIonisation;
};
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
// ====================================================================
//
// H02MuonSD.hh
// $Id: H02MuonSD.hh,v 1.1 2002/05/28 14:10:52 murakami Exp $
//
// ====================================================================
#ifndef H02_MUON_SD_H
#define H02_MUON_SD_H
#include "G4VSensitiveDetector.hh"
#include "H02MuonHit.hh"
class G4Step;
class G4HCofThisEvent;
class G4TouchableHistory;
class H02MuonSD : public G4VSensitiveDetector {
private:
H02MuonHitsCollection* hitCollection;
public:
H02MuonSD(G4String name);
~H02MuonSD();
virtual void Initialize(G4HCofThisEvent* HCE);
virtual G4bool ProcessHits(G4Step* astep, G4TouchableHistory* ROhist);
virtual void EndOfEvent(G4HCofThisEvent* HCE);
virtual void clear();
virtual void DrawAll();
virtual void PrintAll();
};
#endif

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