File indexing completed on 2025-02-23 09:20:45
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef GB02BOptrMultiParticleForceCollision_hh
0030 #define GB02BOptrMultiParticleForceCollision_hh 1
0031
0032 #include "G4VBiasingOperator.hh"
0033 class G4BOptrForceCollision;
0034 class G4ParticleDefinition;
0035
0036 #include <map>
0037
0038 class GB02BOptrMultiParticleForceCollision : public G4VBiasingOperator
0039 {
0040 public:
0041 GB02BOptrMultiParticleForceCollision();
0042 virtual ~GB02BOptrMultiParticleForceCollision() {}
0043
0044
0045
0046
0047
0048 void AddParticle(G4String particleName);
0049
0050 private:
0051
0052
0053
0054 virtual G4VBiasingOperation*
0055 ProposeNonPhysicsBiasingOperation(const G4Track* track,
0056 const G4BiasingProcessInterface* callingProcess) final;
0057 virtual G4VBiasingOperation*
0058 ProposeOccurenceBiasingOperation(const G4Track* track,
0059 const G4BiasingProcessInterface* callingProcess) final;
0060 virtual G4VBiasingOperation*
0061 ProposeFinalStateBiasingOperation(const G4Track* track,
0062 const G4BiasingProcessInterface* callingProcess) final;
0063
0064 private:
0065
0066
0067
0068
0069
0070 void OperationApplied(const G4BiasingProcessInterface* callingProcess,
0071 G4BiasingAppliedCase biasingCase, G4VBiasingOperation* operationApplied,
0072 const G4VParticleChange* particleChangeProduced) final;
0073 void OperationApplied(const G4BiasingProcessInterface* callingProcess,
0074 G4BiasingAppliedCase biasingCase,
0075 G4VBiasingOperation* occurenceOperationApplied,
0076 G4double weightForOccurenceInteraction,
0077 G4VBiasingOperation* finalStateOperationApplied,
0078 const G4VParticleChange* particleChangeProduced) final;
0079
0080 void ExitBiasing(const G4Track*, const G4BiasingProcessInterface*) final;
0081
0082 public:
0083 virtual void StartTracking(const G4Track* track) final;
0084
0085 private:
0086 std::map<const G4ParticleDefinition*, G4BOptrForceCollision*> fBOptrForParticle;
0087 std::vector<const G4ParticleDefinition*> fParticlesToBias;
0088 G4BOptrForceCollision* fCurrentOperator;
0089 };
0090
0091 #endif