herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
DipoleSplittingInfo.h
1 // -*- C++ -*-
2 //
3 // DipoleSplittingInfo.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2019 The Herwig Collaboration
5 //
6 // Herwig is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef HERWIG_DipoleSplittingInfo_H
10 #define HERWIG_DipoleSplittingInfo_H
11 //
12 // This is the declaration of the DipoleIndex and DipoleSplittingInfo classes.
13 //
14 
15 #include "ThePEG/PDF/PDF.h"
16 #include "ThePEG/PDT/ParticleData.h"
17 
18 #include "Herwig/Shower/Dipole/Kinematics/DipoleSplittingKinematics.h"
19 #include "Herwig/Shower/Dipole/Kernels/DipoleSplittingKernel.h"
20 
21 namespace Herwig {
22 
23 using namespace ThePEG;
24 
25 class DipoleSplittingKinematics;
26 
35 class DipoleIndex {
36 
37 public:
38 
42  DipoleIndex();
43 
47  DipoleIndex(tcPDPtr newEmitter, tcPDPtr newSpectator,
48  const PDF& newEmitterPDF = PDF(), const PDF& newSpectatorPDF = PDF(),
49  const bool decayingEmitter = false, const bool decayingSpectator = false,
50  const bool offShellEmitter = false, const bool offShellSpectator = false);
51 
52 public:
53 
57  bool operator ==(const DipoleIndex& x) const;
58 
62  bool operator <(const DipoleIndex& x) const;
63 
67  void swap();
68 
79  pair<DipoleIndex,DipoleIndex> split(tcPDPtr) const;
80 
81 public:
82 
86  tcPDPtr emitterData() const { return theEmitterData; }
87 
91  bool initialStateEmitter() const { return theInitialStateEmitter; }
92 
96  bool incomingDecayEmitter() const { return theIncomingDecayEmitter; }
97 
101  bool offShellEmitter() const { return theOffShellEmitter; }
102  //bool offShellEmitter() const { return theEmitterData->width() != ZERO; }
103 
107  const PDF& emitterPDF() const { return theEmitterPDF; }
108 
112  tcPDPtr spectatorData() const { return theSpectatorData; }
113 
117  bool initialStateSpectator() const { return theInitialStateSpectator; }
118 
122  bool incomingDecaySpectator() const { return theIncomingDecaySpectator; }
123 
127  bool offShellSpectator() const { return theOffShellSpectator; }
128  //bool offShellSpectator() const { return theSpectatorData->width() != ZERO; }
129 
133  const PDF& spectatorPDF() const { return theSpectatorPDF; }
134 
135 public:
136 
140  void print(ostream&) const;
141 
142 private:
143 
148 
153 
158 
163 
168 
173 
178 
183 
188 
193 
194 };
195 
196 inline ostream& operator << (ostream& os, const DipoleIndex& di) {
197  di.print(os);
198  return os;
199 }
200 
210 
211 public:
212 
217 
221  virtual ~DipoleSplittingInfo() {}
222 
223 
227  DipoleSplittingInfo(DipoleIndex ind,pair<bool,bool> conf,double emitX,
228  double spectX,tPPtr emit,tPPtr spect){
229  theIndex=ind;
230  theConfiguration=conf;
231  theEmitterX=emitX;
232  theSpectatorX=spectX;
233  theEmitter=emit;
234  theSpectator=spect;
235  }
236 
237 
238 public:
239 
243  void fill(const DipoleSplittingInfo&);
244 
245 public:
246 
250  const DipoleIndex& index() const { return theIndex; }
251 
257  const pair<bool,bool>& configuration() const { return theConfiguration; }
258 
262  const pair<bool,bool>& spectatorConfiguration() const { return theSpectatorConfiguration; }
263 
268  tcPDPtr emitterData() const { return theEmitterData; }
269 
274  tcPDPtr emissionData() const { return theEmissionData; }
275 
280  tcPDPtr spectatorData() const { return theSpectatorData; }
281 
285  double emitterX() const { return theEmitterX; }
286 
290  double spectatorX() const { return theSpectatorX; }
291 
292 public:
293 
298  Ptr<DipoleSplittingKinematics>::tptr splittingKinematics() const { return theSplittingKinematics; }
299 
304  Ptr<DipoleSplittingKernel>::tptr splittingKernel() const { return theSplittingKernel;}
305 
309  Energy scale() const { return theScale; }
310 
315  bool isDecayProc() const { return theIsDecayProc; }
316 
321  Energy recoilMass() const { return theRecoilMass; }
322 
327  Energy spectatorMass() const { return theSpectatorMass; }
328 
333  Energy emitterMass() const { return theEmitterMass; }
334 
339  Energy hardPt() const { return theHardPt; }
340 
344  Energy lastPt() const { return theLastPt; }
345 
349  double lastZ() const { return theLastZ; }
350 
354  double lastPhi() const { return theLastPhi; }
355 
360  double lastEmitterZ() const { return theLastEmitterZ; }
361 
366  double lastSpectatorZ() const { return theLastSpectatorZ; }
367 
373  const vector<double>& lastSplittingParameters() const { return theLastSplittingParameters; }
374 
379  bool stoppedEvolving() const { return theStoppedEvolving; }
380 
381 public:
382 
386  void index(const DipoleIndex& ind) { theIndex = ind; }
387 
391  void splittingKinematics(Ptr<DipoleSplittingKinematics>::tptr newSplittingKinematics) {
392  theSplittingKinematics = newSplittingKinematics;
393  }
394 
398  void splittingKernel( Ptr<DipoleSplittingKernel>::tptr newSplittingKernel){
399  theSplittingKernel = newSplittingKernel;
400  }
401 
406  void emitterData(tcPDPtr p) { theEmitterData = p; }
407 
412  void emissionData(tcPDPtr p) { theEmissionData = p; }
413 
418  void spectatorData(tcPDPtr p) { theSpectatorData = p; }
419 
423  void scale(Energy s) { theScale = s; }
424 
429  void isDecayProc(bool isDecayProc) { theIsDecayProc = isDecayProc; }
430 
435  void recoilMass(Energy mass) { theRecoilMass = mass; }
436 
441  void spectatorMass(Energy mass){ theSpectatorMass = mass; }
442 
447  void emitterMass(Energy mass){ theEmitterMass = mass; }
448 
452  void emitterX(double x) { theEmitterX = x; }
453 
457  void spectatorX(double x) { theSpectatorX = x; }
458 
463  void hardPt(Energy p) { theHardPt = p; }
464 
468  void lastPt(Energy p) { theLastPt = p; }
469 
473  void lastZ(double z) { theLastZ = z; }
474 
478  void lastPhi(double p) { theLastPhi = p; }
479 
484  void lastEmitterZ(double z) { theLastEmitterZ = z; }
485 
490  void lastSpectatorZ(double z) { theLastSpectatorZ = z; }
491 
495  double lastValue() const { return theLastValue; }
496 
500  void lastValue(double v) { theLastValue = v; }
501 
505  void setCalcFixedExpansion(bool c){theCalcFixedExpansion=c;}
506 
510  bool calcFixedExpansion()const{ return theCalcFixedExpansion;}
511 
515  Energy fixedScale() const{return theFixedScale;}
516 
520  void fixedScale(Energy fix){ theFixedScale=fix;}
521 
525  void lastSplittingParameters(const vector<double>& p) { theLastSplittingParameters = p; }
526 
530  vector<double>& splittingParameters() { return theLastSplittingParameters; }
531 
536  void didStopEvolving() { theStoppedEvolving = true; }
537 
542  void continuesEvolving() { theStoppedEvolving = false; }
543 
547  void configuration(const pair<bool,bool>& newConfig) { theConfiguration = newConfig; }
548 
552  void spectatorConfiguration(const pair<bool,bool>& conf) { theSpectatorConfiguration = conf; }
553 
554 public:
555 
559  void emitter(tPPtr newEmitter) { theEmitter = newEmitter; }
560 
564  void spectator(tPPtr newSpectator) { theSpectator = newSpectator; }
565 
569  void splitEmitter(tPPtr newEmitter) { theSplitEmitter = newEmitter; }
570 
574  void splitSpectator(tPPtr newSpectator) { theSplitSpectator = newSpectator; }
575 
579  void emission(tPPtr newEmission) { theEmission = newEmission; }
580 
584  tPPtr emitter() const { return theEmitter; }
585 
589  tPPtr spectator() const { return theSpectator; }
590 
594  tPPtr splitEmitter() const { return theSplitEmitter; }
595 
599  tPPtr splitSpectator() const { return theSplitSpectator; }
600 
604  tPPtr emission() const { return theEmission; }
605 
606 public:
607 
611  void print(ostream&) const;
612 
613 private:
614 
620 
626  pair<bool,bool> theConfiguration;
627 
631  pair<bool,bool> theSpectatorConfiguration;
632 
638 
644 
650 
655  Ptr<DipoleSplittingKinematics>::tptr theSplittingKinematics;
656 
661  Ptr<DipoleSplittingKernel>::tptr theSplittingKernel;
662 
666  Energy theScale;
667 
672 
678 
684 
690 
694  double theEmitterX;
695 
700 
705  Energy theHardPt;
706 
710  Energy theLastPt;
711 
715  double theLastZ;
716 
722  // Note: Not required in current implementation
723  //double theLastZPrime;
724 
728  double theLastPhi;
729 
735 
741 
745  double theLastValue;
746 
753 
759 
764 
769 
774 
779 
784 
790 
795 
796 
797 
798 };
799 
800 inline ostream& operator << (ostream& os, const DipoleSplittingInfo& di) {
801  di.print(os);
802  return os;
803 }
804 
805 }
806 
807 #endif /* HERWIG_DipoleSplittingInfo_H */
PPtr theSplitSpectator
A pointer to the spectator parton after emission.
void fixedScale(Energy fix)
Set the fixed scale.
ThePEG::Ptr< Particle >::pointer PPtr
bool incomingDecayEmitter() const
Return true, if the emitter is incoming to a decay.
tcPDPtr emissionData() const
Return the particle data object of the emission after the splitting.
Energy recoilMass() const
Return the mass of the recoil system in decay dipoles.
void print(ostream &) const
Put information to ostream.
bool offShellEmitter() const
Return true, if the emitter can be off-shell.
void spectator(tPPtr newSpectator)
Set a pointer to the spectator parton before emission.
void isDecayProc(bool isDecayProc)
Set whether or not this dipole is part of a decay process.
Energy spectatorMass() const
Return the spectator mass (to cope with off-shell particles)
tcPDPtr emitterData() const
Return the emitter particle data object.
void recoilMass(Energy mass)
Set the mass of the recoil system in decay dipoles.
bool theInitialStateSpectator
Whether or not the spectator is an incoming parton.
Energy theEmitterMass
The mass of the emitter.
void lastSplittingParameters(const vector< double > &p)
Set the last splitting parameters.
bool theCalcFixedExpansion
Flag to calculate Splitting kernels with a fixed scale and without alphas/2pi.
void splittingKernel(Ptr< DipoleSplittingKernel >::tptr newSplittingKernel)
Set the DipoleSplittingKernel object.
tcPDPtr theSpectatorData
The particle data object of the spectator after the splitting.
PPtr theEmission
A pointer to the emitted parton.
void setCalcFixedExpansion(bool c)
Set the flag to calculate the Sudakov with fixed scales.
bool theOffShellEmitter
Can the emitter be off-shell?
void print(ostream &) const
Put information to ostream.
PPtr theSplitEmitter
A pointer to the emitter parton after emission.
Energy theHardPt
The pt below which this splitting has been generated.
void configuration(const pair< bool, bool > &newConfig)
Reset the configuration.
void lastValue(double v)
Set the last splitting kernel value encountered.
Energy lastPt() const
Return the last generated pt.
void hardPt(Energy p)
Set the pt below which this splitting has been generated.
Energy theSpectatorMass
The mass of the spectator.
double lastPhi() const
Return the last generated azimuthal angle.
DipoleIndex is used to index splitting generators for a particular dipole.
bool theOffShellSpectator
Can the spectator be off-shell?
double lastSpectatorZ() const
Return the momentum fraction, by which the spectator&#39;s momentum fraction should be divided after the ...
void splittingKinematics(Ptr< DipoleSplittingKinematics >::tptr newSplittingKinematics)
Set the DipoleSplittingKinematics object.
PDF theEmitterPDF
The PDF object for the emitter.
const pair< bool, bool > & configuration() const
Return which of the particles in the dipole should be considered emitter (true) and spectator (false)...
const PDF & emitterPDF() const
Return the PDF object associated with the emitter.
tcPDPtr theSpectatorData
The particle data object of the spectator.
tPPtr splitSpectator() const
Return a pointer to the spectator parton after emission.
double lastZ() const
Return the last generated momentum fraction.
bool operator==(const HPDiagram &x, const HPDiagram &y)
Test whether two diagrams are identical.
Definition: HPDiagram.h:98
tPPtr emitter() const
Return a pointer to the emitter parton before emission.
PDF theSpectatorPDF
The PDF object for the spectator.
tPPtr spectator() const
Return a pointer to the spectator parton before emission.
const DipoleIndex & index() const
Return the dipole index.
bool initialStateSpectator() const
Return true, if the spectator is an incoming parton.
PPtr theSpectator
A pointer to the spectator parton before emission.
void emitter(tPPtr newEmitter)
Set a pointer to the emitter parton before emission.
bool initialStateEmitter() const
Return true, if the emitter is an incoming parton.
tcPDPtr spectatorData() const
Return the spectator particle data object.
bool operator<(const HPDiagram &x, const HPDiagram &y)
Test whether one diagram is &#39;less&#39; than another.
Definition: HPDiagram.h:163
void spectatorMass(Energy mass)
Set the spectator mass (to cope with off-shell particles)
void emission(tPPtr newEmission)
Set a pointer to the emitted parton.
bool isDecayProc() const
Return whether or not this dipole is part of a decay process.
void emissionData(tcPDPtr p)
Set the particle data object of the emission after the splitting.
bool incomingDecaySpectator() const
Return true, if the spectator is incoming to a decay.
void emitterData(tcPDPtr p)
Set the particle data object of the emitter after the splitting.
pair< bool, bool > theConfiguration
Flags indicateing which of the particles in the dipole should be considered emitter (true) and specta...
virtual ~DipoleSplittingInfo()
Destructor.
bool stoppedEvolving() const
Return true, if this splitting will terminate the evolution of the dipole considered.
Energy theFixedScale
Fixed scale for Sudakov evaluation.
pair< bool, bool > theSpectatorConfiguration
The configuration marking the spectator.
ostream & operator<<(ostream &, const DecayIntegrator &)
Output information on the DecayIntegrator for debugging purposes.
void lastZ(double z)
Set the last generated momentum fraction.
vector< double > theLastSplittingParameters
Any additional parameters needed to evaluate the splitting kernel or to generate the full splitting...
bool theIncomingDecayEmitter
Whether or not the emitter is incoming to a decay.
void continuesEvolving()
Indicate that this splitting will not terminate the evolution of the dipole considered.
double theLastZ
The last generated momentum fraction.
double theLastSpectatorZ
The momentum fraction, by which the spectator&#39;s momentum fraction should be divided after the splitti...
DipoleSplittingInfo(DipoleIndex ind, pair< bool, bool > conf, double emitX, double spectX, tPPtr emit, tPPtr spect)
Standard constructor.
void lastPhi(double p)
Set the last generated azimuthal angle.
void index(const DipoleIndex &ind)
Set the index.
DipoleIndex theIndex
The DipoleIndex associated with this splitting.
bool theIncomingDecaySpectator
Whether or not the spectator is incoming to a decay.
void scale(Energy s)
Set the dipole scale.
double theEmitterX
The momentum fraction of the emitter.
double spectatorX() const
Return the momentum fraction of the spectator.
Ptr< DipoleSplittingKinematics >::tptr splittingKinematics() const
Return a pointer to the DipoleSplittingKinematics object which is to be used to perform the splitting...
Energy emitterMass() const
Return the emitter mass (to cope with off-shell particles)
Energy theRecoilMass
The mass of the recoil system in decay dipoles.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
Ptr< DipoleSplittingKernel >::tptr splittingKernel() const
Return a pointer to the DipoleSplittingKernel object which is used to perform the splitting...
bool calcFixedExpansion() const
Flag to calculate the Sudakov with fixed scales.
Energy fixedScale() const
Fixed scale for Sudakov sampling with fixed scales.
void splitSpectator(tPPtr newSpectator)
Set a pointer to the spectator parton after emission.
bool theIsDecayProc
Whether or not this dipole comes from a decay process.
ThePEG::Ptr< Particle >::transient_pointer tPPtr
tPPtr splitEmitter() const
Return a pointer to the emitter parton after emission.
bool theStoppedEvolving
True, if this splitting will terminate the evolution of the dipole considered.
double lastValue() const
Return the last splitting kernel value encountered.
vector< double > & splittingParameters()
Access the splitting parameters.
void spectatorData(tcPDPtr p)
Set the particle data object of the spectator after the splitting.
double theLastValue
The last splitting kernel value encountered.
Energy theScale
The scale for this dipole.
Ptr< DipoleSplittingKernel >::tptr theSplittingKernel
A pointer to the DipoleSplittingKernel object which is used to perform the splitting.
const PDF & spectatorPDF() const
Return the PDF object associated with the spectator.
bool offShellSpectator() const
Return true, if the spectator can be off-shell.
tcPDPtr theEmissionData
The particle data object of the emission after the splitting.
-*- C++ -*-
Energy theLastPt
The last generated pt.
void emitterX(double x)
Set the emitter&#39;s momentum fraction.
bool theInitialStateEmitter
Whether or not the emitter is an incoming parton.
void lastSpectatorZ(double z)
Set the momentum fraction, by which the spectator&#39;s momentum fraction should be divided after the spl...
void emitterMass(Energy mass)
Set the emitter mass (to cope with off-shell particles)
tcPDPtr theEmitterData
The particle data object of the emitter.
tcPDPtr emitterData() const
Return the particle data object of the emitter after the splitting.
double lastEmitterZ() const
Return the momentum fraction, by which the emitter&#39;s momentum fraction should be divided after the sp...
PPtr theEmitter
A pointer to the emitter parton before emission.
double theLastPhi
The last calculated zPrime required for massive FF and decay kinematics dipoles.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
double theLastEmitterZ
The momentum fraction, by which the emitter&#39;s momentum fraction should be divided after the splitting...
void didStopEvolving()
Indicate that this splitting will terminate the evolution of the dipole considered.
void spectatorConfiguration(const pair< bool, bool > &conf)
Set the configuration marking the spectator.
void splitEmitter(tPPtr newEmitter)
Set a pointer to the emitter parton after emission.
void spectatorX(double x)
Set the spectator&#39;s momentum fraction.
void lastPt(Energy p)
Set the last generated pt.
const pair< bool, bool > & spectatorConfiguration() const
Get the configuration marking the spectator.
void lastEmitterZ(double z)
Set the momentum fraction, by which the emitter&#39;s momentum fraction should be divided after the split...
Energy scale() const
Return the dipole scale.
const vector< double > & lastSplittingParameters() const
Return any additional parameters needed to evaluate the splitting kernel or to generate the full spli...
double emitterX() const
Return the momentum fraction of the emitter.
tcPDPtr theEmitterData
The particle data object of the emitter after the splitting.
Energy hardPt() const
Return the pt below which this splitting has been generated.
double theSpectatorX
The momentum fraction of the spectator.
tPPtr emission() const
Return a pointer to the emitted parton.
Ptr< DipoleSplittingKinematics >::tptr theSplittingKinematics
A pointer to the DipoleSplittingKinematics object which is to be used to perform the splitting...
tcPDPtr spectatorData() const
Return the particle data object of the spectator after the splitting.