File: ShowerIndex.h
Description:
Simple struct that is used as key for the multimap of the
possible Sudakov form factors. In fact, given:
- a certain particle, specified by its id;
(it must be always defined)
- the interaction type (QCD or QED or EWK,
or others if you want to add other extra interactions) of the
radiation it has emitted; in the case it didn't emit any radiation,
and as default value, is set to UNDEFINED;
- the time-order of the particle: IS if initial state (space-like),
or FS if final state (time-like); the latter is used as default;
there can be more than one Sudakov form factor, for example:
(gluon,QCD,FS) has the following Sudakov form factors:
g -> u ubar , g -> d dbar , g -> s sbar , g -> c cbar, g -> b bar
(we can also include g -> g g g ).
Notice that in practice we can even distinguish between
particle (id>0) and antiparticle (id<0), but in practice
we assume CP-conserving interactions, and therefore only
the particle (id>0) will be considered.
Before a ShowerParticle object emits eventually a radiation
(that means forever in the case it does not emit any radiation)
its interaction type is set to UNDEFINED.
We use a simple plain struct, rather than a proper class
with encapsulated private members and accessory get/set methods,
because we feel that this is more appropriate for this very simple and
straightforward data structure which consists of just a triplet.
See
also:
namespace Herwig
STRUCT
ShowerIndex
Public members:
Friends
PersistentOStream & operator<< (PersistentOStream & os, const ShowerIndex & x);
PersistentIStream & operator>> (PersistentIStream & is, ShowerIndex & x);
This operator overloading is necessary in order to store persistently
the multimap of < key = showerIndex object, value = pointer to Sudakov object >
(in class SplittingGenerator).
enum { NumInteractionTypes = 3, NumTimeOrderType = 2 };
enum InteractionType { UNDEFINED=-1, QCD, QED, EWK };
enum TimeOrderType { UNINITIALIZED=-1, IS, FS }; // InitialState, FinaleState particle
ShowerIndex() : id(0), interaction(UNDEFINED), timeFlag(UNINITIALIZED) {}
Default constructor.
bool operator< (const ShowerIndex & rhs) const;
This operator overloading is necessary in order to use ShowerIndex
as a key of a multimap (used in class SplittingGenerator).
static InteractionType int2Interaction(const int position);
static TimeOrderType int2TimeOrder(const int position);
These conversion static methods are necessary for overloading
the input operator<< (see above), because it is a compiling
error if you try to convert an int to a enum const (whereas
the opposite conversion, which is used in the output operator>>
is done automatically by the compiler). Furthermore, these
methods, together with the the constants NumInteractionTypes
and NumTimeOrderType , are useful to loop over an enum,
which is not possible directly.
long id;
InteractionType interaction;
TimeOrderType timeFlag;
DEFINED MACROS
INCLUDED FILES
ThePEG/Persistency/PersistentOStream.h
ThePEG/Persistency/PersistentIStream.h