72 constexpr G4double fTauPara = 0.12*CLHEP::ns;
73 constexpr G4double fTauOrto = 142.*CLHEP::ns;
95 delete f2GammaAtRestModel;
96 delete f3GammaAtRestModel;
119 if (!isInitialised) {
120 isInitialised =
true;
129 if (
nullptr == f2GammaAtRestModel) {
130 auto type = param->PositronAtRestModelType();
145 fEntangled = param->QuantumEntanglement();
146 fApplyCuts = param->ApplyCuts();
170 if (fApplyCuts && gammaCut > CLHEP::electron_mass_c2) {
179 if (
nullptr != f3GammaAtRestModel &&
181 f3GammaAtRestModel->SampleSecondaries(
secParticles, edep, couple->GetMaterial());
184 f2GammaAtRestModel->SampleSecondaries(
secParticles, edep, couple->GetMaterial());
194 G4int idx = couple->GetIndex();
213 std::shared_ptr<G4eplusAnnihilationEntanglementClipBoard> clipBoard;
214 if (fEntangled && num >= 2) {
215 clipBoard = std::make_shared<G4eplusAnnihilationEntanglementClipBoard>();
216 clipBoard->SetParentParticleDefinition(track.
GetDefinition());
223 for (std::size_t i=0; i<num; ++i) {
227 if (fEntangled && i < 2) {
230 if (
nullptr != clipBoard) {
232 clipBoard->SetTrackA(t);
234 clipBoard->SetTrackB(t);
264 out <<
" Positron annihilation";
G4double condition(const G4ErrorSymMatrix &m)
G4double G4Log(G4double x)
CLHEP::Hep3Vector G4ThreeVector
static G4EmParameters * Instance()
static G4int GetModelID(const G4int modelIndex)
static G4Positron * Positron()
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4StepPoint * GetPreStepPoint() 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 G4TouchableHandle & GetTouchableHandle() const
void SetCreatorModelID(const G4int id)
void SetHighEnergyLimit(G4double)
void SetLowEnergyLimit(G4double)
void DefineMaterial(const G4MaterialCutsCouple *couple)
G4double GetGammaEnergyCut()
G4VEmModel * EmModel(std::size_t index=0) const
G4VEmProcess(const G4String &name, G4ProcessType type=fElectromagnetic)
G4EmBiasingManager * biasManager
void SetBuildTableFlag(G4bool val)
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)
G4ParticleChangeForGamma fParticleChange
const G4Material * currentMaterial
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