Line data Source code
1 : // Merging.h is a part of the PYTHIA event generator.
2 : // Copyright (C) 2015 Torbjorn Sjostrand.
3 : // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4 : // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 :
6 : // This file is written by Stefan Prestel.
7 : // Merging: Wpapper class to interface matrix element merging schemes with
8 : // Pythia
9 :
10 : #ifndef Pythia8_Merging_H
11 : #define Pythia8_Merging_H
12 :
13 : #include "Pythia8/Basics.h"
14 : #include "Pythia8/BeamParticle.h"
15 : #include "Pythia8/Event.h"
16 : #include "Pythia8/Info.h"
17 : #include "Pythia8/ParticleData.h"
18 : #include "Pythia8/PythiaStdlib.h"
19 : #include "Pythia8/Settings.h"
20 : #include "Pythia8/PartonLevel.h"
21 : #include "Pythia8/MergingHooks.h"
22 : #include "Pythia8/History.h"
23 :
24 : namespace Pythia8 {
25 :
26 : //==========================================================================
27 :
28 : // Merging is a wrapper class for the interface of matrix element merging and
29 : // Pythia8.
30 :
31 : class Merging {
32 :
33 : public:
34 :
35 : // Constructor.
36 0 : Merging() { settingsPtr = 0; infoPtr = 0; particleDataPtr = 0;
37 0 : rndmPtr = 0; beamAPtr = 0; beamBPtr = 0; trialPartonLevelPtr = 0;
38 0 : mergingHooksPtr = 0; }
39 :
40 : // Make Pythia class friend
41 : friend class Pythia;
42 :
43 : // Destructor.
44 0 : ~Merging(){}
45 :
46 : protected:
47 :
48 : //----------------------------------------------------------------------//
49 : // The members
50 : //----------------------------------------------------------------------//
51 :
52 :
53 : // Settings: databases of flags/modes/parms/words to control run.
54 : Settings* settingsPtr;
55 :
56 : // Pointer to various information on the generation.
57 : Info* infoPtr;
58 :
59 : // Pointer to the particle data table.
60 : ParticleData* particleDataPtr;
61 :
62 : // Pointer to random number generator.
63 : Rndm* rndmPtr;
64 :
65 : // Pointer to trial PartonLevel object
66 : PartonLevel* trialPartonLevelPtr;
67 :
68 : // Pointer to trial MergingHooks object
69 : MergingHooks* mergingHooksPtr;
70 :
71 : // Pointers to beam particles.
72 : BeamParticle* beamAPtr;
73 : BeamParticle* beamBPtr;
74 :
75 : // Minimal value found for the merging scale in events.
76 : double tmsNowMin;
77 : static const double TMSMISMATCH;
78 :
79 : // Initialisation function for internal use inside Pythia source code
80 : void init( Settings* settingsPtrIn, Info* infoPtrIn,
81 : ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
82 : BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
83 : MergingHooks* mergingHooksPtrIn, PartonLevel* trialPartonLevelPtrIn );
84 :
85 : // Function to print statistics.
86 : void statistics(ostream& os = cout);
87 :
88 : //----------------------------------------------------------------------//
89 : // Functions that implement matrix element merging.
90 : //----------------------------------------------------------------------//
91 :
92 : // Function to steer different merging prescriptions.
93 : int mergeProcess( Event& process);
94 :
95 : // Function to perform CKKW-L merging on the event.
96 : int mergeProcessCKKWL( Event& process);
97 :
98 : // Function to perform UMEPS merging on the event.
99 : int mergeProcessUMEPS( Event& process);
100 :
101 : // Function to perform NL3 NLO merging on the event.
102 : int mergeProcessNL3( Event& process);
103 :
104 : // Function to perform UNLOPS merging on the event.
105 : int mergeProcessUNLOPS( Event& process);
106 :
107 : // Function to apply the merging scale cut on an input event.
108 : bool cutOnProcess( Event& process);
109 :
110 : };
111 :
112 : //==========================================================================
113 :
114 : } // end namespace Pythia8
115 :
116 : #endif // Pythia8_Merging_H
|