127 #ifndef G4AdjointSimManager_h
128 #define G4AdjointSimManager_h 1
139 class G4AdjointRunAction;
142 class G4AdjointEventAction;
static G4AdjointSimManager * GetInstance()
static G4ThreadLocal G4AdjointSimManager * instance
size_t GetNbOfPrimaryFwdParticles()
G4double GetCosthAtEndOfLastAdjointTrack(size_t i=0)
void UseUserTrackingActionInFwdTrackingPhase(G4bool aBool)
void SetRestOfAdjointActions()
void ClearEndOfAdjointTrackInfoVectors()
G4int GetFwdParticleIndexAtEndOfLastAdjointTrack(size_t i=0)
std::vector< G4ParticleDefinition * > * GetListOfPrimaryFwdParticles()
G4bool GetDidAdjParticleReachTheExtSource()
G4int GetIDOfLastAdjParticleReachingExtSource()
std::vector< G4int > ID_of_last_particle_that_reach_the_ext_source_vec
void SetAdjointSourceEmax(G4double Emax)
bool use_user_TrackingAction
std::vector< G4ThreeVector > last_pos_vec
CLHEP::Hep3Vector G4ThreeVector
G4UserStackingAction * fUserStackingAction
bool use_user_StackingAction
G4String last_fwd_part_name
std::vector< G4double > last_weight_vec
void SetAdjointStackingAction(G4UserStackingAction *anAction)
void SwitchToAdjointSimulationMode()
G4bool GetAdjointSimMode()
G4int last_fwd_part_PDGEncoding
G4AdjointSteppingAction * theAdjointSteppingAction
G4int last_fwd_part_index
G4ThreeVector GetDirectionAtEndOfLastAdjointTrack(size_t i=0)
G4bool DefineSphericalAdjointSourceWithCentreAtTheCentreOfAVolume(G4double radius, const G4String &volume_name)
std::vector< G4int > last_fwd_part_index_vec
G4AdjointTrackingAction * theAdjointTrackingAction
G4bool DefineSphericalAdjointSource(G4double radius, G4ThreeVector pos)
G4VUserPrimaryGeneratorAction * fUserPrimaryGeneratorAction
G4int GetNormalisationMode()
virtual void EndOfRunAction(const G4Run *aRun)
void SetAdjointSourceEmin(G4double Emin)
G4UserRunAction * fUserRunAction
G4int GetNbEvtOfLastRun()
G4UserEventAction * fUserEventAction
G4ThreeVector last_direction
void SetAdjointTrackingMode(G4bool aBool)
G4UserTrackingAction * fUserTrackingAction
virtual void BeginOfRunAction(const G4Run *aRun)
G4bool DefineAdjointSourceOnTheExtSurfaceOfAVolume(const G4String &volume_name)
void SetNbOfPrimaryFwdGammasPerEvent(G4int)
G4UserRunAction * theAdjointRunAction
std::vector< G4double > last_cos_th_vec
G4double GetEkinNucAtEndOfLastAdjointTrack(size_t i=0)
void RunAdjointSimulation(G4int nb_evt)
G4UserEventAction * theAdjointEventAction
void ResetRestOfUserActions()
G4AdjointStackingAction * theAdjointStackingAction
G4double GetWeightAtEndOfLastAdjointTrack(size_t i=0)
G4bool DefineSphericalExtSourceWithCentreAtTheCentreOfAVolume(G4double radius, const G4String &volume_name)
const G4String & GetFwdParticleNameAtEndOfLastAdjointTrack()
void SetPrimaryIon(G4ParticleDefinition *adjointIon, G4ParticleDefinition *fwdIon)
const G4String & GetPrimaryIonName()
G4AdjointSimMessenger * theMessenger
G4bool DefineSphericalExtSource(G4double radius, G4ThreeVector pos)
void BackToFwdSimulationMode()
std::vector< G4double > last_ekin_nuc_vec
void SetAdjointRunAction(G4UserRunAction *anAction)
G4bool GetAdjointTrackingMode()
void SetAdjointEventAction(G4UserEventAction *anAction)
G4UserSteppingAction * fUserSteppingAction
G4ThreeVector GetPositionAtEndOfLastAdjointTrack(size_t i=0)
G4double area_of_the_adjoint_source
void ConsiderParticleAsPrimary(const G4String &particle_name)
G4double GetNumberNucleonsInIon()
G4double theAdjointPrimaryWeight
void SetNormalisationMode(G4int n)
static const G4double Emin
G4int GetFwdParticlePDGEncodingAtEndOfLastAdjointTrack(size_t i=0)
void RegisterAdjointPrimaryWeight(G4double aWeight)
G4bool DefineExtSourceOnTheExtSurfaceOfAVolume(const G4String &volume_name)
G4double GetAdjointSourceArea()
static const G4double Emax
void SetNbAdjointPrimaryElectronsPerEvent(G4int)
bool user_action_already_defined
void SetNbAdjointPrimaryGammasPerEvent(G4int)
G4ParticleDefinition * GetLastGeneratedFwdPrimaryParticle()
void UseUserStackingActionInFwdTrackingPhase(G4bool aBool)
void SetExtSourceEmax(G4double Emax)
std::vector< G4ThreeVector > last_direction_vec
void RegisterAtEndOfAdjointTrack()
std::vector< G4double > last_ekin_vec
void SetAdjointPrimaryRunAndStackingActions()
G4AdjointPrimaryGeneratorAction * theAdjointPrimaryGeneratorAction
G4int ID_of_last_particle_that_reach_the_ext_source
void SetAdjointSteppingAction(G4UserSteppingAction *anAction)
G4double GetEkinAtEndOfLastAdjointTrack(size_t i=0)
std::vector< G4int > last_fwd_part_PDGEncoding_vec
static const G4double pos
size_t GetNbOfAdointTracksReachingTheExternalSurface()
void NeglectParticleAsPrimary(const G4String &particle_name)
G4bool adjoint_tracking_mode
void ResetUserPrimaryRunAndStackingActions()