Import Geant4 10.7.0 source tree

This commit is contained in:
Gabriele Cosmo
2020-12-04 12:30:43 +01:00
parent 67ba86d073
commit dab42d2018
3770 changed files with 226369 additions and 286486 deletions
@@ -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
+57 -44
View File
@@ -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