|
|
|||
File indexing completed on 2026-08-06 09:24:21
0001 // -*- C++ -*- 0002 // 0003 // HwRemDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef HERWIG_HwRemDecayer_H 0010 #define HERWIG_HwRemDecayer_H 0011 // 0012 // This is the declaration of the HwRemDecayer class. 0013 // 0014 0015 #include "ThePEG/PDT/RemnantDecayer.h" 0016 #include "ThePEG/Handlers/EventHandler.h" 0017 #include "ThePEG/Repository/EventGenerator.h" 0018 #include "ThePEG/EventRecord/SubProcess.h" 0019 #include "ThePEG/PDF/BeamParticleData.h" 0020 #include "Herwig/Shower/ShowerAlpha.h" 0021 #include "Herwig/PDT/StandardMatchers.h" 0022 #include "ThePEG/PDT/StandardMatchers.h" 0023 #include "HwRemDecayer.fh" 0024 0025 namespace Herwig { 0026 using namespace ThePEG; 0027 /** 0028 * The HwRemDecayer class is responsible for the decay of the remnants. Additional 0029 * secondary scatters have to be evolved backwards to a gluon, the 0030 * first/hard interaction has to be evolved back to a valence quark. 0031 * This is all generated inside this class, 0032 * which main methods are then called by the ShowerHandler. 0033 * 0034 * A simple forced splitting algorithm is used. 0035 * This takes the Remnant object produced from the PDF and backward 0036 * evolution (hadron - parton) and produce partons with the remaining 0037 * flavours and with the correct colour connections. 0038 * 0039 * The algorithim operates by starting with the parton which enters the hard process. 0040 * If this is from the sea there is a forced branching to produce the antiparticle 0041 * from a gluon branching. If the parton entering the hard process was a gluon, or 0042 * a gluon was produced from the first step of the algorithm, there is then a further 0043 * branching back to a valence parton. After these partons have been produced a quark or 0044 * diquark is produced to give the remaining valence content of the incoming hadron. 0045 * 0046 * The forced branching are generated using a scale between QSpac and EmissionRange times 0047 * the minimum scale. The energy fractions are then distributed using 0048 * \f[\frac{\alpha_S}{2\pi}\frac{P(z)}{z}f(x/z,\tilde{q})\f] 0049 * with the massless splitting functions. 0050 * 0051 * \author Manuel B\"ahr 0052 * 0053 * @see \ref HwRemDecayerInterfaces "The interfaces" 0054 * defined for HwRemDecayer. 0055 */ 0056 class HwRemDecayer: public RemnantDecayer { 0057 0058 public: 0059 0060 /** Typedef to store information about colour partners */ 0061 typedef vector<pair<tPPtr, tPPtr> > PartnerMap; 0062 0063 public: 0064 0065 /** 0066 * The default constructor. 0067 */ 0068 HwRemDecayer() : allowTop_(false), allowLeptons_(false), 0069 multiPeriph_(true), quarkPair_(false), 0070 ptmin_(-1.*GeV), beta_(ZERO), 0071 maxtrySoft_(10), 0072 colourDisrupt_(1.0), 0073 ladderbFactor_(0.0), 0074 ladderPower_(-0.08), 0075 ladderNorm_(1.0), 0076 ladderMult_(1.0), 0077 gaussWidth_(0.1), 0078 valOfN_(0), 0079 initTotRap_(0), 0080 _kinCutoff(0.75*GeV), 0081 _forcedSplitScale(2.5*GeV), 0082 _range(1.1), _zbin(0.05),_ybin(0.), 0083 _nbinmax(100), DISRemnantOpt_(0), 0084 PtDistribution_(0), 0085 pomeronStructure_(0), mg_(ZERO) {} 0086 0087 /** @name Virtual functions required by the Decayer class. */ 0088 //@{ 0089 /** 0090 * Check if this decayer can perfom the decay specified by the 0091 * given decay mode. 0092 * @return true if this decayer can handle the given mode, otherwise false. 0093 */ 0094 virtual bool accept(const DecayMode &) const { 0095 return true; 0096 } 0097 0098 /** 0099 * Return true if this decayer can handle the extraction of the \a 0100 * extracted parton from the given \a particle. 0101 */ 0102 virtual bool canHandle(tcPDPtr particle, tcPDPtr parton) const; 0103 0104 /** 0105 * Return true if this decayed can extract more than one parton from 0106 * a particle. 0107 */ 0108 virtual bool multiCapable() const { 0109 return true; 0110 } 0111 0112 /** 0113 * Perform a decay for a given DecayMode and a given Particle instance. 0114 * @param dm the DecayMode describing the decay. 0115 * @param p the Particle instance to be decayed. 0116 * @param step the step we are working on. 0117 * @return a ParticleVector containing the decay products. 0118 */ 0119 virtual ParticleVector decay(const DecayMode & dm, const Particle & p, Step & step) const; 0120 //@} 0121 0122 public: 0123 0124 /** 0125 * struct that is used to catch exceptions which are thrown 0126 * due to energy conservation issues of additional soft scatters 0127 */ 0128 struct ExtraSoftScatterVeto {}; 0129 0130 /** @name Functions used by the persistent I/O system. */ 0131 //@{ 0132 /** 0133 * Function used to write out object persistently. 0134 * @param os the persistent output stream written to. 0135 */ 0136 void persistentOutput(PersistentOStream & os) const; 0137 0138 /** 0139 * Function used to read in object persistently. 0140 * @param is the persistent input stream read from. 0141 * @param version the version number of the object when written. 0142 */ 0143 void persistentInput(PersistentIStream & is, int version); 0144 //@} 0145 0146 /** 0147 * The standard Init function used to initialize the interfaces. 0148 * Called exactly once for each class by the class description system 0149 * before the main function starts or 0150 * when this class is dynamically loaded. 0151 */ 0152 static void Init(); 0153 0154 /** 0155 * Do several checks and initialization, for remnantdecay inside ShowerHandler. 0156 */ 0157 void initialize(pair<tRemPPtr, tRemPPtr> rems, tPPair beam, Step & step, 0158 Energy forcedSplitScale); 0159 0160 /** 0161 * Initialize the soft scattering machinery. 0162 * @param ptmin = the pt cutoff used in the UE model 0163 * @param beta = slope of the soft pt-spectrum 0164 */ 0165 void initSoftInteractions(Energy ptmin, InvEnergy2 beta); 0166 0167 /** 0168 * Perform the acual forced splitting. 0169 * @param partons is a pair of ThePEG::Particle pointers which store the final 0170 * partons on which the shower ends. 0171 * @param pdfs are pointers to the pdf objects for both beams 0172 * @param first is a flage wether or not this is the first or a secondary interation 0173 */ 0174 void doSplit(pair<tPPtr, tPPtr> partons, pair<tcPDFPtr, tcPDFPtr> pdfs, bool first); 0175 0176 /** 0177 * Perform the final creation of the diquarks. Set the remnant masses and do 0178 * all colour connections. 0179 * @param colourDisrupt = variable to control how many "hard" scatters 0180 * are colour isolated 0181 * @param softInt = parameter for the number of soft scatters 0182 */ 0183 void finalize(double colourDisrupt=0.0, unsigned int softInt=0); 0184 0185 /** 0186 * Find the children 0187 */ 0188 void findChildren(tPPtr,vector<PPtr> &) const; 0189 0190 protected: 0191 0192 /** @name Clone Methods. */ 0193 //@{ 0194 /** 0195 * Make a simple clone of this object. 0196 * @return a pointer to the new object. 0197 */ 0198 virtual IBPtr clone() const {return new_ptr(*this);} 0199 0200 /** Make a clone of this object, possibly modifying the cloned object 0201 * to make it sane. 0202 * @return a pointer to the new object. 0203 */ 0204 virtual IBPtr fullclone() const {return new_ptr(*this);} 0205 //@} 0206 0207 protected: 0208 0209 /** @name Standard Interfaced functions. */ 0210 //@{ 0211 /** 0212 * Initialize this object after the setup phase before saving an 0213 * EventGenerator to disk. 0214 * @throws InitException if object could not be initialized properly. 0215 */ 0216 virtual void doinit() { 0217 Interfaced::doinit(); 0218 _ybin=0.25/_zbin; 0219 mg_ = getParticleData(ParticleID::g)->constituentMass(); 0220 } 0221 //@} 0222 0223 private: 0224 0225 /** 0226 * The assignment operator is private and must never be called. 0227 * In fact, it should not even be implemented. 0228 */ 0229 HwRemDecayer & operator=(const HwRemDecayer &) = delete; 0230 0231 public: 0232 0233 /** 0234 * Simple struct to store info about baryon quark and di-quark 0235 * constituents. 0236 */ 0237 struct HadronContent { 0238 0239 /** 0240 * manually extract the valence flavour \a id. 0241 */ 0242 inline void extract(int id) { 0243 for(unsigned int i=0; i<flav.size(); i++) { 0244 if(id == sign*flav[i]){ 0245 if(hadron->id() == ParticleID::gamma || 0246 (hadron->id() == ParticleID::pomeron && pomeronStructure==1) || 0247 hadron->id() == ParticleID::reggeon) { 0248 flav[0] = id; 0249 flav[1] = -id; 0250 extracted = 0; 0251 flav.resize(2); 0252 } 0253 else if (hadron->id() == ParticleID::pomeron && pomeronStructure==0) { 0254 extracted = 0; 0255 } 0256 else { 0257 extracted = i; 0258 } 0259 break; 0260 } 0261 } 0262 } 0263 0264 /** 0265 * Return a proper particle ID assuming that \a id has been removed 0266 * from the hadron. 0267 */ 0268 long RemID() const; 0269 0270 /** 0271 * Method to determine whether \a parton is a quark from the sea. 0272 * @return TRUE if \a parton is neither a valence quark nor a gluon. 0273 */ 0274 bool isSeaQuark(tcPPtr parton) const { 0275 return ((parton->id() != ParticleID::g) && ( !isValenceQuark(parton) ) ); 0276 } 0277 0278 /** 0279 * Method to determine whether \a parton is a valence quark. 0280 */ 0281 bool isValenceQuark(tcPPtr parton) const { 0282 return isValenceQuark(parton->id()); 0283 } 0284 0285 /** 0286 * Method to determine whether \a parton is a quark from the sea. 0287 * @return TRUE if \a parton is neither a valence quark nor a gluon. 0288 */ 0289 bool isSeaQuarkData(tcPDPtr partonData) const { 0290 return ((partonData->id() != ParticleID::g) && ( !isValenceQuarkData(partonData) ) ); 0291 } 0292 0293 /** 0294 * Method to determine whether \a parton is a valence quark. 0295 */ 0296 bool isValenceQuarkData(tcPDPtr partonData) const { 0297 int id(sign*partonData->id()); 0298 return find(flav.begin(),flav.end(),id) != flav.end(); 0299 } 0300 0301 /** 0302 * Method to determine whether \a parton is a valence quark. 0303 */ 0304 bool isValenceQuark(int id) const { 0305 return find(flav.begin(),flav.end(),sign*id) != flav.end(); 0306 } 0307 0308 /** The valence flavours of the corresponding baryon. */ 0309 vector<int> flav; 0310 0311 /** The array index of the extracted particle. */ 0312 int extracted; 0313 0314 /** -1 if the particle is an anti-particle. +1 otherwise. */ 0315 int sign; 0316 0317 /** The ParticleData objects of the hadron */ 0318 tcPDPtr hadron; 0319 0320 /** Pomeron treatment */ 0321 unsigned int pomeronStructure; 0322 }; 0323 0324 /** 0325 * Return the hadron content objects for the incoming particles. 0326 */ 0327 const pair<HadronContent, HadronContent>& content() const { 0328 return theContent; 0329 } 0330 0331 /** 0332 * Return a HadronContent struct from a PPtr to a hadron. 0333 */ 0334 HadronContent getHadronContent(tcPPtr hadron) const; 0335 0336 /** 0337 * Set the hadron contents. 0338 */ 0339 void setHadronContent(tPPair beam) { 0340 theContent.first = getHadronContent(beam.first); 0341 theContent.second = getHadronContent(beam.second); 0342 } 0343 0344 private: 0345 0346 /** 0347 * Do the forced Splitting of the Remnant with respect to the 0348 * extracted parton \a parton. 0349 * @param parton = PPtr to the parton going into the subprocess. 0350 * @param content = HadronContent struct to keep track of flavours. 0351 * @param rem = Pointer to the ThePEG::RemnantParticle. 0352 * @param used = Momentum vector to keep track of remaining momenta. 0353 * @param partners = Vector of pairs filled with tPPtr to the particles 0354 * which should be colour connected. 0355 * @param pdf pointer to the PDF Object which is used for this particle 0356 * @param first = Flag for the first interaction. 0357 */ 0358 void split(tPPtr parton, HadronContent & content, tRemPPtr rem, 0359 Lorentz5Momentum & used, PartnerMap & partners, tcPDFPtr pdf, bool first); 0360 0361 /** 0362 * Merge the colour lines of two particles 0363 * @param p1 = Pointer to particle 1 0364 * @param p2 = Pointer to particle 2 0365 * @param anti = flag to indicate, if (anti)colour was extracted as first parton. 0366 */ 0367 void mergeColour(tPPtr p1, tPPtr p2, bool anti) const; 0368 0369 /** 0370 * Set the colour connections. 0371 * @param partners = Object that holds the information which particles to connect. 0372 * @param anti = flag to indicate, if (anti)colour was extracted as first parton. 0373 * @param disrupt parameter for disruption of the colour structure 0374 */ 0375 void fixColours(PartnerMap partners, bool anti, double disrupt) const; 0376 0377 /** 0378 * Set the momenta of the Remnants properly and boost the decay particles. 0379 */ 0380 void setRemMasses(PPair diquarks) const; 0381 0382 /** 0383 * This creates a parton from the remaining flavours of the hadron. The 0384 * last parton used was a valance parton, so only 2 (or 1, if meson) flavours 0385 * remain to be used. 0386 */ 0387 PPtr finalSplit(const tRemPPtr rem, long remID, 0388 Lorentz5Momentum usedMomentum) const { 0389 // Create the remnant and set its momentum, also reset all of the decay 0390 // products from the hadron 0391 PPtr remnant = new_ptr(Particle(getParticleData(remID))); 0392 Lorentz5Momentum prem(rem->momentum()-usedMomentum); 0393 prem.setMass(getParticleData(remID)->constituentMass()); 0394 prem.rescaleEnergy(); 0395 remnant->set5Momentum(prem); 0396 // Add the remnant to the step, but don't do colour connections 0397 thestep->addDecayProduct(rem,remnant,false); 0398 return remnant; 0399 } 0400 0401 0402 /** 0403 * This takes the particle and find a splitting for np -> p + child and 0404 * creates the correct kinematics and connects for such a split. This 0405 * Splitting has an upper bound on qtilde given by the energy argument 0406 * @param rem The Remnant 0407 * @param child The PDG code for the outgoing particle 0408 * @param oldQ The maximum scale for the evolution 0409 * @param oldx The fraction of the hadron's momentum carried by the last parton 0410 * @param pf The momentum of the last parton at input and after branching at output 0411 * @param p The total emitted momentum 0412 * @param content The content of the hadron 0413 */ 0414 PPtr forceSplit(const tRemPPtr rem, long child, Energy &oldQ, double &oldx, 0415 Lorentz5Momentum &pf, Lorentz5Momentum &p, 0416 HadronContent & content) const; 0417 0418 /** 0419 * Check if a particle is a parton from a hadron or not 0420 * @param parton The parton to be tested 0421 */ 0422 bool isPartonic(tPPtr parton) const; 0423 0424 /** @name Soft interaction methods. */ 0425 //@{ 0426 0427 /** 0428 * Produce pt values according to dN/dp_T = N p_T exp(-beta_*p_T^2) 0429 */ 0430 Energy softPt() const; 0431 0432 /** 0433 * Get the 2 pairs of 5Momenta for the scattering. Needs calling of 0434 * initSoftInteractions. 0435 */ 0436 void softKinematics(Lorentz5Momentum &r1, Lorentz5Momentum &r2, 0437 Lorentz5Momentum &g1, Lorentz5Momentum &g2) const; 0438 0439 /** 0440 * Create N soft gluon interactions 0441 */ 0442 void doSoftInteractions(unsigned int N){ 0443 if(!multiPeriph_){ 0444 doSoftInteractions_old(N);} //outdated model for soft interactions 0445 else{ 0446 doSoftInteractions_multiPeriph(N); // Multiperipheral model 0447 } 0448 } 0449 0450 /** 0451 * Create N soft gluon interactions (old version) 0452 */ 0453 void doSoftInteractions_old(unsigned int N); 0454 0455 /** 0456 * Create N soft gluon interactions with multiperhpheral kinematics 0457 */ 0458 void doSoftInteractions_multiPeriph(unsigned int N); 0459 0460 /** 0461 * Phase space generation for the ladder partons 0462 */ 0463 bool doPhaseSpaceGenerationGluons(vector<Lorentz5Momentum> &softGluons, Energy energy, unsigned int &its) 0464 const; 0465 0466 /** 0467 * This returns the rotation matrix needed to rotate p into the z axis 0468 */ 0469 LorentzRotation rotate(const LorentzMomentum &p) const; 0470 0471 /** 0472 * Methods to generate random distributions also all stolen form UA5Handler 0473 **/ 0474 0475 template <typename T> 0476 inline T gaussDistribution(T mean, T stdev) const{ 0477 double x = rnd(); 0478 x = sqrt(-2.*log(x)); 0479 double y; 0480 randAzm(x,x,y); 0481 return mean + stdev*x; 0482 } 0483 0484 0485 /** 0486 * This returns a random number with a flat distribution 0487 * [-A,A] plus gaussian tail with stdev B 0488 * TODO: Should move this to Utilities 0489 * @param A The width of the flat part 0490 * @param B The standard deviation of the gaussian tail 0491 * @return the randomly generated value 0492 */ 0493 inline double randUng(double A, double B) const{ 0494 double prun; 0495 if(A == 0.) prun = 0.; 0496 else prun = 1./(1.+B*1.2533/A); 0497 if(rnd() < prun) return 2.*(rnd()-0.5)*A; 0498 else { 0499 double temp = gaussDistribution(0.,B); 0500 if(temp < 0) return temp - abs(A); 0501 else return temp + abs(A); 0502 } 0503 } 0504 template <typename T> 0505 inline void randAzm(T pt, T &px, T &py) const{ 0506 double c,s,cs; 0507 while(true) { 0508 c = 2.*rnd()-1.; 0509 s = 2.*rnd()-1.; 0510 cs = c*c+s*s; 0511 if(cs <= 1.&&cs!=0.) break; 0512 } 0513 T qt = pt/cs; 0514 px = (c*c-s*s)*qt; 0515 py = 2.*c*s*qt; 0516 } 0517 0518 inline Energy randExt(Energy AM0,InvEnergy B) const{ 0519 double r = rnd(); 0520 // Starting value 0521 Energy am = AM0-log(r)/B; 0522 for(int i = 1; i<20; ++i) { 0523 double a = exp(-B*(am-AM0))/(1.+B*AM0); 0524 double f = (1.+B*am)*a-r; 0525 InvEnergy df = -B*B*am*a; 0526 Energy dam = -f/df; 0527 am += dam; 0528 if(am<AM0) am = AM0 + .001*MeV; 0529 if(abs(dam) < .001*MeV) break; 0530 } 0531 return am; 0532 } 0533 0534 /** 0535 * Method to add a particle to the step 0536 * @param parent = pointer to the parent particle 0537 * @param id = Particle ID of the newly created particle 0538 * @param p = Lorentz5Momentum of the new particle 0539 */ 0540 tPPtr addParticle(tcPPtr parent, long id, Lorentz5Momentum p) const; 0541 //@} 0542 0543 /** 0544 * A flag which indicates, whether the extracted valence quark was a 0545 * anti particle. 0546 */ 0547 pair<bool, bool> theanti; 0548 0549 /** 0550 * variable to sum up the x values of the extracted particles 0551 */ 0552 pair<double, double> theX; 0553 0554 /**Pair of HadronContent structs to know about the quark content of the beams*/ 0555 pair<HadronContent, HadronContent> theContent; 0556 0557 /**Pair of Lorentz5Momentum to keep track of the forced splitting product momenta*/ 0558 pair<Lorentz5Momentum, Lorentz5Momentum> theUsed; 0559 0560 /** 0561 * Pair of PartnerMap's to store the particles, which will be colour 0562 * connected in the end. 0563 */ 0564 pair<PartnerMap, PartnerMap> theMaps; 0565 0566 /** 0567 * Variable to hold a pointer to the current step. The variable is used to 0568 * determine, wether decay(const DecayMode & dm, const Particle & p, Step & step) 0569 * has been called in this event or not. 0570 */ 0571 StepPtr thestep; 0572 0573 /** 0574 * Pair of Remnant pointers. This is needed to boost 0575 * in the Remnant-Remnant CMF after all have been decayed. 0576 */ 0577 pair<RemPPtr, RemPPtr> theRems; 0578 0579 /** 0580 * The beam particle data for the current incoming hadron 0581 */ 0582 mutable tcPPtr theBeam; 0583 0584 /** 0585 * the beam data 0586 */ 0587 mutable Ptr<BeamParticleData>::const_pointer theBeamData; 0588 0589 /** 0590 * The PDF for the current initial-state shower 0591 */ 0592 mutable tcPDFPtr _pdf; 0593 0594 private: 0595 0596 /** 0597 * Switch to control handling of top quarks in proton 0598 */ 0599 bool allowTop_; 0600 0601 /** 0602 * Switch to control handling of charged leptons in proton 0603 */ 0604 bool allowLeptons_; 0605 0606 /** 0607 * Switch to control using multiperipheral kinemaics 0608 */ 0609 bool multiPeriph_; 0610 0611 /** 0612 * True if kinematics is to be calculated for quarks 0613 */ 0614 bool quarkPair_; 0615 0616 /** @name Soft interaction variables. */ 0617 //@{ 0618 0619 /** 0620 * Pair of soft Remnant pointers, i.e. Diquarks. 0621 */ 0622 tPPair softRems_; 0623 0624 /** 0625 * ptcut of the UE model 0626 */ 0627 Energy ptmin_; 0628 0629 /** 0630 * slope of the soft pt-spectrum: dN/dp_T = N p_T exp(-beta*p_T^2) 0631 */ 0632 InvEnergy2 beta_; 0633 0634 /** 0635 * Maximum number of attempts for the regeneration of an additional 0636 * soft scattering, before the number of scatters is reduced. 0637 */ 0638 unsigned int maxtrySoft_; 0639 0640 /** 0641 * Variable to store the relative number of colour disrupted 0642 * connections to additional soft subprocesses. 0643 */ 0644 double colourDisrupt_; 0645 0646 /** 0647 * Variable to store the additive factor of the 0648 multiperipheral ladder multiplicity. 0649 */ 0650 double ladderbFactor_; 0651 0652 /** 0653 * Variable of the parameterization of the ladder multiplicity. 0654 */ 0655 double ladderPower_; 0656 0657 /** 0658 * Variable of the parameterization of the ladder multiplicity. 0659 */ 0660 double ladderNorm_; 0661 0662 double ladderMult_; 0663 /** 0664 * Variable to store the gaussian width of the 0665 * fluctuation of the longitudinal momentum 0666 * fraction. 0667 */ 0668 double gaussWidth_; 0669 0670 /** 0671 * Variable to store the current total multiplicity 0672 of a ladder. 0673 */ 0674 double valOfN_; 0675 0676 /** 0677 * Variable to store the initial total rapidity between 0678 of the remnants. 0679 */ 0680 double initTotRap_; 0681 0682 //@} 0683 0684 /** @name Forced splitting variables. */ 0685 //@{ 0686 0687 /** 0688 * The kinematic cut-off 0689 */ 0690 Energy _kinCutoff; 0691 0692 /** 0693 * The PDF freezing scale as set in ShowerHandler 0694 */ 0695 Energy _forcedSplitScale; 0696 0697 /** 0698 * Range for emission 0699 */ 0700 double _range; 0701 0702 /** 0703 * Size of the bins in z for the interpolation 0704 */ 0705 double _zbin; 0706 0707 /** 0708 * Size of the bins in y for the interpolation 0709 */ 0710 double _ybin; 0711 0712 /** 0713 * Maximum number of bins for the z interpolation 0714 */ 0715 int _nbinmax; 0716 0717 /** 0718 * Pointer to the object calculating the QCD coupling 0719 */ 0720 ShowerAlphaPtr _alphaS; 0721 0722 /** 0723 * Pointer to the object calculating the QED coupling 0724 */ 0725 ShowerAlphaPtr _alphaEM; 0726 0727 /** 0728 * Option for the DIS remnant 0729 */ 0730 unsigned int DISRemnantOpt_; 0731 0732 /** 0733 * Option for the pT generation 0734 */ 0735 unsigned int PtDistribution_; 0736 0737 /** 0738 * Option for the treatment of the pomeron structure 0739 */ 0740 unsigned int pomeronStructure_; 0741 //@} 0742 0743 /** 0744 * The gluon constituent mass. 0745 */ 0746 Energy mg_; 0747 0748 }; 0749 0750 0751 } 0752 0753 #endif /* HERWIG_HwRemDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|