Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
GB07BOptrLeadingParticle Class Reference

#include <Doxymodules_biasing.h>

Inheritance diagram for GB07BOptrLeadingParticle:
G4VBiasingOperator

Public Member Functions

 GB07BOptrLeadingParticle (G4String operatorName="LeadingParticleBiasingOperator")
 
virtual ~GB07BOptrLeadingParticle ()
 
virtual void StartRun () final
 
virtual void StartTracking (const G4Track *track) final
 

Private Member Functions

virtual G4VBiasingOperationProposeNonPhysicsBiasingOperation (const G4Track *, const G4BiasingProcessInterface *) final
 
virtual G4VBiasingOperationProposeOccurenceBiasingOperation (const G4Track *, const G4BiasingProcessInterface *) final
 
virtual G4VBiasingOperationProposeFinalStateBiasingOperation (const G4Track *track, const G4BiasingProcessInterface *callingProcess) final
 

Private Attributes

G4BOptnLeadingParticlefLeadingParticleBiasingOperation
 
const G4VProcessfAnnihilation
 
const G4VProcessfConversion
 
const G4VProcessfDecay
 
const G4VProcessfTwoParticleProcess
 

Detailed Description

Definition at line 154 of file Doxymodules_biasing.h.

Constructor & Destructor Documentation

◆ GB07BOptrLeadingParticle()

GB07BOptrLeadingParticle::GB07BOptrLeadingParticle ( G4String  operatorName = "LeadingParticleBiasingOperator")

Definition at line 43 of file GB07BOptrLeadingParticle.cc.

44 : G4VBiasingOperator ( operatorName ),
45 fAnnihilation ( nullptr ),
46 fConversion ( nullptr ),
47 fDecay ( nullptr ),
48 fTwoParticleProcess ( nullptr )
49{
51 new G4BOptnLeadingParticle("LeadingParticleBiasingOperation");
52}
G4BOptnLeadingParticle * fLeadingParticleBiasingOperation

◆ ~GB07BOptrLeadingParticle()

GB07BOptrLeadingParticle::~GB07BOptrLeadingParticle ( )
virtual

Definition at line 56 of file GB07BOptrLeadingParticle.cc.

Member Function Documentation

◆ ProposeNonPhysicsBiasingOperation()

virtual G4VBiasingOperation * GB07BOptrLeadingParticle::ProposeNonPhysicsBiasingOperation ( const G4Track ,
const G4BiasingProcessInterface  
)
inlinefinalprivatevirtual

Definition at line 49 of file GB07BOptrLeadingParticle.hh.

51 { return nullptr; }

◆ ProposeOccurenceBiasingOperation()

virtual G4VBiasingOperation * GB07BOptrLeadingParticle::ProposeOccurenceBiasingOperation ( const G4Track ,
const G4BiasingProcessInterface  
)
inlinefinalprivatevirtual

Definition at line 54 of file GB07BOptrLeadingParticle.hh.

56 { return nullptr; }

◆ ProposeFinalStateBiasingOperation()

G4VBiasingOperation * GB07BOptrLeadingParticle::ProposeFinalStateBiasingOperation ( const G4Track track,
const G4BiasingProcessInterface callingProcess 
)
finalprivatevirtual

Definition at line 64 of file GB07BOptrLeadingParticle.cc.

67{
68 // -- When the present method is called, we are at the process final state
69 // -- generation level. The process is given by the callingProcess argument,
70 // -- which, in our case, wrappes a physics process, to control it.
71 // -- To bias the final state generation, we return a biasing operation
72 // -- which is fLeadingParticleBiasingOperation here. Before returning it, we
73 // -- configure it depending on if the process is a two-particle final state
74 // -- or if it is a many-particle final state process. For the two-particle
75 // -- final state, one track is the leading and the other is alone in its category,
76 // -- so always surviving by default. We play a Russian roulette on it to
77 // -- trim also these two-particles final states.
78
79 if ( callingProcess == fTwoParticleProcess )
80 {
81 // -- secondary particle accompagnying the leading one will be
82 // -- killed with 2./3. probability (Russian roulette):
83 fLeadingParticleBiasingOperation->SetFurtherKillingProbability( 2./3.);
84 }
85 else
86 {
87 // -- -1.0 means no effect : no further killing is applied to secondary
88 // -- particles accompanying the leading one.
89 fLeadingParticleBiasingOperation->SetFurtherKillingProbability( -1.0 );
90 }
91
93}

