File indexing completed on 2025-10-30 08:49:52
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef Pythia8_PhysicsBase_H
0009 #define Pythia8_PhysicsBase_H
0010
0011 #include "Pythia8/Info.h"
0012 #include "Pythia8/Settings.h"
0013 #include "Pythia8/SharedPointers.h"
0014
0015 namespace Pythia8 {
0016
0017
0018
0019
0020
0021
0022
0023 class PhysicsBase {
0024
0025 public:
0026
0027
0028 enum Status { INCOMPLETE = -1, COMPLETE = 0, CONSTRUCTOR_FAILED,
0029 INIT_FAILED, LHEF_END, LOWENERGY_FAILED, PROCESSLEVEL_FAILED,
0030 PROCESSLEVEL_USERVETO, MERGING_FAILED, PARTONLEVEL_FAILED,
0031 PARTONLEVEL_USERVETO, HADRONLEVEL_FAILED, CHECK_FAILED,
0032 OTHER_UNPHYSICAL, HEAVYION_FAILED, HADRONLEVEL_USERVETO };
0033
0034
0035 void initInfoPtr(Info& infoPtrIn);
0036
0037
0038 virtual ~PhysicsBase() {}
0039
0040
0041 bool flag(string key) const {return settingsPtr->flag(key);}
0042 int mode(string key) const {return settingsPtr->mode(key);}
0043 double parm(string key) const {return settingsPtr->parm(key);}
0044 string word(string key) const {return settingsPtr->word(key);}
0045 vector<bool> fvec(string key) const {return settingsPtr->fvec(key);}
0046 vector<int> mvec(string key) const {return settingsPtr->mvec(key);}
0047 vector<double> pvec(string key) const {return settingsPtr->pvec(key);}
0048 vector<string> wvec(string key) const {return settingsPtr->wvec(key);}
0049
0050 protected:
0051
0052
0053 PhysicsBase() {}
0054
0055
0056
0057 virtual void onInitInfoPtr() {}
0058
0059
0060 virtual void onBeginEvent() {}
0061
0062
0063
0064 virtual void onEndEvent(Status) {}
0065
0066
0067 virtual void onStat() {}
0068
0069
0070 void registerSubObject(PhysicsBase& pb);
0071
0072
0073
0074 Info* infoPtr = {};
0075
0076
0077 Settings* settingsPtr = {};
0078
0079
0080 ParticleData* particleDataPtr = {};
0081
0082
0083 Logger* loggerPtr = {};
0084
0085
0086 HadronWidths* hadronWidthsPtr = {};
0087
0088
0089 Rndm* rndmPtr = {};
0090
0091
0092 CoupSM* coupSMPtr = {};
0093 CoupSUSY* coupSUSYPtr = {};
0094
0095
0096
0097 BeamSetup* beamSetupPtr = {};
0098 BeamParticle* beamAPtr = {};
0099 BeamParticle* beamBPtr = {};
0100 BeamParticle* beamPomAPtr = {};
0101 BeamParticle* beamPomBPtr = {};
0102 BeamParticle* beamGamAPtr = {};
0103 BeamParticle* beamGamBPtr = {};
0104 BeamParticle* beamVMDAPtr = {};
0105 BeamParticle* beamVMDBPtr = {};
0106
0107
0108 PartonSystems* partonSystemsPtr = {};
0109
0110
0111 SigmaTotal* sigmaTotPtr = {};
0112 SigmaCombined* sigmaCmbPtr = {};
0113
0114
0115
0116 set<PhysicsBase*> subObjects;
0117
0118
0119
0120 UserHooksPtr userHooksPtr;
0121
0122 private:
0123
0124 friend class Pythia;
0125
0126
0127 void beginEvent();
0128
0129
0130 void endEvent(Status status);
0131
0132
0133 void stat();
0134
0135 };
0136
0137
0138
0139 }
0140
0141 #endif