/usr/include/Pythia8/Pythia8/HiddenValleyFragmentation.h is in libpythia8-dev 8.1.86-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | // HiddenValleyFragmentation.h is a part of the PYTHIA event generator.
// Copyright (C) 2014 Torbjorn Sjostrand.
// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
// Please respect the MCnet Guidelines, see GUIDELINES for details.
// This file contains the classes for Hidden-Valley fragmentation.
#ifndef Pythia8_HiddenValleyFragmentation_H
#define Pythia8_HiddenValleyFragmentation_H
#include "Pythia8/Basics.h"
#include "Pythia8/Event.h"
#include "Pythia8/FragmentationFlavZpT.h"
#include "Pythia8/FragmentationSystems.h"
#include "Pythia8/Info.h"
#include "Pythia8/MiniStringFragmentation.h"
#include "Pythia8/ParticleData.h"
#include "Pythia8/PythiaStdlib.h"
#include "Pythia8/Settings.h"
#include "Pythia8/StringFragmentation.h"
namespace Pythia8 {
//==========================================================================
// The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
class HVStringFlav : public StringFlav {
public:
// Constructor.
HVStringFlav() {}
// Destructor.
~HVStringFlav() {}
// Initialize data members.
void init(Settings& settings, Rndm* rndmPtrIn);
// Pick a new flavour (including diquarks) given an incoming one.
FlavContainer pick(FlavContainer& flavOld);
// Combine two flavours (including diquarks) to produce a hadron.
int combine(FlavContainer& flav1, FlavContainer& flav2);
private:
// Initialization data, to be read from Settings.
int nFlav;
double probVector;
};
//==========================================================================
// The HVStringPT class is used to select select HV transverse momenta.
class HVStringPT : public StringPT {
public:
// Constructor.
HVStringPT() {}
// Destructor.
~HVStringPT() {}
// Initialize data members.
void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
};
//==========================================================================
// The HVStringZ class is used to sample the HV fragmentation function f(z).
class HVStringZ : public StringZ {
public:
// Constructor.
HVStringZ() {}
// Destructor.
~HVStringZ() {}
// Initialize data members.
void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
// Fragmentation function: top-level to determine parameters.
double zFrag( int idOld, int idNew = 0, double mT2 = 1.);
// Parameters for stopping in the middle; for now hardcoded.
virtual double stopMass() {return 1.5 * mhvMeson;}
virtual double stopNewFlav() {return 2.0;}
virtual double stopSmear() {return 0.2;}
private:
// Initialization data, to be read from Settings and ParticleData.
double mqv2, bmqv2, rFactqv, mhvMeson;
};
//==========================================================================
// The HiddenValleyFragmentation class contains the routines
// to fragment a Hidden Valley partonic system.
class HiddenValleyFragmentation {
public:
// Constructor.
HiddenValleyFragmentation() : doHVfrag(false), hvFlavSelPtr(NULL),
hvPTSelPtr(NULL), hvZSelPtr(NULL) {}
// Destructor.
~HiddenValleyFragmentation() { if (doHVfrag) {
if (hvZSelPtr) delete hvZSelPtr; if (hvPTSelPtr) delete hvPTSelPtr;
if (hvFlavSelPtr) delete hvFlavSelPtr;} }
// Initialize and save pointers.
bool init(Info* infoPtrIn, Settings& settings,
ParticleData* particleDataPtrIn, Rndm* rndmPtrIn);
// Do the fragmentation: driver routine.
bool fragment(Event& event);
private:
// Pointer to various information on the generation.
Info* infoPtr;
// Pointer to the particle data table.
ParticleData* particleDataPtr;
// Pointer to the random number generator.
Rndm* rndmPtr;
// Data mambers.
bool doHVfrag;
int nFlav, hvOldSize, hvNewSize;
double mhvMeson, mSys;
vector<int> ihvParton;
// Configuration of colour-singlet systems.
ColConfig hvColConfig;
// Temporary event record for the Hidden Valley system.
Event hvEvent;
// The generator class for Hidden Valley string fragmentation.
StringFragmentation hvStringFrag;
// The generator class for special low-mass HV string fragmentation.
MiniStringFragmentation hvMinistringFrag;
// Pointers to classes for flavour, pT and z generation in HV sector.
StringFlav* hvFlavSelPtr;
StringPT* hvPTSelPtr;
StringZ* hvZSelPtr;
// Extract HV-particles from event to hvEvent. Assign HV-colours.
bool extractHVevent(Event& event);
// Collapse of low-mass system to one HV-meson.
bool collapseToMeson();
// Insert HV particles from hvEvent to event.
bool insertHVevent(Event& event);
};
//==========================================================================
} // end namespace Pythia8
#endif // Pythia8_HiddenValleyFragmentation_H
|