File indexing completed on 2025-09-16 09:03:40
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef Pythia8_DireSplittingLibrary_H
0009 #define Pythia8_DireSplittingLibrary_H
0010
0011 #define DIRE_SPLITTINGLIBRARY_VERSION "2.002"
0012
0013 #include "Pythia8/Basics.h"
0014 #include "Pythia8/BeamParticle.h"
0015 #include "Pythia8/ParticleData.h"
0016 #include "Pythia8/PythiaStdlib.h"
0017 #include "Pythia8/Settings.h"
0018 #include "Pythia8/StandardModel.h"
0019
0020 #include "Pythia8/DireSplittings.h"
0021 #include "Pythia8/DireSplittingsQCD.h"
0022 #include "Pythia8/DireSplittingsQED.h"
0023 #include "Pythia8/DireSplittingsEW.h"
0024 #include "Pythia8/DireSplittingsU1new.h"
0025 #include "Pythia8/DireBasics.h"
0026 #include "Pythia8/DireHooks.h"
0027
0028 namespace Pythia8 {
0029
0030 class DireSpace;
0031 class DireTimes;
0032
0033
0034
0035 class DireSplittingLibrary {
0036
0037 public:
0038
0039
0040 DireSplittingLibrary() :
0041 infoPtr(0), settingsPtr(0), particleDataPtr(0),
0042 rndmPtr(0), beamAPtr(0), beamBPtr(0), coupSMPtr(0), hooksPtr(0),
0043 hasExternalHook(false) {}
0044 ~DireSplittingLibrary() { clear();}
0045
0046
0047 void init(Info* infoPtr, BeamParticle* beamA, BeamParticle* beamB,
0048 DireInfo* direInfo, DireHooks* hooks = nullptr);
0049 void initFSR();
0050 void initISR();
0051 void clear();
0052
0053 void setTimesPtr (shared_ptr<DireTimes> fsrIn) {
0054 for (unordered_map<string,DireSplitting*>::iterator
0055 it = splittings.begin(); it != splittings.end(); ++it )
0056 it->second->setTimesPtr(fsrIn);
0057 }
0058 void setTimesDecPtr (shared_ptr<DireTimes> fsrIn) {
0059 for (unordered_map<string,DireSplitting*>::iterator
0060 it = splittings.begin(); it != splittings.end(); ++it )
0061 it->second->setTimesDecPtr(fsrIn);
0062 }
0063 void setSpacePtr (shared_ptr<DireSpace> isrIn) {
0064 for (unordered_map<string,DireSplitting*>::iterator
0065 it = splittings.begin(); it != splittings.end(); ++it )
0066 it->second->setSpacePtr(isrIn);
0067 }
0068
0069 unordered_map< string, DireSplitting* > getSplittings() { return splittings;}
0070
0071
0072 DireSplitting* operator[](string id);
0073 const DireSplitting* operator[](string id) const;
0074
0075
0076 vector<int> getSplittingRadBefID(const Event& event, int rad, int emt);
0077 vector<int> getSplittingRadBefID_new(const Event& event, int rad, int emt);
0078
0079
0080 vector<string> getSplittingName(const Event& event, int rad, int emt);
0081 vector<string> getSplittingName_new(const Event& event, int rad, int emt);
0082
0083
0084 int nEmissions(string name);
0085
0086 void setKernelHooks(DireHooks* hooks) {hooksPtr = hooks;}
0087
0088
0089 ulong fsrQCD_1_to_1_and_21,
0090 fsrQCD_1_to_21_and_1,
0091 fsrQCD_21_to_21_and_21a,
0092 fsrQCD_21_to_21_and_21b,
0093 fsrQCD_21_to_1_and_1a,
0094 fsrQCD_21_to_1_and_1b,
0095 fsrQCD_1_to_2_and_1_and_2,
0096 fsrQCD_1_to_1_and_1_and_1,
0097 fsrQCD_1_to_1_and_21_notPartial,
0098 fsrQCD_21_to_21_and_21_notPartial,
0099 fsrQCD_21_to_1_and_1_notPartial,
0100 fsrQCD_1_to_1_and_21_and_21,
0101 fsrQCD_1_to_1_and_1_and_1a,
0102 fsrQCD_1_to_1_and_1_and_1b,
0103 fsrQCD_1_to_1_and_2_and_2a,
0104 fsrQCD_1_to_1_and_2_and_2b,
0105 fsrQCD_1_to_1_and_3_and_3a,
0106 fsrQCD_1_to_1_and_3_and_3b,
0107 fsrQCD_1_to_1_and_4_and_4a,
0108 fsrQCD_1_to_1_and_4_and_4b,
0109 fsrQCD_1_to_1_and_5_and_5a,
0110 fsrQCD_1_to_1_and_5_and_5b,
0111 fsrQCD_21_to_21_and_21_and_21,
0112 fsrQCD_21_to_21_and_1_and_1a,
0113 fsrQCD_21_to_21_and_1_and_1b,
0114 fsrQCD_21_to_21_and_2_and_2a,
0115 fsrQCD_21_to_21_and_2_and_2b,
0116 fsrQCD_21_to_21_and_3_and_3a,
0117 fsrQCD_21_to_21_and_3_and_3b,
0118 fsrQCD_21_to_21_and_4_and_4a,
0119 fsrQCD_21_to_21_and_4_and_4b,
0120 fsrQCD_21_to_21_and_5_and_5a,
0121 fsrQCD_21_to_21_and_5_and_5b,
0122 isrQCD_1_to_1_and_21,
0123 isrQCD_21_to_1_and_1,
0124 isrQCD_21_to_21_and_21a,
0125 isrQCD_21_to_21_and_21b,
0126 isrQCD_1_to_21_and_1,
0127 isrQCD_1_to_2_and_1_and_2,
0128 isrQCD_1_to_1_and_1_and_1;
0129
0130
0131 ulong fsrQED_1_to_1_and_22,
0132 fsrQED_1_to_22_and_1,
0133 fsrQED_11_to_11_and_22,
0134 fsrQED_11_to_22_and_11,
0135 fsrQED_22_to_1_and_1a,
0136 fsrQED_22_to_1_and_1b,
0137 fsrQED_22_to_2_and_2a,
0138 fsrQED_22_to_2_and_2b,
0139 fsrQED_22_to_3_and_3a,
0140 fsrQED_22_to_3_and_3b,
0141 fsrQED_22_to_4_and_4a,
0142 fsrQED_22_to_4_and_4b,
0143 fsrQED_22_to_5_and_5a,
0144 fsrQED_22_to_5_and_5b,
0145 fsrQED_22_to_11_and_11a,
0146 fsrQED_22_to_11_and_11b,
0147 fsrQED_22_to_13_and_13a,
0148 fsrQED_22_to_13_and_13b,
0149 fsrQED_22_to_15_and_15a,
0150 fsrQED_22_to_15_and_15b,
0151 fsrQED_1_to_1_and_22_notPartial,
0152 fsrQED_11_to_11_and_22_notPartial,
0153 isrQED_1_to_1_and_22,
0154 isrQED_11_to_11_and_22,
0155 isrQED_1_to_22_and_1,
0156 isrQED_11_to_22_and_11,
0157 isrQED_22_to_1_and_1,
0158 isrQED_22_to_11_and_11;
0159
0160 ulong fsrEWK_1_to_1_and_23,
0161 fsrEWK_1_to_23_and_1,
0162 fsrEWK_23_to_1_and_1a,
0163 fsrEWK_23_to_1_and_1b,
0164 fsrEWK_24_to_1_and_1a,
0165 fsrEWK_24_to_1_and_1b,
0166 fsrEWK_25_to_24_and_24,
0167 fsrEWK_25_to_22_and_22,
0168 fsrEWK_25_to_21_and_21,
0169 fsrEWK_24_to_24_and_22,
0170 isrEWK_1_to_1_and_23;
0171
0172 ulong fsrU1N_1_to_1_and_22,
0173 fsrU1N_1_to_22_and_1,
0174 fsrU1N_11_to_11_and_22,
0175 fsrU1N_11_to_22_and_11,
0176 fsrU1N_22_to_1_and_1a,
0177 fsrU1N_22_to_1_and_1b,
0178 fsrU1N_22_to_2_and_2a,
0179 fsrU1N_22_to_2_and_2b,
0180 fsrU1N_22_to_3_and_3a,
0181 fsrU1N_22_to_3_and_3b,
0182 fsrU1N_22_to_4_and_4a,
0183 fsrU1N_22_to_4_and_4b,
0184 fsrU1N_22_to_5_and_5a,
0185 fsrU1N_22_to_5_and_5b,
0186 fsrU1N_22_to_11_and_11a,
0187 fsrU1N_22_to_11_and_11b,
0188 fsrU1N_22_to_13_and_13a,
0189 fsrU1N_22_to_13_and_13b,
0190 fsrU1N_22_to_15_and_15a,
0191 fsrU1N_22_to_15_and_15b,
0192 fsrU1N_22_to_211_and_211a,
0193 fsrU1N_22_to_211_and_211b,
0194 isrU1N_1_to_1_and_22,
0195 isrU1N_1_to_22_and_1,
0196 isrU1N_22_to_1_and_1,
0197 isrU1N_11_to_11_and_22,
0198 isrU1N_11_to_22_and_11,
0199 isrU1N_22_to_11_and_11;
0200
0201 private:
0202
0203 unordered_map< string, DireSplitting* > splittings;
0204 Info* infoPtr;
0205 Settings* settingsPtr;
0206 ParticleData* particleDataPtr;
0207 Rndm* rndmPtr;
0208 BeamParticle* beamAPtr;
0209 BeamParticle* beamBPtr;
0210 CoupSM* coupSMPtr;
0211 DireInfo* direInfoPtr;
0212
0213
0214 DireHooks* hooksPtr;
0215 bool hasExternalHook;
0216
0217 };
0218
0219
0220
0221 }
0222
0223 #endif