Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:06:24

0001 // GammaKinematics.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Torbjorn Sjostrand.
0003 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
0004 // Please respect the MCnet Guidelines, see GUIDELINES for details.
0005 
0006 // Header file for kinematics selection of photons from lepton beams.
0007 
0008 #ifndef Pythia8_GammaKinematics_H
0009 #define Pythia8_GammaKinematics_H
0010 
0011 #include "Pythia8/Basics.h"
0012 #include "Pythia8/BeamParticle.h"
0013 #include "Pythia8/Info.h"
0014 #include "Pythia8/PhysicsBase.h"
0015 #include "Pythia8/Settings.h"
0016 
0017 namespace Pythia8 {
0018 
0019 //==========================================================================
0020 
0021 // Class to sample the virtuality and transverse momentum of emitted photons.
0022 
0023 class GammaKinematics : public PhysicsBase {
0024 
0025 public:
0026 
0027   // Constructor.
0028   GammaKinematics() : Q2maxGamma(), Wmin(), Wmax(), eCM(), sCM(), m2BeamA(),
0029     m2BeamB(), Q2min1(), Q2min2(), xGamma1(), xGamma2(), Q2gamma1(),
0030     Q2gamma2(), phi1(), phi2(), kT1(), kT2(), kz1(), kz2(), mGmGm(), m2GmGm(),
0031     theta1(), theta2(), theta1Max(), theta2Max(), eCM2A(), eCM2B(), sHatNew(),
0032     kT(), kz(), phi(), theta(), xGammaMax1(), xGammaMax2(), m2eA(), m2eB(),
0033     alphaEM(), log2xMinA(), log2xMinB(), log2xMaxA(), log2xMaxB(),
0034     sigmaEstimate(), wt(), gammaMode(), subInA(), subInB(), hasGammaA(),
0035     hasGammaB(), sampleQ2(), gammaA(), gammaB(),
0036     hasApproxFluxA(), hasApproxFluxB(), sHatScaled() {}
0037 
0038   // Sample the trial or final event kinematics.
0039   bool init();
0040 
0041   // Sampling of the kinematics of the intermediate photon.
0042   bool   sampleKTgamma(bool nonDiff = false);
0043   bool   deriveKin(double xGamma, double Q2gamma, double m2beam, double eCM2);
0044   bool   finalize();
0045   bool   trialKinSoftPhaseSpaceSampling();
0046   double fluxWeight();
0047   double setupSoftPhaseSpaceSampling(double sigmaMax);
0048 
0049   // Calculate and return rescaled sHat according to the process.
0050   double calcNewSHat( double sHatOld);
0051 
0052   // Methods to pass along the sampled values.
0053   double getQ2gamma1()   const {return Q2gamma1;}
0054   double getQ2gamma2()   const {return Q2gamma2;}
0055   double getPhi1()       const {return phi1;}
0056   double getPhi2()       const {return phi2;}
0057   double getKT1()        const {return kT1;}
0058   double getKT2()        const {return kT2;}
0059   double eCMsub()        const {return mGmGm;}
0060   double weight()        const {return wt;}
0061   int    idInA()         const {return subInA;}
0062   int    idInB()         const {return subInB;}
0063   bool   hasNewSHat()    const {return sHatScaled;}
0064 
0065 private:
0066 
0067   // Kinematics variables.
0068   double Q2maxGamma, Wmin, Wmax, eCM, sCM, m2BeamA, m2BeamB, Q2min1, Q2min2,
0069          xGamma1, xGamma2, Q2gamma1, Q2gamma2, phi1, phi2, kT1, kT2, kz1, kz2,
0070          mGmGm, m2GmGm, theta1, theta2, theta1Max, theta2Max, eCM2A, eCM2B,
0071          sHatNew, kT, kz, phi, theta, xGammaMax1, xGammaMax2, m2eA, m2eB,
0072          alphaEM, log2xMinA, log2xMinB, log2xMaxA, log2xMaxB, sigmaEstimate,
0073          wt;
0074 
0075   // Direct or resolved processes.
0076   int    gammaMode, subInA, subInB;
0077 
0078   // Sample one or two photon kinematics.
0079   bool hasGammaA, hasGammaB, sampleQ2, gammaA, gammaB,
0080     hasApproxFluxA, hasApproxFluxB, sHatScaled;
0081 
0082 };
0083 
0084 //==========================================================================
0085 
0086 } // end namespace Pythia8
0087 
0088 #endif // Pythia8_GammaKinematics_H