herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
DISBase.h
1 // -*- C++ -*-
2 #ifndef HERWIG_DISBase_H
3 #define HERWIG_DISBase_H
4 //
5 // This is the declaration of the DISBase class.
6 //
7 
8 #include "Herwig/MatrixElement/HwMEBase.h"
9 #include "Herwig/Shower/ShowerAlpha.h"
10 
11 namespace Herwig {
12 
13 using namespace ThePEG;
14 
23 class DISBase: public HwMEBase {
24 
25 public:
26 
30  DISBase();
31 
35  virtual ~DISBase();
36 
44  virtual bool hasMECorrection() {return true;}
45 
49  virtual void initializeMECorrection(RealEmissionProcessPtr, double &,
50  double & );
51 
55  virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr);
56 
69  virtual bool softMatrixElementVeto(PPtr parent,
70  PPtr progenitor,
71  const bool & fs,
72  const Energy & highestpT,
73  const vector<tcPDPtr> & ids,
74  const double & z,
75  const Energy & scale,
76  const Energy & pT);
78 
86  virtual POWHEGType hasPOWHEGCorrection() {return Both;}
87 
91  virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
94 
95 public:
96 
102  virtual Energy2 scale() const;
103 
108  virtual int nDim() const;
109 
118  virtual bool generateKinematics(const double * r);
119 
124  virtual CrossSection dSigHatDR() const;
126 
127 
128 public:
129 
136  void persistentOutput(PersistentOStream & os) const;
137 
143  void persistentInput(PersistentIStream & is, int version);
145 
152  static void Init();
153 
154 protected:
155 
163  virtual void doinit();
165 
166 private:
167 
172  DISBase & operator=(const DISBase &) = delete;
173 
174 protected:
175 
179  double NLOWeight() const;
180 
184  virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout,
185  Energy2 scale) const =0;
186 
196  double generateComptonPoint(double &xp, double & zp);
197 
203  double generateBGFPoint(double &xp, double & zp);
204 
215  vector<double> ComptonME(double xp, double x2, double xperp,
216  bool norm);
217 
229  vector<double> BGFME(double xp, double x2, double x3, double xperp,
230  bool norm);
232 
240  void generateCompton();
241 
245  void generateBGF();
247 
248 private:
249 
257  double initial_;
258 
262  double final_;
263 
267  double procProb_;
268 
272  double comptonInt_;
273 
277  double bgfInt_;
279 
288 
292  double BGFWeight_;
293 
297  Energy pTmin_;
299 
307  Energy2 q2_;
308 
312  double l_;
313 
317  double xB_;
318 
323 
327  tcPDPtr partons_[2];
328 
332  tcPDPtr leptons_[2];
333 
342 
346  Lorentz5Momentum pl_[2];
347 
351  Lorentz5Momentum pq_[2];
352 
356  Lorentz5Momentum q_;
357 
361  Energy pTCompton_;
362  bool ComptonISFS_;
363  vector<Lorentz5Momentum> ComptonMomenta_;
364 
368  Energy pTBGF_;
369  vector<Lorentz5Momentum> BGFMomenta_;
371 
375  double acoeff_;
376 
380  ShowerAlphaPtr alpha_;
381 
386 
387 private:
388 
396  double xp_;
398 
403 
407  unsigned int scaleOpt_;
408 
412  Energy muF_;
413 
417  double scaleFact_;
418 
422  unsigned int contrib_;
423 
427  double power_;
428 
432  double jac_;
433 
434 };
435 
436 }
437 
438 #endif /* HERWIG_DISBase_H */
Ptr< BeamParticleData >::transient_const_pointer tcBeamPtr
A typedef for the BeamParticleData.
Definition: HwMEBase.h:20
ThePEG::Ptr< Particle >::pointer PPtr
double final_
Enchancement factor for FSR.
Definition: DISBase.h:262
double BGFWeight_
Weight for the BGF channel.
Definition: DISBase.h:292
ShowerInteraction
Handy header file to be included in all Shower classes.
double bgfInt_
Integral for BGF process.
Definition: DISBase.h:277
tcBeamPtr beam_
Beam particle.
Definition: DISBase.h:322
double scaleFact_
Prefactor if variable scale used.
Definition: DISBase.h:417
unsigned int scaleOpt_
Selects a dynamic or fixed factorization scale.
Definition: DISBase.h:407
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
Energy pTCompton_
Compton parameters.
Definition: DISBase.h:361
Energy2 q2_
Parameters for the point being generated.
Definition: DISBase.h:307
double xp_
The radiative variables.
Definition: DISBase.h:396
Energy pTmin_
Minimum value of .
Definition: DISBase.h:297
double procProb_
Relative fraction of compton and BGF processes to generate.
Definition: DISBase.h:267
tcPDFPtr pdf_
PDF object.
Definition: DISBase.h:337
double xB_
Borm momentum fraction.
Definition: DISBase.h:317
Lorentz5Momentum q_
q
Definition: DISBase.h:356
ShowerAlphaPtr alpha_
Coupling.
Definition: DISBase.h:380
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
double power_
Power for sampling .
Definition: DISBase.h:427
ThePEG::Ptr< ParticleData >::pointer PDPtr
virtual bool hasMECorrection()
Members for the old-fashioned matrix element correction.
Definition: DISBase.h:44
double initial_
Parameters for the matrix element correction.
Definition: DISBase.h:257
double acoeff_
The coefficient for the correlations.
Definition: DISBase.h:375
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
PDPtr gluon_
Gluon particle data object.
Definition: DISBase.h:385
double jac_
Jacobian for integral.
Definition: DISBase.h:432
Energy muF_
The factorization scale.
Definition: DISBase.h:412
double comptonWeight_
Parameters for the POWHEG correction.
Definition: DISBase.h:287
-*- C++ -*-
tcBeamPtr hadron_
The hadron.
Definition: DISBase.h:402
double comptonInt_
Integral for compton process.
Definition: DISBase.h:272
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
Energy pTBGF_
BGF parameters.
Definition: DISBase.h:368
LorentzRotation rot_
Rotation to the Breit frame.
Definition: DISBase.h:341
The DISBase class is the base class for the implementation of DIS type processes including correction...
Definition: DISBase.h:23
virtual POWHEGType hasPOWHEGCorrection()
Members for the POWHEG stype correction.
Definition: DISBase.h:86
unsigned int contrib_
Whether to generate the positive, negative or leading order contribution.
Definition: DISBase.h:422