Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // Vincia.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Peter Skands, 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 // This file contains global header information for Vincia.
0007 
0008 #ifndef Pythia8_Vincia_H
0009 #define Pythia8_Vincia_H
0010 
0011 // Maths headers.
0012 #include <limits>
0013 #include <cmath>
0014 
0015 // Include Pythia 8 headers.
0016 #include "Pythia8/Event.h"
0017 #include "Pythia8/ParticleData.h"
0018 #include "Pythia8/PartonSystems.h"
0019 #include "Pythia8/PhaseSpace.h"
0020 #include "Pythia8/StandardModel.h"
0021 #include "Pythia8/ShowerModel.h"
0022 #include "Pythia8/ExternalMEs.h"
0023 
0024 // Include Vincia headers.
0025 #include "Pythia8/VinciaAntennaFunctions.h"
0026 #include "Pythia8/VinciaCommon.h"
0027 #include "Pythia8/VinciaDiagnostics.h"
0028 #include "Pythia8/VinciaEW.h"
0029 #include "Pythia8/VinciaFSR.h"
0030 #include "Pythia8/VinciaISR.h"
0031 #include "Pythia8/VinciaMerging.h"
0032 #include "Pythia8/VinciaMergingHooks.h"
0033 #include "Pythia8/VinciaQED.h"
0034 
0035 // Define namespace inside which Vincia lives.
0036 namespace Pythia8 {
0037 
0038 //==========================================================================
0039 
0040 // The Vincia class. Top-level handler class for the Vincia antenna
0041 // shower model.
0042 
0043 class Vincia : public ShowerModel {
0044 
0045 public:
0046 
0047   // Constructor.
0048   Vincia() = default;
0049 
0050   // Empty virtual destructor.
0051   virtual ~Vincia() override = default;
0052 
0053   // Initialize.
0054   bool init(MergingPtr mrgPtrIn, MergingHooksPtr mrgHooksPtrIn,
0055             PartonVertexPtr partonVertexPtrIn,
0056             WeightContainer* weightContainerPtrIn) override;
0057 
0058   // Function called from Pythia after the beam particles have been set up,
0059   // so that showers may be initialized after the beams are initialized.
0060   bool initAfterBeams() override {
0061     // Initialise QED showers with beams initialised.
0062     qedShowerHardPtr->init(beamAPtr, beamBPtr);
0063     qedShowerSoftPtr->init(beamAPtr, beamBPtr);
0064     ewShowerPtr->init(beamAPtr, beamBPtr);
0065     return true;
0066   }
0067 
0068   // Methods to get
0069   TimeShowerPtr  getTimeShower() const override { return timesPtr; }
0070   TimeShowerPtr  getTimeDecShower() const override { return timesDecPtr; }
0071   SpaceShowerPtr getSpaceShower() const override { return spacePtr; }
0072   MergingHooksPtr getMergingHooks() const override { return mergingHooksPtr; }
0073   MergingPtr getMerging() const override { return mergingPtr; }
0074 
0075   // End-of-run statistics.
0076   void onStat() override {
0077     if (verbose >= Logger::REPORT) diagnosticsPtr->print(); }
0078 
0079   // Automatically set verbose level in all members.
0080   void setVerbose(int verboseIn);
0081 
0082   // Public Vincia objects.
0083   VinciaCommon          vinCom{};
0084   Resolution            resolution{};
0085   VinciaModulePtr       ewShowerPtr{};
0086   VinciaModulePtr       qedShowerHardPtr{};
0087   VinciaModulePtr       qedShowerSoftPtr{};
0088   VinciaColour          colour{};
0089   VinciaWeights         vinWeights{};
0090   MECs                  mecs{};
0091 
0092   // Auxiliary objects.
0093   ExternalMEsPtr        mg5mes{};
0094   Rambo                 rambo{};
0095 
0096   // Vectors of antenna functions.
0097   DGLAP         dglap{};
0098   AntennaSetFSR antennaSetFSR{};
0099   AntennaSetISR antennaSetISR{};
0100 
0101   // Pointers to Pythia classes.
0102   SusyLesHouches*    slhaPtr{};
0103   WeightContainer*   weightContainerPtr{};
0104 
0105  protected:
0106 
0107   // Method to initialise Vincia tune settings
0108   bool initTune(int iTune);
0109 
0110   // Members for the FSR and ISR showers.
0111   shared_ptr<VinciaFSR> timesPtr{};
0112   shared_ptr<VinciaFSR> timesDecPtr{};
0113   shared_ptr<VinciaISR> spacePtr{};
0114 
0115   // Merging pointers.
0116   shared_ptr<VinciaMergingHooks> mergingHooksPtr{};
0117   shared_ptr<VinciaMerging> mergingPtr{};
0118 
0119   // Pointer for diagnostics and profiling.
0120   shared_ptr<VinciaDiagnostics> diagnosticsPtr{};
0121 
0122  private:
0123 
0124   // Verbosity level.
0125   int verbose{0};
0126 
0127   // Merging flag.
0128   bool doMerging{false};
0129 
0130 };
0131 
0132 //==========================================================================
0133 
0134 } // end Pythia8 namespace
0135 
0136 #endif // Pythia8_Vincia_H