10 #ifndef Pythia8_HardDiffraction_H
11 #define Pythia8_HardDiffraction_H
13 #include "Pythia8/Basics.h"
14 #include "Pythia8/BeamParticle.h"
15 #include "Pythia8/BeamRemnants.h"
16 #include "Pythia8/Info.h"
17 #include "Pythia8/MultipartonInteractions.h"
18 #include "Pythia8/PhysicsBase.h"
19 #include "Pythia8/PythiaStdlib.h"
20 #include "Pythia8/Settings.h"
21 #include "Pythia8/SpaceShower.h"
22 #include "Pythia8/TimeShower.h"
31 class HardDiffraction :
public PhysicsBase {
36 HardDiffraction() : isGammaA(), isGammaB(), isGammaGamma(), usePomInPhoton(),
37 pomFlux(), iBeam(), idA(), idB(), rescale(), normPom(), sigTotRatio(),
38 a1(), a2(), a3(), A1(), A2(), A3(), a0(), ap(), b0(), mA(), mB(), s(),
39 s1(), s2(), s3(), s4(), xPomA(), xPomB(), tPomA(), tPomB(), thetaPomA(),
40 thetaPomB(), tmpPomPtr() {};
44 void init(BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn);
47 bool isDiffractive(
int iBeamIn = 1,
int partonIn = 0,
48 double xIn = 0.,
double Q2In = 0.,
double xfIncIn = 0.);
51 double getXPomeronA() {
return xPomA;}
52 double getXPomeronB() {
return xPomB;}
53 double getTPomeronA() {
return tPomA;}
54 double getTPomeronB() {
return tPomB;}
55 double getThetaPomeronA() {
return thetaPomA;}
56 double getThetaPomeronB() {
return thetaPomB;}
61 static const double TINYPDF;
62 static const double POMERONMASS;
63 static const double RHOMASS;
64 static const double PROTONMASS;
65 static const double DIFFMASSMARGIN;
68 bool isGammaA, isGammaB, isGammaGamma, usePomInPhoton;
69 int pomFlux, iBeam, idA, idB;
70 double rescale, normPom, sigTotRatio,
71 a1, a2, a3, A1, A2, A3, a0, ap, b0,
72 mA, mB, s, s1, s2, s3, s4,
73 xPomA, xPomB, tPomA, tPomB, thetaPomA, thetaPomB;
76 BeamParticle* tmpPomPtr;
79 double xfPom(
double xIn = 0.);
82 double pickTNow(
double xIn = 0.);
85 double xfPomWithT(
double xIn = 0.,
double tIn = 0.);
88 pair<double, double> tRange(
double xIn = 0.);
91 double getThetaNow(
double xIn = 0.,
double tIn = 0.);
99 #endif // Pythia8_HardDiffraction_H