Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // DireHooks.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Stefan Prestel, 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 Dire user hooks.
0007 
0008 #ifndef Pythia8_DireHooks_H
0009 #define Pythia8_DireHooks_H
0010 
0011 #include "Pythia8/PythiaStdlib.h"
0012 #include "Pythia8/DireSplittings.h"
0013 
0014 namespace Pythia8 {
0015 
0016 //==========================================================================
0017 
0018 // Hooks is base class for user access to program execution.
0019 
0020 class DireHooks {
0021 
0022 public:
0023 
0024   // Destructor.
0025   virtual ~DireHooks() {}
0026 
0027   // Initialize pointers and workEvent. Note: not virtual.
0028   void initPtr( Info* infoPtrIn, BeamParticle* beamAPtrIn,
0029     BeamParticle* beamBPtrIn) {
0030     infoPtr       = infoPtrIn;
0031     settingsPtr      = infoPtr->settingsPtr;
0032     particleDataPtr  = infoPtr->particleDataPtr;
0033     rndmPtr          = infoPtr->rndmPtr;
0034     beamAPtr         = beamAPtrIn;
0035     beamBPtr         = beamBPtrIn;
0036     coupSMPtr        = infoPtr->coupSMPtr;
0037     partonSystemsPtr = infoPtr->partonSystemsPtr;
0038   }
0039 
0040   // Initialisation after beams have been set by Pythia::init().
0041   virtual bool init() { return true; }
0042 
0043   // Possibility for user-defined splitting kernels.
0044   virtual bool canLoadFSRKernels() {return false;}
0045   virtual bool doLoadFSRKernels(
0046     std::unordered_map< string, DireSplitting* >&) {return false;}
0047   virtual bool canLoadISRKernels() {return false;}
0048   virtual bool doLoadISRKernels(
0049     std::unordered_map< string, DireSplitting* >&) {return false;}
0050 
0051   // Possibility for user-defined scale setting.
0052   virtual bool canSetRenScale()    {return false;}
0053   virtual bool canSetFacScale()    {return false;}
0054   virtual bool canSetStartScale()  {return false;}
0055   virtual double doGetRenScale(double x1, double x2, double sH, double tH,
0056    double uH, bool massless, double m1sq, double m2sq, double m3sq,
0057    double m4sq) {
0058    if (false) cout << x1*x2*sH*tH*uH*massless*m1sq*m2sq*m3sq*m4sq;
0059    return -1.0;
0060   }
0061   virtual double doGetFacScale(double x1, double x2, double sH, double tH,
0062     double uH, bool massless, double m1sq, double m2sq, double m3sq,
0063     double m4sq) {
0064     if (false) cout << x1*x2*sH*tH*uH*massless*m1sq*m2sq*m3sq*m4sq;
0065     return -1.0;
0066   }
0067   virtual double doGetStartScale(double x1, double x2, double sH, double tH,
0068     double uH, bool massless, double m1sq, double m2sq, double m3sq,
0069     double m4sq) {
0070     if (false) cout << x1*x2*sH*tH*uH*massless*m1sq*m2sq*m3sq*m4sq;
0071     return -1.0;
0072   }
0073 
0074 protected:
0075 
0076   // Constructor.
0077   DireHooks() : infoPtr(0), settingsPtr(0), particleDataPtr(0), rndmPtr(0),
0078     beamAPtr(0), beamBPtr(0), coupSMPtr(0), partonSystemsPtr(0) {}
0079 
0080   // Pointer to various information on the generation.
0081   Info*          infoPtr;
0082 
0083   // Pointer to the settings database.
0084   Settings*      settingsPtr;
0085 
0086   // Pointer to the particle data table.
0087   ParticleData*  particleDataPtr;
0088 
0089  // Pointer to the random number generator.
0090   Rndm*          rndmPtr;
0091 
0092   // Pointers to the two incoming beams and to Pomeron beam-inside-beam.
0093   BeamParticle*  beamAPtr;
0094   BeamParticle*  beamBPtr;
0095 
0096   // Pointers to Standard Model couplings.
0097   CoupSM*        coupSMPtr;
0098 
0099   // Pointer to information on subcollision parton locations.
0100   PartonSystems* partonSystemsPtr;
0101 
0102 };
0103 
0104 //==========================================================================
0105 
0106 } // end namespace Pythia8
0107 
0108 #endif // Pythia8_DireHooks_H