File indexing completed on 2025-01-18 09:58:20
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
0030
0031 #ifndef G4GenericBiasingPhysics_h
0032 #define G4GenericBiasingPhysics_h 1
0033
0034 #include "G4VPhysicsConstructor.hh"
0035 #include "globals.hh"
0036
0037 #include <vector>
0038
0039
0040
0041 class G4GenericBiasingPhysics : public G4VPhysicsConstructor
0042 {
0043 public:
0044
0045 G4GenericBiasingPhysics(const G4String& name = "BiasingP");
0046 virtual ~G4GenericBiasingPhysics();
0047
0048 public:
0049
0050
0051
0052
0053
0054 void PhysicsBias(const G4String& particleName);
0055
0056 void PhysicsBias(const G4String& particleName, const std::vector< G4String >& processToBiasNames);
0057
0058 void NonPhysicsBias(const G4String& particleName);
0059
0060 void Bias(const G4String& particleName);
0061
0062 void Bias(const G4String& particleName, const std::vector< G4String >& processToBiasNames);
0063
0064
0065
0066
0067
0068
0069
0070 void PhysicsBiasAddPDGRange( G4int PDGlow, G4int PDGhigh, G4bool includeAntiParticle = true );
0071 void NonPhysicsBiasAddPDGRange( G4int PDGlow, G4int PDGhigh, G4bool includeAntiParticle = true );
0072 void BiasAddPDGRange( G4int PDGlow, G4int PDGhigh, G4bool includeAntiParticle = true );
0073
0074 void PhysicsBiasAllCharged( G4bool includeShortLived = false );
0075 void NonPhysicsBiasAllCharged( G4bool includeShortLived = false );
0076 void BiasAllCharged( G4bool includeShortLived = false );
0077
0078 void PhysicsBiasAllNeutral( G4bool includeShortLived = false );
0079 void NonPhysicsBiasAllNeutral( G4bool includeShortLived = false );
0080 void BiasAllNeutral( G4bool includeShortLived = false );
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094 void AddParallelGeometry( const G4String& particleName, const G4String& parallelGeometryName );
0095 void AddParallelGeometry( const G4String& particleName, const std::vector< G4String >& parallelGeometryNames );
0096 void AddParallelGeometry( G4int PDGlow, G4int PDGhigh, const G4String& parallelGeometryName , G4bool includeAntiParticle = true );
0097 void AddParallelGeometry( G4int PDGlow, G4int PDGhigh, const std::vector< G4String >& parallelGeometryNames, G4bool includeAntiParticle = true );
0098 void AddParallelGeometryAllCharged( const G4String& parallelGeometryName , G4bool includeShortLived = false );
0099 void AddParallelGeometryAllCharged( const std::vector< G4String >& parallelGeometryNames, G4bool includeShortLived = false );
0100 void AddParallelGeometryAllNeutral( const G4String& parallelGeometryName , G4bool includeShortLived = false );
0101 void AddParallelGeometryAllNeutral( const std::vector< G4String >& parallelGeometryNames, G4bool includeShortLived = false );
0102
0103
0104
0105
0106 void BeVerbose() { fVerbose = true; }
0107
0108 public:
0109
0110
0111 virtual void ConstructParticle();
0112
0113
0114
0115
0116 virtual void ConstructProcess();
0117
0118 private:
0119
0120
0121 G4GenericBiasingPhysics & operator=(const G4GenericBiasingPhysics &right);
0122 G4GenericBiasingPhysics(const G4GenericBiasingPhysics&);
0123
0124
0125 std::vector< G4String > fBiasedParticles;
0126 std::vector< G4bool > fBiasAllProcesses;
0127
0128 std::vector< std::vector< G4String > > fBiasedProcesses;
0129
0130 std::vector< G4String > fNonPhysBiasedParticles;
0131
0132
0133 std::vector< G4int > fPhysBiasByPDGRangeLow, fPhysBiasByPDGRangeHigh;
0134 std::vector< G4int > fNonPhysBiasByPDGRangeLow, fNonPhysBiasByPDGRangeHigh;
0135 G4bool fPhysBiasAllCharged, fNonPhysBiasAllCharged;
0136 G4bool fPhysBiasAllChargedISL, fNonPhysBiasAllChargedISL;
0137 G4bool fPhysBiasAllNeutral, fNonPhysBiasAllNeutral;
0138 G4bool fPhysBiasAllNeutralISL, fNonPhysBiasAllNeutralISL;
0139
0140
0141
0142 std::vector< G4String > fParticlesWithParallelGeometries;
0143 std::map< G4String, std::vector< G4String > > fParallelGeometriesForParticle;
0144 std::vector< G4int > fPDGlowParallelGeometries, fPDGhighParallelGeometries;
0145 std::map< G4int, std::vector< G4String > > fPDGrangeParallelGeometries;
0146 std::vector< G4String > fParallelGeometriesForCharged, fParallelGeometriesForNeutral;
0147 std::vector< G4bool > fAllChargedParallelGeometriesISL, fAllNeutralParallelGeometriesISL;
0148
0149
0150 void AssociateParallelGeometries();
0151
0152
0153
0154 G4bool fVerbose;
0155
0156
0157
0158 };
0159
0160
0161
0162 #endif