◆ StartRun()

void GB07BOptrLeadingParticle::StartRun ( )
finalvirtual

Definition at line 98 of file GB07BOptrLeadingParticle.cc.

100{
101 // -- collect the two-particle final state processes:
102 fAnnihilation = nullptr;
103 fConversion = nullptr;
104 fDecay = nullptr;
105
106 // ---- collect e+ annihilation process:
107 auto positronProcesses = G4Positron::Definition()->GetProcessManager()->GetProcessList();
108 for ( size_t i = 0; i < positronProcesses->size(); ++i )
109 {
110 if ( (*positronProcesses)[i]->GetProcessName() == "biasWrapper(annihil)")
111 {
112 fAnnihilation = (*positronProcesses)[i];
113 break;
114 }
115 }
116
117 // ---- collect gamma conversion process:
118 auto gammaProcesses = G4Gamma::Definition()->GetProcessManager()->GetProcessList();
119 for ( size_t i = 0; i < gammaProcesses->size(); ++i )
120 {
121 if ( (*gammaProcesses)[i]->GetProcessName() == "biasWrapper(conv)")
122 {
123 fConversion = (*gammaProcesses)[i];
124 break;
125 }
126 }
127
128 // ---- collect pi0 decay process:
129 auto pi0Processes = G4PionZero::Definition()->GetProcessManager()->GetProcessList();
130 for ( size_t i = 0; i < pi0Processes->size(); ++i )
131 {
132 if ( (*pi0Processes)[i]->GetProcessName() == "biasWrapper(Decay)")
133 {
134 fDecay = (*pi0Processes)[i];
135 break;
136 }
137 }
138}

◆ StartTracking()

void GB07BOptrLeadingParticle::StartTracking ( const G4Track track)
finalvirtual

Definition at line 143 of file GB07BOptrLeadingParticle.cc.

145{
146 // -- remember what is the two-particle final state process -if any- for this starting
147 // -- track:
148 fTwoParticleProcess = nullptr;
149 if ( track->GetDefinition() == G4Gamma ::Definition() ) fTwoParticleProcess = fConversion;
150 if ( track->GetDefinition() == G4Positron::Definition() ) fTwoParticleProcess = fAnnihilation;
151 if ( track->GetDefinition() == G4PionZero::Definition() ) fTwoParticleProcess = fDecay;
152}

Member Data Documentation

◆ fLeadingParticleBiasingOperation

G4BOptnLeadingParticle* GB07BOptrLeadingParticle::fLeadingParticleBiasingOperation
private

Definition at line 73 of file GB07BOptrLeadingParticle.hh.

◆ fAnnihilation

const G4VProcess* GB07BOptrLeadingParticle::fAnnihilation
private

Definition at line 77 of file GB07BOptrLeadingParticle.hh.

◆ fConversion

const G4VProcess* GB07BOptrLeadingParticle::fConversion
private

Definition at line 78 of file GB07BOptrLeadingParticle.hh.

◆ fDecay

const G4VProcess* GB07BOptrLeadingParticle::fDecay
private

Definition at line 79 of file GB07BOptrLeadingParticle.hh.

◆ fTwoParticleProcess

const G4VProcess* GB07BOptrLeadingParticle::fTwoParticleProcess
private

Definition at line 80 of file GB07BOptrLeadingParticle.hh.


The documentation for this class was generated from the following files:

Applications | User Support | Publications | Collaboration