Import Geant4 10.7.0 source tree
This commit is contained in:
@@ -34,21 +34,17 @@
|
||||
|
||||
class LXeDetectorConstruction;
|
||||
|
||||
/// Action initialization class.
|
||||
///
|
||||
|
||||
class LXeActionInitialization : public G4VUserActionInitialization
|
||||
{
|
||||
public:
|
||||
LXeActionInitialization(const LXeDetectorConstruction* det);
|
||||
virtual ~LXeActionInitialization();
|
||||
public:
|
||||
LXeActionInitialization(const LXeDetectorConstruction* det);
|
||||
~LXeActionInitialization();
|
||||
|
||||
virtual void BuildForMaster() const;
|
||||
virtual void Build() const;
|
||||
void BuildForMaster() const override;
|
||||
void Build() const override;
|
||||
|
||||
private:
|
||||
|
||||
const LXeDetectorConstruction* fDetector;
|
||||
private:
|
||||
const LXeDetectorConstruction* fDetector;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -28,128 +28,125 @@
|
||||
/// \brief Definition of the LXeDetectorConstruction class
|
||||
//
|
||||
//
|
||||
#ifndef LXeDetectorConstruction_H
|
||||
#define LXeDetectorConstruction_H 1
|
||||
#ifndef LXeDetectorConstruction_h
|
||||
#define LXeDetectorConstruction_h 1
|
||||
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class G4Box;
|
||||
class G4Tubs;
|
||||
class LXeMainVolume;
|
||||
class G4Sphere;
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "LXeDetectorMessenger.hh"
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
|
||||
#include "LXeScintSD.hh"
|
||||
#include "LXePMTSD.hh"
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "G4Cache.hh"
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
|
||||
class LXeMainVolume;
|
||||
class LXePMTSD;
|
||||
class LXeScintSD;
|
||||
|
||||
class G4Box;
|
||||
class G4Element;
|
||||
class G4LogicalVolume;
|
||||
class G4Material;
|
||||
class G4MaterialPropertiesTable;
|
||||
class G4Sphere;
|
||||
class G4Tubs;
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
class LXeDetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeDetectorConstruction();
|
||||
~LXeDetectorConstruction();
|
||||
|
||||
LXeDetectorConstruction();
|
||||
virtual ~LXeDetectorConstruction();
|
||||
G4VPhysicalVolume* Construct() override;
|
||||
void ConstructSDandField() override;
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
virtual void ConstructSDandField();
|
||||
// Functions to modify the geometry
|
||||
void SetDimensions(G4ThreeVector);
|
||||
void SetHousingThickness(G4double);
|
||||
void SetNX(G4int);
|
||||
void SetNY(G4int);
|
||||
void SetNZ(G4int);
|
||||
void SetPMTRadius(G4double);
|
||||
void SetDefaults();
|
||||
void SetSaveThreshold(G4int);
|
||||
|
||||
//Functions to modify the geometry
|
||||
void SetDimensions(G4ThreeVector );
|
||||
void SetHousingThickness(G4double );
|
||||
void SetNX(G4int );
|
||||
void SetNY(G4int );
|
||||
void SetNZ(G4int );
|
||||
void SetPMTRadius(G4double );
|
||||
void SetDefaults();
|
||||
void SetSaveThreshold(G4int );
|
||||
// Get values
|
||||
G4int GetNX() const { return fNx; };
|
||||
G4int GetNY() const { return fNy; };
|
||||
G4int GetNZ() const { return fNz; };
|
||||
G4int GetSaveThreshold() const { return fSaveThreshold; };
|
||||
G4double GetScintX() const { return fScint_x; }
|
||||
G4double GetScintY() const { return fScint_y; }
|
||||
G4double GetScintZ() const { return fScint_z; }
|
||||
G4double GetHousingThickness() const { return fD_mtl; }
|
||||
G4double GetPMTRadius() const { return fOuterRadius_pmt; }
|
||||
G4double GetSlabZ() const { return fSlab_z; }
|
||||
|
||||
//Get values
|
||||
G4int GetNX() const {return fNx;};
|
||||
G4int GetNY() const {return fNy;};
|
||||
G4int GetNZ() const {return fNz;};
|
||||
G4int GetSaveThreshold() const {return fSaveThreshold;};
|
||||
G4double GetScintX() const {return fScint_x;}
|
||||
G4double GetScintY() const {return fScint_y;}
|
||||
G4double GetScintZ() const {return fScint_z;}
|
||||
G4double GetHousingThickness() const {return fD_mtl;}
|
||||
G4double GetPMTRadius() const {return fOuterRadius_pmt;}
|
||||
G4double GetSlabZ() const {return fSlab_z;}
|
||||
|
||||
void SetSphereOn(G4bool );
|
||||
static G4bool GetSphereOn(){return fSphereOn;}
|
||||
void SetSphereOn(G4bool);
|
||||
static G4bool GetSphereOn() { return fSphereOn; }
|
||||
|
||||
void SetHousingReflectivity(G4double );
|
||||
G4double GetHousingReflectivity() const {return fRefl;}
|
||||
void SetHousingReflectivity(G4double);
|
||||
G4double GetHousingReflectivity() const { return fRefl; }
|
||||
|
||||
void SetWLSSlabOn(G4bool b);
|
||||
G4bool GetWLSSlabOn() const {return fWLSslab;}
|
||||
void SetWLSSlabOn(G4bool b);
|
||||
G4bool GetWLSSlabOn() const { return fWLSslab; }
|
||||
|
||||
void SetMainVolumeOn(G4bool b);
|
||||
G4bool GetMainVolumeOn() const {return fMainVolumeOn;}
|
||||
void SetMainVolumeOn(G4bool b);
|
||||
G4bool GetMainVolumeOn() const { return fMainVolumeOn; }
|
||||
|
||||
void SetNFibers(G4int n);
|
||||
G4int GetNFibers() const {return fNfibers;}
|
||||
void SetNFibers(G4int n);
|
||||
G4int GetNFibers() const { return fNfibers; }
|
||||
|
||||
void SetMainScintYield(G4double );
|
||||
void SetWLSScintYield(G4double );
|
||||
void SetMainScintYield(G4double);
|
||||
void SetWLSScintYield(G4double);
|
||||
|
||||
private:
|
||||
private:
|
||||
void DefineMaterials();
|
||||
|
||||
void DefineMaterials();
|
||||
LXeDetectorMessenger* fDetectorMessenger;
|
||||
|
||||
LXeDetectorMessenger* fDetectorMessenger;
|
||||
G4Box* fExperimentalHall_box;
|
||||
G4LogicalVolume* fExperimentalHall_log;
|
||||
G4VPhysicalVolume* fExperimentalHall_phys;
|
||||
|
||||
G4Box* fExperimentalHall_box;
|
||||
G4LogicalVolume* fExperimentalHall_log;
|
||||
G4VPhysicalVolume* fExperimentalHall_phys;
|
||||
// Materials & Elements
|
||||
G4Material* fLXe;
|
||||
G4Material* fAl;
|
||||
G4Element* fN;
|
||||
G4Element* fO;
|
||||
G4Material* fAir;
|
||||
G4Material* fVacuum;
|
||||
G4Element* fC;
|
||||
G4Element* fH;
|
||||
G4Material* fGlass;
|
||||
G4Material* fPstyrene;
|
||||
G4Material* fPMMA;
|
||||
G4Material* fPethylene1;
|
||||
G4Material* fPethylene2;
|
||||
|
||||
//Materials & Elements
|
||||
G4Material* fLXe;
|
||||
G4Material* fAl;
|
||||
G4Element* fN;
|
||||
G4Element* fO;
|
||||
G4Material* fAir;
|
||||
G4Material* fVacuum;
|
||||
G4Element* fC;
|
||||
G4Element* fH;
|
||||
G4Material* fGlass;
|
||||
G4Material* fPstyrene;
|
||||
G4Material* fPMMA;
|
||||
G4Material* fPethylene1;
|
||||
G4Material* fPethylene2;
|
||||
// Geometry
|
||||
G4double fScint_x;
|
||||
G4double fScint_y;
|
||||
G4double fScint_z;
|
||||
G4double fD_mtl;
|
||||
G4int fNx;
|
||||
G4int fNy;
|
||||
G4int fNz;
|
||||
G4int fSaveThreshold;
|
||||
G4double fOuterRadius_pmt;
|
||||
G4int fNfibers;
|
||||
static G4bool fSphereOn;
|
||||
G4double fRefl;
|
||||
G4bool fWLSslab;
|
||||
G4bool fMainVolumeOn;
|
||||
G4double fSlab_z;
|
||||
|
||||
//Geometry
|
||||
G4double fScint_x;
|
||||
G4double fScint_y;
|
||||
G4double fScint_z;
|
||||
G4double fD_mtl;
|
||||
G4int fNx;
|
||||
G4int fNy;
|
||||
G4int fNz;
|
||||
G4int fSaveThreshold;
|
||||
G4double fOuterRadius_pmt;
|
||||
G4int fNfibers;
|
||||
static G4bool fSphereOn;
|
||||
G4double fRefl;
|
||||
G4bool fWLSslab;
|
||||
G4bool fMainVolumeOn;
|
||||
G4double fSlab_z;
|
||||
LXeMainVolume* fMainVolume;
|
||||
|
||||
LXeMainVolume* fMainVolume;
|
||||
|
||||
G4MaterialPropertiesTable* fLXe_mt;
|
||||
G4MaterialPropertiesTable* fMPTPStyrene;
|
||||
|
||||
//Sensitive Detectors
|
||||
G4Cache<LXeScintSD*> fScint_SD;
|
||||
G4Cache<LXePMTSD*> fPmt_SD;
|
||||
G4MaterialPropertiesTable* fLXe_mt;
|
||||
G4MaterialPropertiesTable* fMPTPStyrene;
|
||||
|
||||
// Sensitive Detectors
|
||||
G4Cache<LXeScintSD*> fScint_SD;
|
||||
G4Cache<LXePMTSD*> fPmt_SD;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,47 +31,46 @@
|
||||
#ifndef LXeDetectorMessenger_h
|
||||
#define LXeDetectorMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class LXeDetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
class G4UIcmdWith3VectorAndUnit;
|
||||
class G4UIcmdWithAnInteger;
|
||||
class G4UIcommand;
|
||||
|
||||
class G4UIcmdWithABool;
|
||||
class G4UIcmdWithADouble;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
class G4UIcmdWithAnInteger;
|
||||
class G4UIcmdWith3VectorAndUnit;
|
||||
class G4UIcommand;
|
||||
class G4UIdirectory;
|
||||
|
||||
class LXeDetectorMessenger: public G4UImessenger
|
||||
class LXeDetectorMessenger : public G4UImessenger
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeDetectorMessenger(LXeDetectorConstruction*);
|
||||
~LXeDetectorMessenger();
|
||||
|
||||
LXeDetectorMessenger(LXeDetectorConstruction*);
|
||||
virtual ~LXeDetectorMessenger();
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
void SetNewValue(G4UIcommand*, G4String) override;
|
||||
|
||||
LXeDetectorConstruction* fLXeDetector;
|
||||
G4UIdirectory* fDetectorDir;
|
||||
G4UIdirectory* fVolumesDir;
|
||||
G4UIcmdWith3VectorAndUnit* fDimensionsCmd;
|
||||
G4UIcmdWithADoubleAndUnit* fHousingThicknessCmd;
|
||||
G4UIcmdWithADoubleAndUnit* fPmtRadiusCmd;
|
||||
G4UIcmdWithAnInteger* fNxCmd;
|
||||
G4UIcmdWithAnInteger* fNyCmd;
|
||||
G4UIcmdWithAnInteger* fNzCmd;
|
||||
G4UIcmdWithABool* fSphereCmd;
|
||||
G4UIcmdWithADouble* fReflectivityCmd;
|
||||
G4UIcmdWithABool* fWlsCmd;
|
||||
G4UIcmdWithABool* fLxeCmd;
|
||||
G4UIcmdWithAnInteger* fNFibersCmd;
|
||||
G4UIcommand* fDefaultsCmd;
|
||||
G4UIcmdWithADouble* fMainScintYield;
|
||||
G4UIcmdWithADouble* fWLSScintYield;
|
||||
G4UIcmdWithAnInteger* fSaveThresholdCmd;
|
||||
private:
|
||||
LXeDetectorConstruction* fLXeDetector;
|
||||
G4UIdirectory* fDetectorDir;
|
||||
G4UIdirectory* fVolumesDir;
|
||||
G4UIcmdWith3VectorAndUnit* fDimensionsCmd;
|
||||
G4UIcmdWithADoubleAndUnit* fHousingThicknessCmd;
|
||||
G4UIcmdWithADoubleAndUnit* fPmtRadiusCmd;
|
||||
G4UIcmdWithAnInteger* fNxCmd;
|
||||
G4UIcmdWithAnInteger* fNyCmd;
|
||||
G4UIcmdWithAnInteger* fNzCmd;
|
||||
G4UIcmdWithABool* fSphereCmd;
|
||||
G4UIcmdWithADouble* fReflectivityCmd;
|
||||
G4UIcmdWithABool* fWlsCmd;
|
||||
G4UIcmdWithABool* fLxeCmd;
|
||||
G4UIcmdWithAnInteger* fNFibersCmd;
|
||||
G4UIcommand* fDefaultsCmd;
|
||||
G4UIcmdWithADouble* fMainScintYield;
|
||||
G4UIcmdWithADouble* fWLSScintYield;
|
||||
G4UIcmdWithAnInteger* fSaveThresholdCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -32,100 +32,103 @@
|
||||
#define LXeEventAction_h 1
|
||||
|
||||
#include "LXeEventMessenger.hh"
|
||||
#include "G4UserEventAction.hh"
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4UserEventAction.hh"
|
||||
|
||||
class G4Event;
|
||||
class LXeDetectorConstruction;
|
||||
|
||||
class LXeEventAction : public G4UserEventAction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeEventAction(const LXeDetectorConstruction*);
|
||||
~LXeEventAction();
|
||||
|
||||
LXeEventAction(const LXeDetectorConstruction*);
|
||||
virtual ~LXeEventAction();
|
||||
public:
|
||||
void BeginOfEventAction(const G4Event*) override;
|
||||
void EndOfEventAction(const G4Event*) override;
|
||||
|
||||
public:
|
||||
void SetEventVerbose(G4int v) { fVerbose = v; }
|
||||
|
||||
virtual void BeginOfEventAction(const G4Event*);
|
||||
virtual void EndOfEventAction(const G4Event*);
|
||||
void SetPMTThreshold(G4int t) { fPMTThreshold = t; }
|
||||
|
||||
void SetEventVerbose(G4int v){fVerbose=v;}
|
||||
void SetForceDrawPhotons(G4bool b) { fForcedrawphotons = b; }
|
||||
void SetForceDrawNoPhotons(G4bool b) { fForcenophotons = b; }
|
||||
|
||||
void SetPMTThreshold(G4int t){fPMTThreshold=t;}
|
||||
void IncPhotonCount_Scint() { ++fPhotonCount_Scint; }
|
||||
void IncPhotonCount_Ceren() { ++fPhotonCount_Ceren; }
|
||||
void IncEDep(G4double dep) { fTotE += dep; }
|
||||
void IncAbsorption() { ++fAbsorptionCount; }
|
||||
void IncBoundaryAbsorption() { ++fBoundaryAbsorptionCount; }
|
||||
void IncHitCount(G4int i = 1) { fHitCount += i; }
|
||||
|
||||
void SetForceDrawPhotons(G4bool b){fForcedrawphotons=b;}
|
||||
void SetForceDrawNoPhotons(G4bool b){fForcenophotons=b;}
|
||||
void SetEWeightPos(const G4ThreeVector& p) { fEWeightPos = p; }
|
||||
void SetReconPos(const G4ThreeVector& p) { fReconPos = p; }
|
||||
void SetConvPos(const G4ThreeVector& p)
|
||||
{
|
||||
fConvPos = p;
|
||||
fConvPosSet = true;
|
||||
}
|
||||
void SetPosMax(const G4ThreeVector& p, G4double edep)
|
||||
{
|
||||
fPosMax = p;
|
||||
fEdepMax = edep;
|
||||
}
|
||||
|
||||
void IncPhotonCount_Scint(){fPhotonCount_Scint++;}
|
||||
void IncPhotonCount_Ceren(){fPhotonCount_Ceren++;}
|
||||
void IncEDep(G4double dep){fTotE+=dep;}
|
||||
void IncAbsorption(){fAbsorptionCount++;}
|
||||
void IncBoundaryAbsorption(){fBoundaryAbsorptionCount++;}
|
||||
void IncHitCount(G4int i=1){fHitCount+=i;}
|
||||
G4int GetPhotonCount_Scint() const { return fPhotonCount_Scint; }
|
||||
G4int GetPhotonCount_Ceren() const { return fPhotonCount_Ceren; }
|
||||
G4int GetHitCount() const { return fHitCount; }
|
||||
G4double GetEDep() const { return fTotE; }
|
||||
G4int GetAbsorptionCount() const { return fAbsorptionCount; }
|
||||
G4int GetBoundaryAbsorptionCount() const { return fBoundaryAbsorptionCount; }
|
||||
|
||||
void SetEWeightPos(const G4ThreeVector& p){fEWeightPos=p;}
|
||||
void SetReconPos(const G4ThreeVector& p){fReconPos=p;}
|
||||
void SetConvPos(const G4ThreeVector& p){fConvPos=p;fConvPosSet=true;}
|
||||
void SetPosMax(const G4ThreeVector& p,G4double edep) {
|
||||
fPosMax = p;
|
||||
fEdepMax = edep;
|
||||
}
|
||||
G4ThreeVector GetEWeightPos() { return fEWeightPos; }
|
||||
G4ThreeVector GetReconPos() { return fReconPos; }
|
||||
G4ThreeVector GetConvPos() { return fConvPos; }
|
||||
G4ThreeVector GetPosMax() { return fPosMax; }
|
||||
G4double GetEDepMax() { return fEdepMax; }
|
||||
G4double IsConvPosSet() { return fConvPosSet; }
|
||||
|
||||
G4int GetPhotonCount_Scint()const {return fPhotonCount_Scint;}
|
||||
G4int GetPhotonCount_Ceren()const {return fPhotonCount_Ceren;}
|
||||
G4int GetHitCount()const {return fHitCount;}
|
||||
G4double GetEDep()const {return fTotE;}
|
||||
G4int GetAbsorptionCount()const {return fAbsorptionCount;}
|
||||
G4int GetBoundaryAbsorptionCount() const {return fBoundaryAbsorptionCount;}
|
||||
// Gets the total photon count produced
|
||||
G4int GetPhotonCount() { return fPhotonCount_Scint + fPhotonCount_Ceren; }
|
||||
|
||||
G4ThreeVector GetEWeightPos(){return fEWeightPos;}
|
||||
G4ThreeVector GetReconPos(){return fReconPos;}
|
||||
G4ThreeVector GetConvPos(){return fConvPos;}
|
||||
G4ThreeVector GetPosMax(){return fPosMax;}
|
||||
G4double GetEDepMax(){return fEdepMax;}
|
||||
G4double IsConvPosSet(){return fConvPosSet;}
|
||||
void IncPMTSAboveThreshold() { ++fPMTsAboveThreshold; }
|
||||
G4int GetPMTSAboveThreshold() { return fPMTsAboveThreshold; }
|
||||
|
||||
//Gets the total photon count produced
|
||||
G4int GetPhotonCount(){return fPhotonCount_Scint+fPhotonCount_Ceren;}
|
||||
private:
|
||||
LXeEventMessenger* fEventMessenger;
|
||||
const LXeDetectorConstruction* fDetector;
|
||||
|
||||
void IncPMTSAboveThreshold(){fPMTsAboveThreshold++;}
|
||||
G4int GetPMTSAboveThreshold(){return fPMTsAboveThreshold;}
|
||||
G4int fScintCollID;
|
||||
G4int fPMTCollID;
|
||||
|
||||
private:
|
||||
G4int fVerbose;
|
||||
|
||||
LXeEventMessenger* fEventMessenger;
|
||||
const LXeDetectorConstruction* fDetector;
|
||||
G4int fPMTThreshold;
|
||||
|
||||
G4int fScintCollID;
|
||||
G4int fPMTCollID;
|
||||
G4bool fForcedrawphotons;
|
||||
G4bool fForcenophotons;
|
||||
|
||||
G4int fVerbose;
|
||||
G4int fHitCount;
|
||||
G4int fPhotonCount_Scint;
|
||||
G4int fPhotonCount_Ceren;
|
||||
G4int fAbsorptionCount;
|
||||
G4int fBoundaryAbsorptionCount;
|
||||
|
||||
G4int fPMTThreshold;
|
||||
G4double fTotE;
|
||||
|
||||
G4bool fForcedrawphotons;
|
||||
G4bool fForcenophotons;
|
||||
// These only have meaning if totE > 0
|
||||
// If totE = 0 then these won't be set by EndOfEventAction
|
||||
G4ThreeVector fEWeightPos;
|
||||
G4ThreeVector fReconPos; // Also relies on hitCount>0
|
||||
G4ThreeVector fConvPos; // true (initial) converstion position
|
||||
G4bool fConvPosSet;
|
||||
G4ThreeVector fPosMax;
|
||||
G4double fEdepMax;
|
||||
|
||||
G4int fHitCount;
|
||||
G4int fPhotonCount_Scint;
|
||||
G4int fPhotonCount_Ceren;
|
||||
G4int fAbsorptionCount;
|
||||
G4int fBoundaryAbsorptionCount;
|
||||
|
||||
G4double fTotE;
|
||||
|
||||
//These only have meaning if totE > 0
|
||||
//If totE = 0 then these wont be set by EndOfEventAction
|
||||
G4ThreeVector fEWeightPos;
|
||||
G4ThreeVector fReconPos; //Also relies on hitCount>0
|
||||
G4ThreeVector fConvPos;//true (initial) converstion position
|
||||
G4bool fConvPosSet;
|
||||
G4ThreeVector fPosMax;
|
||||
G4double fEdepMax;
|
||||
|
||||
G4int fPMTsAboveThreshold;
|
||||
G4int fPMTsAboveThreshold;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,29 +31,27 @@
|
||||
#ifndef LXeEventMessenger_h
|
||||
#define LXeEventMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class LXeEventAction;
|
||||
class G4UIcmdWithAnInteger;
|
||||
class G4UIcmdWithABool;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
class LXeEventMessenger: public G4UImessenger
|
||||
class LXeEventMessenger : public G4UImessenger
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeEventMessenger(LXeEventAction*);
|
||||
~LXeEventMessenger();
|
||||
|
||||
LXeEventMessenger(LXeEventAction*);
|
||||
virtual ~LXeEventMessenger();
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
void SetNewValue(G4UIcommand*, G4String) override;
|
||||
|
||||
LXeEventAction* fLXeEvent;
|
||||
G4UIcmdWithAnInteger* fVerboseCmd;
|
||||
G4UIcmdWithAnInteger* fPmtThresholdCmd;
|
||||
G4UIcmdWithABool* fForceDrawPhotonsCmd;
|
||||
G4UIcmdWithABool* fForceDrawNoPhotonsCmd;
|
||||
private:
|
||||
LXeEventAction* fLXeEvent;
|
||||
G4UIcmdWithAnInteger* fVerboseCmd;
|
||||
G4UIcmdWithAnInteger* fPmtThresholdCmd;
|
||||
G4UIcmdWithABool* fForceDrawPhotonsCmd;
|
||||
G4UIcmdWithABool* fForceDrawNoPhotonsCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/// \brief Definition of the LXeHistoManager class
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -38,21 +38,21 @@
|
||||
|
||||
#include "g4root.hh"
|
||||
//#include "g4xml.hh"
|
||||
//#include "g4csv.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class LXeHistoManager
|
||||
{
|
||||
public:
|
||||
LXeHistoManager();
|
||||
~LXeHistoManager();
|
||||
public:
|
||||
LXeHistoManager();
|
||||
~LXeHistoManager();
|
||||
|
||||
private:
|
||||
void Book();
|
||||
G4String fFileName;
|
||||
private:
|
||||
void Book();
|
||||
G4String fFileName;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -27,81 +27,72 @@
|
||||
/// \file optical/LXe/include/LXeMainVolume.hh
|
||||
/// \brief Definition of the LXeMainVolume class
|
||||
//
|
||||
#ifndef LXeMainVolume_H
|
||||
#define LXeMainVolume_H 1
|
||||
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4OpticalSurface.hh"
|
||||
#ifndef LXeMainVolume_h
|
||||
#define LXeMainVolume_h 1
|
||||
|
||||
#include "LXeDetectorConstruction.hh"
|
||||
|
||||
#include "G4PVPlacement.hh"
|
||||
|
||||
class G4Box;
|
||||
class G4LogicalVolume;
|
||||
class G4Sphere;
|
||||
class G4Tubs;
|
||||
|
||||
class LXeMainVolume : public G4PVPlacement
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeMainVolume(G4RotationMatrix* pRot, const G4ThreeVector& tlate,
|
||||
G4LogicalVolume* pMotherLogical, G4bool pMany, G4int pCopyNo,
|
||||
LXeDetectorConstruction* c);
|
||||
|
||||
LXeMainVolume(G4RotationMatrix *pRot,
|
||||
const G4ThreeVector &tlate,
|
||||
G4LogicalVolume *pMotherLogical,
|
||||
G4bool pMany,
|
||||
G4int pCopyNo,
|
||||
LXeDetectorConstruction* c);
|
||||
G4LogicalVolume* GetLogPhotoCath() { return fPhotocath_log; }
|
||||
G4LogicalVolume* GetLogScint() { return fScint_log; }
|
||||
|
||||
G4LogicalVolume* GetLogPhotoCath() {return fPhotocath_log;}
|
||||
G4LogicalVolume* GetLogScint() {return fScint_log;}
|
||||
std::vector<G4ThreeVector> GetPmtPositions() { return fPmtPositions; }
|
||||
|
||||
std::vector<G4ThreeVector> GetPmtPositions() {return fPmtPositions;}
|
||||
private:
|
||||
void VisAttributes();
|
||||
void SurfaceProperties();
|
||||
|
||||
private:
|
||||
void PlacePMTs(G4LogicalVolume* pmt_Log, G4RotationMatrix* rot, G4double& a,
|
||||
G4double& b, G4double da, G4double db, G4double amin,
|
||||
G4double bmin, G4int na, G4int nb, G4double& x, G4double& y,
|
||||
G4double& z, G4int& k);
|
||||
|
||||
void VisAttributes();
|
||||
void SurfaceProperties();
|
||||
void CopyValues();
|
||||
|
||||
void PlacePMTs(G4LogicalVolume* pmt_Log,
|
||||
G4RotationMatrix* rot,
|
||||
G4double &a, G4double &b, G4double da,
|
||||
G4double db, G4double amin, G4double bmin,
|
||||
G4int na, G4int nb,
|
||||
G4double &x, G4double &y, G4double &z, G4int &k);
|
||||
LXeDetectorConstruction* fConstructor;
|
||||
|
||||
void CopyValues();
|
||||
G4double fScint_x;
|
||||
G4double fScint_y;
|
||||
G4double fScint_z;
|
||||
G4double fD_mtl;
|
||||
G4int fNx;
|
||||
G4int fNy;
|
||||
G4int fNz;
|
||||
G4double fOuterRadius_pmt;
|
||||
G4bool fSphereOn;
|
||||
G4double fRefl;
|
||||
|
||||
LXeDetectorConstruction* fConstructor;
|
||||
// Basic Volumes
|
||||
//
|
||||
G4Box* fScint_box;
|
||||
G4Box* fHousing_box;
|
||||
G4Tubs* fPmt;
|
||||
G4Tubs* fPhotocath;
|
||||
G4Sphere* fSphere;
|
||||
|
||||
G4double fScint_x;
|
||||
G4double fScint_y;
|
||||
G4double fScint_z;
|
||||
G4double fD_mtl;
|
||||
G4int fNx;
|
||||
G4int fNy;
|
||||
G4int fNz;
|
||||
G4double fOuterRadius_pmt;
|
||||
G4bool fSphereOn;
|
||||
G4double fRefl;
|
||||
|
||||
//Basic Volumes
|
||||
//
|
||||
G4Box* fScint_box;
|
||||
G4Box* fHousing_box;
|
||||
G4Tubs* fPmt;
|
||||
G4Tubs* fPhotocath;
|
||||
G4Sphere* fSphere;
|
||||
|
||||
// Logical volumes
|
||||
//
|
||||
G4LogicalVolume* fScint_log;
|
||||
G4LogicalVolume* fHousing_log;
|
||||
G4LogicalVolume* fPmt_log;
|
||||
G4LogicalVolume* fPhotocath_log;
|
||||
G4LogicalVolume* fSphere_log;
|
||||
|
||||
// Sensitive Detectors positions
|
||||
std::vector<G4ThreeVector> fPmtPositions;
|
||||
// Logical volumes
|
||||
//
|
||||
G4LogicalVolume* fScint_log;
|
||||
G4LogicalVolume* fHousing_log;
|
||||
G4LogicalVolume* fPmt_log;
|
||||
G4LogicalVolume* fPhotocath_log;
|
||||
G4LogicalVolume* fSphere_log;
|
||||
|
||||
// Sensitive Detectors positions
|
||||
std::vector<G4ThreeVector> fPmtPositions;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,75 +31,71 @@
|
||||
#ifndef LXePMTHit_h
|
||||
#define LXePMTHit_h 1
|
||||
|
||||
#include "G4VHit.hh"
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4VHit.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
|
||||
#include "tls.hh"
|
||||
|
||||
class G4VTouchable;
|
||||
|
||||
class LXePMTHit : public G4VHit
|
||||
{
|
||||
public:
|
||||
|
||||
LXePMTHit();
|
||||
virtual ~LXePMTHit();
|
||||
LXePMTHit(const LXePMTHit &right);
|
||||
public:
|
||||
LXePMTHit();
|
||||
LXePMTHit(const LXePMTHit& right);
|
||||
~LXePMTHit();
|
||||
|
||||
const LXePMTHit& operator=(const LXePMTHit &right);
|
||||
G4bool operator==(const LXePMTHit &right) const;
|
||||
const LXePMTHit& operator=(const LXePMTHit& right);
|
||||
G4bool operator==(const LXePMTHit& right) const;
|
||||
|
||||
inline void *operator new(size_t);
|
||||
inline void operator delete(void *aHit);
|
||||
|
||||
virtual void Draw();
|
||||
virtual void Print();
|
||||
inline void* operator new(size_t);
|
||||
inline void operator delete(void* aHit);
|
||||
|
||||
inline void SetDrawit(G4bool b){fDrawit=b;}
|
||||
inline G4bool GetDrawit(){return fDrawit;}
|
||||
virtual void Draw();
|
||||
virtual void Print();
|
||||
|
||||
inline void IncPhotonCount(){fPhotons++;}
|
||||
inline G4int GetPhotonCount(){return fPhotons;}
|
||||
inline void SetDrawit(G4bool b) { fDrawit = b; }
|
||||
inline G4bool GetDrawit() { return fDrawit; }
|
||||
|
||||
inline void SetPMTNumber(G4int n) { fPmtNumber = n; }
|
||||
inline G4int GetPMTNumber() { return fPmtNumber; }
|
||||
inline void IncPhotonCount() { ++fPhotons; }
|
||||
inline G4int GetPhotonCount() { return fPhotons; }
|
||||
|
||||
inline void SetPMTPhysVol(G4VPhysicalVolume* physVol){this->fPhysVol=physVol;}
|
||||
inline G4VPhysicalVolume* GetPMTPhysVol(){return fPhysVol;}
|
||||
inline void SetPMTNumber(G4int n) { fPmtNumber = n; }
|
||||
inline G4int GetPMTNumber() { return fPmtNumber; }
|
||||
|
||||
inline void SetPMTPos(G4double x,G4double y,G4double z){
|
||||
fPos=G4ThreeVector(x,y,z);
|
||||
}
|
||||
|
||||
inline G4ThreeVector GetPMTPos(){return fPos;}
|
||||
inline void SetPMTPhysVol(G4VPhysicalVolume* physVol)
|
||||
{
|
||||
this->fPhysVol = physVol;
|
||||
}
|
||||
inline G4VPhysicalVolume* GetPMTPhysVol() { return fPhysVol; }
|
||||
|
||||
private:
|
||||
inline void SetPMTPos(G4double x, G4double y, G4double z)
|
||||
{
|
||||
fPos = G4ThreeVector(x, y, z);
|
||||
}
|
||||
|
||||
G4int fPmtNumber;
|
||||
G4int fPhotons;
|
||||
G4ThreeVector fPos;
|
||||
G4VPhysicalVolume* fPhysVol;
|
||||
G4bool fDrawit;
|
||||
inline G4ThreeVector GetPMTPos() { return fPos; }
|
||||
|
||||
private:
|
||||
G4int fPmtNumber;
|
||||
G4int fPhotons;
|
||||
G4ThreeVector fPos;
|
||||
G4VPhysicalVolume* fPhysVol;
|
||||
G4bool fDrawit;
|
||||
};
|
||||
|
||||
typedef G4THitsCollection<LXePMTHit> LXePMTHitsCollection;
|
||||
|
||||
extern G4ThreadLocal G4Allocator<LXePMTHit>* LXePMTHitAllocator;
|
||||
|
||||
inline void* LXePMTHit::operator new(size_t){
|
||||
inline void* LXePMTHit::operator new(size_t)
|
||||
{
|
||||
if(!LXePMTHitAllocator)
|
||||
LXePMTHitAllocator = new G4Allocator<LXePMTHit>;
|
||||
return (void *) LXePMTHitAllocator->MallocSingle();
|
||||
LXePMTHitAllocator = new G4Allocator<LXePMTHit>;
|
||||
return (void*) LXePMTHitAllocator->MallocSingle();
|
||||
}
|
||||
|
||||
inline void LXePMTHit::operator delete(void *aHit){
|
||||
inline void LXePMTHit::operator delete(void* aHit)
|
||||
{
|
||||
LXePMTHitAllocator->FreeSingle((LXePMTHit*) aHit);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,54 +31,53 @@
|
||||
#ifndef LXePMTSD_h
|
||||
#define LXePMTSD_h 1
|
||||
|
||||
#include "G4DataVector.hh"
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
#include "LXePMTHit.hh"
|
||||
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class G4Step;
|
||||
class G4DataVector;
|
||||
class G4HCofThisEvent;
|
||||
class G4Step;
|
||||
|
||||
class LXePMTSD : public G4VSensitiveDetector
|
||||
{
|
||||
public:
|
||||
LXePMTSD(G4String name);
|
||||
~LXePMTSD();
|
||||
|
||||
public:
|
||||
void Initialize(G4HCofThisEvent*) override;
|
||||
G4bool ProcessHits(G4Step* aStep, G4TouchableHistory*) override;
|
||||
|
||||
LXePMTSD(G4String name);
|
||||
virtual ~LXePMTSD();
|
||||
|
||||
virtual void Initialize(G4HCofThisEvent* );
|
||||
virtual G4bool ProcessHits(G4Step* aStep, G4TouchableHistory* );
|
||||
|
||||
//A version of processHits that keeps aStep constant
|
||||
G4bool ProcessHits_constStep(const G4Step* ,
|
||||
G4TouchableHistory* );
|
||||
virtual void EndOfEvent(G4HCofThisEvent* );
|
||||
virtual void clear();
|
||||
void DrawAll();
|
||||
void PrintAll();
|
||||
|
||||
//Initialize the arrays to store pmt possitions
|
||||
inline void InitPMTs(){
|
||||
if(fPMTPositionsX)delete fPMTPositionsX;
|
||||
if(fPMTPositionsY)delete fPMTPositionsY;
|
||||
if(fPMTPositionsZ)delete fPMTPositionsZ;
|
||||
fPMTPositionsX = new G4DataVector();
|
||||
fPMTPositionsY = new G4DataVector();
|
||||
fPMTPositionsZ = new G4DataVector();
|
||||
}
|
||||
// A version of processHits active on boundary
|
||||
G4bool ProcessHits_boundary(const G4Step*, G4TouchableHistory*);
|
||||
|
||||
//Store a pmt position
|
||||
void SetPmtPositions(const std::vector<G4ThreeVector>& positions);
|
||||
// Initialize the arrays to store pmt possitions
|
||||
inline void InitPMTs()
|
||||
{
|
||||
if(fPMTPositionsX)
|
||||
delete fPMTPositionsX;
|
||||
if(fPMTPositionsY)
|
||||
delete fPMTPositionsY;
|
||||
if(fPMTPositionsZ)
|
||||
delete fPMTPositionsZ;
|
||||
fPMTPositionsX = new G4DataVector();
|
||||
fPMTPositionsY = new G4DataVector();
|
||||
fPMTPositionsZ = new G4DataVector();
|
||||
}
|
||||
|
||||
private:
|
||||
// Store a pmt position
|
||||
void SetPmtPositions(const std::vector<G4ThreeVector>& positions);
|
||||
|
||||
LXePMTHitsCollection* fPMTHitCollection;
|
||||
private:
|
||||
LXePMTHitsCollection* fPMTHitCollection;
|
||||
|
||||
G4DataVector* fPMTPositionsX;
|
||||
G4DataVector* fPMTPositionsY;
|
||||
G4DataVector* fPMTPositionsZ;
|
||||
G4DataVector* fPMTPositionsX;
|
||||
G4DataVector* fPMTPositionsY;
|
||||
G4DataVector* fPMTPositionsZ;
|
||||
|
||||
G4int fHitCID;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -38,18 +38,14 @@ class G4Event;
|
||||
|
||||
class LXePrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXePrimaryGeneratorAction();
|
||||
~LXePrimaryGeneratorAction();
|
||||
|
||||
LXePrimaryGeneratorAction();
|
||||
virtual ~LXePrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent) override;
|
||||
|
||||
virtual void GeneratePrimaries(G4Event* anEvent);
|
||||
|
||||
private:
|
||||
|
||||
G4ParticleGun* fParticleGun;
|
||||
private:
|
||||
G4ParticleGun* fParticleGun;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -33,60 +33,73 @@
|
||||
#ifndef LXeRun_h
|
||||
#define LXeRun_h 1
|
||||
|
||||
#include "G4Run.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4Run.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
class LXeRun : public G4Run
|
||||
{
|
||||
public:
|
||||
LXeRun();
|
||||
~LXeRun();
|
||||
public:
|
||||
LXeRun();
|
||||
~LXeRun();
|
||||
|
||||
void IncPhotonCount_Scint(G4int count) {
|
||||
fPhotonCount_Scint += count;
|
||||
fPhotonCount_Scint2 += count*count;
|
||||
}
|
||||
void IncPhotonCount_Ceren(G4int count) {
|
||||
fPhotonCount_Ceren += count;
|
||||
fPhotonCount_Ceren2 += count*count;
|
||||
}
|
||||
void IncEDep(G4double dep) {
|
||||
fTotE += dep;
|
||||
fTotE2 += dep*dep;
|
||||
}
|
||||
void IncAbsorption(G4int count) {
|
||||
fAbsorptionCount += count;
|
||||
fAbsorptionCount2 += count*count;
|
||||
}
|
||||
void IncBoundaryAbsorption(G4int count) {
|
||||
fBoundaryAbsorptionCount += count;
|
||||
fBoundaryAbsorptionCount2 += count*count;
|
||||
}
|
||||
void IncHitCount(G4int count) {
|
||||
fHitCount += count;
|
||||
fHitCount2 += count*count;
|
||||
}
|
||||
void IncHitsAboveThreshold(G4int count) {
|
||||
fPMTsAboveThreshold += count;
|
||||
fPMTsAboveThreshold2 += count*count;
|
||||
}
|
||||
void IncPhotonCount_Scint(G4int count)
|
||||
{
|
||||
fPhotonCount_Scint += count;
|
||||
fPhotonCount_Scint2 += count * count;
|
||||
}
|
||||
void IncPhotonCount_Ceren(G4int count)
|
||||
{
|
||||
fPhotonCount_Ceren += count;
|
||||
fPhotonCount_Ceren2 += count * count;
|
||||
}
|
||||
void IncEDep(G4double dep)
|
||||
{
|
||||
fTotE += dep;
|
||||
fTotE2 += dep * dep;
|
||||
}
|
||||
void IncAbsorption(G4int count)
|
||||
{
|
||||
fAbsorptionCount += count;
|
||||
fAbsorptionCount2 += count * count;
|
||||
}
|
||||
void IncBoundaryAbsorption(G4int count)
|
||||
{
|
||||
fBoundaryAbsorptionCount += count;
|
||||
fBoundaryAbsorptionCount2 += count * count;
|
||||
}
|
||||
void IncHitCount(G4int count)
|
||||
{
|
||||
fHitCount += count;
|
||||
fHitCount2 += count * count;
|
||||
}
|
||||
void IncHitsAboveThreshold(G4int count)
|
||||
{
|
||||
fPMTsAboveThreshold += count;
|
||||
fPMTsAboveThreshold2 += count * count;
|
||||
}
|
||||
|
||||
virtual void Merge(const G4Run* run);
|
||||
void Merge(const G4Run* run) override;
|
||||
|
||||
void EndOfRun();
|
||||
void EndOfRun();
|
||||
|
||||
private:
|
||||
G4int fHitCount;
|
||||
G4int fHitCount2;
|
||||
G4int fPhotonCount_Scint;
|
||||
G4int fPhotonCount_Scint2;
|
||||
G4int fPhotonCount_Ceren;
|
||||
G4int fPhotonCount_Ceren2;
|
||||
G4int fAbsorptionCount;
|
||||
G4int fAbsorptionCount2;
|
||||
G4int fBoundaryAbsorptionCount;
|
||||
G4int fBoundaryAbsorptionCount2;
|
||||
G4int fPMTsAboveThreshold;
|
||||
G4int fPMTsAboveThreshold2;
|
||||
|
||||
private:
|
||||
G4int fHitCount, fHitCount2;
|
||||
G4int fPhotonCount_Scint, fPhotonCount_Scint2;
|
||||
G4int fPhotonCount_Ceren, fPhotonCount_Ceren2;
|
||||
G4int fAbsorptionCount, fAbsorptionCount2;
|
||||
G4int fBoundaryAbsorptionCount, fBoundaryAbsorptionCount2;
|
||||
G4int fPMTsAboveThreshold, fPMTsAboveThreshold2;
|
||||
|
||||
G4double fTotE, fTotE2;
|
||||
G4double fTotE;
|
||||
G4double fTotE2;
|
||||
};
|
||||
|
||||
#endif // LXeRun_h
|
||||
#endif // LXeRun_h
|
||||
|
||||
@@ -31,27 +31,26 @@
|
||||
#include "G4UserRunAction.hh"
|
||||
|
||||
#ifndef LXeRunAction_h
|
||||
#define LXeRunAction_h 1
|
||||
# define LXeRunAction_h 1
|
||||
|
||||
class LXeRun;
|
||||
class LXeHistoManager;
|
||||
|
||||
class G4Run;
|
||||
|
||||
class LXeRunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeRunAction();
|
||||
~LXeRunAction();
|
||||
|
||||
LXeRunAction();
|
||||
virtual ~LXeRunAction();
|
||||
G4Run* GenerateRun() override;
|
||||
void BeginOfRunAction(const G4Run*) override;
|
||||
void EndOfRunAction(const G4Run*) override;
|
||||
|
||||
virtual G4Run* GenerateRun();
|
||||
virtual void BeginOfRunAction(const G4Run*);
|
||||
virtual void EndOfRunAction(const G4Run*);
|
||||
|
||||
private:
|
||||
|
||||
LXeRun* fRun;
|
||||
LXeHistoManager* fHistoManager;
|
||||
private:
|
||||
LXeRun* fRun;
|
||||
LXeHistoManager* fHistoManager;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -35,44 +35,35 @@
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
|
||||
#include "tls.hh"
|
||||
|
||||
class LXeScintHit : public G4VHit
|
||||
{
|
||||
public:
|
||||
|
||||
LXeScintHit();
|
||||
LXeScintHit(G4VPhysicalVolume* pVol);
|
||||
virtual ~LXeScintHit();
|
||||
LXeScintHit(const LXeScintHit &right);
|
||||
const LXeScintHit& operator=(const LXeScintHit &right);
|
||||
G4bool operator==(const LXeScintHit &right) const;
|
||||
public:
|
||||
LXeScintHit();
|
||||
LXeScintHit(G4VPhysicalVolume* pVol);
|
||||
~LXeScintHit();
|
||||
|
||||
inline void *operator new(size_t);
|
||||
inline void operator delete(void *aHit);
|
||||
|
||||
virtual void Draw();
|
||||
virtual void Print();
|
||||
LXeScintHit(const LXeScintHit& right);
|
||||
const LXeScintHit& operator=(const LXeScintHit& right);
|
||||
G4bool operator==(const LXeScintHit& right) const;
|
||||
|
||||
inline void SetEdep(G4double de) { fEdep = de; }
|
||||
inline void AddEdep(G4double de) { fEdep += de; }
|
||||
inline G4double GetEdep() { return fEdep; }
|
||||
inline void* operator new(size_t);
|
||||
inline void operator delete(void* aHit);
|
||||
|
||||
inline void SetPos(G4ThreeVector xyz) { fPos = xyz; }
|
||||
inline G4ThreeVector GetPos() { return fPos; }
|
||||
inline void SetEdep(G4double de) { fEdep = de; }
|
||||
inline void AddEdep(G4double de) { fEdep += de; }
|
||||
inline G4double GetEdep() { return fEdep; }
|
||||
|
||||
inline const G4VPhysicalVolume * GetPhysV() { return fPhysVol; }
|
||||
inline void SetPos(G4ThreeVector xyz) { fPos = xyz; }
|
||||
inline G4ThreeVector GetPos() { return fPos; }
|
||||
|
||||
private:
|
||||
G4double fEdep;
|
||||
G4ThreeVector fPos;
|
||||
const G4VPhysicalVolume* fPhysVol;
|
||||
inline const G4VPhysicalVolume* GetPhysV() { return fPhysVol; }
|
||||
|
||||
private:
|
||||
G4double fEdep;
|
||||
G4ThreeVector fPos;
|
||||
const G4VPhysicalVolume* fPhysVol;
|
||||
};
|
||||
|
||||
typedef G4THitsCollection<LXeScintHit> LXeScintHitsCollection;
|
||||
@@ -82,11 +73,11 @@ extern G4ThreadLocal G4Allocator<LXeScintHit>* LXeScintHitAllocator;
|
||||
inline void* LXeScintHit::operator new(size_t)
|
||||
{
|
||||
if(!LXeScintHitAllocator)
|
||||
LXeScintHitAllocator = new G4Allocator<LXeScintHit>;
|
||||
return (void *) LXeScintHitAllocator->MallocSingle();
|
||||
LXeScintHitAllocator = new G4Allocator<LXeScintHit>;
|
||||
return (void*) LXeScintHitAllocator->MallocSingle();
|
||||
}
|
||||
|
||||
inline void LXeScintHit::operator delete(void *aHit)
|
||||
inline void LXeScintHit::operator delete(void* aHit)
|
||||
{
|
||||
LXeScintHitAllocator->FreeSingle((LXeScintHit*) aHit);
|
||||
}
|
||||
|
||||
@@ -40,22 +40,16 @@ class G4HCofThisEvent;
|
||||
|
||||
class LXeScintSD : public G4VSensitiveDetector
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeScintSD(G4String name);
|
||||
~LXeScintSD();
|
||||
|
||||
LXeScintSD(G4String name);
|
||||
virtual ~LXeScintSD();
|
||||
void Initialize(G4HCofThisEvent*) override;
|
||||
G4bool ProcessHits(G4Step* aStep, G4TouchableHistory*) override;
|
||||
|
||||
virtual void Initialize(G4HCofThisEvent* );
|
||||
virtual G4bool ProcessHits(G4Step* aStep, G4TouchableHistory* );
|
||||
virtual void EndOfEvent(G4HCofThisEvent* );
|
||||
virtual void clear();
|
||||
virtual void DrawAll();
|
||||
virtual void PrintAll();
|
||||
|
||||
private:
|
||||
|
||||
LXeScintHitsCollection* fScintCollection;
|
||||
|
||||
private:
|
||||
LXeScintHitsCollection* fScintCollection;
|
||||
G4int fHitsCID;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -28,27 +28,23 @@
|
||||
/// \brief Definition of the LXeStackingAction class
|
||||
//
|
||||
//
|
||||
#ifndef LXeStackingAction_H
|
||||
#define LXeStackingAction_H 1
|
||||
#ifndef LXeStackingAction_h
|
||||
#define LXeStackingAction_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UserStackingAction.hh"
|
||||
|
||||
class LXeEventAction;
|
||||
|
||||
class LXeStackingAction : public G4UserStackingAction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeStackingAction(LXeEventAction*);
|
||||
~LXeStackingAction();
|
||||
|
||||
LXeStackingAction(LXeEventAction*);
|
||||
virtual ~LXeStackingAction();
|
||||
|
||||
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
|
||||
virtual void NewStage();
|
||||
virtual void PrepareNewEvent();
|
||||
|
||||
private:
|
||||
LXeEventAction* fEventAction;
|
||||
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack) override;
|
||||
|
||||
private:
|
||||
LXeEventAction* fEventAction;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -27,13 +27,12 @@
|
||||
/// \file optical/LXe/include/LXeSteppingAction.hh
|
||||
/// \brief Definition of the LXeSteppingAction class
|
||||
//
|
||||
#ifndef LXeSteppingAction_H
|
||||
#define LXeSteppingACtion_H 1
|
||||
#ifndef LXeSteppingAction_h
|
||||
#define LXeSteppingACtion_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UserSteppingAction.hh"
|
||||
|
||||
#include "G4OpBoundaryProcess.hh"
|
||||
#include "G4UserSteppingAction.hh"
|
||||
|
||||
class LXeEventAction;
|
||||
class LXeTrackingAction;
|
||||
@@ -41,22 +40,21 @@ class LXeSteppingMessenger;
|
||||
|
||||
class LXeSteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeSteppingAction(LXeEventAction*);
|
||||
~LXeSteppingAction();
|
||||
|
||||
LXeSteppingAction(LXeEventAction*);
|
||||
virtual ~LXeSteppingAction();
|
||||
virtual void UserSteppingAction(const G4Step*);
|
||||
void UserSteppingAction(const G4Step*) override;
|
||||
|
||||
void SetOneStepPrimaries(G4bool b){fOneStepPrimaries=b;}
|
||||
G4bool GetOneStepPrimaries(){return fOneStepPrimaries;}
|
||||
|
||||
private:
|
||||
void SetOneStepPrimaries(G4bool b) { fOneStepPrimaries = b; }
|
||||
G4bool GetOneStepPrimaries() { return fOneStepPrimaries; }
|
||||
|
||||
G4bool fOneStepPrimaries;
|
||||
LXeSteppingMessenger* fSteppingMessenger;
|
||||
LXeEventAction* fEventAction;
|
||||
private:
|
||||
G4bool fOneStepPrimaries;
|
||||
LXeSteppingMessenger* fSteppingMessenger;
|
||||
LXeEventAction* fEventAction;
|
||||
|
||||
G4OpBoundaryProcessStatus fExpectedNextStatus;
|
||||
G4OpBoundaryProcessStatus fExpectedNextStatus;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -32,24 +32,22 @@
|
||||
#define LXeSteppingMessenger_h 1
|
||||
|
||||
#include "G4UImessenger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class LXeSteppingAction;
|
||||
|
||||
class G4UIcmdWithABool;
|
||||
|
||||
class LXeSteppingMessenger: public G4UImessenger
|
||||
class LXeSteppingMessenger : public G4UImessenger
|
||||
{
|
||||
public:
|
||||
LXeSteppingMessenger(LXeSteppingAction*);
|
||||
virtual ~LXeSteppingMessenger();
|
||||
|
||||
virtual void SetNewValue(G4UIcommand*, G4String);
|
||||
public:
|
||||
LXeSteppingMessenger(LXeSteppingAction*);
|
||||
~LXeSteppingMessenger();
|
||||
|
||||
private:
|
||||
void SetNewValue(G4UIcommand*, G4String) override;
|
||||
|
||||
LXeSteppingAction* fStepping;
|
||||
G4UIcmdWithABool* fOneStepPrimariesCmd;
|
||||
|
||||
private:
|
||||
LXeSteppingAction* fStepping;
|
||||
G4UIcmdWithABool* fOneStepPrimariesCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,21 +31,19 @@
|
||||
#ifndef LXeTrackingAction_h
|
||||
#define LXeTrackingAction_h 1
|
||||
|
||||
#include "G4UserTrackingAction.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4UserTrackingAction.hh"
|
||||
|
||||
class LXeTrackingAction : public G4UserTrackingAction {
|
||||
class LXeTrackingAction : public G4UserTrackingAction
|
||||
{
|
||||
public:
|
||||
LXeTrackingAction();
|
||||
~LXeTrackingAction(){};
|
||||
|
||||
public:
|
||||
|
||||
LXeTrackingAction();
|
||||
virtual ~LXeTrackingAction() {};
|
||||
|
||||
virtual void PreUserTrackingAction(const G4Track*);
|
||||
virtual void PostUserTrackingAction(const G4Track*);
|
||||
|
||||
private:
|
||||
void PreUserTrackingAction(const G4Track*) override;
|
||||
void PostUserTrackingAction(const G4Track*) override;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -30,43 +30,37 @@
|
||||
#ifndef LXeTrajectory_h
|
||||
#define LXeTrajectory_h 1
|
||||
|
||||
#include "G4Trajectory.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4TrajectoryPoint.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4Step.hh"
|
||||
#include "G4Trajectory.hh"
|
||||
|
||||
class G4Polyline; // Forward declaration.
|
||||
class G4Polyline;
|
||||
class G4ParticleDefinition;
|
||||
|
||||
class LXeTrajectory : public G4Trajectory
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeTrajectory();
|
||||
LXeTrajectory(const G4Track* aTrack);
|
||||
LXeTrajectory(LXeTrajectory&);
|
||||
~LXeTrajectory();
|
||||
|
||||
LXeTrajectory();
|
||||
LXeTrajectory(const G4Track* aTrack);
|
||||
LXeTrajectory(LXeTrajectory &);
|
||||
virtual ~LXeTrajectory();
|
||||
|
||||
virtual void DrawTrajectory() const;
|
||||
|
||||
inline void* operator new(size_t);
|
||||
inline void operator delete(void*);
|
||||
void DrawTrajectory() const override;
|
||||
|
||||
void SetDrawTrajectory(G4bool b){fDrawit=b;}
|
||||
void WLS(){fWls=true;}
|
||||
void SetForceDrawTrajectory(G4bool b){fForceDraw=b;}
|
||||
void SetForceNoDrawTrajectory(G4bool b){fForceNoDraw=b;}
|
||||
inline void* operator new(size_t);
|
||||
inline void operator delete(void*);
|
||||
|
||||
private:
|
||||
void SetDrawTrajectory(G4bool b) { fDrawit = b; }
|
||||
void WLS() { fWls = true; }
|
||||
void SetForceDrawTrajectory(G4bool b) { fForceDraw = b; }
|
||||
void SetForceNoDrawTrajectory(G4bool b) { fForceNoDraw = b; }
|
||||
|
||||
G4bool fWls;
|
||||
G4bool fDrawit;
|
||||
G4bool fForceNoDraw;
|
||||
G4bool fForceDraw;
|
||||
G4ParticleDefinition* fParticleDefinition;
|
||||
private:
|
||||
G4bool fWls;
|
||||
G4bool fDrawit;
|
||||
G4bool fForceNoDraw;
|
||||
G4bool fForceDraw;
|
||||
G4ParticleDefinition* fParticleDefinition;
|
||||
};
|
||||
|
||||
extern G4ThreadLocal G4Allocator<LXeTrajectory>* LXeTrajectoryAllocator;
|
||||
@@ -74,13 +68,13 @@ extern G4ThreadLocal G4Allocator<LXeTrajectory>* LXeTrajectoryAllocator;
|
||||
inline void* LXeTrajectory::operator new(size_t)
|
||||
{
|
||||
if(!LXeTrajectoryAllocator)
|
||||
LXeTrajectoryAllocator = new G4Allocator<LXeTrajectory>;
|
||||
return (void*)LXeTrajectoryAllocator->MallocSingle();
|
||||
LXeTrajectoryAllocator = new G4Allocator<LXeTrajectory>;
|
||||
return (void*) LXeTrajectoryAllocator->MallocSingle();
|
||||
}
|
||||
|
||||
inline void LXeTrajectory::operator delete(void* aTrajectory)
|
||||
{
|
||||
LXeTrajectoryAllocator->FreeSingle((LXeTrajectory*)aTrajectory);
|
||||
LXeTrajectoryAllocator->FreeSingle((LXeTrajectory*) aTrajectory);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -31,10 +31,17 @@
|
||||
#include "globals.hh"
|
||||
|
||||
#ifndef LXeUserTrackInformation_h
|
||||
#define LXeUserTrackInformation_h 1
|
||||
# define LXeUserTrackInformation_h 1
|
||||
|
||||
enum LXeTrackStatus { active=1, hitPMT=2, absorbed=4, boundaryAbsorbed=8,
|
||||
hitSphere=16, inactive=14};
|
||||
enum LXeTrackStatus
|
||||
{
|
||||
active = 1,
|
||||
hitPMT = 2,
|
||||
absorbed = 4,
|
||||
boundaryAbsorbed = 8,
|
||||
hitSphere = 16,
|
||||
inactive = 14
|
||||
};
|
||||
|
||||
/*LXeTrackStatus:
|
||||
active: still being tracked
|
||||
@@ -44,37 +51,35 @@ enum LXeTrackStatus { active=1, hitPMT=2, absorbed=4, boundaryAbsorbed=8,
|
||||
hitSphere: track hit the sphere at some point
|
||||
inactive: track is stopped for some reason
|
||||
-This is the sum of all stopped flags so can be used to remove stopped flags
|
||||
|
||||
|
||||
*/
|
||||
|
||||
class LXeUserTrackInformation : public G4VUserTrackInformation
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeUserTrackInformation();
|
||||
~LXeUserTrackInformation();
|
||||
|
||||
LXeUserTrackInformation();
|
||||
virtual ~LXeUserTrackInformation();
|
||||
// Sets the track status to s (does not check validity of flags)
|
||||
void SetTrackStatusFlags(int s) { fStatus = s; }
|
||||
// Does a smart add of track status flags (disabling old flags that conflict)
|
||||
// If s conflicts with itself it will not be detected
|
||||
void AddTrackStatusFlag(int s);
|
||||
|
||||
//Sets the track status to s (does not check validity of flags)
|
||||
void SetTrackStatusFlags(int s){fStatus=s;}
|
||||
//Does a smart add of track status flags (disabling old flags that conflict)
|
||||
//If s conflicts with itself it will not be detected
|
||||
void AddTrackStatusFlag(int s);
|
||||
|
||||
int GetTrackStatus()const {return fStatus;}
|
||||
|
||||
void IncReflections(){fReflections++;}
|
||||
G4int GetReflectionCount()const {return fReflections;}
|
||||
int GetTrackStatus() const { return fStatus; }
|
||||
|
||||
void SetForceDrawTrajectory(G4bool b){fForcedraw=b;}
|
||||
G4bool GetForceDrawTrajectory(){return fForcedraw;}
|
||||
void IncReflections() { ++fReflections; }
|
||||
G4int GetReflectionCount() const { return fReflections; }
|
||||
|
||||
inline virtual void Print() const{};
|
||||
void SetForceDrawTrajectory(G4bool b) { fForcedraw = b; }
|
||||
G4bool GetForceDrawTrajectory() { return fForcedraw; }
|
||||
|
||||
private:
|
||||
inline virtual void Print() const {};
|
||||
|
||||
int fStatus;
|
||||
G4int fReflections;
|
||||
G4bool fForcedraw;
|
||||
private:
|
||||
int fStatus;
|
||||
G4int fReflections;
|
||||
G4bool fForcedraw;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -27,55 +27,46 @@
|
||||
/// \file optical/LXe/include/LXeWLSFiber.hh
|
||||
/// \brief Definition of the LXeWLSFiber class
|
||||
//
|
||||
#ifndef LXeWLSFiber_H
|
||||
#define LXeWLSFiber_H 1
|
||||
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4Sphere.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4OpticalSurface.hh"
|
||||
#ifndef LXeWLSFiber_h
|
||||
#define LXeWLSFiber_h 1
|
||||
|
||||
#include "LXeDetectorConstruction.hh"
|
||||
|
||||
#include "G4PVPlacement.hh"
|
||||
|
||||
class G4LogicalVolume;
|
||||
|
||||
class LXeWLSFiber : public G4PVPlacement
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeWLSFiber(G4RotationMatrix* pRot, const G4ThreeVector& tlate,
|
||||
G4LogicalVolume* pMotherLogical, G4bool pMany, G4int pCopyNo,
|
||||
LXeDetectorConstruction* c);
|
||||
|
||||
LXeWLSFiber(G4RotationMatrix *pRot,
|
||||
const G4ThreeVector &tlate,
|
||||
G4LogicalVolume *pMotherLogical,
|
||||
G4bool pMany,
|
||||
G4int pCopyNo,
|
||||
LXeDetectorConstruction* c);
|
||||
private:
|
||||
void CopyValues();
|
||||
|
||||
private:
|
||||
static G4LogicalVolume* fClad2_log;
|
||||
|
||||
void CopyValues();
|
||||
G4double fFiber_rmin;
|
||||
G4double fFiber_rmax;
|
||||
G4double fFiber_z;
|
||||
G4double fFiber_sphi;
|
||||
G4double fFiber_ephi;
|
||||
|
||||
static G4LogicalVolume* fClad2_log;
|
||||
G4double fClad1_rmin;
|
||||
G4double fClad1_rmax;
|
||||
G4double fClad1_z;
|
||||
G4double fClad1_sphi;
|
||||
G4double fClad1_ephi;
|
||||
|
||||
G4double fFiber_rmin;
|
||||
G4double fFiber_rmax;
|
||||
G4double fFiber_z;
|
||||
G4double fFiber_sphi;
|
||||
G4double fFiber_ephi;
|
||||
G4double fClad2_rmin;
|
||||
G4double fClad2_rmax;
|
||||
G4double fClad2_z;
|
||||
G4double fClad2_sphi;
|
||||
G4double fClad2_ephi;
|
||||
|
||||
G4double fClad1_rmin;
|
||||
G4double fClad1_rmax;
|
||||
G4double fClad1_z;
|
||||
G4double fClad1_sphi;
|
||||
G4double fClad1_ephi;
|
||||
|
||||
G4double fClad2_rmin;
|
||||
G4double fClad2_rmax;
|
||||
G4double fClad2_z;
|
||||
G4double fClad2_sphi;
|
||||
G4double fClad2_ephi;
|
||||
|
||||
LXeDetectorConstruction* fConstructor;
|
||||
LXeDetectorConstruction* fConstructor;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -28,42 +28,32 @@
|
||||
/// \brief Definition of the LXeWLSSlab class
|
||||
//
|
||||
//
|
||||
#ifndef LXeWLSSlab_H
|
||||
#define LXeWLSSlab_H 1
|
||||
#ifndef LXeWLSSlab_h
|
||||
#define LXeWLSSlab_h 1
|
||||
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4OpticalSurface.hh"
|
||||
|
||||
#include "LXeDetectorConstruction.hh"
|
||||
|
||||
class LXeWLSSlab : public G4PVPlacement
|
||||
{
|
||||
public:
|
||||
public:
|
||||
LXeWLSSlab(G4RotationMatrix* pRot, const G4ThreeVector& tlate,
|
||||
G4LogicalVolume* pMotherLogical, G4bool pMany, G4int pCopyNo,
|
||||
LXeDetectorConstruction* c);
|
||||
|
||||
LXeWLSSlab(G4RotationMatrix *pRot,
|
||||
const G4ThreeVector &tlate,
|
||||
G4LogicalVolume *pMotherLogical,
|
||||
G4bool pMany,
|
||||
G4int pCopyNo,
|
||||
LXeDetectorConstruction* c);
|
||||
private:
|
||||
void CopyValues();
|
||||
|
||||
private:
|
||||
LXeDetectorConstruction* fConstructor;
|
||||
|
||||
void CopyValues();
|
||||
static G4LogicalVolume* fScintSlab_log;
|
||||
|
||||
LXeDetectorConstruction* fConstructor;
|
||||
|
||||
static G4LogicalVolume* fScintSlab_log;
|
||||
|
||||
G4int fNfibers;
|
||||
G4double fScint_x;
|
||||
G4double fScint_y;
|
||||
G4double fScint_z;
|
||||
G4double fSlab_z;
|
||||
G4int fNfibers;
|
||||
G4double fScint_x;
|
||||
G4double fScint_y;
|
||||
G4double fScint_z;
|
||||
G4double fSlab_z;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user