111 lines
3.9 KiB
Plaintext
111 lines
3.9 KiB
Plaintext
Examples for HepMC-Geant4 interface
|
|
-----------------------------------
|
|
|
|
This directory contains examples for using HepMC as an interface with
|
|
various Monte Carlo event generators, such as PYTHIA.
|
|
|
|
In the version 1.80 of CLHEP, HepMC is merged into a part of CLHEP.
|
|
Toghether with this migration, the generic interfaces with HepMC is
|
|
provied in the G4 main tree from the release of Geant4.5.0.
|
|
But there are differences between the original HepMC and the CLHEP version
|
|
in terms of the I/O scheme. So, in this directory, a pair of codes for
|
|
each example, one for original HepMC and the other for the CLHEP version
|
|
which is tagged with "-clhep", is prepared.
|
|
|
|
|
|
Requirements for external software packages
|
|
-------------------------------------------
|
|
HepMC (now, migrated into CLHEP(1.80))
|
|
tested version : 1.21 (latest at 28/May/02)
|
|
URL: http://mdobbs.home.cern.ch/mdobbs/HepMC/
|
|
|
|
Note that the original HepMC can be currently compiled only with gcc,
|
|
so examples were tested only with gcc.
|
|
|
|
PYTHIA
|
|
tested version 6.205
|
|
URL: http://www.thep.lu.se/~torbjorn/Pythia.html
|
|
|
|
|
|
What is provided
|
|
----------------
|
|
a) For the original HepMC
|
|
|
|
class HepMCG4Interface
|
|
This class is derived from G4VPrimaryGenerator, and is a base class
|
|
for primary generation via HepMC object.
|
|
|
|
protected members
|
|
+ virtual HepMC::GenEvent* GenerateHepMCEvent()
|
|
Implement this method in his/her own concrete class.
|
|
An empty event will be created in default.
|
|
|
|
+ void HepMC2G4(const HepMC::GenEvent* hepmcevt, G4Event* g4event)
|
|
service method for conversion from HepMC::GenEvent to G4Event
|
|
|
|
+ virtual G4bool CheckVertexInsideWorld(const G4ThreeVector& pos) const
|
|
We have to take care for the position of primaries because
|
|
primary vertices outside the world volume give rise to G4Exception.
|
|
If the default implementation is not adequate, an alternative
|
|
can be implemented in your own class.
|
|
|
|
public members
|
|
+ virtual void GeneratePrimaryVertex(G4Event* anEvent)
|
|
The default behavior is that a single HepMC event generated by
|
|
GenerateHepMCEvent() will be converted to G4Event through HepMC2G4().
|
|
|
|
class HepMCG4AsciiReader / HepMCG4AsciiReaderMessenger
|
|
(derived from HepMCG4Interface)
|
|
This derived class is for reading primary information from
|
|
an Ascii file generated by HepMC.
|
|
|
|
class HepMCG4PythiaInterface / HepMCG4AsciiReaderMessenger
|
|
(derived from HepMCG4Interface)
|
|
This derived class is for directly calling PYTHIA functions.
|
|
Users can set parameters, initialize, generate, and terminate
|
|
by command line operation.
|
|
|
|
|
|
b) For the CLHEP version of HepMC
|
|
|
|
G4HepMCInterface, G4HepMCAsciiReader and G4HepMCAsciiReaderMessenger,
|
|
which have the same functionality as the above respective ones, are located
|
|
in the Geant4 "event/" source tree. As an example of interface with PYTHIA,
|
|
the classes of HxxPythiaInterface/HxxPythiaMessenger are provided in each
|
|
example.
|
|
|
|
Examples
|
|
--------
|
|
HepMCEx01/HepMCEx01-clhep
|
|
This example is based on ExampleN04. Only part of the primary generator
|
|
action is replaced with new one.
|
|
|
|
HepMCEx02/HepMCEx02-clhep
|
|
This is another example having the same generator action as HepMCEx01,
|
|
but much simpler user control.
|
|
|
|
|
|
Macros in examples
|
|
-----------------
|
|
hepmc_pygen.in
|
|
process PYTHIA events(H->4mu) generated at every event.
|
|
|
|
hepmc_ascii.in
|
|
read pregenerated events from HepMC Ascii file (data/example_MyPhyia.dat).
|
|
|
|
How to compile
|
|
--------------
|
|
To build these examples, directory names including HepMC and PYTHIA
|
|
library have to be given in GNUmakefile. Please modify the next two lines
|
|
in GNUmakefile;
|
|
|
|
HEPMC_DIR := xxxxx # HepMC installed directory
|
|
(required only for using the original version)
|
|
CERNLIB_DIR := xxxxx # directory including PYTHIA library
|
|
|
|
Notes
|
|
-----
|
|
We attached a sample HepMC Ascii data file, "data/example_MyPhyia.dat",
|
|
which contains ten PYTHIA events created by "data/example_MyPythia.cxx(cc)".
|
|
|