StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Vincia.h
1 // Vincia.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2020 Peter Skands, 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 // This file contains global header information for Vincia.
7 
8 #ifndef Pythia8_Vincia_H
9 #define Pythia8_Vincia_H
10 
11 // Maths headers.
12 #include <limits>
13 #include <cmath>
14 
15 // Include Pythia 8 headers.
16 #include "Pythia8/Event.h"
17 #include "Pythia8/ParticleData.h"
18 #include "Pythia8/PartonSystems.h"
19 #include "Pythia8/StandardModel.h"
20 #include "Pythia8/ShowerModel.h"
21 #include "Pythia8/ShowerMEs.h"
22 
23 // Include Vincia headers.
24 #include "Pythia8/VinciaAntennaFunctions.h"
25 #include "Pythia8/VinciaCommon.h"
26 #include "Pythia8/VinciaFSR.h"
27 #include "Pythia8/VinciaISR.h"
28 #include "Pythia8/VinciaQED.h"
29 
30 // Define namespace inside which Vincia lives.
31 namespace Pythia8 {
32 
33 //==========================================================================
34 
35 // The Vincia class. Top-level handler class for the Vincia antenna
36 // shower model.
37 
38 class Vincia : public ShowerModel {
39 
40 public:
41 
42  // Constructor
43  Vincia() = default;
44 
45  // Empty virtual destructor
46  virtual ~Vincia() = default;
47 
48  // Initialize.
49  bool init(MergingPtr mrgPtrIn, MergingHooksPtr mrgHooksPtrIn,
50  PartonVertexPtr partonVertexPtrIn,
51  WeightContainer* weightContainerPtrIn) override;
52 
53  // Function called from Pythia after the beam particles have been set up,
54  // so that showers may be initialized after the beams are initialized.
55  // Currently only dummy dunction.
56  bool initAfterBeams() override { return true; }
57 
58  // Methods to get
59  TimeShowerPtr getTimeShower() const override { return timesPtr; }
60  TimeShowerPtr getTimeDecShower() const override { return timesDecPtr; }
61  SpaceShowerPtr getSpaceShower() const override { return spacePtr; }
62  MergingHooksPtr getMergingHooks() const override { return mergingHooksPtr; }
63  MergingPtr getMerging() const override { return mergingPtr; }
64 
65  // Automatically set verbose level in all members.
66  void setVerbose(int verboseIn);
67 
68  // Utilities for printing info and internal histograms.
69  void printInfo() {
70  timesPtr->printInfo(true);
71  spacePtr->printInfo(true);
72  }
73  void printHistos() {
74  timesPtr->printHistos();
75  }
76  void writeHistos(string fileName = "vincia", string lastName = "dat") {
77  timesPtr->writeHistos(fileName, lastName);
78  }
79  const Hist& getDiagnosticHistogram(string name) {
80  return timesPtr->getDiagnosticHistogram(name);
81  }
82 
83  // Public Vincia objects.
84  VinciaCommon vinCom;
85  Resolution resolution;
86  QEDShower qedShower;
87  Colour colour;
88  ResScaleHook resScaleHook;
89  VinciaWeights vinWeights;
90  MECs mecs;
91 
92  // Auxiliary objects.
93  ShowerMEsPlugin mg5mes;
94  Rambo rambo;
95 
96  // Vectors of antenna functions.
97  DGLAP dglap;
98  AntennaSetFSR antennaSetFSR;
99  AntennaSetISR antennaSetISR;
100 
101  // Pointers to Pythia classes.
102  SusyLesHouches* slhaPtr;
103 
104  protected:
105 
106  // Method to initialise Vincia tune settings
107  bool initTune(int iTune);
108 
109  // Members for the FSR and ISR showers.
110  shared_ptr<VinciaFSR> timesPtr;
111  shared_ptr<VinciaFSR> timesDecPtr;
112  shared_ptr<VinciaISR> spacePtr;
113 
114  private:
115 
116  // Verbosity level.
117  int verbose;
118 
119 };
120 
121 //==========================================================================
122 
123 } // end Pythia8 namespace
124 
125 #endif // end Pythia8_Vincia_H