StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
GammaKinematics.h
1 // GammaKinematics.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2018 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 
6 // Header file for kinematics selection of photons from lepton beams.
7 
8 #ifndef Pythia8_GammaKinematics_H
9 #define Pythia8_GammaKinematics_H
10 
11 #include "Pythia8/Basics.h"
12 #include "Pythia8/BeamParticle.h"
13 #include "Pythia8/Info.h"
14 #include "Pythia8/Settings.h"
15 
16 namespace Pythia8 {
17 
18 //==========================================================================
19 
20 // Class to sample the virtuality and transverse momentum of emitted photons.
21 
23 
24 public:
25 
26  // Constructor.
27  GammaKinematics() {}
28 
29  // Sample the trial or final event kinematics.
30  bool init(Info* infoPtrIn, Settings* settingsPtrIn, Rndm* rndmPtrIn,
31  BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn);
32  bool sampleKTgamma(bool nonDiff = false);
33  bool deriveKin(double xGamma, double Q2gamma, double m2beam, double eCM2);
34  bool finalize();
35  double fluxWeight();
36 
37  // Calculate and return rescaled sHat according to the process.
38  double calcNewSHat( double sHatOld);
39 
40  // Methods to pass along the sampled values.
41  double getQ2gamma1() const {return Q2gamma1;}
42  double getQ2gamma2() const {return Q2gamma2;}
43  double getQ2min1() const {return Q2min1;}
44  double getQ2min2() const {return Q2min2;}
45  double getPhi1() const {return phi1;}
46  double getPhi2() const {return phi2;}
47  double getKT1() const {return kT1;}
48  double getKT2() const {return kT2;}
49  double eCMsub() const {return mGmGm;}
50 
51 private:
52 
53  // Pointer to various information on the generation.
54  Info* infoPtr;
55 
56  // Pointer to the settings database.
57  Settings* settingsPtr;
58 
59  // Pointer to the random number generator.
60  Rndm* rndmPtr;
61 
62  // Pointers to incoming beams.
63  BeamParticle* beamAPtr;
64  BeamParticle* beamBPtr;
65 
66  // Kinematics variables.
67  double Q2maxGamma, Wmin, Wmax, eCM, sCM, m2BeamA, m2BeamB, Q2min1, Q2min2,
68  xGamma1, xGamma2, Q2gamma1, Q2gamma2, phi1, phi2, kT1, kT2, kz1, kz2,
69  mGmGm, m2GmGm, theta1, theta2, theta1Max, theta2Max, eCM2A, eCM2B,
70  sHatNew, kT, kz, phi, theta, xGammaMax1, xGammaMax2, m2eA, m2eB;
71 
72  // Direct or resolved processes.
73  int gammaMode;
74 
75  // Sample one or two photon kinematics.
76  bool hasGammaA, hasGammaB, externalFlux, sampleQ2;
77 
78 };
79 
80 //==========================================================================
81 
82 } // end namespace Pythia8
83 
84 #endif // Pythia8_GammaKinematics_H