Warning, file /include/Pythia8/TimeShower.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef Pythia8_TimeShower_H
0010 #define Pythia8_TimeShower_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/PhysicsBase.h"
0019 #include "Pythia8/PythiaStdlib.h"
0020 #include "Pythia8/PartonVertex.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 TimeShower : public PhysicsBase {
0034
0035 public:
0036
0037
0038 TimeShower() = default;
0039
0040
0041 virtual ~TimeShower() {}
0042
0043
0044
0045 void initPtrs(MergingHooksPtr mergingHooksPtrIn,
0046 PartonVertexPtr partonVertexPtrIn,
0047 WeightContainer* weightContainerPtrIn) {
0048 coupSMPtr = infoPtr->coupSMPtr;
0049 mergingHooksPtr = mergingHooksPtrIn;
0050 partonVertexPtr = partonVertexPtrIn;
0051 weightContainerPtr = weightContainerPtrIn;
0052 }
0053
0054
0055 void reassignBeamPtrs( BeamParticle* beamAPtrIn,
0056 BeamParticle* beamBPtrIn, int beamOffsetIn = 0) {
0057 beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn; beamOffset = beamOffsetIn;}
0058
0059
0060
0061 virtual void init( BeamParticle* = nullptr, BeamParticle* = nullptr) {}
0062
0063
0064
0065 virtual bool limitPTmax( Event& , double = 0., double = 0.) {return true;}
0066
0067
0068
0069 virtual int shower( int , int , Event& , double , int = 0) {return 0;}
0070
0071
0072
0073 virtual int showerQED( int , int , Event& , double = -1.) {return 0;}
0074
0075
0076
0077 virtual int showerQEDafterRemnants(Event&) { return 0; }
0078
0079
0080
0081 virtual int showerQEDafterDecays( int , int , Event&) { return 0; }
0082
0083
0084
0085
0086 virtual void prepareProcess( Event&, Event&, vector<int>&) {};
0087
0088
0089
0090 virtual void prepareGlobal( Event& ) {}
0091
0092
0093
0094 virtual void prepare( int , Event& , bool = true) {}
0095
0096
0097
0098 virtual void rescatterUpdate( int , Event& ) {}
0099
0100
0101
0102 virtual void update( int , Event& , bool = false) {}
0103
0104
0105
0106 virtual double pTnext( Event& , double , double , bool = false, bool = false)
0107 { return 0.;}
0108
0109
0110 virtual double pTnextResDec() { return 0.; }
0111
0112
0113
0114 virtual bool branch( Event& , bool = false) {return true;}
0115
0116
0117
0118
0119
0120
0121
0122
0123 virtual bool resonanceShower( Event&, Event&, vector<int>&, double = 0.)
0124 { return false;}
0125
0126
0127 virtual void list() const {}
0128
0129
0130 virtual bool initUncertainties() {return false;}
0131
0132
0133 virtual bool initEnhancements() {return false;}
0134
0135
0136 virtual bool getHasWeaklyRadiated() {return false;}
0137
0138
0139 virtual int system() const {return 0;}
0140
0141
0142 virtual double enhancePTmax() {return 1.;}
0143
0144
0145 virtual double pTLastInShower() {return 0.;}
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156 virtual Event clustered( const Event& , int , int , int , string )
0157 { return Event();}
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167 virtual map<string, double> getStateVariables (const Event& , int , int ,
0168 int , string ) { return map<string,double>();}
0169
0170
0171
0172 virtual bool isTimelike(const Event& , int , int , int , string )
0173 { return false; }
0174
0175
0176
0177 virtual vector<string> getSplittingName( const Event& , int, int , int)
0178 { return vector<string>();}
0179
0180
0181
0182 virtual double getSplittingProb( const Event& , int , int , int , string )
0183 { return 0.;}
0184 virtual bool allowedSplitting( const Event& , int , int)
0185 { return true; }
0186 virtual vector<int> getRecoilers( const Event&, int, int, string)
0187 { return vector<int>(); }
0188
0189 virtual double enhanceFactor(const string& name) {
0190 unordered_map<string, double>::iterator it = enhanceFSR.find(name);
0191 if ( it == enhanceFSR.end() ) return 1.;
0192 return it->second;
0193 }
0194
0195
0196
0197
0198 virtual double noEmissionProbability( double, double, double, int, int,
0199 double, double) { return 1.; }
0200
0201
0202 MergingHooksPtr mergingHooksPtr{};
0203
0204 WeightContainer* weightContainerPtr{};
0205
0206 protected:
0207
0208
0209 int beamOffset{};
0210
0211
0212 PartonVertexPtr partonVertexPtr{};
0213
0214
0215 bool doUncertainties{}, uVarMuSoftCorr{}, uVarMPIshowers{},
0216 noResVariations{}, noProcVariations{};
0217 int nUncertaintyVariations{}, nVarQCD{}, uVarNflavQ{};
0218 double dASmax{}, cNSpTmin{}, uVarpTmin2{}, overFactor{}, overFactorEnhance{};
0219 map<int,double> varG2GGmuRfac, varQ2QGmuRfac, varG2QQmuRfac, varX2XGmuRfac,
0220 varG2GGcNS, varQ2QGcNS, varG2QQcNS, varX2XGcNS;
0221 map<int,double>* varPDFplus;
0222 map<int,double>* varPDFminus;
0223 map<int,double>* varPDFmember;
0224 unordered_map<string,double> enhanceFSR;
0225
0226 };
0227
0228
0229
0230 }
0231
0232 #endif