/usr/include/ThePEG/Handlers/CascadeHandler.h is in libthepeg-dev 1.8.0-1.1.
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 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | // -*- C++ -*-
//
// CascadeHandler.h is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 1999-2011 Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
#ifndef ThePEG_CascadeHandler_H
#define ThePEG_CascadeHandler_H
// This is the declaration of the CascadeHandler class.
#include "StepHandler.h"
#include "ThePEG/Handlers/LastXCombInfo.h"
#include "ThePEG/PDF/PDF.h"
namespace ThePEG {
/**
* The CascadeHandler is the base class of all handlers implementing
* perturbative partonic cascade models. It is derived from the more
* general StepHandler class, and implements the handle() function to
* do some standard initialization before calling the main cascade()
* function.
*
* @see \ref CascadeHandlerInterfaces "The interfaces"
* defined for CascadeHandler.
* @see StepHandler
* @see EventHandler
* @see SubProcessHandler
*/
class CascadeHandler: public StepHandler, public LastXCombInfo<> {
public:
/** @name Standard constructors and destructors. */
//@{
/**
* The destructor.
*/
virtual ~CascadeHandler();
//@}
public:
/** @name Virtual functions required by the StepHandler class. */
//@{
/**
* The main function called by the EventHandler class to
* perform a step.
* @param eh the EventHandler in charge of the Event generation.
* @param tagged if not empty these are the only particles which should
* be considered by the StepHandler.
* @param hint a Hint object with possible information from previously
* performed steps.
* @throws Veto if the StepHandler requires the current step to be
* discarded.
* @throws Stop if the generation of the current Event should be stopped
* after this call.
* @throws Exception if something goes wrong.
*/
virtual void handle(EventHandler & eh, const tPVector & tagged,
const Hint & hint);
//@}
/**
* The main function to be overwritten by sub-classes. It is called
* by handle() after storing some information which is then
* available through simple access functions.
*/
virtual void cascade() = 0;
/**
* The CascadeHandler can be used inside the process generation to
* do so-called CKKW reweighting of the hard sub-process. In this
* case this function is called after information about the
* sub-process is made available through the LastXCombInfo base
* class. Only the function belonging to the primary CascadeHandler
* for the event to be generated is called. Sub-classes may
* implement it to give a suitable weight in return. The
* CascadeHandler may store information about the generated
* sub-process to be used in the subsequent cascade. It is however
* not guaranteed that the reweightCKKW() will have been called for
* the subprocess handed to the handle() function. This default
* implementation of the function simply return one. The current
* sub-process is mixed together with other processes with a
* multiplicity of outgoing particles between \a minMult and \a
* maxMult.
*/
virtual double reweightCKKW(int minMult, int maxMult);
public:
/** @name Access information stored by the handle() function. */
//@{
/**
* Return the vector of tagged particles which should be
* showered. It the vector is empty, the patons from the current
* sub-process is supposed to be showered.
*/
const tPVector & tagged() const { return *theTagged; }
/**
* Return the int provided in the current call to handle().
*/
const Hint & hint() const { return *theHint; }
/**
* Return references to the PDF used by the first incoming particle.
*/
const PDF & firstPDF() const { return pdfs().first; }
/**
* Return references to the PDF used by the first incoming particle.
*/
const PDF & secondPDF() const { return pdfs().second; }
/**
* Return references to the currently used PDF's.
*/
const pair<PDF,PDF> & pdfs() const { return thePDFs; }
/**
* Set alternative PDFBase objects to be used for cascade.
*/
void resetPDFs(const pair<tcPDFPtr,tcPDFPtr> & pdfpair);
/**
* Set the XComb object with information about the sub-process
* generation.
*/
void setXComb(tXCombPtr xc);
//@}
public:
/**
* Standard Init function used to initialize the interface.
*/
static void Init();
private:
/**
* Store the tagged argument given to handle().
*/
const tPVector * theTagged;
/**
* Store the Hint arguments given to handle().
*/
const Hint * theHint;
/**
* The pdfs used to extract the incoming partons.
*/
pair<PDF,PDF> thePDFs;
private:
/**
* The static object used to initialize the description of this class.
* Indicates that this is an abstract class without persistent data.
*/
static AbstractNoPIOClassDescription<CascadeHandler> initCascadeHandler;
/**
* Private and non-existent assignment operator.
*/
CascadeHandler & operator=(const CascadeHandler &);
};
/** @cond TRAITSPECIALIZATIONS */
/** This template specialization informs ThePEG about the
* base classes of CascadeHandler. */
template <>
struct BaseClassTrait<CascadeHandler,1>: public ClassTraitsType {
/** Typedef of the first base class of CascadeHandler. */
typedef StepHandler NthBase;
};
/** This template specialization informs ThePEG about the name of
* the CascadeHandler class and the shared object where it is defined. */
template <>
struct ClassTraits<CascadeHandler>: public ClassTraitsBase<CascadeHandler> {
/** Return a platform-independent class name */
static string className() { return "ThePEG::CascadeHandler"; }
};
/** @endcond */
}
#endif /* ThePEG_CascadeHandler_H */
|