File indexing completed on 2025-01-18 10:06:31
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef Pythia8_SpaceShower_H
0010 #define Pythia8_SpaceShower_H
0011
0012 #include "Pythia8/Basics.h"
0013 #include "Pythia8/BeamParticle.h"
0014 #include "Pythia8/Event.h"
0015 #include "Pythia8/Info.h"
0016 #include "Pythia8/ParticleData.h"
0017 #include "Pythia8/PartonSystems.h"
0018 #include "Pythia8/PartonVertex.h"
0019 #include "Pythia8/PhysicsBase.h"
0020 #include "Pythia8/PythiaStdlib.h"
0021 #include "Pythia8/Settings.h"
0022 #include "Pythia8/StandardModel.h"
0023 #include "Pythia8/UserHooks.h"
0024 #include "Pythia8/MergingHooks.h"
0025 #include "Pythia8/Weights.h"
0026
0027 namespace Pythia8 {
0028
0029
0030
0031
0032
0033 class SpaceShower : public PhysicsBase {
0034
0035 public:
0036
0037 SpaceShower() = default;
0038
0039
0040 virtual ~SpaceShower() {}
0041
0042
0043
0044 void initPtrs(MergingHooksPtr mergingHooksPtrIn,
0045 PartonVertexPtr partonVertexPtrIn,
0046 WeightContainer* weightContainerPtrIn) {
0047 coupSMPtr = infoPtr->coupSMPtr;
0048 mergingHooksPtr = mergingHooksPtrIn;
0049 partonVertexPtr = partonVertexPtrIn;
0050 weightContainerPtr = weightContainerPtrIn;
0051 }
0052
0053
0054 void reassignBeamPtrs( BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
0055 int beamOffsetIn = 0) {beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn;
0056 beamOffset = beamOffsetIn;}
0057
0058
0059
0060 virtual void init(BeamParticle* , BeamParticle* ) {}
0061
0062
0063
0064 virtual bool limitPTmax( Event& , double = 0., double = 0.) {return true;}
0065
0066
0067
0068 virtual void prepare( int , Event& , bool = true) {}
0069
0070
0071
0072 virtual void update( int , Event&, bool = false) {}
0073
0074
0075
0076 virtual double pTnext( Event& , double , double , int = -1, bool = false)
0077 { return 0.;}
0078
0079
0080
0081 virtual bool branch( Event& ) {return true;}
0082
0083
0084 virtual void list() const {}
0085
0086
0087 virtual bool initUncertainties() {return false;}
0088
0089
0090 virtual bool initEnhancements() {return false;}
0091
0092
0093 virtual bool doRestart() const {return false;}
0094
0095
0096 virtual bool wasGamma2qqbar() { return false; }
0097
0098
0099 virtual bool getHasWeaklyRadiated() {return false;}
0100
0101
0102 virtual int system() const {return 0;}
0103
0104
0105 virtual double enhancePTmax() const {return 1.;}
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116 virtual Event clustered( const Event& , int , int , int , string )
0117 { return Event();}
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127 virtual map<string, double> getStateVariables (const Event& , int , int ,
0128 int , string ) { return map<string,double>();}
0129
0130
0131
0132 virtual bool isSpacelike(const Event&, int, int, int, string)
0133 { return false; }
0134
0135
0136
0137 virtual vector<string> getSplittingName( const Event& , int , int , int )
0138 { return vector<string>();}
0139
0140
0141
0142 virtual double getSplittingProb( const Event& , int , int , int , string )
0143 { return 0.;}
0144
0145 virtual bool allowedSplitting( const Event& , int , int)
0146 { return true;}
0147 virtual vector<int> getRecoilers( const Event&, int, int, string)
0148 { return vector<int>(); }
0149
0150 virtual double enhanceFactor(const string& name) {
0151 unordered_map<string, double>::iterator it = enhanceISR.find(name);
0152 if ( it == enhanceISR.end() ) return 1.;
0153 return it->second;
0154 }
0155
0156
0157
0158
0159 virtual double noEmissionProbability( double, double, double, int, int,
0160 double, double) { return 1.; }
0161
0162
0163 MergingHooksPtr mergingHooksPtr{};
0164
0165 WeightContainer* weightContainerPtr{};
0166
0167 protected:
0168
0169
0170 int beamOffset{};
0171
0172
0173 PartonVertexPtr partonVertexPtr{};
0174
0175
0176 bool doUncertainties{}, uVarMuSoftCorr{}, uVarMPIshowers{};
0177 int nUncertaintyVariations{}, nVarQCD{}, uVarNflavQ{};
0178 double dASmax{}, cNSpTmin{}, uVarpTmin2{}, overFactor{};
0179 map<int,double> varG2GGmuRfac, varQ2QGmuRfac, varQ2GQmuRfac, varG2QQmuRfac,
0180 varX2XGmuRfac, varG2GGcNS, varQ2QGcNS, varQ2GQcNS, varG2QQcNS, varX2XGcNS;
0181 map<int,double>* varPDFplus;
0182 map<int,double>* varPDFminus;
0183 map<int,double>* varPDFmember;
0184 unordered_map<string,double> enhanceISR;
0185
0186 };
0187
0188
0189
0190 }
0191
0192 #endif