1
// HiddenValleyFragmentation.h is a part of the PYTHIA event generator.
2
// Copyright (C) 2012 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.
6
// This file contains the classes for Hidden-Valley fragmentation.
8
#ifndef Pythia8_HiddenValleyFragmentation_H
9
#define Pythia8_HiddenValleyFragmentation_H
13
#include "FragmentationFlavZpT.h"
14
#include "FragmentationSystems.h"
16
#include "MiniStringFragmentation.h"
17
#include "ParticleData.h"
18
#include "PythiaStdlib.h"
20
#include "StringFragmentation.h"
24
//==========================================================================
26
// The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
28
class HVStringFlav : public StringFlav {
38
// Initialize data members.
39
void init(Settings& settings, Rndm* rndmPtrIn);
41
// Pick a new flavour (including diquarks) given an incoming one.
42
FlavContainer pick(FlavContainer& flavOld);
44
// Combine two flavours (including diquarks) to produce a hadron.
45
int combine(FlavContainer& flav1, FlavContainer& flav2);
49
// Initialization data, to be read from Settings.
55
//==========================================================================
57
// The HVStringPT class is used to select select HV transverse momenta.
59
class HVStringPT : public StringPT {
69
// Initialize data members.
70
void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
74
//==========================================================================
76
// The HVStringZ class is used to sample the HV fragmentation function f(z).
78
class HVStringZ : public StringZ {
88
// Initialize data members.
89
void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
91
// Fragmentation function: top-level to determine parameters.
92
double zFrag( int idOld, int idNew = 0, double mT2 = 1.);
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;}
101
// Initialization data, to be read from Settings and ParticleData.
102
double mqv2, bmqv2, rFactqv, mhvMeson;
106
//==========================================================================
108
// The HiddenValleyFragmentation class contains the routines
109
// to fragment a Hidden Valley partonic system.
111
class HiddenValleyFragmentation {
116
HiddenValleyFragmentation() : hvFlavSelPtr(NULL), hvPTSelPtr(NULL),
120
~HiddenValleyFragmentation() { if (doHVfrag) {
121
if (hvZSelPtr) delete hvZSelPtr; if (hvPTSelPtr) delete hvPTSelPtr;
122
if (hvFlavSelPtr) delete hvFlavSelPtr;} }
124
// Initialize and save pointers.
125
bool init(Info* infoPtrIn, Settings& settings,
126
ParticleData* particleDataPtrIn, Rndm* rndmPtrIn);
128
// Do the fragmentation: driver routine.
129
bool fragment(Event& event);
133
// Pointer to various information on the generation.
136
// Pointer to the particle data table.
137
ParticleData* particleDataPtr;
139
// Pointer to the random number generator.
144
int nFlav, hvOldSize, hvNewSize;
145
double mhvMeson, mSys;
146
vector<int> ihvParton;
148
// Configuration of colour-singlet systems.
149
ColConfig hvColConfig;
151
// Temporary event record for the Hidden Valley system.
154
// The generator class for Hidden Valley string fragmentation.
155
StringFragmentation hvStringFrag;
157
// The generator class for special low-mass HV string fragmentation.
158
MiniStringFragmentation hvMinistringFrag;
160
// Pointers to classes for flavour, pT and z generation in HV sector.
161
StringFlav* hvFlavSelPtr;
162
StringPT* hvPTSelPtr;
165
// Extract HV-particles from event to hvEvent. Assign HV-colours.
166
bool extractHVevent(Event& event);
168
// Collapse of low-mass system to one HV-meson.
169
bool collapseToMeson();
171
// Insert HV particles from hvEvent to event.
172
bool insertHVevent(Event& event);
176
//==========================================================================
178
} // end namespace Pythia8
180
#endif // Pythia8_HiddenValleyFragmentation_H