File indexing completed on 2025-01-18 09:58:03
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 G4ConcreteMesonBaryonToResonance_h
0029 #define G4ConcreteMesonBaryonToResonance_h
0030
0031 #include "globals.hh"
0032 #include "G4VAnnihilationCollision.hh"
0033 #include "G4VCrossSectionSource.hh"
0034 #include "G4VAngularDistribution.hh"
0035 #include "G4KineticTrackVector.hh"
0036 #include <vector>
0037 #include "G4XNDeltaTable.hh"
0038 #include "G4ParticleTypeConverter.hh"
0039 #include "G4BaryonWidth.hh"
0040 #include "G4BaryonPartialWidth.hh"
0041 #include "G4Threading.hh"
0042
0043
0044
0045 class G4ConcreteMesonBaryonToResonance : public G4VAnnihilationCollision
0046 {
0047
0048 public:
0049
0050 G4ConcreteMesonBaryonToResonance(const G4ParticleDefinition* aPrimary,
0051 const G4ParticleDefinition* bPriamry,
0052 const G4ParticleDefinition* aSecondary,
0053 const G4String& partWidthLabel);
0054
0055 virtual ~G4ConcreteMesonBaryonToResonance();
0056
0057 virtual G4bool IsInCharge(const G4KineticTrack& trk1,
0058 const G4KineticTrack& trk2) const;
0059
0060 virtual const std::vector<G4String>& GetListOfColliders(G4int ) const
0061 {
0062 throw G4HadronicException(__FILE__, __LINE__, "Tried to call G4ConcreteMesonBaryonToResonance::GetListOfColliders. Please find out why!");
0063 std::vector<G4String> * aList = new std::vector<G4String>;
0064 return *aList;
0065 }
0066
0067 virtual G4String GetName() const
0068 {
0069 return "ConcreteMesonBaryonToResonance";
0070 }
0071
0072 G4bool operator==(const G4ConcreteMesonBaryonToResonance &right) const;
0073 G4bool operator!=(const G4ConcreteMesonBaryonToResonance &right) const;
0074
0075 private:
0076 G4ConcreteMesonBaryonToResonance(const G4ConcreteMesonBaryonToResonance &);
0077 G4ConcreteMesonBaryonToResonance & operator= (const G4ConcreteMesonBaryonToResonance &);
0078
0079 protected:
0080
0081 virtual const G4VCrossSectionSource* GetCrossSectionSource() const
0082 { return crossSectionSource; }
0083
0084 virtual const G4ParticleDefinition* GetOutgoingParticle(const G4KineticTrack& trk1,
0085 const G4KineticTrack& trk2) const;
0086
0087 private:
0088
0089 static void InitialisePointers();
0090
0091 G4VCrossSectionSource* crossSectionSource;
0092 const G4ParticleDefinition* thePrimary1;
0093 const G4ParticleDefinition* thePrimary2;
0094 const G4ParticleDefinition* theSecondary;
0095
0096 static G4BaryonWidth & theBaryonWidth();
0097 static G4BaryonPartialWidth & theBaryonPartialWidth();
0098 static G4ParticleTypeConverter & myConv();
0099
0100 static G4BaryonWidth* baryonWidth;
0101 static G4BaryonPartialWidth* baryonPartialWidth;
0102 static G4ParticleTypeConverter* particleTypeConverter;
0103
0104 #ifdef G4MULTITHREADED
0105 static G4Mutex concreteMesonBaryonToResonanceMutex;
0106 #endif
0107 };
0108
0109 #endif