108 isInitialised =
true;
167 G4bool entangledgammagamma =
false;
170 entangledgammagamma =
true;
172 if (p->GetDefinition() != theGamma ||
173 p->GetKineticEnergy() < gammaCut) {
174 entangledgammagamma =
false;
183 std::shared_ptr<G4eplusAnnihilationEntanglementClipBoard> clipBoard;
184 if (entangledgammagamma) {
185 clipBoard = std::make_shared<G4eplusAnnihilationEntanglementClipBoard>();
186 clipBoard->SetParentParticleDefinition(track.
GetDefinition());
195 for (
G4int i=0; i<num; ++i) {
203 if (e < gammaCut) { good =
false; }
204 }
else if (p == theElectron) {
212 if (entangledgammagamma) {
216 clipBoard->SetTrackA(t);
218 clipBoard->SetTrackB(t);
262 out <<
" Positron annihilation";
G4double condition(const G4ErrorSymMatrix &m)
const G4ParticleDefinition * GetParticleDefinition() const
G4double GetKineticEnergy() const
static G4Electron * Electron()
G4double ApplySecondaryBiasing(std::vector< G4DynamicParticle * > &, const G4Track &track, G4VEmModel *currentModel, G4ParticleChangeForGamma *pParticleChange, G4double &eloss, G4int coupleIdx, G4double tcut, G4double safety=0.0)
G4double GetWeight(G4int i)
G4bool SecondaryBiasingRegion(G4int coupleIdx)
static G4EmParameters * Instance()
G4bool QuantumEntanglement() const
void InitializeForPostStep(const G4Track &)
static G4int GetModelID(const G4int modelIndex)
static G4Positron * Positron()
G4double GetSafety() const
G4StepPoint * GetPostStepPoint() const
void SetAuxiliaryTrackInformation(G4int id, G4VAuxiliaryTrackInformation *info) const
void SetWeight(G4double aValue)
const G4ThreeVector & GetPosition() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4double GetGlobalTime() const
G4ParticleDefinition * GetDefinition() const
const G4DynamicParticle * GetDynamicParticle() const
const G4TouchableHandle & GetTouchableHandle() const
void SetCreatorModelID(const G4int id)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
void SetHighEnergyLimit(G4double)
void SetLowEnergyLimit(G4double)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin=0.0, G4double tmax=DBL_MAX)=0
void DefineMaterial(const G4MaterialCutsCouple *couple)
G4double GetGammaEnergyCut()
G4VEmModel * SelectModel(G4double kinEnergy, size_t)
G4EmBiasingManager * biasManager
G4VEmModel * EmModel(size_t index=0) const
void SetBuildTableFlag(G4bool val)
G4double GetElectronEnergyCut()
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=nullptr)
void SetEmModel(G4VEmModel *, G4int index=0)
void SetSecondaryParticle(const G4ParticleDefinition *p)
void SetCrossSectionType(G4CrossSectionType val)
void ProcessDescription(std::ostream &outFile) const override
G4double MaxKinEnergy() const
G4double MinKinEnergy() const
std::vector< G4DynamicParticle * > secParticles
void SetStartFromNullFlag(G4bool val)
const G4MaterialCutsCouple * MaterialCutsCouple() const
G4ParticleChangeForGamma fParticleChange
size_t CurrentMaterialCutsCoupleIndex() const
G4double GetParentWeight() const
G4double GetLocalEnergyDeposit() const
void AddSecondary(G4Track *aSecondary)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetNumberOfSecondaries(G4int totSecondaries)
void SetProcessSubType(G4int)
G4VParticleChange * pParticleChange
void ProcessDescription(std::ostream &) const override
void InitialiseProcess(const G4ParticleDefinition *) override
G4eplusAnnihilation(const G4String &name="annihil")
G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition) override
G4bool IsApplicable(const G4ParticleDefinition &p) final
void StreamProcessInfo(std::ostream &outFile) const override
G4VParticleChange * AtRestDoIt(const G4Track &track, const G4Step &stepData) override
~G4eplusAnnihilation() override