|
|
|||
File indexing completed on 2026-08-06 09:24:21
0001 // -*- C++ -*- 0002 #ifndef HERWIG_IncomingPhotonEvolver_H 0003 #define HERWIG_IncomingPhotonEvolver_H 0004 // 0005 // This is the declaration of the IncomingPhotonEvolver class. 0006 // 0007 0008 #include "ThePEG/Handlers/StepHandler.h" 0009 0010 namespace Herwig { 0011 0012 using namespace ThePEG; 0013 0014 /** 0015 * The IncomingPhotonEvolver class performs the backward evolution 0016 * of a photon in a partonic process to a quark or antiquark so that 0017 * the event can be showered. 0018 * 0019 * @see \ref IncomingPhotonEvolverInterfaces "The interfaces" 0020 * defined for IncomingPhotonEvolver. 0021 */ 0022 class IncomingPhotonEvolver: public StepHandler { 0023 0024 public: 0025 0026 /** @name Standard constructors and destructors. */ 0027 //@{ 0028 /** 0029 * The default constructor. 0030 */ 0031 IncomingPhotonEvolver(); 0032 //@} 0033 0034 public: 0035 0036 /** @name Virtual functions required by the StepHandler class. */ 0037 //@{ 0038 /** 0039 * The main function called by the EventHandler class to 0040 * perform a step. Given the current state of an Event, this function 0041 * performs the event generation step and includes the result in a new 0042 * Step object int the Event record. 0043 * @param eh the EventHandler in charge of the Event generation. 0044 * @param tagged if not empty these are the only particles which should 0045 * be considered by the StepHandler. 0046 * @param hint a Hint object with possible information from previously 0047 * performed steps. 0048 * @throws Veto if the StepHandler requires the current step to be discarded. 0049 * @throws Stop if the generation of the current Event should be stopped 0050 * after this call. 0051 * @throws Exception if something goes wrong. 0052 */ 0053 virtual void handle(EventHandler & eh, const tPVector & tagged, 0054 const Hint & hint); 0055 //@} 0056 0057 public: 0058 0059 /** @name Functions used by the persistent I/O system. */ 0060 //@{ 0061 /** 0062 * Function used to write out object persistently. 0063 * @param os the persistent output stream written to. 0064 */ 0065 void persistentOutput(PersistentOStream & os) const; 0066 0067 /** 0068 * Function used to read in object persistently. 0069 * @param is the persistent input stream read from. 0070 * @param version the version number of the object when written. 0071 */ 0072 void persistentInput(PersistentIStream & is, int version); 0073 //@} 0074 0075 /** 0076 * The standard Init function used to initialize the interfaces. 0077 * Called exactly once for each class by the class description system 0078 * before the main function starts or 0079 * when this class is dynamically loaded. 0080 */ 0081 static void Init(); 0082 0083 protected: 0084 0085 /** 0086 * Compute boost parameter along z axis to get (Ep, any perp, qp) 0087 * from (E, same perp, q). 0088 */ 0089 inline double getBeta(const double E, const double q, 0090 const double Ep, const double qp) const 0091 {return (q*E-qp*Ep)/(sqr(qp)+sqr(E));} 0092 0093 protected: 0094 0095 /** @name Clone Methods. */ 0096 //@{ 0097 /** 0098 * Make a simple clone of this object. 0099 * @return a pointer to the new object. 0100 */ 0101 virtual IBPtr clone() const; 0102 0103 /** Make a clone of this object, possibly modifying the cloned object 0104 * to make it sane. 0105 * @return a pointer to the new object. 0106 */ 0107 virtual IBPtr fullclone() const; 0108 //@} 0109 0110 protected: 0111 0112 /** @name Standard Interfaced functions. */ 0113 //@{ 0114 /** 0115 * Initialize this object after the setup phase before saving an 0116 * EventGenerator to disk. 0117 * @throws InitException if object could not be initialized properly. 0118 */ 0119 virtual void doinit(); 0120 //@} 0121 0122 private: 0123 0124 /** 0125 * The assignment operator is private and must never be called. 0126 * In fact, it should not even be implemented. 0127 */ 0128 IncomingPhotonEvolver & operator=(const IncomingPhotonEvolver &) = delete; 0129 0130 private: 0131 /** 0132 * PDF set to use. Overrides the one that is associated with the beam particle. 0133 */ 0134 PDFPtr PDF_; 0135 0136 /** 0137 * The maximum value of the PDF for the sample 0138 */ 0139 double PDFMax_; 0140 0141 /** 0142 * The power for the sampling of the PDF 0143 */ 0144 double PDFPower_; 0145 0146 /** 0147 * The minimum starting scale for the evolution 0148 */ 0149 Energy minpT_; 0150 0151 /** 0152 * The minimum space-like virtuality of the photon 0153 */ 0154 Energy minVirtuality_; 0155 0156 /** 0157 * Maximum number of attempts to generate the scale of the 0158 * branching 0159 */ 0160 unsigned int vetoTries_; 0161 0162 /** 0163 * Maximum number of attempts to regenerate the virtuality 0164 */ 0165 unsigned int virtualityTries_; 0166 0167 /** 0168 * Photon ParticleData object 0169 */ 0170 tcPDPtr photon_; 0171 0172 /** 0173 * Partons to backward evolve to 0174 */ 0175 vector<tcPDPtr> partons_; 0176 }; 0177 0178 } 0179 0180 #endif /* HERWIG_IncomingPhotonEvolver_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|