Import Geant4 4.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:39:52 +02:00
parent 921d3b1cda
commit 330b82b769
4524 changed files with 178689 additions and 43575 deletions
+52
View File
@@ -0,0 +1,52 @@
# $Id: GNUmakefile,v 1.3 2002/06/11 15:48:17 radoone Exp $
# --------------------------------------------------------------
# GNUmakefile for GDML sample module. Radovan Chytracek, 30/05/2002.
# --------------------------------------------------------------
name := gogdml
G4TARGET := $(name)
G4EXLIB := true
ifndef G4INSTALL
G4INSTALL = ../../../..
endif
GDMLINSTALL := $(G4INSTALL)/examples/extended/gdml
GDMLLIBROOT := $(GDMLINSTALL)/libgdml
CPPFLAGS += \
-I$(GDMLINSTALL)/libgdml/saxana/include \
-I$(GDMLINSTALL)/libgdml/schema/include \
-I$(GDMLINSTALL)/libgdml/management/include \
-I$(GDMLINSTALL)/libgdml/processes/include \
-I$(GDMLINSTALL)/libgdml/subscribers/include \
-I$(XERCESCROOT)/include
EXTRALIBS += \
-lGDMLsaxana \
-lGDMLmanagement \
-lGDMLschema \
-lGDMLprocesses \
-lGDMLsubscribers \
-L $(XERCESCROOT)/lib -lxerces-c
EXTRALIBSSOURCEDIRS += \
$(GDMLLIBROOT)/saxana \
$(GDMLLIBROOT)/schema \
$(GDMLLIBROOT)/processes \
$(GDMLLIBROOT)/management \
$(GDMLLIBROOT)/subscribers
# EXTRA_LINK_DEPENDENCIES := \
# $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(name)/libgogdml.a \
# $(G4WORKDIR)/lib/$(G4SYSTEM)/libGDMLmanagement.a \
# $(G4WORKDIR)/lib/$(G4SYSTEM)/libGDMLprocesses.a \
# $(G4WORKDIR)/lib/$(G4SYSTEM)/libGDMLsaxana.a \
# $(G4WORKDIR)/lib/$(G4SYSTEM)/libGDMLschema.a \
# $(G4WORKDIR)/lib/$(G4SYSTEM)/libGDMLsubscribers.a
.PHONY: all
all: lib bin
include $(G4INSTALL)/config/binmake.gmk
+70
View File
@@ -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. *
// ********************************************************************
//
//
// $Id: gogdml.cc,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// Comments
//
// --------------------------------------------------------------
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "gogdmlDetectorConstruction.hh"
#include "gogdmlPhysicsList.hh"
#include "gogdmlPrimaryGeneratorAction.hh"
int main()
{
// Construct the default run manager
G4RunManager* runManager = new G4RunManager;
// set mandatory initialization classes
runManager->SetUserInitialization(new gogdmlDetectorConstruction);
runManager->SetUserInitialization(new gogdmlPhysicsList);
// set mandatory user action class
runManager->SetUserAction(new gogdmlPrimaryGeneratorAction);
// Initialize G4 kernel
runManager->Initialize();
// get the pointer to the UI manager and set verbosities
G4UImanager* UI = G4UImanager::GetUIpointer();
UI->ApplyCommand("/run/verbose 2");
UI->ApplyCommand("/event/verbose 2");
UI->ApplyCommand("/tracking/verbose 2");
// start a run
int numberOfEvent = 3;
runManager->BeamOn(numberOfEvent);
// job termination
delete runManager;
return 0;
}
@@ -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. *
// ********************************************************************
//
//
// $Id: gogdmlDetectorConstruction.hh,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// Comments
//
// --------------------------------------------------------------
//
#ifndef gogdmlDetectorConstruction_H
#define gogdmlDetectorConstruction_H 1
class G4VPhysicalVolume;
#include "G4VUserDetectorConstruction.hh"
#include "SAXProcessor.hh"
#include "ProcessingConfigurator.hh"
class gogdmlDetectorConstruction : public G4VUserDetectorConstruction
{
public:
gogdmlDetectorConstruction();
~gogdmlDetectorConstruction();
public:
G4VPhysicalVolume* Construct();
private:
SAXProcessor sxp;
ProcessingConfigurator config;
G4VPhysicalVolume* fWorld;
};
#endif
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * 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: gogdmlPhysicsList.hh,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
//
// gogdmlPhysicsList
// Construct/define particles and physics processes
//
// Particle defined in ExampleN01
// geantino
//
// Process defined in ExampleN01
// transportation
// --------------------------------------------------------------
//
#ifndef gogdmlPhysicsList_h
#define gogdmlPhysicsList_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
class gogdmlPhysicsList: public G4VUserPhysicsList
{
public:
gogdmlPhysicsList();
~gogdmlPhysicsList();
protected:
// Construct particle and physics process
void ConstructParticle();
void ConstructProcess();
void SetCuts();
};
#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. *
// ********************************************************************
//
//
// $Id: gogdmlPrimaryGeneratorAction.hh,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// Comments
//
// --------------------------------------------------------------
#ifndef gogdmlPrimaryGeneratorAction_h
#define gogdmlPrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
class G4ParticleGun;
class G4Event;
class gogdmlPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
gogdmlPrimaryGeneratorAction();
~gogdmlPrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event* anEvent);
private:
G4ParticleGun* particleGun;
};
#endif
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * 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: gogdmlDetectorConstruction.cc,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// Comments
//
// --------------------------------------------------------------
#include "gogdmlDetectorConstruction.hh"
#include "GDMLProcessor.hh"
// Added here just to help resolve properly dependencies
#include "G4BooleanSolid.hh"
#include "G4CSGSolid.hh"
gogdmlDetectorConstruction::gogdmlDetectorConstruction()
{
sxp.Initialize();
config.SetURI( "test.gdml" );
config.SetSetupName( "Test1" );
sxp.Configure( &config );
}
gogdmlDetectorConstruction::~gogdmlDetectorConstruction()
{
sxp.Finalize();
}
G4VPhysicalVolume* gogdmlDetectorConstruction::Construct()
{
sxp.Run();
fWorld = (G4VPhysicalVolume *)GDMLProcessor::GetInstance()->GetWorldVolume();
if( fWorld == 0 ) {
G4Exception(
"World volume not set properly check your setup selection criteria or GDML input!"
);
}
return fWorld;
}
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * 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: gogdmlPhysicsList.cc,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// --------------------------------------------------------------
// Comments
//
// --------------------------------------------------------------
#include "gogdmlPhysicsList.hh"
#include "G4ParticleTypes.hh"
gogdmlPhysicsList::gogdmlPhysicsList()
{;}
gogdmlPhysicsList::~gogdmlPhysicsList()
{;}
void gogdmlPhysicsList::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
G4Geantino::GeantinoDefinition();
}
void gogdmlPhysicsList::ConstructProcess()
{
// Define transportation process
AddTransportation();
}
void gogdmlPhysicsList::SetCuts()
{
// uppress error messages even in case e/gamma/proton do not exist
G4int temp = GetVerboseLevel(); SetVerboseLevel(0);
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
SetCutsWithDefault();
// Retrieve verbose level
SetVerboseLevel(temp);
}
@@ -0,0 +1,71 @@
//
// ********************************************************************
// * 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: gogdmlPrimaryGeneratorAction.cc,v 1.2 2002/06/03 12:09:36 radoone Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
#include "gogdmlPrimaryGeneratorAction.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4UImanager.hh"
#include "globals.hh"
gogdmlPrimaryGeneratorAction::gogdmlPrimaryGeneratorAction()
{
G4int n_particle = 1;
particleGun = new G4ParticleGun(n_particle);
G4UImanager* UI = G4UImanager::GetUIpointer();
UI->ApplyCommand("/gun/particle geantino");
UI->ApplyCommand("/gun/energy 1.0 GeV");
UI->ApplyCommand("/gun/position -2.0 0.0 0.0 cm");
}
gogdmlPrimaryGeneratorAction::~gogdmlPrimaryGeneratorAction()
{
delete particleGun;
}
void gogdmlPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
G4UImanager* UI = G4UImanager::GetUIpointer();
G4int i = anEvent->GetEventID() % 3;
switch(i)
{
case 0:
UI->ApplyCommand("/gun/direction 1.0 0.0 0.0");
break;
case 1:
UI->ApplyCommand("/gun/direction 1.0 0.1 0.0");
break;
case 2:
UI->ApplyCommand("/gun/direction 1.0 0.0 0.1");
break;
}
particleGun->GeneratePrimaryVertex(anEvent);
}
+102
View File
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../schema/gdml_1.0.xsd">
<define>
<constant name="HALFPI" value="pi/2."/>
<constant name="PI" value="1.*pi"/>
<constant name="TWOPI" value="2.*pi"/>
<position name="center"/>
<rotation name="identity"/>
<position name="shiftbyx" x="20"/>
<rotation name="rotatebyx" x="HALFPI"/>
<rotation name="rotatebyall" x="HALFPI" y="PI" z="TWOPI"/>
</define>
<materials>
<define>
<quantity type="density" name="ro" unit="g/cm3" value="1234.00"/>
</define>
<isotope Z="92" N="235" name="U235"> <atom type="A" value="235.01"/> </isotope>
<isotope name="U238" Z="92.0" N="238"> <atom type="A" value="238.03"/> </isotope>
<element name="enriched_Uranium">
<fraction ref="U235" n="0.9"/>
<fraction ref="U238" n="0.1"/>
</element>
<element name="Hydrogen" formula="H" Z="1."> <atom value="1.01"/> </element>
<element name="Oxygen" formula="O" Z="8."> <atom value="16.0"/> </element>
<element name="Nitrogen" formula="N" Z="7."> <atom value="14.01"/> </element>
<element name="Lead" formula="Pb" Z="82."> <atom value="207.20"/> </element>
<material name="Al" Z="13.0"> <D value="2.70"/> <atom value="26.98"/> </material>
<material name="Water" formula="H20">
<D value="1.0"/>
<composite n="2" ref="Hydrogen"/>
<composite n="1" ref="Oxygen"/>
</material>
<material name="Air">
<D value="1.290" unit="mg/cm3"/>
<fraction n="0.7" ref="Nitrogen"/>
<fraction n="0.3" ref="Oxygen"/>
</material>
</materials>
<solids>
<define>
<quantity type="length" name="sizeoft500" unit="mm" value="500.0"/>
<position name="shiftbysizeoft500" x="500.0"/>
</define>
<box name="WorldBox" x="10000.0" y="10000.0" z="10000.0"/>
<box name="b100" x="100.0" y="100.0" z="100.0"/>
<box name="b500" x="500.0" y="500.0" z="500.0"/>
<cone name="c1" z="111.0" rmax1="22.0" rmax2="33.0" deltaphi="TWOPI"/>
<para name="p1" x="10.0" y="10.0" z="10.0" alpha="30.0" theta="30.0" phi="30.0"/>
<sphere name="s1" rmax="200.0" deltaphi="TWOPI" deltatheta="PI"/>
<trap name="trap1" z="100.0" theta="60.0" phi="60.0"
y1="10.0" x1="10.0" x2="10.0"
alpha1="30.0" y2="10.0" x3="10.0"
x4="10.0" alpha2="30.0"/>
<trd name="trd1" x1="10.0" x2="10.0" y1="10.0" y2="20.0" z="30.0"/>
<tube name="t1000" z="1000.0" rmax="100.0" deltaphi="TWOPI"/>
<tube name="t900" z="900.0" rmax="100.0" deltaphi="TWOPI"/>
<tube name="t100" z="100.0" rmax="10.0" deltaphi="TWOPI"/>
<union name="u1">
<first ref="b500"/> <second ref="b100"/>
<position name="unionidentitypos"/> <rotation name="unionidentityrot"/>
</union>
<union name="u2">
<first ref="b500"/> <second ref="t100"/>
<positionref ref="shiftbyx"/>
</union>
<subtraction name="sub1">
<first ref="b500"/> <second ref="b100"/>
<positionref ref="center"/> <rotationref ref="identity"/>
</subtraction>
<subtraction name="sub2">
<first ref="t900"/> <second ref="b100"/>
<positionref ref="center"/> <rotationref ref="identity"/>
</subtraction>
<intersection name="intersec1">
<first ref="b100"/> <second ref="b100"/>
<positionref ref="identity"/> <rotationref ref="rotatebyx"/>
</intersection>
</solids>
<structure>
<volume name="v1">
<materialref ref="Water"/>
<solidref ref="t1000"/>
</volume>
<volume name="v2">
<materialref ref="Water"/>
<solidref ref="sub2"/>
</volume>
<volume name="World">
<materialref ref="Air"/>
<solidref ref="WorldBox"/>
<child> <volumeref ref="v1"/>
<positionref ref="center"/>
<rotationref ref="identity"/>
</child>
</volume>
</structure>
<setup name="Test1" version="1.0">
<world ref="World"/>
</setup>
</gdml>