Import Geant4 4.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:39:52 +02:00
parent 921d3b1cda
commit 330b82b769
4524 changed files with 178689 additions and 43575 deletions
@@ -0,0 +1,143 @@
//
// ********************************************************************
// * 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: DMXAnalysisManager.hh
// GEANT4 tag $Name:
//
// Author: Alex Howard (a.s.howard@ic.ac.uk)
//
// History:
// -----------
// 16 Jan 2002 Alex Howard Created
//
// -------------------------------------------------------------------
#ifdef G4ANALYSIS_USE
#ifndef DMXAnalysisManager_h
#define DMXAnalysisManager_h 1
#include "globals.hh"
// Histogramming from AIDA
#include "AIDA/IAnalysisFactory.h"
#include "AIDA/ITreeFactory.h"
#include "AIDA/ITree.h"
#include "AIDA/IHistogramFactory.h"
#include "AIDA/IHistogram1D.h"
#include "AIDA/IHistogram2D.h"
#include "AIDA/IHistogram3D.h"
#include "AIDA/IPlotterFactory.h"
#include "AIDA/IPlotter.h"
#include "AIDA/ITupleFactory.h"
#include "AIDA/ITuple.h"
#include "AIDA/IManagedObject.h"
class IAnalysisFactory;
class ITree;
class IHistogramFactory;
class ITupleFactory;
class ITuple;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class DMXAnalysisManager
{
public:
virtual ~DMXAnalysisManager();
// void book();
void book(G4String);
void finish();
//fill histograms with SHC (Scint Hits) data from DMXEventAction
void analyseScintHits(G4int event_id, G4double energy_pri, G4double totEnergy, G4int S_hits, G4double firstLXeHitTime, G4int P_hits, G4double aveTimePmtHits, G4String firstparticleName, G4double firstParticleE, G4bool gamma_ev, G4bool neutron_ev, G4bool positron_ev, G4bool electron_ev, G4bool other_ev, long seed1, long seed2);
//fill histograms with PHC (Pmt Hits) data from DMXEventAction
void analysePMTHits(G4int, G4int, G4double, G4double, G4double);
//fill histograms with data from DMXParticleSource / secondary history
void analyseParticleSource(G4double, G4String);
//fill histograms with data from DMXPrimaryGenerator
void analysePrimaryGenerator(G4double);
//fill histograms with data from DMXPrimaryGenerator
void HistFirstTime(G4double);
//Method to interactively display histograms
void PlotHistos(G4bool);
//Method to interactively display histograms
void PlotHistosInit();
//Method to interactively display histograms
void PlotHistosInter();
//method to call to create an instance of this class
static DMXAnalysisManager* getInstance();
private:
//private constructor in order to create a singleton
DMXAnalysisManager();
static DMXAnalysisManager* instance;
// Quantities for the ntuple
G4int event_id; G4double energy_pri; G4double totEnergy; G4int S_hits; G4double firstLXeHitTime; G4int P_hits; G4double aveTimePmtHits; G4String firstparticleName; G4double firstParticleE; G4bool gamma_ev; G4bool neutron_ev; G4bool positron_ev;G4bool electron_ev;G4bool other_ev; long seed1; long seed2;
G4int i; G4double x; G4double y; G4double z;
G4double energy; G4double name;
G4double time;
G4bool interactive;
IAnalysisFactory *af;
ITree *tree;
IHistogramFactory *hf;
ITupleFactory *tpf;
IPlotterFactory *pf;
IPlotter *plotter;
};
#endif
#endif
@@ -42,8 +42,8 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4VPhysicalVolume;
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4Material;
class G4UserLimits;
@@ -51,6 +51,8 @@ class G4UserLimits;
class DMXScintSD;
class DMXPmtSD;
class DMXDetectorMessenger;
class DMXDetectorConstruction : public G4VUserDetectorConstruction
{
public:
@@ -62,46 +64,31 @@ public:
G4VPhysicalVolume* Construct();
// methods for UserLimits
void UseUserLimits(G4bool value);
G4bool IsUseUserLimits() { return fUseUserLimits; }
G4double GetMaxTime() const { return theMaxTimeCuts; }
G4double GetMaxStepSize() const { return theMaxStepSize; }
void SetRoomEnergyCut(G4double);
void SetEnergyCut(G4double);
void SetTimeCut(G4double);
void SetRoomTimeCut(G4double);
// void UpdateGeometry();
G4double GetRoomTime() const { return theRoomTimeCut; }
void SetMaxTime(G4double value);
void SetMaxStepSize(G4double value);
void SetRoomTime(G4double value);
private:
void DefineMaterials();
G4bool fUseUserLimits;
G4UserLimits* theUserLimits;
G4UserLimits* theUserLimitsForRoom;
G4UserLimits* theUserLimitsForDetector;
G4UserLimits* theUserLimitsForXenon;
G4double theMaxTimeCuts;
G4double theMaxStepSize;
G4double theDetectorStepSize;
G4double theMinEkine;
G4double theRoomMinEkine;
G4double theRoomTimeCut;
G4Material* world_mat; // materials used
G4Material* lab_mat;
G4Material* jacket_mat;
G4Material* vacuum_mat;
G4Material* vessel_mat;
G4Material* detector_mat;
G4Material* liqPhase_mat;
G4Material* CuShield_mat;
G4Material* alpha_mat;
G4Material* americium_mat;
G4Material* ring_mat;
G4Material* mirror_mat;
G4Material* grid_mat;
G4Material* pmt_mat;
G4Material* window_mat;
G4Material* phcath_mat;
#include "DMXDetectorMaterial.ihh" // materials used
G4double worldRadius; // sizes
G4double worldHeight;
@@ -111,32 +98,64 @@ private:
G4LogicalVolume* world_log; // pointers
G4VPhysicalVolume* world_phys;
#include "DMXDetectorRoom.ihh"
G4LogicalVolume* lab_log;
G4VPhysicalVolume* lab_phys;
G4LogicalVolume* LN2jacket_log;
G4VPhysicalVolume* LN2jacket_phys;
G4LogicalVolume* LN2vacuum_log;
G4VPhysicalVolume* LN2vacuum_phys;
G4LogicalVolume* LN2vessel_log;
G4VPhysicalVolume* LN2vessel_phys;
G4LogicalVolume* LN2_log;
G4VPhysicalVolume* LN2_phys;
G4LogicalVolume* jacket_log;
G4VPhysicalVolume* jacket_phys;
G4LogicalVolume* jacketflange_log;
G4VPhysicalVolume* topjacketflange_phys;
G4VPhysicalVolume* bottomjacketflange_phys;
G4LogicalVolume* vacuum_log;
G4VPhysicalVolume* vacuum_phys;
G4LogicalVolume* copper_log;
G4VPhysicalVolume* copper_phys;
G4LogicalVolume* coppertop_log;
G4VPhysicalVolume* coppertop_phys;
G4LogicalVolume* vessel_log;
G4VPhysicalVolume* vessel_phys;
G4LogicalVolume* detector_log;
G4VPhysicalVolume* detector_phys;
G4LogicalVolume* vesseltop_log1;
G4VPhysicalVolume* vesseltop_phys1;
G4LogicalVolume* vesseltop_log2;
G4VPhysicalVolume* vesseltop_phys2;
G4LogicalVolume* vesselbottom_log1;
G4VPhysicalVolume* vesselbottom_phys1;
G4LogicalVolume* vesselbottom_log2;
G4VPhysicalVolume* vesselbottom_phys2;
G4LogicalVolume* pmtvesselbottom_log1;
G4VPhysicalVolume* pmtvesselbottom_phys1;
G4LogicalVolume* pmtvesselbottom_log2;
G4VPhysicalVolume* pmtvesselbottom_phys2;
G4LogicalVolume* GXe_log;
G4VPhysicalVolume* GXe_phys;
G4LogicalVolume* gaslag_log;
G4VPhysicalVolume* gaslag_phys;
G4LogicalVolume* CuShield_log;
G4VPhysicalVolume* CuShield_phys;
G4LogicalVolume* liqPhase_log;
G4VPhysicalVolume* liqPhase_phys;
G4LogicalVolume* LXe_log;
G4VPhysicalVolume* LXe_phys;
G4LogicalVolume* liqLag_log;
G4VPhysicalVolume* liqLag_phys;
G4LogicalVolume* alpha_log;
G4VPhysicalVolume* alpha_phys;
/*
G4LogicalVolume* recess_log;
G4VPhysicalVolume* recess_phys;
*/
G4LogicalVolume* recess_log;
G4VPhysicalVolume* recess_phys;
G4LogicalVolume* americium_log;
G4VPhysicalVolume* americium_phys;
G4LogicalVolume* ring_log;
G4VPhysicalVolume* ring_phys_gas[1];
G4VPhysicalVolume* ring_phys_liq[5];
// G4VPhysicalVolume* ring_phys[8];
G4LogicalVolume* mirror_log;
G4VPhysicalVolume* mirror_phys;
G4LogicalVolume* grid1_log;
@@ -145,10 +164,6 @@ private:
G4VPhysicalVolume* grid2_phys;
G4LogicalVolume* pmt_log;
G4VPhysicalVolume* pmt_phys;
/*
G4LogicalVolume* window_log;
G4VPhysicalVolume* window_phys;
*/
G4LogicalVolume* phcath_log;
G4VPhysicalVolume* phcath_phys;
@@ -156,6 +171,9 @@ private:
DMXScintSD* LXeSD; //pointer to sensitive detectors
DMXPmtSD* pmtSD;
// pointer to the Detector Messenger:
DMXDetectorMessenger* detectorMessenger;
};
#endif
@@ -0,0 +1,26 @@
G4Material* world_mat; // materials used
G4Material* lab_mat;
G4Material* cupboard_mat;
G4Material* door_mat;
G4Material* desk_mat;
G4Material* crate_mat;
G4Material* glass_mat;
G4Material* panel_mat;
G4Material* LN2jacket_mat;
G4Material* LN2_mat;
G4Material* jacket_mat;
G4Material* jacketflange_mat;
G4Material* vacuum_mat;
G4Material* copper_mat;
G4Material* vessel_mat;
G4Material* GXe_mat;
G4Material* LXe_mat;
G4Material* CuShield_mat;
G4Material* alpha_mat;
G4Material* americium_mat;
G4Material* ring_mat;
G4Material* mirror_mat;
G4Material* grid_mat;
G4Material* pmt_mat;
G4Material* window_mat;
G4Material* phcath_mat;
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Underground Dark Matter Detector Advanced Example
//
// For information related to this code contact: Alex Howard
// e-mail: a.s.howard@ic.ac.uk
// --------------------------------------------------------------
// Comments
//
// Underground Advanced
// by A. Howard and H. Araujo
// (27th November 2001)
//
// SteppingActionMessenger header
// --------------------------------------------------------------
#ifndef DMXDetectorMessenger_h
#define DMXDetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class DMXDetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithoutParameter;
class DMXDetectorMessenger: public G4UImessenger {
public:
DMXDetectorMessenger(DMXDetectorConstruction*);
~DMXDetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
DMXDetectorConstruction* detectorConstruction;
G4UIcmdWithADoubleAndUnit* RoomEKineCutCmd;
G4UIcmdWithADoubleAndUnit* EKineCutCmd;
G4UIcmdWithADoubleAndUnit* RoomTimeCutCmd;
G4UIcmdWithADoubleAndUnit* TimeCutCmd;
// G4UIcmdWithoutParameter* UpdateCmd;
};
#endif
@@ -0,0 +1,34 @@
G4LogicalVolume* glass_log;
G4VPhysicalVolume* glass_phys;
G4LogicalVolume* window_log;
G4VPhysicalVolume* window_phys;
G4LogicalVolume* sidepanel_log;
G4VPhysicalVolume* sidepanel_phys;
G4LogicalVolume* panelhole_log;
G4VPhysicalVolume* panelhole_phys;
G4LogicalVolume* doorglass_log;
G4VPhysicalVolume* doorglass_phys;
G4LogicalVolume* doorwindow_log;
G4VPhysicalVolume* doorwindow_phys;
G4LogicalVolume* door_log;
G4VPhysicalVolume* door_phys;
G4LogicalVolume* doorhole_log;
G4VPhysicalVolume* doorhole_phys;
G4LogicalVolume* cupboard_log;
G4VPhysicalVolume* cupboard_phys;
G4LogicalVolume* cupboard2_log;
G4VPhysicalVolume* cupboard2_phys;
G4LogicalVolume* desk1_log;
G4VPhysicalVolume* desk1_phys;
G4LogicalVolume* desk2_log;
G4VPhysicalVolume* desk2_phys;
G4LogicalVolume* desk3_log;
G4VPhysicalVolume* desk3_phys;
G4LogicalVolume* desk4_log;
G4VPhysicalVolume* desk4_phys;
G4LogicalVolume* crate_log;
G4VPhysicalVolume* crate_phys;
G4LogicalVolume* trunk_log;
G4VPhysicalVolume* trunk_phys;
G4LogicalVolume* trunk_inside_log;
G4VPhysicalVolume* trunk_inside_phys;
@@ -46,14 +46,16 @@
#include "DMXScintHit.hh"
#include "DMXPmtHit.hh"
class DMXRunAction;
class DMXPrimaryGeneratorAction;
class DMXEventActionMessenger;
class DMXAnalysisManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class DMXEventAction : public G4UserEventAction {
public:
DMXEventAction();
DMXEventAction(DMXRunAction*, DMXPrimaryGeneratorAction*);
virtual ~DMXEventAction();
virtual void BeginOfEventAction(const G4Event*);
virtual void EndOfEventAction(const G4Event*);
@@ -78,6 +80,9 @@ class DMXEventAction : public G4UserEventAction {
private:
G4int event_id;
const long* seeds;
G4double energy_pri;
// hits collections
G4int scintillatorCollID;
G4int pmtCollID;
@@ -91,6 +96,7 @@ class DMXEventAction : public G4UserEventAction {
G4double totEnergyNeutrons;
G4double hitEnergy;
G4double firstLXeHitTime;
G4double firstParticleE;
G4double particleEnergy;
G4String particleName;
G4String firstParticleName;
@@ -113,6 +119,9 @@ class DMXEventAction : public G4UserEventAction {
G4int printModulo;
DMXEventActionMessenger* eventMessenger;
DMXRunAction* runAct; //pointer to run action
DMXPrimaryGeneratorAction* genAction; // pointer to particle generator
};
#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: DMXMinEkineCuts.hh,v 1.2 2002/06/18 10:17:30 ahoward Exp $
// GEANT4 tag $Name: geant4-04-01 $
//
//
// ------------------------------------------------------------
// GEANT 4 class header file
//
// ------------------------------------------------------------
// 14 Aug. 1998 H.Kurashige
// ------------------------------------------------------------
#ifndef DMXMinEkineCuts_h
#define DMXMinEkineCuts_h 1
#include "G4ios.hh"
#include "globals.hh"
#include "DMXSpecialCuts.hh"
class DMXMinEkineCuts : public DMXSpecialCuts
{
public:
DMXMinEkineCuts(const G4String& processName ="DMXMinEkineCuts" );
virtual ~DMXMinEkineCuts();
// PostStep GPIL
virtual G4double PostStepGetPhysicalInteractionLength(
const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition
);
private:
// hide assignment operator as private
DMXMinEkineCuts(DMXMinEkineCuts&);
DMXMinEkineCuts& operator=(const DMXMinEkineCuts& right);
};
#endif
@@ -81,6 +81,7 @@ class DMXParticleSource : public G4VPrimaryGenerator {
void SetEnergyDisType(G4String);
void SetMonoEnergy(G4double);
void GenerateMonoEnergetic();
inline G4double GetParticleEnergy() {return particle_energy;}
// verbosity
void SetVerbosity(G4int);
@@ -40,8 +40,14 @@
#define DMXPrimaryGeneratorMessenger_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
#ifdef DMXENV_GPS_USE
class G4GeneralParticleSource;
#else
class DMXParticleSource;
#endif
class DMXAnalysisManager;
class G4Event;
@@ -55,7 +61,21 @@ class DMXPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction {
void GeneratePrimaries(G4Event* anEvent);
private:
DMXParticleSource* particleGun;
#ifdef DMXENV_GPS_USE
G4GeneralParticleSource* particleGun;
#else
DMXParticleSource* particleGun;
#endif
private:
// const long* seeds;
long seeds[2];
G4double energy_pri;
public:
const long* GetEventSeeds() {return seeds;};
G4double GetEnergyPrimary() {return energy_pri;};
};
@@ -46,6 +46,7 @@
class DMXRunActionMessenger;
class G4Run;
class DMXAnalysisManager;
class DMXRunAction : public G4UserRunAction
{
@@ -57,15 +58,25 @@ class DMXRunAction : public G4UserRunAction
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
void SetFilename(G4String val) { fileName = val; };
public:
void SetsavehitsFile (G4String val) { savehitsFile = val;};
void SetsavepmtFile (G4String val) { savepmtFile = val;};
void SetsavehistFile (G4String val) { savehistFile = val;};
void Setinteractplot (G4bool valb) { interactplot = valb;};
G4String GetsavehitsFile() {return savehitsFile;};
G4String GetsavepmtFile() {return savepmtFile;};
private:
G4String fileName; // log file name for the run
//messenger
G4String savehitsFile;
G4String savepmtFile;
G4String savehistFile;
G4bool interactplot;
DMXRunActionMessenger* runMessenger;
};
#endif
@@ -44,6 +44,7 @@
class DMXRunAction;
class G4UIcmdWithAString;
class G4UIcmdWithABool;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -56,8 +57,12 @@ class DMXRunActionMessenger: public G4UImessenger
void SetNewValue(G4UIcommand*, G4String);
private:
DMXRunAction* DMXRun;
G4UIcmdWithAString* FileCmd;
DMXRunAction* DMXRun;
G4UIcmdWithAString* SaveHitsCmd;
G4UIcmdWithAString* SavePmtCmd;
G4UIcmdWithAString* SaveHistFileCmd;
G4UIcmdWithABool* InteractPlotCmd;
};
#endif
@@ -36,7 +36,7 @@
// StackingActionMessenger header
// --------------------------------------------------------------
#ifndef protpStackingActionMessenger_h
#ifndef DMXStackingActionMessenger_h
#define DMXStackingActionMessenger_h 1
#include "G4UImessenger.hh"
@@ -45,6 +45,7 @@
class DMXSteppingActionMessenger;
class DMXEventAction;
class DMXAnalysisManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....