File indexing completed on 2025-01-18 09:59:29
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 #ifndef G4XAnnihilationChannel_h
0029 #define G4XAnnihilationChannel_h
0030
0031 #include "globals.hh"
0032 #include "G4VCrossSectionSource.hh"
0033 #include "G4CrossSectionVector.hh"
0034 #include "G4Clebsch.hh"
0035 #include "G4ResonanceNames.hh"
0036
0037 #include <map>
0038
0039 class G4ParticleDefinition;
0040 class G4PhysicsVector;
0041 class G4KineticTrack;
0042 class G4ResonanceWidth;
0043 class G4ResonancePartialWidth;
0044 class G4PartialWidthTable;
0045
0046 class G4XAnnihilationChannel : public G4VCrossSectionSource
0047 {
0048 public:
0049
0050 G4XAnnihilationChannel();
0051
0052 G4XAnnihilationChannel(const G4ParticleDefinition* resDefinition,
0053 const G4ResonanceWidth& resWidths,
0054 const G4ResonancePartialWidth& resPartWidths,
0055 const G4String& partWidthLabel);
0056
0057 virtual ~G4XAnnihilationChannel();
0058
0059 G4bool operator==(const G4XAnnihilationChannel &right) const;
0060 G4bool operator!=(const G4XAnnihilationChannel &right) const;
0061
0062 virtual G4double CrossSection(const G4KineticTrack& trk1, const G4KineticTrack& trk2) const;
0063
0064 virtual const G4CrossSectionVector* GetComponents() const { return 0; }
0065
0066 virtual G4bool IsValid(G4double e) const;
0067
0068 virtual G4String Name() const;
0069
0070
0071 protected:
0072
0073 private:
0074
0075 G4XAnnihilationChannel(const G4XAnnihilationChannel &right);
0076 const G4XAnnihilationChannel& operator=(const G4XAnnihilationChannel &right);
0077
0078 G4double Branch(const G4KineticTrack& trk1,
0079 const G4KineticTrack& trk2) const;
0080
0081 G4double VariableWidth(const G4KineticTrack& trk1,
0082 const G4KineticTrack& trk2) const;
0083
0084 G4double VariablePartialWidth(const G4KineticTrack& trk1,
0085 const G4KineticTrack& trk2) const;
0086
0087 G4double NormalizedClebsch(const G4KineticTrack& trk1,
0088 const G4KineticTrack& trk2) const;
0089
0090 G4double lowLimit;
0091 G4double highLimit;
0092
0093 G4Clebsch clebsch;
0094 G4ResonanceNames theNames;
0095
0096
0097 G4PhysicsVector* widthTable;
0098 G4PhysicsVector* partWidthTable;
0099
0100
0101 const G4ParticleDefinition* resonance;
0102 };
0103
0104 #endif
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122