Herwig
7.2.1
|
The HwRemDecayer class is responsible for the decay of the remnants. More...
#include <HwRemDecayer.h>
Classes | |
struct | ExtraSoftScatterVeto |
struct that is used to catch exceptions which are thrown due to energy conservation issues of additional soft scatters More... | |
struct | HadronContent |
Simple struct to store info about baryon quark and di-quark constituents. More... | |
Public Types | |
typedef vector< pair< tPPtr, tPPtr > > | PartnerMap |
Typedef to store information about colour partners. | |
Public Types inherited from ThePEG::RemnantDecayer | |
enum | RecoilOption |
typedef Ptr< PtGenerator >::pointer | PtGPtr |
Public Types inherited from ThePEG::InterfacedBase | |
enum | InitState |
Public Types inherited from ThePEG::Pointer::ReferenceCounted | |
typedef unsigned int | CounterType |
Public Member Functions | |
HwRemDecayer () | |
The default constructor. | |
void | initialize (pair< tRemPPtr, tRemPPtr > rems, tPPair beam, Step &step, Energy forcedSplitScale) |
Do several checks and initialization, for remnantdecay inside ShowerHandler. | |
void | initSoftInteractions (Energy ptmin, InvEnergy2 beta) |
Initialize the soft scattering machinery. More... | |
void | doSplit (pair< tPPtr, tPPtr > partons, pair< tcPDFPtr, tcPDFPtr > pdfs, bool first) |
Perform the acual forced splitting. More... | |
void | finalize (double colourDisrupt=0.0, unsigned int softInt=0) |
Perform the final creation of the diquarks. More... | |
void | findChildren (tPPtr, vector< PPtr > &) const |
Find the children. | |
const pair< HadronContent, HadronContent > & | content () const |
Return the hadron content objects for the incoming particles. | |
HadronContent | getHadronContent (tcPPtr hadron) const |
Return a HadronContent struct from a PPtr to a hadron. | |
void | setHadronContent (tPPair beam) |
Set the hadron contents. | |
Virtual functions required by the Decayer class. | |
virtual bool | accept (const DecayMode &) const |
Check if this decayer can perfom the decay specified by the given decay mode. More... | |
virtual bool | canHandle (tcPDPtr particle, tcPDPtr parton) const |
Return true if this decayer can handle the extraction of the extracted parton from the given particle. | |
virtual bool | multiCapable () const |
Return true if this decayed can extract more than one parton from a particle. | |
virtual ParticleVector | decay (const DecayMode &dm, const Particle &p, Step &step) const |
Perform a decay for a given DecayMode and a given Particle instance. More... | |
Functions used by the persistent I/O system. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. More... | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. More... | |
Public Member Functions inherited from ThePEG::RemnantDecayer | |
virtual bool | checkExtract (tcPPtr parent, tcPPtr extracted, const LorentzMomentum &pnew) const |
RecoilOption | recoilOption () const |
int | respectDISKinematics () const |
PtGPtr | pTGenerator () const |
virtual bool | needsFullStep () const |
virtual ParticleVector | decay (const DecayMode &dm, const Particle &p) const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
virtual bool | needsFullStep () const |
virtual ParticleVector | decay (const DecayMode &dm, const Particle &p) const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
Public Member Functions inherited from ThePEG::Decayer | |
Ptr< Amplitude >::pointer | amplitude () const |
virtual double | brat (const DecayMode &dm, const ParticleData &pd, double oldbrat) const |
virtual double | brat (const DecayMode &dm, const Particle &p, double oldbrat) const |
virtual ParticleVector | getChildren (const DecayMode &dm, const Particle &parent) const |
virtual void | finalBoost (const Particle &parent, const ParticleVector &children) const |
virtual void | setScales (const Particle &parent, const ParticleVector &children) const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
virtual double | brat (const DecayMode &dm, const ParticleData &pd, double oldbrat) const |
virtual double | brat (const DecayMode &dm, const Particle &p, double oldbrat) const |
virtual ParticleVector | getChildren (const DecayMode &dm, const Particle &parent) const |
virtual void | finalBoost (const Particle &parent, const ParticleVector &children) const |
virtual void | setScales (const Particle &parent, const ParticleVector &children) const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
Public Member Functions inherited from HandlerBaseT< UseRandom > | |
double | rnd () const |
double | rnd (double xu) const |
double | rnd (double xl, double xu) const |
bool | rndbool () const |
bool | rndbool (double p) const |
bool | rndbool (double p1, double p2) const |
int | rndsign (double p1, double p2, double p3) const |
int | rnd2 (double p0, double p1) const |
int | rnd3 (double p0, double p1, double p2) const |
int | rnd4 (double p0, double p1, double p2, double p3) const |
long | irnd (long xu=2) const |
long | irnd (long xl, long xu) const |
const StandardModelBase & | SM () const |
tSMPtr | standardModel () const |
Public Member Functions inherited from ThePEG::Interfaced | |
virtual bool | defaultInit () |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
Public Member Functions inherited from ThePEG::InterfacedBase | |
string | fullName () const |
string | name () const |
string | path () const |
string | comment () const |
void | setup (istream &is) |
virtual void | debugme () const |
void | update () |
void | init () |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
void | update () |
void | init () |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
Public Member Functions inherited from ThePEG::Base | |
void | debug () const |
Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
CounterType | referenceCount () const |
Public Member Functions inherited from ThePEG::Named | |
Named (const string &newName=string()) | |
Named (const Named &)=default | |
const string & | name () const |
bool | operator== (const Named &other) const |
bool | operator< (const Named &other) const |
Static Public Member Functions | |
static void | Init () |
The standard Init function used to initialize the interfaces. More... | |
Static Public Member Functions inherited from ThePEG::RemnantDecayer | |
static tPVector | decayRemnants (const tPVector &particles, Step &step) |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Decayer | |
static ParticleVector | DecayParticle (tPPtr parent, Step &step, long maxtry=1000) |
static void | Init () |
Static Public Member Functions inherited from ThePEG::HandlerBase | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Interfaced | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::InterfacedBase | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Base | |
static void | Init () |
Protected Member Functions | |
Clone Methods. | |
virtual IBPtr | clone () const |
Make a simple clone of this object. More... | |
virtual IBPtr | fullclone () const |
Make a clone of this object, possibly modifying the cloned object to make it sane. More... | |
Standard Interfaced functions. | |
virtual void | doinit () |
Initialize this object after the setup phase before saving an EventGenerator to disk. More... | |
Protected Member Functions inherited from ThePEG::RemnantDecayer | |
tRemPDPtr | data (tcRemPPtr remnant) const |
tcPPtr | parent (tcRemPPtr remnant) const |
const PVector & | extracted (tcRemPPtr remnant) const |
virtual void | fillSubSystem (tPPtr p, set< tPPtr > &sub) const |
virtual tPVector | getSubSystem (tcPPtr parent, tPPtr parton) const |
virtual bool | preInitialize () const |
virtual bool | preInitialize () const |
Protected Member Functions inherited from ThePEG::Interfaced | |
void | reporeg (IBPtr object, string name) const |
bool | setDefaultReference (PtrT &ptr, string classname, string objectname) |
Interfaced (const string &newName) | |
Interfaced (const Interfaced &i) | |
void | setGenerator (tEGPtr generator) |
Protected Member Functions inherited from ThePEG::InterfacedBase | |
InterfacedBase (string newName) | |
InterfacedBase (const InterfacedBase &i) | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
Protected Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
Protected Member Functions inherited from ThePEG::Named | |
const Named & | operator= (const Named &other) |
const string & | name (const string &newName) |
Private Member Functions | |
HwRemDecayer & | operator= (const HwRemDecayer &) |
The assignment operator is private and must never be called. More... | |
void | split (tPPtr parton, HadronContent &content, tRemPPtr rem, Lorentz5Momentum &used, PartnerMap &partners, tcPDFPtr pdf, bool first) |
Do the forced Splitting of the Remnant with respect to the extracted parton parton. More... | |
void | mergeColour (tPPtr p1, tPPtr p2, bool anti) const |
Merge the colour lines of two particles. More... | |
void | fixColours (PartnerMap partners, bool anti, double disrupt) const |
Set the colour connections. More... | |
void | setRemMasses () const |
Set the momenta of the Remnants properly and boost the decay particles. | |
PPtr | finalSplit (const tRemPPtr rem, long remID, Lorentz5Momentum usedMomentum) const |
This creates a parton from the remaining flavours of the hadron. More... | |
PPtr | forceSplit (const tRemPPtr rem, long child, Energy &oldQ, double &oldx, Lorentz5Momentum &pf, Lorentz5Momentum &p, HadronContent &content) const |
This takes the particle and find a splitting for np -> p + child and creates the correct kinematics and connects for such a split. More... | |
bool | isPartonic (tPPtr parton) const |
Check if a particle is a parton from a hadron or not. More... | |
Soft interaction methods. | |
Energy | softPt () const |
Produce pt values according to dN/dp_T = N p_T exp(-beta_*p_T^2) | |
void | softKinematics (Lorentz5Momentum &r1, Lorentz5Momentum &r2, Lorentz5Momentum &g1, Lorentz5Momentum &g2) const |
Get the 2 pairs of 5Momenta for the scattering. More... | |
void | doSoftInteractions (unsigned int N) |
Create N soft gluon interactions. | |
void | doSoftInteractions_old (unsigned int N) |
Create N soft gluon interactions (old version) | |
void | doSoftInteractions_multiPeriph (unsigned int N) |
Create N soft gluon interactions with multiperhpheral kinematics. | |
bool | doPhaseSpaceGenerationGluons (vector< Lorentz5Momentum > &softGluons, Energy energy, unsigned int &its) const |
Phase space generation for the ladder partons. | |
LorentzRotation | rotate (const LorentzMomentum &p) const |
This returns the rotation matrix needed to rotate p into the z axis. | |
template<typename T > | |
T | gaussDistribution (T mean, T stdev) const |
Methods to generate random distributions also all stolen form UA5Handler. | |
double | randUng (double A, double B) const |
This returns a random number with a flat distribution [-A,A] plus gaussian tail with stdev B TODO: Should move this to Utilities. More... | |
template<typename T > | |
void | randAzm (T pt, T &px, T &py) const |
Energy | randExt (Energy AM0, InvEnergy B) const |
tPPtr | addParticle (tcPPtr parent, long id, Lorentz5Momentum p) const |
Method to add a particle to the step. More... | |
Private Attributes | |
pair< bool, bool > | theanti |
A flag which indicates, whether the extracted valence quark was a anti particle. | |
pair< double, double > | theX |
variable to sum up the x values of the extracted particles | |
pair< HadronContent, HadronContent > | theContent |
Pair of HadronContent structs to know about the quark content of the beams. | |
pair< Lorentz5Momentum, Lorentz5Momentum > | theUsed |
Pair of Lorentz5Momentum to keep track of the forced splitting product momenta. | |
pair< PartnerMap, PartnerMap > | theMaps |
Pair of PartnerMap's to store the particles, which will be colour connected in the end. | |
StepPtr | thestep |
Variable to hold a pointer to the current step. More... | |
pair< RemPPtr, RemPPtr > | theRems |
Pair of Remnant pointers. More... | |
tcPPtr | theBeam |
The beam particle data for the current incoming hadron. | |
Ptr< BeamParticleData >::const_pointer | theBeamData |
the beam data | |
tcPDFPtr | _pdf |
The PDF for the current initial-state shower. | |
bool | allowTop_ |
Switch to control handling of top quarks in proton. | |
bool | multiPeriph_ |
Switch to control using multiperipheral kinemaics. | |
bool | quarkPair_ |
True if kinematics is to be calculated for quarks. | |
Energy | mg_ |
The gluon constituent mass. | |
Soft interaction variables. | |
tPPair | softRems_ |
Pair of soft Remnant pointers, i.e. More... | |
Energy | ptmin_ |
ptcut of the UE model | |
InvEnergy2 | beta_ |
slope of the soft pt-spectrum: dN/dp_T = N p_T exp(-beta*p_T^2) | |
unsigned int | maxtrySoft_ |
Maximum number of attempts for the regeneration of an additional soft scattering, before the number of scatters is reduced. | |
double | colourDisrupt_ |
Variable to store the relative number of colour disrupted connections to additional soft subprocesses. | |
double | ladderbFactor_ |
Variable to store the additive factor of the multiperipheral ladder multiplicity. | |
double | ladderPower_ |
Variable of the parameterization of the ladder multiplicity. | |
double | ladderNorm_ |
Variable of the parameterization of the ladder multiplicity. | |
double | ladderMult_ |
double | gaussWidth_ |
Variable to store the gaussian width of the fluctuation of the longitudinal momentum fraction. | |
double | valOfN_ |
Variable to store the current total multiplicity of a ladder. | |
double | initTotRap_ |
Variable to store the initial total rapidity between of the remnants. | |
Forced splitting variables. | |
Energy | _kinCutoff |
The kinematic cut-off. | |
Energy | _forcedSplitScale |
The PDF freezing scale as set in ShowerHandler. | |
double | _range |
Range for emission. | |
double | _zbin |
Size of the bins in z for the interpolation. | |
double | _ybin |
Size of the bins in y for the interpolation. | |
int | _nbinmax |
Maximum number of bins for the z interpolation. | |
ShowerAlphaPtr | _alphaS |
Pointer to the object calculating the QCD coupling. | |
ShowerAlphaPtr | _alphaEM |
Pointer to the object calculating the QED coupling. | |
unsigned int | DISRemnantOpt_ |
Option for the DIS remnant. | |
unsigned int | PtDistribution_ |
Option for the pT generation. | |
unsigned int | pomeronStructure_ |
Option for the treatment of the pomeron structure. | |
Additional Inherited Members | |
Public Attributes inherited from ThePEG::RemnantDecayer | |
boostAll | |
boostFinal | |
copyFinal | |
Public Attributes inherited from ThePEG::InterfacedBase | |
initializing | |
uninitialized | |
initialized | |
runready | |
Public Attributes inherited from ThePEG::Pointer::ReferenceCounted | |
const unsigned long | uniqueId |
Static Protected Member Functions inherited from ThePEG::RemnantDecayer | |
static LorentzRotation | getZBoost (const LorentzMomentum &p0, const LorentzMomentum &p) |
Static Protected Member Functions inherited from ThePEG::Interfaced | |
static void | registerRepository (IBPtr) |
static void | registerRepository (IBPtr, string newName) |
Protected Attributes inherited from ThePEG::RemnantDecayer | |
int | respectDIS |
The HwRemDecayer class is responsible for the decay of the remnants.
Additional secondary scatters have to be evolved backwards to a gluon, the first/hard interaction has to be evolved back to a valence quark. This is all generated inside this class, which main methods are then called by the ShowerHandler.
A simple forced splitting algorithm is used. This takes the Remnant object produced from the PDF and backward evolution (hadron - parton) and produce partons with the remaining flavours and with the correct colour connections.
The algorithim operates by starting with the parton which enters the hard process. If this is from the sea there is a forced branching to produce the antiparticle from a gluon branching. If the parton entering the hard process was a gluon, or a gluon was produced from the first step of the algorithm, there is then a further branching back to a valence parton. After these partons have been produced a quark or diquark is produced to give the remaining valence content of the incoming hadron.
The forced branching are generated using a scale between QSpac and EmissionRange times the minimum scale. The energy fractions are then distributed using
with the massless splitting functions.
Definition at line 56 of file HwRemDecayer.h.
|
inlinevirtual |
Check if this decayer can perfom the decay specified by the given decay mode.
Reimplemented from ThePEG::RemnantDecayer.
Definition at line 93 of file HwRemDecayer.h.
|
private |
Method to add a particle to the step.
parent | = pointer to the parent particle |
id | = Particle ID of the newly created particle |
p | = Lorentz5Momentum of the new particle |
|
inlineprotectedvirtual |
Make a simple clone of this object.
Implements ThePEG::InterfacedBase.
Definition at line 197 of file HwRemDecayer.h.
|
virtual |
Perform a decay for a given DecayMode and a given Particle instance.
dm | the DecayMode describing the decay. |
p | the Particle instance to be decayed. |
step | the step we are working on. |
Implements ThePEG::RemnantDecayer.
|
inlineprotectedvirtual |
Initialize this object after the setup phase before saving an EventGenerator to disk.
InitException | if object could not be initialized properly. |
Reimplemented from ThePEG::RemnantDecayer.
Definition at line 215 of file HwRemDecayer.h.
References ThePEG::InterfacedBase::doinit().
void Herwig::HwRemDecayer::doSplit | ( | pair< tPPtr, tPPtr > | partons, |
pair< tcPDFPtr, tcPDFPtr > | pdfs, | ||
bool | first | ||
) |
Perform the acual forced splitting.
partons | is a pair of ThePEG::Particle pointers which store the final partons on which the shower ends. |
pdfs | are pointers to the pdf objects for both beams |
first | is a flage wether or not this is the first or a secondary interation |
void Herwig::HwRemDecayer::finalize | ( | double | colourDisrupt = 0.0 , |
unsigned int | softInt = 0 |
||
) |
Perform the final creation of the diquarks.
Set the remnant masses and do all colour connections.
colourDisrupt | = variable to control how many "hard" scatters are colour isolated |
softInt | = parameter for the number of soft scatters |
|
inlineprivate |
This creates a parton from the remaining flavours of the hadron.
The last parton used was a valance parton, so only 2 (or 1, if meson) flavours remain to be used.
Definition at line 386 of file HwRemDecayer.h.
References Lorentz5Vector< Energy >::setMass().
|
private |
Set the colour connections.
partners | = Object that holds the information which particles to connect. |
anti | = flag to indicate, if (anti)colour was extracted as first parton. |
disrupt | parameter for disruption of the colour structure |
|
private |
This takes the particle and find a splitting for np -> p + child and creates the correct kinematics and connects for such a split.
This Splitting has an upper bound on qtilde given by the energy argument
rem | The Remnant |
child | The PDG code for the outgoing particle |
oldQ | The maximum scale for the evolution |
oldx | The fraction of the hadron's momentum carried by the last parton |
pf | The momentum of the last parton at input and after branching at output |
p | The total emitted momentum |
content | The content of the hadron |
|
inlineprotectedvirtual |
Make a clone of this object, possibly modifying the cloned object to make it sane.
Reimplemented from ThePEG::InterfacedBase.
Definition at line 203 of file HwRemDecayer.h.
|
static |
The standard Init function used to initialize the interfaces.
Called exactly once for each class by the class description system before the main function starts or when this class is dynamically loaded.
void Herwig::HwRemDecayer::initSoftInteractions | ( | Energy | ptmin, |
InvEnergy2 | beta | ||
) |
Initialize the soft scattering machinery.
ptmin | = the pt cutoff used in the UE model |
beta | = slope of the soft pt-spectrum |
|
private |
Check if a particle is a parton from a hadron or not.
parton | The parton to be tested |
Merge the colour lines of two particles.
p1 | = Pointer to particle 1 |
p2 | = Pointer to particle 2 |
anti | = flag to indicate, if (anti)colour was extracted as first parton. |
|
private |
The assignment operator is private and must never be called.
In fact, it should not even be implemented.
void Herwig::HwRemDecayer::persistentInput | ( | PersistentIStream & | is, |
int | version | ||
) |
Function used to read in object persistently.
is | the persistent input stream read from. |
version | the version number of the object when written. |
void Herwig::HwRemDecayer::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
|
inlineprivate |
This returns a random number with a flat distribution [-A,A] plus gaussian tail with stdev B TODO: Should move this to Utilities.
A | The width of the flat part |
B | The standard deviation of the gaussian tail |
Definition at line 492 of file HwRemDecayer.h.
|
private |
Get the 2 pairs of 5Momenta for the scattering.
Needs calling of initSoftInteractions.
|
private |
Do the forced Splitting of the Remnant with respect to the extracted parton parton.
parton | = PPtr to the parton going into the subprocess. |
content | = HadronContent struct to keep track of flavours. |
rem | = Pointer to the ThePEG::RemnantParticle. |
used | = Momentum vector to keep track of remaining momenta. |
partners | = Vector of pairs filled with tPPtr to the particles which should be colour connected. |
pointer to the PDF Object which is used for this particle | |
first | = Flag for the first interaction. |
|
private |
|
private |
Pair of Remnant pointers.
This is needed to boost in the Remnant-Remnant CMF after all have been decayed.
Definition at line 576 of file HwRemDecayer.h.
|
private |
Variable to hold a pointer to the current step.
The variable is used to determine, wether decay(const DecayMode & dm, const Particle & p, Step & step) has been called in this event or not.
Definition at line 570 of file HwRemDecayer.h.