BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Common interface for any primary generators that are file based. More...
#include <BDSPrimaryGeneratorFile.hh>
Public Member Functions | |
BDSPrimaryGeneratorFile (G4bool loopFileIn, BDSBunchEventGenerator *bunchIn) | |
G4bool | GeneratePrimaryVertexSafe (G4Event *event) |
Return false if not able to generate a primary vertex. | |
virtual void | RecreateAdvanceToEvent (G4int eventOffset)=0 |
Advance into the file as required. | |
G4long | NEventsInFile () const |
G4long | NEventsLeftInFile () const |
G4bool | OKToLoopFile () const |
G4long | NEventsReadThatPassedFilters () const |
Accessor. | |
G4long | NEventsSkipped () const |
Return the offset into the file if any. | |
G4bool | DistributionIsFinished () const |
Report whether the distribution is finished generating. | |
void | ThrowExceptionIfRecreateOffsetTooHigh (G4long eventOffset) const |
Static Public Member Functions | |
static BDSPrimaryGeneratorFile * | ConstructGenerator (const GMAD::Beam &beam, BDSBunch *bunchIn, G4bool recreate, G4int eventOffset, G4bool batchMode) |
Protected Member Functions | |
G4bool | VertexInsideWorld (const G4ThreeVector &pos) const |
Utility function for derived classes to check a position is inside the world. | |
Protected Attributes | |
G4bool | loopFile |
BDSBunchEventGenerator * | bunch |
G4bool | endOfFileReached |
G4bool | vertexGeneratedSuccessfully |
G4long | currentFileEventIndex |
G4long | nEventsInFile |
G4long | nEventsReadThatPassedFilters |
G4long | nEventsSkipped |
G4VSolid * | worldSolid |
Common interface for any primary generators that are file based.
Any derived class must implement G4VPrimaryGeneratorAction::GeneratePrimaryVertex(event). In this, it must update the protected members in this class of endOfFileReached and vertexGeneratedSuccessfully.
Matching the file length is done externally but by using the DistributionIsFinished() method in this class. Whether looping is permitted is known about in this class.
Definition at line 49 of file BDSPrimaryGeneratorFile.hh.
BDSPrimaryGeneratorFile::BDSPrimaryGeneratorFile | ( | G4bool | loopFileIn, |
BDSBunchEventGenerator * | bunchIn | ||
) |
Definition at line 47 of file BDSPrimaryGeneratorFile.cc.
|
virtual |
Definition at line 60 of file BDSPrimaryGeneratorFile.cc.
|
static |
Unbound function to construct the right generator from file. Can return nullptr if no generator is required according to the bunch distribution type.
Definition at line 92 of file BDSPrimaryGeneratorFile.cc.
References GMAD::BeamBase::distrFile, GMAD::BeamBase::distrFileFromExecOptions, GMAD::BeamBase::distrFileLoop, GMAD::BeamBase::distrFileLoopNTimes, GMAD::BeamBase::distrFileMatchLength, GMAD::BeamBase::distrType, GMAD::BeamBase::eventGeneratorWarnSkippedParticles, BDS::GetFullPath(), BDSGlobalConstants::Instance(), NEventsLeftInFile(), RecreateAdvanceToEvent(), GMAD::BeamBase::removeUnstableWithoutDecay, BDSGlobalConstants::SetNumberToGenerate(), and BDS::StrContains().
Referenced by BDSPrimaryGeneratorAction::BDSPrimaryGeneratorAction().
|
inline |
Report whether the distribution is finished generating.
Definition at line 90 of file BDSPrimaryGeneratorFile.hh.
Referenced by BDSPrimaryGeneratorAction::GeneratePrimariesFromFile().
G4bool BDSPrimaryGeneratorFile::GeneratePrimaryVertexSafe | ( | G4Event * | event | ) |
Return false if not able to generate a primary vertex.
Definition at line 73 of file BDSPrimaryGeneratorFile.cc.
Referenced by BDSPrimaryGeneratorAction::GeneratePrimariesFromFile().
|
inline |
Return the number of events in the file - not necessarily the number that match the filters but that are there in total.
Definition at line 73 of file BDSPrimaryGeneratorFile.hh.
G4long BDSPrimaryGeneratorFile::NEventsLeftInFile | ( | ) | const |
Return number of available events (excluding any filters in derived classes) in the file. This is nominally nEventsInFile - currentFileEventIndex.
Definition at line 82 of file BDSPrimaryGeneratorFile.cc.
Referenced by ConstructGenerator().
|
inline |
Accessor.
Definition at line 84 of file BDSPrimaryGeneratorFile.hh.
Referenced by BDSPrimaryGeneratorAction::GeneratePrimariesFromFile().
|
inline |
Return the offset into the file if any.
Definition at line 87 of file BDSPrimaryGeneratorFile.hh.
G4bool BDSPrimaryGeneratorFile::OKToLoopFile | ( | ) | const |
Return whether at least 1 event has passed a filter in the file. If we have no events in the file that pass then we will loop infinitely to find one.
Definition at line 87 of file BDSPrimaryGeneratorFile.cc.
Referenced by BDSPrimaryGeneratorFileSampler::GeneratePrimaryVertex(), and BDSPrimaryGeneratorFileHEPMC::ReadSingleEvent().
|
pure virtual |
Advance into the file as required.
Implemented in BDSPrimaryGeneratorFileHEPMC, and BDSPrimaryGeneratorFileSampler.
Referenced by ConstructGenerator().
void BDSPrimaryGeneratorFile::ThrowExceptionIfRecreateOffsetTooHigh | ( | G4long | eventOffset | ) | const |
Utility function to check eventOffset < nEventsInFile. This can only possibly happen If the recreation is done with the same filename but different contents or indeed somehow a different file.
Definition at line 63 of file BDSPrimaryGeneratorFile.cc.
References BDSBunchFileBased::DistrFileLoopNTimes().
Referenced by BDSPrimaryGeneratorFileHEPMC::RecreateAdvanceToEvent(), and BDSPrimaryGeneratorFileSampler::RecreateAdvanceToEvent().
|
protected |
Utility function for derived classes to check a position is inside the world.
Definition at line 156 of file BDSPrimaryGeneratorFile.cc.
Referenced by BDSPrimaryGeneratorFileHEPMC::HepMC2G4(), and BDSPrimaryGeneratorFileSampler::ReadSingleEvent().
|
protected |
Definition at line 102 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 105 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 103 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 101 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 106 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 107 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 108 of file BDSPrimaryGeneratorFile.hh.
|
protected |
Definition at line 104 of file BDSPrimaryGeneratorFile.hh.
|
mutableprotected |
Definition at line 109 of file BDSPrimaryGeneratorFile.hh.