Import Geant4 4.1.0 source tree
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
+53
@@ -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
|
||||
|
||||
|
||||
+42
@@ -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
|
||||
|
||||
|
||||
|
||||
+94
@@ -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
|
||||
+60
@@ -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
|
||||
|
||||
+57
@@ -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
|
||||
|
||||
|
||||
+53
@@ -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
|
||||
+56
@@ -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()
|
||||
{;}
|
||||
|
||||
|
||||
+58
@@ -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.");
|
||||
}
|
||||
|
||||
+94
@@ -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("[40;01;36mhepmcEx02[40;33m(%s)[40;32m[%/][00;30m:");
|
||||
G4UIterminal* session= new G4UIterminal(tcsh);
|
||||
tcsh-> SetLsColor(RED, GREEN);
|
||||
#else
|
||||
G4UItcsh* tcsh= new G4UItcsh("hepmcEx01(%s)[%/]:");
|
||||
G4UIterminal* session= new G4UIterminal(tcsh);
|
||||
#endif
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
|
||||
} 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
Reference in New Issue
Block a user