herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
DipoleSplittingInfo.h
1 // -*- C++ -*-
2 //
3 // DipoleSplittingInfo.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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 
20 namespace Herwig {
21 
22 using namespace ThePEG;
23 
24 class DipoleSplittingKinematics;
25 
34 class DipoleIndex {
35 
36 public:
37 
41  DipoleIndex();
42 
46  DipoleIndex(tcPDPtr newEmitter, tcPDPtr newSpectator,
47  const PDF& newEmitterPDF = PDF(), const PDF& newSpectatorPDF = PDF(),
48  const bool decayingEmitter = false, const bool decayingSpectator = false);
49 
50 public:
51 
55  bool operator ==(const DipoleIndex& x) const;
56 
60  bool operator <(const DipoleIndex& x) const;
61 
65  void swap();
66 
77  pair<DipoleIndex,DipoleIndex> split(tcPDPtr) const;
78 
79 public:
80 
84  tcPDPtr emitterData() const { return theEmitterData; }
85 
89  bool initialStateEmitter() const { return theInitialStateEmitter; }
90 
94  bool incomingDecayEmitter() const { return theIncomingDecayEmitter; }
95 
99  const PDF& emitterPDF() const { return theEmitterPDF; }
100 
104  tcPDPtr spectatorData() const { return theSpectatorData; }
105 
109  bool initialStateSpectator() const { return theInitialStateSpectator; }
110 
114  bool incomingDecaySpectator() const { return theIncomingDecaySpectator; }
115 
119  const PDF& spectatorPDF() const { return theSpectatorPDF; }
120 
121 public:
122 
126  void print(ostream&) const;
127 
128 private:
129 
134 
139 
144 
149 
154 
159 
164 
169 
170 };
171 
172 inline ostream& operator << (ostream& os, const DipoleIndex& di) {
173  di.print(os);
174  return os;
175 }
176 
186 
187 public:
188 
193 
197  virtual ~DipoleSplittingInfo() {}
198 
199 
203  DipoleSplittingInfo(DipoleIndex ind,pair<bool,bool> conf,double emitX,
204  double spectX,tPPtr emit,tPPtr spect){
205  theIndex=ind;
206  theConfiguration=conf;
207  theEmitterX=emitX;
208  theSpectatorX=spectX;
209  theEmitter=emit;
210  theSpectator=spect;
211  }
212 
213 
214 public:
215 
219  void fill(const DipoleSplittingInfo&);
220 
221 public:
222 
226  const DipoleIndex& index() const { return theIndex; }
227 
233  const pair<bool,bool>& configuration() const { return theConfiguration; }
234 
238  const pair<bool,bool>& spectatorConfiguration() const { return theSpectatorConfiguration; }
239 
244  tcPDPtr emitterData() const { return theEmitterData; }
245 
250  tcPDPtr emissionData() const { return theEmissionData; }
251 
256  tcPDPtr spectatorData() const { return theSpectatorData; }
257 
261  double emitterX() const { return theEmitterX; }
262 
266  double spectatorX() const { return theSpectatorX; }
267 
268 public:
269 
274  Ptr<DipoleSplittingKinematics>::tptr splittingKinematics() const { return theSplittingKinematics; }
275 
279  Energy scale() const { return theScale; }
280 
285  bool isDecayProc() const { return theIsDecayProc; }
286 
291  Energy recoilMass() const { return theRecoilMass; }
292 
297  Energy spectatorMass() const { return theSpectatorMass; }
298 
303  Energy emitterMass() const { return theEmitterMass; }
304 
309  Energy hardPt() const { return theHardPt; }
310 
314  Energy lastPt() const { return theLastPt; }
315 
319  double lastZ() const { return theLastZ; }
320 
324  double lastPhi() const { return theLastPhi; }
325 
330  double lastEmitterZ() const { return theLastEmitterZ; }
331 
336  double lastSpectatorZ() const { return theLastSpectatorZ; }
337 
343  const vector<double>& lastSplittingParameters() const { return theLastSplittingParameters; }
344 
349  bool stoppedEvolving() const { return theStoppedEvolving; }
350 
351 public:
352 
356  void index(const DipoleIndex& ind) { theIndex = ind; }
357 
361  void splittingKinematics(Ptr<DipoleSplittingKinematics>::tptr newSplittingKinematics) {
362  theSplittingKinematics = newSplittingKinematics;
363  }
364 
369  void emitterData(tcPDPtr p) { theEmitterData = p; }
370 
375  void emissionData(tcPDPtr p) { theEmissionData = p; }
376 
381  void spectatorData(tcPDPtr p) { theSpectatorData = p; }
382 
386  void scale(Energy s) { theScale = s; }
387 
392  void isDecayProc(bool isDecayProc) { theIsDecayProc = isDecayProc; }
393 
398  void recoilMass(Energy mass) { theRecoilMass = mass; }
399 
404  void spectatorMass(Energy mass){ theSpectatorMass = mass; }
405 
410  void emitterMass(Energy mass){ theEmitterMass = mass; }
411 
415  void emitterX(double x) { theEmitterX = x; }
416 
420  void spectatorX(double x) { theSpectatorX = x; }
421 
426  void hardPt(Energy p) { theHardPt = p; }
427 
431  void lastPt(Energy p) { theLastPt = p; }
432 
436  void lastZ(double z) { theLastZ = z; }
437 
441  void lastPhi(double p) { theLastPhi = p; }
442 
447  void lastEmitterZ(double z) { theLastEmitterZ = z; }
448 
453  void lastSpectatorZ(double z) { theLastSpectatorZ = z; }
454 
458  double lastValue() const { return theLastValue; }
459 
463  void lastValue(double v) { theLastValue = v; }
464 
468  void setCalcFixedExpansion(bool c){theCalcFixedExpansion=c;}
469 
473  bool calcFixedExpansion()const{ return theCalcFixedExpansion;}
474 
478  Energy fixedScale() const{return theFixedScale;}
479 
483  void fixedScale(Energy fix){ theFixedScale=fix;}
484 
488  void lastSplittingParameters(const vector<double>& p) { theLastSplittingParameters = p; }
489 
493  vector<double>& splittingParameters() { return theLastSplittingParameters; }
494 
499  void didStopEvolving() { theStoppedEvolving = true; }
500 
505  void continuesEvolving() { theStoppedEvolving = false; }
506 
510  void configuration(const pair<bool,bool>& newConfig) { theConfiguration = newConfig; }
511 
515  void spectatorConfiguration(const pair<bool,bool>& conf) { theSpectatorConfiguration = conf; }
516 
517 public:
518 
522  void emitter(tPPtr newEmitter) { theEmitter = newEmitter; }
523 
527  void spectator(tPPtr newSpectator) { theSpectator = newSpectator; }
528 
532  void splitEmitter(tPPtr newEmitter) { theSplitEmitter = newEmitter; }
533 
537  void splitSpectator(tPPtr newSpectator) { theSplitSpectator = newSpectator; }
538 
542  void emission(tPPtr newEmission) { theEmission = newEmission; }
543 
547  tPPtr emitter() const { return theEmitter; }
548 
552  tPPtr spectator() const { return theSpectator; }
553 
557  tPPtr splitEmitter() const { return theSplitEmitter; }
558 
562  tPPtr splitSpectator() const { return theSplitSpectator; }
563 
567  tPPtr emission() const { return theEmission; }
568 
569 public:
570 
574  void print(ostream&) const;
575 
576 private:
577 
583 
589  pair<bool,bool> theConfiguration;
590 
594  pair<bool,bool> theSpectatorConfiguration;
595 
601 
607 
613 
618  Ptr<DipoleSplittingKinematics>::tptr theSplittingKinematics;
619 
623  Energy theScale;
624 
629 
635 
636 
642 
648 
649 
650 
651 
655  double theEmitterX;
656 
661 
666  Energy theHardPt;
667 
671  Energy theLastPt;
672 
676  double theLastZ;
677 
683  // Note: Not required in current implementation
684  //double theLastZPrime;
685 
689  double theLastPhi;
690 
696 
702 
706  double theLastValue;
707 
714 
720 
725 
730 
735 
740 
745 
751 
756 
757 
758 
759 };
760 
761 inline ostream& operator << (ostream& os, const DipoleSplittingInfo& di) {
762  di.print(os);
763  return os;
764 }
765 
766 }
767 
768 #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.
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.
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.
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.
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
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.
const PDF & spectatorPDF() const
Return the PDF object associated with the spectator.
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.