StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Merging.h
1 // Merging.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2020 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 is written by Stefan Prestel.
7 // Merging: Wrapper 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/History.h"
17 #include "Pythia8/Info.h"
18 #include "Pythia8/MergingHooks.h"
19 #include "Pythia8/ParticleData.h"
20 #include "Pythia8/PartonLevel.h"
21 #include "Pythia8/PhysicsBase.h"
22 #include "Pythia8/PythiaStdlib.h"
23 #include "Pythia8/Settings.h"
24 #include "Pythia8/StandardModel.h"
25 
26 namespace Pythia8 {
27 
28 //==========================================================================
29 
30 // Merging is a wrapper class for the interface of matrix element merging and
31 // Pythia8.
32 
33 class Merging : public PhysicsBase {
34 
35 public:
36 
37  // Constructor.
38  Merging() : PhysicsBase(), trialPartonLevelPtr(), mergingHooksPtr(),
39  tmsNowMin() {}
40 
41  // Destructor.
42  virtual ~Merging(){}
43 
44  // Initialisation function for internal use inside Pythia source code
45  void initPtrs( MergingHooksPtr mergingHooksPtrIn,
46  PartonLevel* trialPartonLevelPtrIn) {
47  trialPartonLevelPtr = trialPartonLevelPtrIn;
48  mergingHooksPtr = mergingHooksPtrIn;
49  }
50 
51  // Initialisation function for internal use inside Pythia source code
52  virtual void init();
53 
54  // Function to print statistics.
55  virtual void statistics();
56 
57  // Function to steer different merging prescriptions.
58  virtual int mergeProcess( Event& process);
59 
60 protected:
61 
62  //----------------------------------------------------------------------//
63  // The members
64  //----------------------------------------------------------------------//
65 
66  // Make Pythia class friend
67  friend class Pythia;
68 
69  // Pointer to trial PartonLevel object
70  PartonLevel* trialPartonLevelPtr;
71 
72  // Pointer to trial MergingHooks object
73  MergingHooksPtr mergingHooksPtr;
74 
75  // Pointer to standard model couplings.
76  //CoupSM* coupSMPtr;
77 
78  // Minimal value found for the merging scale in events.
79  double tmsNowMin;
80  static const double TMSMISMATCH;
81 
82  // Function to perform CKKW-L merging on the event.
83  int mergeProcessCKKWL( Event& process);
84 
85  // Function to perform UMEPS merging on the event.
86  int mergeProcessUMEPS( Event& process);
87 
88  // Function to perform NL3 NLO merging on the event.
89  int mergeProcessNL3( Event& process);
90 
91  // Function to perform UNLOPS merging on the event.
92  int mergeProcessUNLOPS( Event& process);
93 
94  // Function to apply the merging scale cut on an input event.
95  bool cutOnProcess( Event& process);
96 
97 };
98 
99 //==========================================================================
100 
101 } // end namespace Pythia8
102 
103 #endif // Pythia8_Merging_H
Definition: AgUStep.h:26