herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
DrellYanBase.h
1 // -*- C++ -*-
2 #ifndef HERWIG_DrellYanBase_H
3 #define HERWIG_DrellYanBase_H
4 //
5 // This is the declaration of the DrellYanBase class.
6 //
7 
8 #include "HwMEBase.h"
9 #include "Herwig/Shower/Core/Couplings/ShowerAlpha.h"
10 
11 namespace Herwig {
12 
13 using namespace ThePEG;
14 
23 class DrellYanBase: public HwMEBase {
24 
25 public:
26 
30  DrellYanBase();
31 
35  //virtual bool hasPOWHEGCorrection() {return _alpha;}
36 
37  virtual POWHEGType hasPOWHEGCorrection() {return ISR;}
38 
39 
43  virtual bool hasMECorrection() {return _alpha;}
44 
48  virtual void initializeMECorrection(RealEmissionProcessPtr, double & initial,
49  double & final) {
50  final = 1.;
51  initial = 1.;
52  }
53 
57  virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr);
58 
67  virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial,
68  ShowerParticlePtr parent,
69  Branching br);
70 
74  virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
76 
82  virtual void setKinematics() {
84  mb2_ = sHat();
85  }
86 
87 protected:
88 
103  bool applyHard(ParticleVector & quarks,
104  vector<tcBeamPtr> beams,
105  Lorentz5Momentum boson,unsigned int & iemit,
106  unsigned int & itype,vector<Lorentz5Momentum> & pnew,
107  LorentzRotation & trans, pair<double,double> & xnew,
108  Energy2 shad);
109 
118  double getResult(int emis_type, Energy pt, double yj);
119 
126  bool getEvent(vector<Lorentz5Momentum> & pnew,int & emissiontype);
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();
164 
169  virtual void dofinish();
171 
172 private:
173 
179 
184  DrellYanBase & operator=(const DrellYanBase &) = delete;
185 
186 private:
187 
191  Energy2 mb2_;
192 
200  double _channelwgtA;
201 
205  double _channelwgtB;
206 
210  vector<double> _channelweights;
211 
215  unsigned int _nover;
216 
220  double _maxwgt;
222 
231  double _power;
232 
236  double _preqqbar;
237 
241  double _preqg;
242 
246  double _pregqbar;
247 
251  vector<double> _prefactor;
253 
261  vector<tcBeamPtr> _beams;
262 
266  vector<tcPDPtr> _partons;
268 
276  double _yb;
277 
281  Energy _mass;
282 
287 
291  double _yj;
292 
296  Energy _pt;
298 
302  Energy _min_pt;
303 
307  ShowerAlphaPtr _alpha;
308 };
309 
310 }
311 
312 #include "ThePEG/Utilities/ClassTraits.h"
313 
314 namespace ThePEG {
315 
320 template <>
321 struct BaseClassTrait<Herwig::DrellYanBase,1> {
323  typedef Herwig::HwMEBase NthBase;
324 };
325 
328 template <>
329 struct ClassTraits<Herwig::DrellYanBase>
330  : public ClassTraitsBase<Herwig::DrellYanBase> {
332  static string className() { return "Herwig::DrellYanBase"; }
333 };
334 
337 }
338 
339 #endif /* HERWIG_DrellYanBase_H */
double _yb
Properties of the boson and jets.
Definition: DrellYanBase.h:276
ShowerAlphaPtr _alpha
Pointer to the object calculating the strong coupling.
Definition: DrellYanBase.h:307
vector< double > _prefactor
The prefactors as a vector for easy use.
Definition: DrellYanBase.h:251
ShowerInteraction
Handy header file to be included in all Shower classes.
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: DrellYanBase.h:37
The DrellYanBase class class provides a base class for the implemented of Drell-Yan type processes an...
Definition: DrellYanBase.h:23
vector< tcPDPtr > _partons
Pointers to the ParticleDataObjects for the partons.
Definition: DrellYanBase.h:266
double _channelwgtA
Parameters for the old-style ME correction.
Definition: DrellYanBase.h:200
vector< double > _channelweights
Weights for the channels as a vector.
Definition: DrellYanBase.h:210
Energy _pt
The transverse momentum of the jet.
Definition: DrellYanBase.h:296
static AbstractClassDescription< DrellYanBase > initDrellYanBase
The static object used to initialize the description of this class.
Definition: DrellYanBase.h:178
unsigned int _nover
Number of weights greater than 1.
Definition: DrellYanBase.h:215
double _maxwgt
Maximum weight.
Definition: DrellYanBase.h:220
double _power
Constants for the sampling.
Definition: DrellYanBase.h:231
double _preqg
The prefactor, for the channel.
Definition: DrellYanBase.h:241
Energy2 mb2_
Mass squared of the vector boson.
Definition: DrellYanBase.h:191
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
Definition: DrellYanBase.h:82
double _channelwgtB
Relative weight for the and channels.
Definition: DrellYanBase.h:205
virtual void initializeMECorrection(RealEmissionProcessPtr, double &initial, double &final)
Initialize the ME correction.
Definition: DrellYanBase.h:48
Energy _min_pt
The transverse momentum of the jet.
Definition: DrellYanBase.h:302
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: DrellYanBase.h:43
The branching struct is used to store information on the branching.
Definition: Branching.h:20
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:89
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
-*- C++ -*-
double _pregqbar
The prefactor, for the channel.
Definition: DrellYanBase.h:246
vector< tcBeamPtr > _beams
Properties of the incoming particles.
Definition: DrellYanBase.h:261
double _yj
the rapidity of the jet
Definition: DrellYanBase.h:291
bool _quarkplus
Whether the quark is in the + or - z direction.
Definition: DrellYanBase.h:286
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:37
Energy _mass
The mass of the gauge boson.
Definition: DrellYanBase.h:281
vector< PPtr > ParticleVector
double _preqqbar
The prefactor, for the channel.
Definition: DrellYanBase.h:236