PYTHIA  8.303
HiddenValleyFragmentation.h
1 // HiddenValleyFragmentation.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 contains the classes for Hidden-Valley fragmentation.
7 
8 #ifndef Pythia8_HiddenValleyFragmentation_H
9 #define Pythia8_HiddenValleyFragmentation_H
10 
11 #include "Pythia8/Basics.h"
12 #include "Pythia8/Event.h"
13 #include "Pythia8/FragmentationFlavZpT.h"
14 #include "Pythia8/FragmentationSystems.h"
15 #include "Pythia8/Info.h"
16 #include "Pythia8/MiniStringFragmentation.h"
17 #include "Pythia8/ParticleData.h"
18 #include "Pythia8/PythiaStdlib.h"
19 #include "Pythia8/Settings.h"
20 #include "Pythia8/StringFragmentation.h"
21 
22 namespace Pythia8 {
23 
24 //==========================================================================
25 
26 // The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
27 
28 class HVStringFlav : public StringFlav {
29 
30 public:
31 
32  // Constructor.
33  HVStringFlav() : nFlav(), probVector() {}
34 
35  // Destructor.
37 
38  // Initialize data members.
39  void init();
40 
41  // Pick a new flavour (including diquarks) given an incoming one.
42  FlavContainer pick(FlavContainer& flavOld, double, double, bool);
43 
44  // Combine two flavours (including diquarks) to produce a hadron.
45  int combine(FlavContainer& flav1, FlavContainer& flav2);
46 
47 private:
48 
49  // Initialization data, to be read from Settings.
50  int nFlav;
51  double probVector;
52 
53 };
54 
55 //==========================================================================
56 
57 // The HVStringPT class is used to select select HV transverse momenta.
58 
59 class HVStringPT : public StringPT {
60 
61 public:
62 
63  // Constructor.
65 
66  // Destructor.
68 
69  // Initialize data members.
70  void init();
71 
72 };
73 
74 //==========================================================================
75 
76 // The HVStringZ class is used to sample the HV fragmentation function f(z).
77 
78 class HVStringZ : public StringZ {
79 
80 public:
81 
82  // Constructor.
83  HVStringZ() : mqv2(), bmqv2(), rFactqv(), mhvMeson() {}
84 
85  // Destructor.
86  virtual ~HVStringZ() {}
87 
88  // Initialize data members.
89  void init();
90 
91  // Fragmentation function: top-level to determine parameters.
92  double zFrag( int idOld, int idNew = 0, double mT2 = 1.);
93 
94  // Parameters for stopping in the middle; for now hardcoded.
95  virtual double stopMass() {return 1.5 * mhvMeson;}
96  virtual double stopNewFlav() {return 2.0;}
97  virtual double stopSmear() {return 0.2;}
98 
99 private:
100 
101  // Initialization data, to be read from Settings and ParticleData.
102  double mqv2, bmqv2, rFactqv, mhvMeson;
103 
104 };
105 
106 //==========================================================================
107 
108 // The HiddenValleyFragmentation class contains the routines
109 // to fragment a Hidden Valley partonic system.
110 
112 
113 public:
114 
115  // Constructor.
116  HiddenValleyFragmentation() : doHVfrag(false), nFlav(), hvOldSize(),
117  hvNewSize(), mhvMeson(), mSys() {}
118 
119  // Initialize and save pointers.
120  bool init();
121 
122  // Do the fragmentation: driver routine.
123  bool fragment(Event& event);
124 
125 protected:
126 
127  virtual void onInitInfoPtr() override {
128  registerSubObject(hvStringFrag);
129  registerSubObject(hvMinistringFrag);
130  registerSubObject(hvFlavSel);
131  registerSubObject(hvPTSel);
132  registerSubObject(hvZSel);
133  }
134 
135 private:
136 
137  // Data mambers.
138  bool doHVfrag;
139  int nFlav, hvOldSize, hvNewSize;
140  double mhvMeson, mSys;
141  vector<int> ihvParton;
142 
143  // Configuration of colour-singlet systems.
144  ColConfig hvColConfig;
145 
146  // Temporary event record for the Hidden Valley system.
147  Event hvEvent;
148 
149  // The generator class for Hidden Valley string fragmentation.
150  StringFragmentation hvStringFrag;
151 
152  // The generator class for special low-mass HV string fragmentation.
153  MiniStringFragmentation hvMinistringFrag;
154 
155  // Pointers to classes for flavour, pT and z generation in HV sector.
156  StringFlav hvFlavSel;
157  StringPT hvPTSel;
158  StringZ hvZSel;
159 
160  // Extract HV-particles from event to hvEvent. Assign HV-colours.
161  bool extractHVevent(Event& event);
162 
163  // Collapse of low-mass system to one HV-meson.
164  bool collapseToMeson();
165 
166  // Insert HV particles from hvEvent to event.
167  bool insertHVevent(Event& event);
168 
169 };
170 
171 //==========================================================================
172 
173 } // end namespace Pythia8
174 
175 #endif // Pythia8_HiddenValleyFragmentation_H
The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
Definition: HiddenValleyFragmentation.h:28
HVStringZ()
Constructor.
Definition: HiddenValleyFragmentation.h:83
Definition: PhysicsBase.h:27
void registerSubObject(PhysicsBase &pb)
Register a sub object that should have its information in sync with this.
Definition: PhysicsBase.cc:51
The Event class holds all info on the generated event.
Definition: Event.h:379
virtual double stopMass()
Parameters for stopping in the middle; for now hardcoded.
Definition: HiddenValleyFragmentation.h:95
void init()
Initialize data members.
Definition: HiddenValleyFragmentation.cc:21
HVStringPT()
Constructor.
Definition: HiddenValleyFragmentation.h:64
The StringPT class is used to select select transverse momenta.
Definition: FragmentationFlavZpT.h:288
Definition: StringFragmentation.h:104
~HVStringPT()
Destructor.
Definition: HiddenValleyFragmentation.h:67
HVStringFlav()
Constructor.
Definition: HiddenValleyFragmentation.h:33
The StringZ class is used to sample the fragmentation function f(z).
Definition: FragmentationFlavZpT.h:234
The HVStringZ class is used to sample the HV fragmentation function f(z).
Definition: HiddenValleyFragmentation.h:78
Definition: HiddenValleyFragmentation.h:111
FlavContainer pick(FlavContainer &flavOld, double, double, bool)
Pick a new flavour (including diquarks) given an incoming one.
Definition: HiddenValleyFragmentation.cc:37
virtual void onInitInfoPtr() override
Definition: HiddenValleyFragmentation.h:127
The ColConfig class describes the colour configuration of the whole event.
Definition: FragmentationSystems.h:60
virtual ~HVStringZ()
Destructor.
Definition: HiddenValleyFragmentation.h:86
The HVStringPT class is used to select select HV transverse momenta.
Definition: HiddenValleyFragmentation.h:59
Definition: FragmentationFlavZpT.h:41
~HVStringFlav()
Destructor.
Definition: HiddenValleyFragmentation.h:36
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
The StringFlav class is used to select quark and hadron flavours.
Definition: FragmentationFlavZpT.h:84
Definition: MiniStringFragmentation.h:30
int combine(FlavContainer &flav1, FlavContainer &flav2)
Combine two flavours (including diquarks) to produce a hadron.
Definition: HiddenValleyFragmentation.cc:58
HiddenValleyFragmentation()
Constructor.
Definition: HiddenValleyFragmentation.h:116