File: PartialCollisionHandler.h
Description:
The PartialCollisionHandler is used to administer all
steps needed to generate a Collision after the
hard subprocess has been performed by the
CollisionHandler derived from
PartialCollisionHandler. The
PartialCollisionHandler can also be used from a
PartialEventHandler to perform specified steps on
a user-defined initial condition.
The PartialCollisionHandler maintains five groups of of
StepHandlers implemented as
HandlerGroups. Each group have a main step
handler: SubProcessHandler,
CascadeHandler,
MultipleInteractionHandler,
HadronizationHandler and
DecayHandler respectively, whereof the first group
only uses the post-handler part of the group. as
The PartialCollisionHandler class also inherits from the
LastXCombInfo class to have easy interface to the
information in the last selected XComb in case the
PartialCollisionHandler is used a a sub-class of the
CollisionHandler class.
See
also:
namespace Pythia7
CLASS
PartialCollisionHandler:
Base class:
HandlerBase,
public
LastXCombInfo<>
Public members:
typedef vector<HandlerGroupBase *> GroupVector;
PartialCollisionHandler();
PartialCollisionHandler(const PartialCollisionHandler &);
virtual ~PartialCollisionHandler();
Standard ctors and dtor
tEventPtr partialCollision(tEventPtr e);
tEventPtr partialCollision(tStepPtr s);
Continue generating a collision, where the event or first step of
an event is supplied from the outside.
tCollPtr continueCollision();
Continue generating a collision which was interrupted, or was
supplied from outside.
void clearEvent();
Clear all step handlers, making the handler ready for a new event.
virtual bool empty() const;
Returns true if there are no step handlers left to apply to the
current event;
void performStep(tStepHdlPtr handler, tHintPtr hint);
Perform a given step using a handler and a hint.
void addStep(Group::Level, Group::Handler,
tStepHdlPtr, tHintPtr);
In the curresnt list of step handlers to go through, add another
step handler and/or hint.
inline tStepPtr newStep();
Create a new step and make it current.
inline void popStep();
Remove the last step.
virtual void initGroups();
initialize groups of step handlers.
inline tEventPtr currentEvent() const;
inline void currentEvent(tEventPtr e);
Set/get current event.
inline tCollPtr currentCollision() const;
inline void currentCollision(tCollPtr c);
Set/get current collision.
inline tStepPtr currentStep() const;
inline void currentStep(tStepPtr s);
Set/get current step.
inline tStepHdlPtr currentStepHandler() const;
inline void currentStepHandler(tStepHdlPtr sh);
Set/get current step handler.
void throwCurrent();
Throw away the current event/collision.
virtual void clean();
Throw away the last generated event before generating a new one.
void persistentOutput(PersistentOStream &) const;
void persistentInput(PersistentIStream &, int);
Standard functions for writing and reading from persistent streams.
static void Init();
Standard Init function used to initialize the interface.
Protected members:
inline virtual IBPtr clone() const;
inline virtual IBPtr fullclone() const;
Standard clone methods
inline virtual void doupdate() throw(UpdateException);
inline virtual void doinit() throw(InitException);
inline virtual void dofinish();
Standard Interfaced virtual functions.
inline virtual void rebind(const TranslationMap & trans)
throw(RebindException);
Change all pointers to Interfaced objects to corresponding clones.
inline virtual IVector getReferences();
Return pointers to all Interfaced objects refered to by this.
void setupGroups();
Setup the step handler groups.
inline GroupVector & groups();
inline const GroupVector & groups() const;
Access to the step handler groups
Private members:
HandlerGroup<SubProcessHandler> theSubprocessGroup;
HandlerGroup<CascadeHandler> theCascadeGroup;
HandlerGroup<MultipleInteractionHandler> theMultiGroup;
HandlerGroup<HadronizationHandler> theHadronizationGroup;
HandlerGroup<DecayHandler> theDecayGroup;
GroupVector theGroups;
The step handler groups.
EventPtr theCurrentEvent;
CollPtr theCurrentCollision;
StepPtr theCurrentStep;
StepHdlPtr theCurrentStepHandler;
Info about the current event.
Protected members:
HandlerGroup<SubProcessHandler> optSubprocessGroup;
HandlerGroup<CascadeHandler> optCascadeGroup;
HandlerGroup<MultipleInteractionHandler> optMultiGroup;
HandlerGroup<HadronizationHandler> optHadronizationGroup;
HandlerGroup<DecayHandler> optDecayGroup;
Utility objects to facilitate default selection of step handlers.
GroupVector optGroups;
Private members:
PYTHIA7_DECLARE_PREPOST_GROUP(SubProcessHandler,Post);
PYTHIA7_DECLARE_GROUPINTERFACE(CascadeHandler,CascHdlPtr);
PYTHIA7_DECLARE_GROUPINTERFACE(MultipleInteractionHandler,MIHdlPtr);
PYTHIA7_DECLARE_GROUPINTERFACE(HadronizationHandler,HadrHdlPtr);
PYTHIA7_DECLARE_GROUPINTERFACE(DecayHandler,DecayHdlPtr);
Utility decalarations for interfaces
static ClassDescription initPartialCollisionHandler;
PYTHIA7_DECLARE_CLASS_DESCRIPTION(PartialCollisionHandler);
PartialCollisionHandler & operator=(const PartialCollisionHandler &);
Private and non-existent assignment operator.
PYTHIA7_DECLARE_CLASS_TRAITS(PartialCollisionHandler,HandlerBase);
template <>
struct BaseClassTrait {
typedef HandlerBase NthBase;
};
template <>
struct ClassTraits:
public ClassTraitsBase {
static string className() { return "/Pythia7/PartialCollisionHandler"; }
};
DEFINED MACROS
PYTHIA7_PartialCollisionHandler_H
INCLUDED FILES
Pythia7/Handlers/HandlerBase.h
Pythia7/Handlers/HandlerGroup.h
Pythia7/Handlers/StepHandler.h
Pythia7/EventRecord/Event.h
Pythia7/Handlers/LastXCombInfo.h
PartialCollisionHandler.xh
PartialCollisionHandler.icc