Import Geant4 10.5.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2018-06-29 10:58:11 +02:00
parent fe81a77428
commit 6aa23be517
1581 changed files with 124288 additions and 83758 deletions
@@ -33,8 +33,6 @@
#include "G4VUserActionInitialization.hh"
class LXeRecorderBase;
class B4DetectorConstruction;
/// Action initialization class.
@@ -43,16 +41,13 @@ class B4DetectorConstruction;
class LXeActionInitialization : public G4VUserActionInitialization
{
public:
LXeActionInitialization(LXeRecorderBase*);
LXeActionInitialization();
virtual ~LXeActionInitialization();
virtual void BuildForMaster() const;
virtual void Build() const;
virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
private:
LXeRecorderBase* fRecorder;
};
#endif
@@ -1,68 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeEMPhysics.hh 81557 2014-06-03 08:32:44Z gcosmo $
//
/// \file optical/LXe/include/LXeEMPhysics.hh
/// \brief Definition of the LXeEMPhysics class
//
//
#ifndef LXeEMPhysics_h
#define LXeEMPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4eMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
class LXeEMPhysics : public G4VPhysicsConstructor
{
public:
LXeEMPhysics(const G4String& name ="EM");
virtual ~LXeEMPhysics();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeEventAction.hh 68752 2013-04-05 10:23:47Z gcosmo $
// $Id: LXeEventAction.hh 109784 2018-05-09 08:14:08Z gcosmo $
//
/// \file optical/LXe/include/LXeEventAction.hh
/// \brief Definition of the LXeEventAction class
@@ -38,13 +38,12 @@
#include "G4ThreeVector.hh"
class G4Event;
class LXeRecorderBase;
class LXeEventAction : public G4UserEventAction
{
public:
LXeEventAction(LXeRecorderBase*);
LXeEventAction();
virtual ~LXeEventAction();
public:
@@ -61,9 +60,45 @@ class LXeEventAction : public G4UserEventAction
void SetForceDrawPhotons(G4bool b){fForcedrawphotons=b;}
void SetForceDrawNoPhotons(G4bool b){fForcenophotons=b;}
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 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;
}
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;}
G4ThreeVector GetEWeightPos(){return fEWeightPos;}
G4ThreeVector GetReconPos(){return fReconPos;}
G4ThreeVector GetConvPos(){return fConvPos;}
G4ThreeVector GetPosMax(){return fPosMax;}
G4double GetEDepMax(){return fEdepMax;}
G4double IsConvPosSet(){return fConvPosSet;}
//Gets the total photon count produced
G4int GetPhotonCount(){return fPhotonCount_Scint+fPhotonCount_Ceren;}
void IncPMTSAboveThreshold(){fPMTsAboveThreshold++;}
G4int GetPMTSAboveThreshold(){return fPMTsAboveThreshold;}
private:
LXeRecorderBase* fRecorder;
LXeEventMessenger* fEventMessenger;
G4int fSaveThreshold;
@@ -78,6 +113,28 @@ class LXeEventAction : public G4UserEventAction
G4bool fForcedrawphotons;
G4bool fForcenophotons;
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;
};
#endif
@@ -1,58 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeGeneralPhysics.hh 90338 2015-05-26 08:35:43Z gcosmo $
//
/// \file optical/LXe/include/LXeGeneralPhysics.hh
/// \brief Definition of the LXeGeneralPhysics class
//
//
#ifndef LXeGeneralPhysics_h
#define LXeGeneralPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
class LXeGeneralPhysics : public G4VPhysicsConstructor
{
public:
LXeGeneralPhysics(const G4String& name = "general");
virtual ~LXeGeneralPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
};
#endif
@@ -23,29 +23,37 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeSteppingVerbose.hh 68752 2013-04-05 10:23:47Z gcosmo $
//
/// \file optical/LXe/include/LXeSteppingVerbose.hh
/// \brief Definition of the LXeSteppingVerbose class
/// \file optical/LXe/include/LXeHistoManager.hh
/// \brief Definition of the LXeHistoManager class
//
//
#ifndef LXeSteppingVerbose_h
#define LXeSteppingVerbose_h 1
// $Id: LXeHistoManager.hh
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4SteppingVerbose.hh"
#ifndef LXeHistoManager_h
#define LXeHistoManager_h 1
class LXeSteppingVerbose : public G4SteppingVerbose
#include "globals.hh"
#include "g4root.hh"
//#include "g4xml.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class LXeHistoManager
{
public:
LXeHistoManager();
~LXeHistoManager();
LXeSteppingVerbose();
virtual ~LXeSteppingVerbose();
virtual void StepInfo();
virtual void TrackingStarted();
private:
void Book();
G4String fFileName;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -1,65 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeMuonPhysics.hh 85587 2014-10-31 09:12:28Z gcosmo $
//
/// \file optical/LXe/include/LXeMuonPhysics.hh
/// \brief Definition of the LXeMuonPhysics class
//
//
#ifndef LXeMuonPhysics_h
#define LXeMuonPhysics_h 1
#include "globals.hh"
#include "G4ios.hh"
#include "G4VPhysicsConstructor.hh"
#include "G4MuMultipleScattering.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4MuIonisation.hh"
#include "G4hIonisation.hh"
#include "G4MuonMinusCapture.hh"
class LXeMuonPhysics : public G4VPhysicsConstructor
{
public:
LXeMuonPhysics(const G4String& name="muon");
virtual ~LXeMuonPhysics();
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
virtual void ConstructParticle();
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
};
#endif
@@ -1,52 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXePhysicsList.hh 68752 2013-04-05 10:23:47Z gcosmo $
//
/// \file optical/LXe/include/LXePhysicsList.hh
/// \brief Definition of the LXePhysicsList class
//
//
#ifndef LXePhysicsList_h
#define LXePhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
class LXePhysicsList: public G4VModularPhysicsList
{
public:
LXePhysicsList();
virtual ~LXePhysicsList();
public:
// SetCuts()
virtual void SetCuts();
};
#endif
@@ -1,94 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeRecorderBase.hh 68752 2013-04-05 10:23:47Z gcosmo $
//
/// \file optical/LXe/include/LXeRecorderBase.hh
/// \brief Definition of the LXeRecorderBase class
//
// LXeRecorderBase.hh
// 1-Sep-1999 Bill Seligman
// This is an abstract base class to be used with Geant 4.0.1 (and
// possibly higher, if the User classes don't change).
// The concept of a Recorder object is that it records the activities of
// Geant in a manner that is useful to a physicist. Perhaps this record
// takes the form of histograms, or ntuples, or entries in an Objectivity
// database. This class does not care HOW the information is recorded; it
// abstracts the behavior of a generalized recorder of Geant variables.
// No object should be instantiated from the Recorder class (in fact, any such
// object won't do anything). The user must define a new class (say, a class
// that creates histograms) and overload the methods of this class.
// Why do this? First of all, it keeps all record-keeping in a single class:
// the class that inherits Recorder. The original Geant documentation suggests
// that recording activities should be split among many different classes
// (initialization in G4UserRunAction, recording in G4UserSteppingAction, etc.).
// If you use a Recorder class, than all the record-keeping details are kept in
// a single class instead of being spread out among many different classes.
// Secondly, by using an abstract Recorder class, you hide the implementation
// details from the rest of Geant. If you change a couple of histograms, only
// the Recorder-derived class and main() re-compile. No other class knows or
// cares what or how you record.
// The only time this class (i.e., this header file) changes is if new
// user action classes are added to Geant.
#ifndef RECORDER_BASE_H_
#define RECORDER_BASE_H_
// The following objects are the arguments to the methods
// invoked in the user action classes. In other words, they
// contain the variables that we are normally able to record
// in Geant.
#include "G4Run.hh"
#include "G4Event.hh"
#include "G4Track.hh"
#include "G4Step.hh"
class LXeRecorderBase {
public:
virtual ~LXeRecorderBase() {};
// The following a list of methods that correspond to the available
// user action classes in Geant 4.0.1. In this base class, the
// methods are defined to do nothing.
virtual void RecordBeginOfRun(const G4Run*) = 0;
virtual void RecordEndOfRun(const G4Run*) = 0;
virtual void RecordBeginOfEvent(const G4Event*) {};
virtual void RecordEndOfEvent(const G4Event*) {};
virtual void RecordTrack(const G4Track*) {};
virtual void RecordStep(const G4Step*) {};
};
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file optical/LXe/include/Run.hh
/// \brief Definition of the Run class
//
// $Id: Run.hh 71375 2013-06-14 07:39:33Z maire $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef LXeRun_h
#define LXeRun_h 1
#include "G4Run.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class LXeRun : public G4Run
{
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;
}
virtual void Merge(const G4Run* run);
void EndOfRun();
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;
};
#endif // LXeRun_h
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeRunAction.hh 68752 2013-04-05 10:23:47Z gcosmo $
// $Id: LXeRunAction.hh 109784 2018-05-09 08:14:08Z gcosmo $
//
/// \file optical/LXe/include/LXeRunAction.hh
/// \brief Definition of the LXeRunAction class
@@ -34,21 +34,25 @@
#ifndef LXeRunAction_h
#define LXeRunAction_h 1
class LXeRecorderBase;
class LXeRun;
class LXeHistoManager;
class G4Run;
class LXeRunAction : public G4UserRunAction
{
public:
LXeRunAction(LXeRecorderBase*);
LXeRunAction();
virtual ~LXeRunAction();
virtual G4Run* GenerateRun();
virtual void BeginOfRunAction(const G4Run*);
virtual void EndOfRunAction(const G4Run*);
private:
LXeRecorderBase* fRecorder;
LXeRun* fRun;
LXeHistoManager* fHistoManager;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeStackingAction.hh 68752 2013-04-05 10:23:47Z gcosmo $
// $Id: LXeStackingAction.hh 109652 2018-05-04 08:49:34Z gcosmo $
//
/// \file optical/LXe/include/LXeStackingAction.hh
/// \brief Definition of the LXeStackingAction class
@@ -35,11 +35,13 @@
#include "globals.hh"
#include "G4UserStackingAction.hh"
class LXeEventAction;
class LXeStackingAction : public G4UserStackingAction
{
public:
LXeStackingAction();
LXeStackingAction(LXeEventAction*);
virtual ~LXeStackingAction();
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
@@ -47,6 +49,7 @@ class LXeStackingAction : public G4UserStackingAction
virtual void PrepareNewEvent();
private:
LXeEventAction* fEventAction;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeSteppingAction.hh 68752 2013-04-05 10:23:47Z gcosmo $
// $Id: LXeSteppingAction.hh 109784 2018-05-09 08:14:08Z gcosmo $
//
/// \file optical/LXe/include/LXeSteppingAction.hh
/// \brief Definition of the LXeSteppingAction class
@@ -36,7 +36,6 @@
#include "G4OpBoundaryProcess.hh"
class LXeRecorderBase;
class LXeEventAction;
class LXeTrackingAction;
class LXeSteppingMessenger;
@@ -45,7 +44,7 @@ class LXeSteppingAction : public G4UserSteppingAction
{
public:
LXeSteppingAction(LXeRecorderBase*);
LXeSteppingAction(LXeEventAction*);
virtual ~LXeSteppingAction();
virtual void UserSteppingAction(const G4Step*);
@@ -54,9 +53,9 @@ class LXeSteppingAction : public G4UserSteppingAction
private:
LXeRecorderBase* fRecorder;
G4bool fOneStepPrimaries;
LXeSteppingMessenger* fSteppingMessenger;
LXeEventAction* fEventAction;
G4OpBoundaryProcessStatus fExpectedNextStatus;
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeTrackingAction.hh 68752 2013-04-05 10:23:47Z gcosmo $
// $Id: LXeTrackingAction.hh 109784 2018-05-09 08:14:08Z gcosmo $
//
/// \file optical/LXe/include/LXeTrackingAction.hh
/// \brief Definition of the LXeTrackingAction class
@@ -35,13 +35,11 @@
#include "G4UserTrackingAction.hh"
#include "globals.hh"
class LXeRecorderBase;
class LXeTrackingAction : public G4UserTrackingAction {
public:
LXeTrackingAction(LXeRecorderBase*);
LXeTrackingAction();
virtual ~LXeTrackingAction() {};
virtual void PreUserTrackingAction(const G4Track*);
@@ -49,8 +47,6 @@ class LXeTrackingAction : public G4UserTrackingAction {
private:
LXeRecorderBase* fRecorder;
};
#endif
@@ -1,102 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeUserEventInformation.hh 68752 2013-04-05 10:23:47Z gcosmo $
//
/// \file optical/LXe/include/LXeUserEventInformation.hh
/// \brief Definition of the LXeUserEventInformation class
//
#include "G4VUserEventInformation.hh"
#include "G4ThreeVector.hh"
#include "globals.hh"
#ifndef LXeUserEventInformation_h
#define LXeUserEventInformation_h 1
class LXeUserEventInformation : public G4VUserEventInformation
{
public:
LXeUserEventInformation();
virtual ~LXeUserEventInformation();
inline virtual void Print()const{};
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 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;}
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;}
G4ThreeVector GetEWeightPos(){return fEWeightPos;}
G4ThreeVector GetReconPos(){return fReconPos;}
G4ThreeVector GetConvPos(){return fConvPos;}
G4ThreeVector GetPosMax(){return fPosMax;}
G4double GetEDepMax(){return fEdepMax;}
G4double IsConvPosSet(){return fConvPosSet;}
//Gets the total photon count produced
G4int GetPhotonCount(){return fPhotonCount_Scint+fPhotonCount_Ceren;}
void IncPMTSAboveThreshold(){fPMTsAboveThreshold++;}
G4int GetPMTSAboveThreshold(){return fPMTsAboveThreshold;}
private:
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;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: LXeWLSFiber.hh 110132 2018-05-16 06:48:25Z gcosmo $
// $Id: LXeWLSFiber.hh 108789 2018-03-07 08:42:56Z gcosmo $
//
/// \file optical/LXe/include/LXeWLSFiber.hh
/// \brief Definition of the LXeWLSFiber class