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