File indexing completed on 2025-01-18 10:06:24
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef Pythia8_HardDiffraction_H
0011 #define Pythia8_HardDiffraction_H
0012
0013 #include "Pythia8/Basics.h"
0014 #include "Pythia8/BeamParticle.h"
0015 #include "Pythia8/BeamRemnants.h"
0016 #include "Pythia8/Info.h"
0017 #include "Pythia8/MultipartonInteractions.h"
0018 #include "Pythia8/PhysicsBase.h"
0019 #include "Pythia8/PythiaStdlib.h"
0020 #include "Pythia8/Settings.h"
0021 #include "Pythia8/SpaceShower.h"
0022 #include "Pythia8/TimeShower.h"
0023
0024 namespace Pythia8 {
0025
0026
0027
0028
0029
0030
0031 class HardDiffraction : public PhysicsBase {
0032
0033 public:
0034
0035
0036 HardDiffraction() : isGammaA(), isGammaB(), isGammaGamma(), usePomInPhoton(),
0037 pomFlux(), iBeam(), idA(), idB(), rescale(), normPom(), sigTotRatio(),
0038 a1(), a2(), a3(), A1(), A2(), A3(), a0(), ap(), b0(), mA(), mB(), s(),
0039 s1(), s2(), s3(), s4(), xPomA(), xPomB(), tPomA(), tPomB(), thetaPomA(),
0040 thetaPomB(), tmpPomPtr() {};
0041 ~HardDiffraction() {}
0042
0043
0044 void init(BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn);
0045
0046
0047 bool isDiffractive(int iBeamIn = 1, int partonIn = 0,
0048 double xIn = 0., double Q2In = 0., double xfIncIn = 0.);
0049
0050
0051 double getXPomeronA() {return xPomA;}
0052 double getXPomeronB() {return xPomB;}
0053 double getTPomeronA() {return tPomA;}
0054 double getTPomeronB() {return tPomB;}
0055 double getThetaPomeronA() {return thetaPomA;}
0056 double getThetaPomeronB() {return thetaPomB;}
0057
0058 private:
0059
0060
0061 static const double TINYPDF;
0062 static const double POMERONMASS;
0063 static const double RHOMASS;
0064 static const double PROTONMASS;
0065 static const double DIFFMASSMARGIN;
0066
0067
0068 bool isGammaA, isGammaB, isGammaGamma, usePomInPhoton;
0069 int pomFlux, iBeam, idA, idB;
0070 double rescale, normPom, sigTotRatio,
0071 a1, a2, a3, A1, A2, A3, a0, ap, b0,
0072 mA, mB, s, s1, s2, s3, s4,
0073 xPomA, xPomB, tPomA, tPomB, thetaPomA, thetaPomB;
0074
0075
0076 BeamParticle* tmpPomPtr;
0077
0078
0079 double xfPom(double xIn = 0.);
0080
0081
0082 double pickTNow(double xIn = 0.);
0083
0084
0085 double xfPomWithT(double xIn = 0., double tIn = 0.);
0086
0087
0088 pair<double, double> tRange(double xIn = 0.);
0089
0090
0091 double getThetaNow(double xIn = 0., double tIn = 0.);
0092
0093 };
0094
0095
0096
0097 }
0098
0099 #endif