Import Geant4 4.0.0 source tree
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// DetectorConstruction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXDetectorConstruction_h
|
||||
#define DMXDetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4VPhysicalVolume;
|
||||
class G4LogicalVolume;
|
||||
class G4Material;
|
||||
|
||||
class G4UserLimits;
|
||||
|
||||
class DMXScintSD;
|
||||
class DMXPmtSD;
|
||||
|
||||
class DMXDetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
|
||||
DMXDetectorConstruction();
|
||||
~DMXDetectorConstruction();
|
||||
|
||||
public:
|
||||
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
// methods for UserLimits
|
||||
void UseUserLimits(G4bool value);
|
||||
G4bool IsUseUserLimits() { return fUseUserLimits; }
|
||||
G4double GetMaxTime() const { return theMaxTimeCuts; }
|
||||
G4double GetMaxStepSize() const { return theMaxStepSize; }
|
||||
|
||||
G4double GetRoomTime() const { return theRoomTimeCut; }
|
||||
|
||||
void SetMaxTime(G4double value);
|
||||
void SetMaxStepSize(G4double value);
|
||||
void SetRoomTime(G4double value);
|
||||
|
||||
private:
|
||||
|
||||
void DefineMaterials();
|
||||
|
||||
G4bool fUseUserLimits;
|
||||
G4UserLimits* theUserLimits;
|
||||
G4double theMaxTimeCuts;
|
||||
G4double theMaxStepSize;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
G4double worldRadius; // sizes
|
||||
G4double worldHeight;
|
||||
G4double sourceZ;
|
||||
G4double sourceZ2;
|
||||
|
||||
|
||||
G4LogicalVolume* world_log; // pointers
|
||||
G4VPhysicalVolume* world_phys;
|
||||
G4LogicalVolume* lab_log;
|
||||
G4VPhysicalVolume* lab_phys;
|
||||
G4LogicalVolume* jacket_log;
|
||||
G4VPhysicalVolume* jacket_phys;
|
||||
G4LogicalVolume* vacuum_log;
|
||||
G4VPhysicalVolume* vacuum_phys;
|
||||
G4LogicalVolume* vessel_log;
|
||||
G4VPhysicalVolume* vessel_phys;
|
||||
G4LogicalVolume* detector_log;
|
||||
G4VPhysicalVolume* detector_phys;
|
||||
G4LogicalVolume* CuShield_log;
|
||||
G4VPhysicalVolume* CuShield_phys;
|
||||
G4LogicalVolume* liqPhase_log;
|
||||
G4VPhysicalVolume* liqPhase_phys;
|
||||
G4LogicalVolume* alpha_log;
|
||||
G4VPhysicalVolume* alpha_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;
|
||||
G4VPhysicalVolume* grid1_phys;
|
||||
G4LogicalVolume* grid2_log;
|
||||
G4VPhysicalVolume* grid2_phys;
|
||||
G4LogicalVolume* pmt_log;
|
||||
G4VPhysicalVolume* pmt_phys;
|
||||
/*
|
||||
G4LogicalVolume* window_log;
|
||||
G4VPhysicalVolume* window_phys;
|
||||
*/
|
||||
G4LogicalVolume* phcath_log;
|
||||
G4VPhysicalVolume* phcath_phys;
|
||||
|
||||
|
||||
DMXScintSD* LXeSD; //pointer to sensitive detectors
|
||||
DMXPmtSD* pmtSD;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// EventAction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXEventAction_h
|
||||
#define DMXEventAction_h 1
|
||||
|
||||
#include "G4UserEventAction.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
#include "DMXScintHit.hh"
|
||||
#include "DMXPmtHit.hh"
|
||||
|
||||
class DMXEventActionMessenger;
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
class DMXEventAction : public G4UserEventAction {
|
||||
|
||||
public:
|
||||
DMXEventAction();
|
||||
virtual ~DMXEventAction();
|
||||
virtual void BeginOfEventAction(const G4Event*);
|
||||
virtual void EndOfEventAction(const G4Event*);
|
||||
|
||||
private:
|
||||
void writeScintHitsToFile(void);
|
||||
void writePmtHitsToFile(const DMXPmtHitsCollection*);
|
||||
void drawTracks(const G4Event*);
|
||||
|
||||
public:
|
||||
void SetDrawTrksFlag (G4String val) {drawTrksFlag = val;};
|
||||
G4String GetDrawTrksFlag() {return drawTrksFlag;};
|
||||
|
||||
void SetDrawColsFlag (G4String val) {drawColsFlag = val;};
|
||||
G4String GetDrawColsFlag() {return drawColsFlag;};
|
||||
|
||||
void SetDrawHitsFlag (G4int val) {drawHitsFlag = val;};
|
||||
void SetSavePmtFlag (G4int val) {savePmtFlag = val;};
|
||||
void SetSaveHitsFlag (G4int val) {saveHitsFlag = val;};
|
||||
void SetPrintModulo (G4int val) {printModulo = val;};
|
||||
|
||||
private:
|
||||
G4int event_id;
|
||||
|
||||
// hits collections
|
||||
G4int scintillatorCollID;
|
||||
G4int pmtCollID;
|
||||
G4int S_hits;
|
||||
G4int P_hits;
|
||||
|
||||
// event summary
|
||||
G4double aveTimePmtHits;
|
||||
G4double totEnergy;
|
||||
G4double totEnergyGammas;
|
||||
G4double totEnergyNeutrons;
|
||||
G4double hitEnergy;
|
||||
G4double firstLXeHitTime;
|
||||
G4double particleEnergy;
|
||||
G4String particleName;
|
||||
G4String firstParticleName;
|
||||
|
||||
G4bool gamma_ev;
|
||||
G4bool neutron_ev;
|
||||
G4bool positron_ev;
|
||||
G4bool electron_ev;
|
||||
G4bool proton_ev;
|
||||
G4bool other_ev;
|
||||
G4bool start_gamma;
|
||||
G4bool start_neutron;
|
||||
|
||||
// messenger
|
||||
G4String drawTrksFlag;
|
||||
G4String drawColsFlag;
|
||||
G4int drawHitsFlag;
|
||||
G4int savePmtFlag;
|
||||
G4int saveHitsFlag;
|
||||
G4int printModulo;
|
||||
DMXEventActionMessenger* eventMessenger;
|
||||
|
||||
};
|
||||
|
||||
#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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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)
|
||||
//
|
||||
// EventActionMessenger header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXEventActionMessenger_h
|
||||
#define DMXEventActionMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class DMXEventAction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithAnInteger;
|
||||
class G4UIcmdWithABool;
|
||||
|
||||
|
||||
class DMXEventActionMessenger: public G4UImessenger {
|
||||
|
||||
public:
|
||||
DMXEventActionMessenger(DMXEventAction*);
|
||||
~DMXEventActionMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
DMXEventAction* eventAction;
|
||||
|
||||
G4UIdirectory* dmxDirectory;
|
||||
G4UIdirectory* drawDirectory;
|
||||
G4UIcmdWithAString* DrawTrksCmd;
|
||||
G4UIcmdWithAString* DrawColsCmd;
|
||||
G4UIcmdWithABool* DrawHitsCmd;
|
||||
G4UIcmdWithABool* SavePmtCmd;
|
||||
G4UIcmdWithABool* SaveHitsCmd;
|
||||
G4UIcmdWithAnInteger* PrintCmd;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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)
|
||||
//
|
||||
// MaxTimeCuts header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXMaxTimeCuts_h
|
||||
#define DMXMaxTimeCuts_h 1
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "DMXSpecialCuts.hh"
|
||||
|
||||
|
||||
class DMXMaxTimeCuts : public DMXSpecialCuts
|
||||
{
|
||||
public:
|
||||
|
||||
DMXMaxTimeCuts(const G4String& processName ="DMXMaxTimeCuts" );
|
||||
|
||||
virtual ~DMXMaxTimeCuts();
|
||||
|
||||
// PostStep GPIL
|
||||
virtual G4double PostStepGetPhysicalInteractionLength(
|
||||
const G4Track& track,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition
|
||||
);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator as private
|
||||
DMXMaxTimeCuts(DMXMaxTimeCuts&);
|
||||
DMXMaxTimeCuts& operator=(const DMXMaxTimeCuts& right);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// ParticleSource header
|
||||
// --------------------------------------------------------------
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// This particle source is a shortened version of G4GeneralParticleSource by
|
||||
// C Ferguson, F Lei & P Truscott (University of Southampton / DERA), with
|
||||
// some minor modifications.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef DMXParticleSource_h
|
||||
#define DMXParticleSource_h 1
|
||||
|
||||
#include "G4VPrimaryGenerator.hh"
|
||||
#include "G4Navigator.hh"
|
||||
#include "G4ParticleMomentum.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
#include "DMXParticleSourceMessenger.hh"
|
||||
|
||||
|
||||
class DMXParticleSource : public G4VPrimaryGenerator {
|
||||
|
||||
public:
|
||||
DMXParticleSource ();
|
||||
~DMXParticleSource ();
|
||||
void GeneratePrimaryVertex(G4Event *evt);
|
||||
|
||||
public:
|
||||
|
||||
// position distribution
|
||||
void SetPosDisType(G4String);
|
||||
void SetPosDisShape(G4String);
|
||||
void SetCentreCoords(G4ThreeVector);
|
||||
void SetHalfZ(G4double);
|
||||
void SetRadius(G4double);
|
||||
void GeneratePointSource();
|
||||
void GeneratePointsInVolume();
|
||||
G4bool IsSourceConfined();
|
||||
void ConfineSourceToVolume(G4String);
|
||||
|
||||
// angular distribution
|
||||
void SetAngDistType(G4String);
|
||||
void SetParticleMomentumDirection(G4ParticleMomentum);
|
||||
void GenerateIsotropicFlux();
|
||||
|
||||
// energy distribution
|
||||
void SetEnergyDisType(G4String);
|
||||
void SetMonoEnergy(G4double);
|
||||
void GenerateMonoEnergetic();
|
||||
|
||||
// verbosity
|
||||
void SetVerbosity(G4int);
|
||||
|
||||
// particle properties
|
||||
void SetParticleDefinition(G4ParticleDefinition * aParticleDefinition);
|
||||
inline void SetParticleCharge(G4double aCharge)
|
||||
{ particle_charge = aCharge; }
|
||||
|
||||
private:
|
||||
|
||||
// position distribution
|
||||
G4String SourcePosType;
|
||||
G4String Shape;
|
||||
G4double halfz;
|
||||
G4double Radius;
|
||||
G4ThreeVector CentreCoords;
|
||||
G4bool Confine;
|
||||
G4String VolName;
|
||||
G4String AngDistType;
|
||||
G4double MinTheta, MaxTheta, MinPhi, MaxPhi;
|
||||
G4double Theta, Phi;
|
||||
G4String EnergyDisType;
|
||||
G4double MonoEnergy;
|
||||
|
||||
// particle properties
|
||||
G4int NumberOfParticlesToBeGenerated;
|
||||
G4ParticleDefinition* particle_definition;
|
||||
G4ParticleMomentum particle_momentum_direction;
|
||||
G4double particle_energy;
|
||||
G4double particle_charge;
|
||||
G4ThreeVector particle_position;
|
||||
G4double particle_time;
|
||||
G4ThreeVector particle_polarization;
|
||||
|
||||
// Verbose
|
||||
G4int verbosityLevel;
|
||||
|
||||
private:
|
||||
|
||||
DMXParticleSourceMessenger *theMessenger;
|
||||
G4Navigator *gNavigator;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// ParticleSourceMessenger header
|
||||
// --------------------------------------------------------------
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// This particle source is a shortened version of G4GeneralParticleSource by
|
||||
// C Ferguson, F Lei & P Truscott (University of Southampton / DERA), with
|
||||
// some minor modifications.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef DMXParticleSourceMessenger_h
|
||||
#define DMXParticleSourceMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class DMXParticleSource;
|
||||
|
||||
class G4ParticleTable;
|
||||
class G4UIcommand;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithoutParameter;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
class G4UIcmdWith3Vector;
|
||||
class G4UIcmdWith3VectorAndUnit;
|
||||
class G4UIcmdWithAnInteger;
|
||||
class G4UIcmdWithADouble;
|
||||
class G4UIcmdWithABool;
|
||||
class G4UIcmdWithoutParameter;
|
||||
|
||||
|
||||
class DMXParticleSourceMessenger: public G4UImessenger {
|
||||
|
||||
public:
|
||||
DMXParticleSourceMessenger(DMXParticleSource *fPtclGun);
|
||||
~DMXParticleSourceMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand *command, G4String newValues);
|
||||
|
||||
|
||||
private:
|
||||
DMXParticleSource *fParticleGun;
|
||||
G4ParticleTable *particleTable;
|
||||
|
||||
private:
|
||||
G4UIdirectory *gunDirectory;
|
||||
|
||||
G4UIcmdWithAString *typeCmd;
|
||||
G4UIcmdWithAString *shapeCmd;
|
||||
G4UIcmdWith3VectorAndUnit *centreCmd;
|
||||
G4UIcmdWithADoubleAndUnit *halfzCmd;
|
||||
G4UIcmdWithADoubleAndUnit *radiusCmd;
|
||||
G4UIcmdWithAString *confineCmd;
|
||||
G4UIcmdWithAString *angtypeCmd;
|
||||
G4UIcmdWithAString *energytypeCmd;
|
||||
G4UIcmdWithAnInteger *verbosityCmd;
|
||||
G4UIcommand *ionCmd;
|
||||
G4UIcmdWithAString *particleCmd;
|
||||
G4UIcmdWith3VectorAndUnit *positionCmd;
|
||||
G4UIcmdWith3Vector *directionCmd;
|
||||
G4UIcmdWithADoubleAndUnit *energyCmd;
|
||||
G4UIcmdWithoutParameter *listCmd;
|
||||
|
||||
|
||||
private:
|
||||
G4bool fShootIon;
|
||||
G4int fAtomicNumber;
|
||||
G4int fAtomicMass;
|
||||
G4int fIonCharge;
|
||||
G4double fIonExciteEnergy;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,104 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// PhysicsList header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXPhysicsList_h
|
||||
#define DMXPhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXPhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
DMXPhysicsList();
|
||||
virtual ~DMXPhysicsList();
|
||||
|
||||
|
||||
public:
|
||||
virtual void SetCuts();
|
||||
|
||||
|
||||
protected:
|
||||
// Construct particle and physics
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
// these methods Construct physics processes and register them
|
||||
virtual void ConstructGeneral();
|
||||
virtual void ConstructEM();
|
||||
virtual void ConstructHad();
|
||||
virtual void ConstructOp();
|
||||
|
||||
|
||||
/*
|
||||
// these methods Construct all particles in each category
|
||||
virtual void ConstructAllBosons();
|
||||
virtual void ConstructAllLeptons();
|
||||
virtual void ConstructAllMesons();
|
||||
virtual void ConstructAllBaryons();
|
||||
virtual void ConstructAllIons();
|
||||
virtual void ConstructAllShortLiveds();
|
||||
*/
|
||||
|
||||
virtual void AddTransportation();
|
||||
|
||||
private:
|
||||
G4int VerboseLevel;
|
||||
G4int OpVerbLevel;
|
||||
|
||||
G4double cutForGamma;
|
||||
G4double cutForElectron;
|
||||
G4double cutForPositron;
|
||||
G4double cutForProton;
|
||||
G4double cutForAlpha;
|
||||
G4double cutForGenericIon;
|
||||
G4double cutForOpticalPhoton;
|
||||
|
||||
// these methods Construct particles
|
||||
void ConstructMyBosons();
|
||||
void ConstructMyLeptons();
|
||||
void ConstructMyMesons();
|
||||
void ConstructMyBaryons();
|
||||
void ConstructMyIons();
|
||||
void ConstructMyShortLiveds();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// PmtHit (sensitive detector) header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXPmtHit_h
|
||||
#define DMXPmtHit_h 1
|
||||
|
||||
#include "G4VHit.hh"
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
|
||||
class DMXPmtHit : public G4VHit
|
||||
{
|
||||
public:
|
||||
|
||||
DMXPmtHit();
|
||||
~DMXPmtHit();
|
||||
|
||||
DMXPmtHit(const DMXPmtHit&);
|
||||
const DMXPmtHit& operator=(const DMXPmtHit&);
|
||||
int operator==(const DMXPmtHit&) const;
|
||||
|
||||
inline void* operator new(size_t);
|
||||
inline void operator delete(void*);
|
||||
|
||||
void Draw();
|
||||
void Print();
|
||||
|
||||
private:
|
||||
G4ThreeVector pos;
|
||||
G4double time;
|
||||
|
||||
|
||||
public:
|
||||
inline void SetPos(G4ThreeVector xyz) {pos=xyz;};
|
||||
inline G4ThreeVector GetPos() const {return pos;};
|
||||
|
||||
inline void SetTime(G4double t) {time=t;};
|
||||
inline G4double GetTime() const {return time;};
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
// vector collection of one type of hits
|
||||
typedef G4THitsCollection<DMXPmtHit> DMXPmtHitsCollection;
|
||||
|
||||
|
||||
extern G4Allocator<DMXPmtHit> DMXPmtHitsAllocator;
|
||||
|
||||
|
||||
inline void* DMXPmtHit::operator new(size_t) {
|
||||
void* aHit;
|
||||
aHit = (void*) DMXPmtHitsAllocator.MallocSingle();
|
||||
return aHit;
|
||||
}
|
||||
|
||||
|
||||
inline void DMXPmtHit::operator delete(void* aHit) {
|
||||
DMXPmtHitsAllocator.FreeSingle((DMXPmtHit*) aHit);
|
||||
}
|
||||
|
||||
#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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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)
|
||||
//
|
||||
// PmtSD (sensitive detector) header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXPmtSD_h
|
||||
#define DMXPmtSD_h 1
|
||||
|
||||
|
||||
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
#include "DMXPmtHit.hh"
|
||||
|
||||
class DMXDetectorConstruction;
|
||||
class G4Step;
|
||||
class G4HCofThisEvent;
|
||||
|
||||
class DMXPmtSD : public G4VSensitiveDetector {
|
||||
|
||||
public:
|
||||
|
||||
DMXPmtSD(G4String, DMXDetectorConstruction*);
|
||||
~DMXPmtSD();
|
||||
|
||||
void Initialize(G4HCofThisEvent*);
|
||||
G4bool ProcessHits(G4Step*,G4TouchableHistory*);
|
||||
void EndOfEvent(G4HCofThisEvent*);
|
||||
void clear();
|
||||
void DrawAll();
|
||||
void PrintAll();
|
||||
|
||||
private:
|
||||
|
||||
DMXPmtHitsCollection* pmtCollection;
|
||||
DMXDetectorConstruction* DMXDetector;
|
||||
G4int HitID;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// PrimaryGeneratorAction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXPrimaryGeneratorMessenger_h
|
||||
#define DMXPrimaryGeneratorMessenger_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
|
||||
class DMXParticleSource;
|
||||
|
||||
class G4Event;
|
||||
|
||||
class DMXPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction {
|
||||
|
||||
public:
|
||||
DMXPrimaryGeneratorAction();
|
||||
~DMXPrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
|
||||
private:
|
||||
DMXParticleSource* particleGun;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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)
|
||||
//
|
||||
// RunAction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXRunAction_h
|
||||
#define DMXRunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXRunActionMessenger;
|
||||
class G4Run;
|
||||
|
||||
class DMXRunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
DMXRunAction();
|
||||
~DMXRunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run*);
|
||||
|
||||
void SetFilename(G4String val) { fileName = val; };
|
||||
|
||||
private:
|
||||
|
||||
G4String fileName; // log file name for the run
|
||||
DMXRunActionMessenger* runMessenger;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// RunActionMessenger header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXRunActionMessenger_h
|
||||
#define DMXRunActionMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class DMXRunAction;
|
||||
class G4UIcmdWithAString;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXRunActionMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
DMXRunActionMessenger(DMXRunAction*);
|
||||
~DMXRunActionMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
DMXRunAction* DMXRun;
|
||||
G4UIcmdWithAString* FileCmd;
|
||||
};
|
||||
|
||||
#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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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)
|
||||
//
|
||||
// DetectorConstruction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXScintHit_h
|
||||
#define DMXScintHit_h 1
|
||||
|
||||
#include "G4VHit.hh"
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXScintHit : public G4VHit
|
||||
{
|
||||
public:
|
||||
|
||||
DMXScintHit();
|
||||
~DMXScintHit();
|
||||
DMXScintHit(const DMXScintHit&);
|
||||
const DMXScintHit& operator=(const DMXScintHit&);
|
||||
int operator==(const DMXScintHit&) const;
|
||||
|
||||
inline void* operator new(size_t);
|
||||
inline void operator delete(void*);
|
||||
|
||||
void Draw();
|
||||
void Print();
|
||||
|
||||
public:
|
||||
|
||||
void SetEdep (G4double de) { edep = de; };
|
||||
void SetPos (G4ThreeVector xyz) { pos = xyz; };
|
||||
void SetParticle (G4String name) { particleName = name; };
|
||||
void SetParticleEnergy (G4double e1) { particleEnergy = e1; };
|
||||
void SetTime (G4double t2) { time = t2; };
|
||||
|
||||
|
||||
G4double GetEdep() { return edep; };
|
||||
G4ThreeVector GetPos() { return pos; };
|
||||
G4String GetParticle() { return particleName;};
|
||||
G4double GetParticleEnergy() { return particleEnergy;};
|
||||
G4double GetTime() { return time; };
|
||||
|
||||
|
||||
private:
|
||||
G4double edep;
|
||||
G4ThreeVector pos;
|
||||
G4double time;
|
||||
G4String particleName;
|
||||
G4double particleEnergy;
|
||||
|
||||
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
typedef G4THitsCollection<DMXScintHit> DMXScintHitsCollection;
|
||||
|
||||
extern G4Allocator<DMXScintHit> DMXScintHitAllocator;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline void* DMXScintHit::operator new(size_t)
|
||||
{
|
||||
void* aHit;
|
||||
aHit = (void*) DMXScintHitAllocator.MallocSingle();
|
||||
return aHit;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline void DMXScintHit::operator delete(void* aHit)
|
||||
{
|
||||
DMXScintHitAllocator.FreeSingle((DMXScintHit*) aHit);
|
||||
}
|
||||
|
||||
#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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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)
|
||||
//
|
||||
// ScintSD (sensitive detector) header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXScintSD_h
|
||||
#define DMXScintSD_h 1
|
||||
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
#include "globals.hh"
|
||||
#include "DMXScintHit.hh"
|
||||
|
||||
class DMXDetectorConstruction;
|
||||
class G4Step;
|
||||
class G4HCofThisEvent;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXScintSD : public G4VSensitiveDetector
|
||||
{
|
||||
public:
|
||||
|
||||
DMXScintSD(G4String, DMXDetectorConstruction*);
|
||||
~DMXScintSD();
|
||||
|
||||
void Initialize(G4HCofThisEvent*);
|
||||
G4bool ProcessHits(G4Step*, G4TouchableHistory*);
|
||||
void EndOfEvent(G4HCofThisEvent*);
|
||||
void clear();
|
||||
void DrawAll();
|
||||
void PrintAll();
|
||||
|
||||
private:
|
||||
|
||||
DMXScintHitsCollection* scintillatorCollection;
|
||||
DMXDetectorConstruction* DMXDetector;
|
||||
G4int HitID;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// SpecialCuts header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXSpecialCuts_h
|
||||
#define DMXSpecialCuts_h 1
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4VProcess.hh"
|
||||
|
||||
|
||||
class DMXSpecialCuts : public G4VProcess
|
||||
{
|
||||
public:
|
||||
|
||||
DMXSpecialCuts(const G4String& processName ="DMXSpecialCut" );
|
||||
|
||||
virtual ~DMXSpecialCuts();
|
||||
|
||||
virtual G4double PostStepGetPhysicalInteractionLength(
|
||||
const G4Track& track,
|
||||
G4double previousStepSize,
|
||||
G4ForceCondition* condition
|
||||
);
|
||||
|
||||
virtual G4VParticleChange* PostStepDoIt(
|
||||
const G4Track& ,
|
||||
const G4Step&
|
||||
);
|
||||
|
||||
// no operation in AtRestGPIL
|
||||
virtual G4double AtRestGetPhysicalInteractionLength(
|
||||
const G4Track& ,
|
||||
G4ForceCondition*
|
||||
){ return -1.0; };
|
||||
|
||||
// no operation in AtRestDoIt
|
||||
virtual G4VParticleChange* AtRestDoIt(
|
||||
const G4Track& ,
|
||||
const G4Step&
|
||||
){return NULL;};
|
||||
|
||||
// no operation in AlongStepGPIL
|
||||
virtual G4double AlongStepGetPhysicalInteractionLength(
|
||||
const G4Track&,
|
||||
G4double ,
|
||||
G4double ,
|
||||
G4double& ,
|
||||
G4GPILSelection*
|
||||
){ return -1.0; };
|
||||
|
||||
// no operation in AlongStepDoIt
|
||||
virtual G4VParticleChange* AlongStepDoIt(
|
||||
const G4Track& ,
|
||||
const G4Step&
|
||||
) {return NULL;};
|
||||
|
||||
private:
|
||||
|
||||
// hide assignment operator as private
|
||||
DMXSpecialCuts& operator=(const DMXSpecialCuts& right){return *this;};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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)
|
||||
//
|
||||
// StackingAction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXStackingAction_H
|
||||
#define DMXStackingAction_H 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UserStackingAction.hh"
|
||||
|
||||
|
||||
class DMXStackingActionMessenger;
|
||||
class G4Navigator;
|
||||
class G4Track;
|
||||
|
||||
class DMXStackingAction : public G4UserStackingAction {
|
||||
|
||||
public:
|
||||
DMXStackingAction();
|
||||
virtual ~DMXStackingAction();
|
||||
|
||||
public:
|
||||
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
|
||||
virtual void NewStage();
|
||||
virtual void PrepareNewEvent();
|
||||
|
||||
DMXStackingActionMessenger* theMessenger;
|
||||
|
||||
|
||||
private:
|
||||
G4bool killGammasFlag;
|
||||
|
||||
G4Navigator* gNavigator;
|
||||
|
||||
public:
|
||||
inline void SetKillGammasFlag(G4bool val) {killGammasFlag = val;};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// StackingActionMessenger header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef protpStackingActionMessenger_h
|
||||
#define DMXStackingActionMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class DMXStackingAction;
|
||||
class G4UIcmdWithABool;
|
||||
|
||||
|
||||
class DMXStackingActionMessenger: public G4UImessenger {
|
||||
|
||||
public:
|
||||
DMXStackingActionMessenger(DMXStackingAction*);
|
||||
~DMXStackingActionMessenger();
|
||||
|
||||
public:
|
||||
void SetNewValue(G4UIcommand* , G4String);
|
||||
|
||||
private:
|
||||
DMXStackingAction* DMXAction;
|
||||
|
||||
private:
|
||||
G4UIcmdWithABool* KillGammasCmd;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// SteppingAction header
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#ifndef DMXSteppingAction_h
|
||||
#define DMXSteppingAction_h 1
|
||||
|
||||
#include "G4UserSteppingAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
|
||||
class DMXSteppingActionMessenger;
|
||||
class DMXEventAction;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXSteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
DMXSteppingAction(DMXEventAction*);
|
||||
virtual ~DMXSteppingAction();
|
||||
|
||||
virtual void UserSteppingAction(const G4Step*);
|
||||
|
||||
public:
|
||||
void SetColourNeutronFlag(G4String val) {colourNeutronFlag =val;};
|
||||
void SetColourGammaFlag(G4String val) {colourGammaFlag =val;};
|
||||
void SetColourOpticalFlag(G4String val) {colourOpticalFlag =val;};
|
||||
void SetColourChargedPlusFlag(G4String val) {colourChargedPlusFlag =val;};
|
||||
void SetColourChargedMinusFlag(G4String val) {colourChargedMinusFlag=val;};
|
||||
|
||||
private:
|
||||
G4String colourNeutronFlag;
|
||||
G4String colourGammaFlag;
|
||||
G4String colourOpticalFlag;
|
||||
G4String colourChargedPlusFlag;
|
||||
G4String colourChargedMinusFlag;
|
||||
|
||||
DMXSteppingActionMessenger* steppingMessenger;
|
||||
|
||||
DMXEventAction* evtAction; //pointer to event action
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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 DMXSteppingActionMessenger_h
|
||||
#define DMXSteppingActionMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class DMXSteppingAction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
|
||||
|
||||
class DMXSteppingActionMessenger: public G4UImessenger {
|
||||
|
||||
public:
|
||||
DMXSteppingActionMessenger(DMXSteppingAction*);
|
||||
~DMXSteppingActionMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
DMXSteppingAction* steppingAction;
|
||||
|
||||
G4UIcmdWithAString* colourNeutronCmd;
|
||||
G4UIcmdWithAString* colourGammaCmd;
|
||||
G4UIcmdWithAString* colourOpticalCmd;
|
||||
G4UIcmdWithAString* colourChargedPlusCmd;
|
||||
G4UIcmdWithAString* colourChargedMinusCmd;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * 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)
|
||||
//
|
||||
// VisManager header
|
||||
// --------------------------------------------------------------
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
// Example Visualization Manager implementing virtual function
|
||||
// RegisterGraphicsSystems. Exploits C-pre-processor variables
|
||||
// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if
|
||||
// environment variables of the same name are set.
|
||||
|
||||
// So all you have to do is set environment variables and compile and
|
||||
// instantiate this in your main().
|
||||
|
||||
// Alternatively, you can implement an empty function here and just
|
||||
// register the systems you want in your main(), e.g.:
|
||||
// G4VisManager* DMXVisManager = new MyVisManager;
|
||||
// DMXVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem);
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef DMXVisManager_h
|
||||
#define DMXVisManager_h 1
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
|
||||
#include "G4VisManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class DMXVisManager: public G4VisManager {
|
||||
|
||||
public:
|
||||
|
||||
DMXVisManager ();
|
||||
|
||||
private:
|
||||
|
||||
void RegisterGraphicsSystems ();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user