#include <LundFragHandler.h>
Public Types | |
typedef OrientedIndex | OIndex |
Shorthand alias. | |
typedef pair< double, double > | Xhat |
A pair of energy fractions. | |
typedef vector< Xhat > | XhatVector |
A vector of energy fraction pairs. | |
typedef list< Hadron > | Buffer |
A list of Hadron object. | |
typedef Buffer::iterator | BufferIt |
Iterator into a list of Hadron object. | |
Public Member Functions | |
ParticleList | Hadronize (const tcPVector &) |
The major method in the string fragmentation administration. | |
Standard constructors and destructors. | |
LundFragHandler () | |
Default constructor. | |
LundFragHandler (const LundFragHandler &) | |
Copy-constructor. | |
~LundFragHandler () | |
Destructor. | |
Virtual functions to be implemented by concrete sub-classes. | |
virtual void | handle (EventHandler &eh, const tPVector &tagged, const Hint &hint) |
The main function called by the EventHandler class to perform a step. | |
Functions used by the persistent I/O system. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. | |
Access helper generator objects. | |
void | PtGen (PtGeneratorPtr) |
Set pointer to LundPtGenerator. | |
PtGeneratorPtr | PtGen () const |
Get pointer to LundPtGenerator. | |
void | FlavourGen (FlavourGeneratorPtr) |
Set pointer to LundFlavourGenerator. | |
FlavourGeneratorPtr | FlavourGen () const |
Get pointer to LundFlavourGenerator. | |
void | ZGen (ZGeneratorPtr) |
Set pointer to LundZGenerator. | |
ZGeneratorPtr | ZGen () const |
Get pointer to LundZGenerator. | |
Access interfaced parameters. | |
long | maxLoop () const |
Get maximum number of attempts. | |
void | maxLoop (long n) |
Set maximum number of attempts. | |
Energy | Wmin0 () const |
See documentation of interface Wmin0 . | |
double | k () const |
See documentation of interface k . | |
double | Delta () const |
See documentation of interface delta . | |
Energy | m0 () const |
See documentation of interface m_0 . | |
InvEnergy4 | d0 () const |
See documentation of interface d_0 . | |
double | SqRatio () const |
Returns the suppression factor for production of a pair (from the flavour generator). | |
Print functions for debugging. | |
void | showEP () const |
Print end points. | |
void | echoXhat (cStringRegionPtr) |
Print Xhat values for a string region. | |
Static Public Member Functions | |
static void | Init () |
Standard Init function used to initialize the interface. | |
Protected Member Functions | |
Clone Methods. | |
virtual IBPtr | clone () const |
Make a simple clone of this object. | |
virtual IBPtr | fullclone () const |
Make a clone of this object, possibly modifying the cloned object to make it sane. | |
Standard Interfaced functions. | |
virtual void | doupdate () throw (UpdateException) |
Check sanity of the object during the setup phase. | |
virtual void | doinit () throw (InitException) |
Initialize this object after the setup phase before saving an EventGenerator to disk. | |
virtual void | dofinish () |
Finalize this object. | |
Main internal functions for the hadronization. | |
void | resetHandler () |
Set the LundFraghandler members to their defaults value. | |
void | initHadronization (const tcPVector &) |
Find the string type (open, closed) of the incoming vector of particles. | |
PVector | copyRecombine (tcPPtr first, const tcPVector &inPVec) |
Copy partons which should be fragmented and recombine those which are too close together. | |
void | initOpenString (const tcPVector &) |
Given the vector of particles, find the correct initial particle to send to the String constructor to create the open String and initialize the first EndPoint s. | |
void | initClosedString (const tcPVector &) |
Given the vector of particles, find the correct initial particle to send to the String constructor to create the closed String and initialize the first EndPoint s. | |
void | getHadron () |
Perform a step in the fragmentation iterative process, resulting by the creation of a new hadron. | |
void | loopBack () |
Updates the CurrentString variables after a step has been preformed (i.e. | |
void | finalTwoHadrons () |
Produce the last two hadron in the string fragmentation scheme. | |
void | Stepping () |
Main method responsible for finding the string region where a solution for the new generated breakpoint can be found. | |
void | solveGammaM2System () |
Invoked by Stepping() to solve the (Gamma, m2) equation system in the current StringRegion reached by the Stepping procedure. | |
void | Step () |
Handle the steps along the StringRegion map. | |
void | stepDown () |
Handle the steps along the StringRegion map. | |
LorentzMomentum | p0 (cStringRegionPtr first, cStringRegionPtr last) |
Calculate the momentum vector for two string regions. | |
cPPtr | selectBreakup (const tcPVector &) |
Used by initClosedString to break a closed string and find the rightmost, leftmost end-points, for the resulting open-like string. | |
void | pickFirstEPts () |
Used by initClosedString to break a closed string and find the rightmost, leftmost end-points, for the resulting open-like string. | |
Functions for creating the final two hadrons. | |
void | setupCommonFinalRegion () |
Used by the finalTwoHadrons() to find the final region when the two last End-point are not in the same string-region. | |
void | solveKinematics () |
Used by finalTwoHadrons() to compute the kinematics of the two final hadrons. | |
cStringRegionPtr | finalSR () const |
Return the final string-region where the second end-point is produced. | |
const EndPoint & | firstEP () const |
Return the first end-point. | |
EndPoint & | secondEP () |
Return the second end-point. | |
Hadron & | secondH () |
Get Ref to the second Hadron. | |
Helper and access functions. | |
Energy2 | Wmin2 () const |
Given the masses of the last two end-point and the current one , compute the minimum energy above which a pair can be produced. | |
bool | enoughE () const |
Return true if the string remaining energy is large enough to produce a new pair. | |
bool | AqqbarSystem () const |
Return true if the current string is a simple string. | |
bool | inconsistentBreakupRegions () const |
Used by the Step() method. | |
int | nSR () const |
Return the number of string-regions of the currentString. | |
const EndPoint & | lastEP () const |
EndPoints accessor. | |
const EndPoint & | lastOppEP () const |
EndPoints accessor. | |
EndPoint & | getLastEP () |
EndPoints accessor. | |
EndPoint & | getLastOppEP () |
EndPoints accessor. | |
cStringRegionPtr | CurrentSR () const |
Return the current string. | |
double | CurrentXremf () const |
Access to the forward momentum fraction available in the current StringRegion. | |
double | CurrentXremb () const |
Access to the backward momentum fraction available in the current StringRegion. | |
double & | Xhatfwd (int) |
Get ref to the forward Xhat fractions given the index (int) of the string-region axis. | |
double & | Xhatbwd (int) |
Get ref to the backward Xhat fractions given the index (int) of the string-region axis. | |
void | setXhat (double, double) |
Set the forward and backward Xhat fractions in the current StrinRegion. | |
bool | aSolution () const |
Return true when a solution has been found for the position of the new breakup. | |
Functions for generating and storing hadrons. | |
void | store (Hadron &, int Dir=Oriented::Dir()) |
Store a hadron. | |
void | clearBuffer () |
Clear hadron storage. | |
ParticleList | createParticleList () |
Create a list of stored hadrons. | |
virtual tcPDPtr | generateHadron (tcPDPtr inPDPtr, cPDPtr &newPDPtr, long curtainQid=0) |
Calls LundFlavourGenerator::generateHadron(tcPDPtr, cPDPtr&, long). | |
virtual tcPDPtr | getHadron (tcPDPtr inPD1, tcPDPtr inPD2) |
Calls LundFlavourGenerator::getHadron(tcPDPtr, tcPDPtr). | |
Private Attributes | |
PtGeneratorPtr | thePtGen |
The LundPtGenerator. | |
FlavourGeneratorPtr | theFlGen |
The LundFlavourGenerator. | |
ZGeneratorPtr | theZGen |
The LundZGenerator. | |
ClusterCollapserPtr | theCollapser |
The object used to avoid too small strings in the hadronization. | |
Energy | pWmin0 |
See documentation of interface Wmin0 . | |
double | pK |
See documentation of interface k . | |
double | pDelta |
See documentation of interface delta . | |
Energy | pM0 |
See documentation of interface m_0 . | |
Energy2 | m2min |
The effective cut-off in squared mass, below which partons may be recombined to simplify (machine precision limited) kinematics of string fragmentation. | |
Energy2 | m2mini |
The effective cut-off in squared mass, below which partons may be recombined to simplify (machine precision limited) kinematics of string fragmentation. | |
double | angmin |
The effective angular cut-off in radians for recombination of partons, used in conjunction with m2min. | |
double | angmini |
The effective angular cut-off in radians for recombination of partons, used in conjunction with m2min. | |
InvEnergy4 | pd0 |
Used to parametrize the probability for reverse rapidity ordering of the final two hadrons. | |
long | MaxLoop |
Defines the maximun mumber of allowed attemps to fragment the CurrentString. | |
StringPtr | theCurrentString |
The current string to fragment. | |
EndPoint | theRightEP |
The right end-point. | |
EndPoint | theLeftEP |
The left end-point. | |
EndPoint | CurrentEP |
The current end-points. | |
cStringRegionPtr | thefinalSR |
The final string-region in the final 2 hadrons procedure. | |
cPDPtr | newCreatedPD |
Newly created ParticleData type. | |
Hadron | newHadron |
Newly created Hadrons. | |
Hadron | lastHadron |
Newly created Hadrons. | |
XhatVector | XhatFwdVector |
Vector of forward Xhat coordinates. | |
XhatVector | XhatBwdVector |
Vector of backward Xhat coordinates. | |
LorentzMomentum | Pzero |
Used to keep track of total momentum available in breakups. | |
bool | Estatus |
True as long as there is enough energy left in the string. | |
bool | GammaM2Solution |
True as long as there is a solution to the gamma equation. | |
long | ntry |
The number of attempts so far to fragment the current string. | |
cPPtr | breakup |
Closed string first breakup. | |
Buffer | theBuffer |
Hadron storage. | |
BufferIt | currentBufferIt |
Hadron storage iterator. | |
LorentzRotation | cmr |
The rotation to boost back ftom the current string rest frame. | |
Static Private Attributes | |
static ClassDescription < LundFragHandler > | initLundFragHandler |
Interface description. |
It is responsible for handling the hadronization phase according to the Lund fragmentation scheme. It inherits from HadronizationHandler the methods to communicate with the EventHandler and the EventGenerator. It also derives from Oriented to fix the orientation taken for each step in the fragmentation procedure.
Its tasks is : to look through the tagged
particles present in the current Step, to extract the Strings to be hadronized into a list of Particles. At the end of the procedure, it asks the EventHandler for a copy of the current Step to add the newly created hadrons.
The LundFragHandler is responsible for creating the current String object to fragment. The fragmentation algorithm is implemented as a step-by-step updating procedure of EndPoint. The LundFragHandler contains three EndPoint
s: two to describe the last (right, left) end-point left over in the previous steps, and the current end-point created during the current step.
To achieve its job the LundFragHandler makes use of the LundPtGenerator, LundZGenerator and LundFlavourGenerator classes.
HadronizationHandler
Definition at line 54 of file LundFragHandler.h.
typedef pair<double, double> Pythia7::LundFragHandler::Xhat |
typedef vector<Xhat> Pythia7::LundFragHandler::XhatVector |
typedef list<Hadron> Pythia7::LundFragHandler::Buffer |
typedef Buffer::iterator Pythia7::LundFragHandler::BufferIt |
virtual void Pythia7::LundFragHandler::handle | ( | EventHandler & | eh, | |
const tPVector & | tagged, | |||
const Hint & | hint | |||
) | [virtual] |
The main function called by the EventHandler class to perform a step.
Extracts the color singlet strings in the tagged particles vector, and send them to the Hadronize method to be fragmented. When completed get a copy of the current Step from the EventHandler and insert the newly created particles to form a new step in the EventRecord.
eh | the EventHandler in charge of the Event generation. | |
tagged | if not empty these are the only particles which should be considered by the StepHandler. | |
hint | a Hint object with possible information from previously performed steps. |
Veto | if the StepHandler requires the current step to be discarded. | |
Stop | if the generation of the current Event should be stopped after this call. | |
Exception | if something goes wrong. |
Implements ThePEG::StepHandler.
ParticleList Pythia7::LundFragHandler::Hadronize | ( | const tcPVector & | ) |
The major method in the string fragmentation administration.
Given a vector of Particles that form the string, it returns the list of newly produced particles. Its task is divided in three main parts :
1) Set-up the string calling the initHadronization method
2) call getHadron() method to produce a new hadron while the remaining energy of the string is above a minimum threshold, otherwise call the finalTwoHadron() method the produce the last 2 hadron in the procedure.
void Pythia7::LundFragHandler::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
Reimplemented from ThePEG::Interfaced.
void Pythia7::LundFragHandler::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. |
Reimplemented from ThePEG::Interfaced.
virtual IBPtr Pythia7::LundFragHandler::clone | ( | ) | const [inline, protected, virtual] |
Make a simple clone of this object.
Implements ThePEG::InterfacedBase.
virtual IBPtr Pythia7::LundFragHandler::fullclone | ( | ) | const [inline, protected, virtual] |
Make a clone of this object, possibly modifying the cloned object to make it sane.
Reimplemented from ThePEG::InterfacedBase.
virtual void Pythia7::LundFragHandler::doinit | ( | ) | throw (InitException) [inline, protected, virtual] |
Initialize this object after the setup phase before saving an EventGenerator to disk.
InitException | if object could not be initialized properly. |
Reimplemented from ThePEG::InterfacedBase.
virtual void Pythia7::LundFragHandler::dofinish | ( | ) | [inline, protected, virtual] |
Finalize this object.
Called in the run phase just after a run has ended. Used eg. to write out statistics.
Reimplemented from ThePEG::InterfacedBase.
void Pythia7::LundFragHandler::getHadron | ( | ) | [protected] |
Perform a step in the fragmentation iterative process, resulting by the creation of a new hadron.
This is the method that fixes the step's side, that will be used by all oriented classes.
void Pythia7::LundFragHandler::loopBack | ( | ) | [protected] |
Updates the CurrentString variables after a step has been preformed (i.e.
a new break-point created and a new hadron produced) before starting a new step.
void Pythia7::LundFragHandler::finalTwoHadrons | ( | ) | [protected] |
Produce the last two hadron in the string fragmentation scheme.
Invoked when the String remaining energy is below Wmin. At that point the iterative procedure is stopped andd the last two hadrons are produced
bool Pythia7::LundFragHandler::inconsistentBreakupRegions | ( | ) | const [inline, protected] |
Used by the Step() method.
Return true if a step taken on the string region map ends-up in an inconsistent string-region, that will lead to uncrossed the left-right sequences.
double& Pythia7::LundFragHandler::Xhatfwd | ( | int | ) | [inline, protected] |
Get ref to the forward Xhat fractions given the index (int) of the string-region axis.
(cf. StrinRegion).
double& Pythia7::LundFragHandler::Xhatbwd | ( | int | ) | [inline, protected] |
Get ref to the backward Xhat fractions given the index (int) of the string-region axis.
(cf. StrinRegion).
Energy2 Pythia7::LundFragHandler::m2min [private] |
The effective cut-off in squared mass, below which partons may be recombined to simplify (machine precision limited) kinematics of string fragmentation.
(Default chosen to be of the order of a light quark mass, or half a typical light meson mass.)
Definition at line 609 of file LundFragHandler.h.
Energy2 Pythia7::LundFragHandler::m2mini [private] |
The effective cut-off in squared mass, below which partons may be recombined to simplify (machine precision limited) kinematics of string fragmentation.
(Default chosen to be of the order of a light quark mass, or half a typical light meson mass.) m2mini is copied from m2min for each string to be hadronized and will be increased if the hadronization fails too often.
Definition at line 619 of file LundFragHandler.h.
double Pythia7::LundFragHandler::angmini [private] |
The effective angular cut-off in radians for recombination of partons, used in conjunction with m2min.
angmini is copied from angmin for each string to be hadronized and will be increased if the hadronization fails too often.
Definition at line 633 of file LundFragHandler.h.