File indexing completed on 2025-10-31 09:10:54
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