herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
21namespace Herwig {
22
23using namespace ThePEG;
24
25class DipoleSplittingKinematics;
26
36
37public:
38
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
52public:
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
81public:
82
87
92
97
101 bool offShellEmitter() const { return theOffShellEmitter; }
102 //bool offShellEmitter() const { return theEmitterData->width() != ZERO; }
103
107 const PDF& emitterPDF() const { return theEmitterPDF; }
108
113
118
123
128 //bool offShellSpectator() const { return theSpectatorData->width() != ZERO; }
129
133 const PDF& spectatorPDF() const { return theSpectatorPDF; }
134
135public:
136
140 void print(ostream&) const;
141
142private:
143
148
153
158
163
168
173
178
183
188
193
194};
195
196inline ostream& operator << (ostream& os, const DipoleIndex& di) {
197 di.print(os);
198 return os;
199}
200
210
211public:
212
217
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
238public:
239
244
245public:
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
269
275
281
285 double emitterX() const { return theEmitterX; }
286
290 double spectatorX() const { return theSpectatorX; }
291
292public:
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
381public:
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
407
413
419
423 void scale(Energy s) { theScale = s; }
424
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
506
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
531
537
543
547 void configuration(const pair<bool,bool>& newConfig) { theConfiguration = newConfig; }
548
552 void spectatorConfiguration(const pair<bool,bool>& conf) { theSpectatorConfiguration = conf; }
553
554public:
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
595
600
604 tPPtr emission() const { return theEmission; }
605
606public:
607
611 void print(ostream&) const;
612
613private:
614
620
626 pair<bool,bool> theConfiguration;
627
632
638
644
650
655 Ptr<DipoleSplittingKinematics>::tptr theSplittingKinematics;
656
661 Ptr<DipoleSplittingKernel>::tptr theSplittingKernel;
662
666 Energy theScale;
667
672
678
684
690
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
729
735
741
746
753
759
764
769
774
779
784
790
795
796
797
798};
799
800inline ostream& operator << (ostream& os, const DipoleSplittingInfo& di) {
801 di.print(os);
802 return os;
803}
804
805}
806
807#endif /* HERWIG_DipoleSplittingInfo_H */
DipoleIndex is used to index splitting generators for a particular dipole.
bool operator<(const DipoleIndex &x) const
Compare for ordering.
const PDF & spectatorPDF() const
Return the PDF object associated with the spectator.
PDF theSpectatorPDF
The PDF object for the spectator.
void swap()
Swap emitter and spectator.
bool offShellEmitter() const
Return true, if the emitter can be off-shell.
tcPDPtr spectatorData() const
Return the spectator particle data object.
tcPDPtr theSpectatorData
The particle data object of the spectator.
PDF theEmitterPDF
The PDF object for the emitter.
bool theIncomingDecaySpectator
Whether or not the spectator is incoming to a decay.
bool initialStateEmitter() const
Return true, if the emitter is an incoming parton.
DipoleIndex()
The default constructor.
bool theOffShellEmitter
Can the emitter be off-shell?
bool theInitialStateSpectator
Whether or not the spectator is an incoming parton.
bool operator==(const DipoleIndex &x) const
Compare for equality.
bool theOffShellSpectator
Can the spectator be off-shell?
bool incomingDecayEmitter() const
Return true, if the emitter is incoming to a decay.
DipoleIndex(tcPDPtr newEmitter, tcPDPtr newSpectator, const PDF &newEmitterPDF=PDF(), const PDF &newSpectatorPDF=PDF(), const bool decayingEmitter=false, const bool decayingSpectator=false, const bool offShellEmitter=false, const bool offShellSpectator=false)
The standard constructor.
bool theInitialStateEmitter
Whether or not the emitter is an incoming parton.
bool incomingDecaySpectator() const
Return true, if the spectator is incoming to a decay.
tcPDPtr theEmitterData
The particle data object of the emitter.
const PDF & emitterPDF() const
Return the PDF object associated with the emitter.
void print(ostream &) const
Put information to ostream.
bool theIncomingDecayEmitter
Whether or not the emitter is incoming to a decay.
bool initialStateSpectator() const
Return true, if the spectator is an incoming parton.
bool offShellSpectator() const
Return true, if the spectator can be off-shell.
tcPDPtr emitterData() const
Return the emitter particle data object.
pair< DipoleIndex, DipoleIndex > split(tcPDPtr) const
Produce a pair of dipole indices given a particle data object for the emission.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
double theSpectatorX
The momentum fraction of the spectator.
void setCalcFixedExpansion(bool c)
Set the flag to calculate the Sudakov with fixed scales.
void emitterData(tcPDPtr p)
Set the particle data object of the emitter after the splitting.
Ptr< DipoleSplittingKinematics >::tptr splittingKinematics() const
Return a pointer to the DipoleSplittingKinematics object which is to be used to perform the splitting...
void lastEmitterZ(double z)
Set the momentum fraction, by which the emitter's momentum fraction should be divided after the split...
void recoilMass(Energy mass)
Set the mass of the recoil system in decay dipoles.
void index(const DipoleIndex &ind)
Set the index.
void isDecayProc(bool isDecayProc)
Set whether or not this dipole is part of a decay process.
Energy recoilMass() const
Return the mass of the recoil system in decay dipoles.
bool theIsDecayProc
Whether or not this dipole comes from a decay process.
Energy hardPt() const
Return the pt below which this splitting has been generated.
Energy emitterMass() const
Return the emitter mass (to cope with off-shell particles)
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.
const DipoleIndex & index() const
Return the dipole index.
Energy theRecoilMass
The mass of the recoil system in decay dipoles.
vector< double > theLastSplittingParameters
Any additional parameters needed to evaluate the splitting kernel or to generate the full splitting.
void splitEmitter(tPPtr newEmitter)
Set a pointer to the emitter parton after emission.
double theLastZ
The last generated momentum fraction.
void emissionData(tcPDPtr p)
Set the particle data object of the emission after the splitting.
tcPDPtr theEmissionData
The particle data object of the emission after the splitting.
Ptr< DipoleSplittingKernel >::tptr theSplittingKernel
A pointer to the DipoleSplittingKernel object which is used to perform the splitting.
void splitSpectator(tPPtr newSpectator)
Set a pointer to the spectator parton after emission.
void didStopEvolving()
Indicate that this splitting will terminate the evolution of the dipole considered.
void emitterX(double x)
Set the emitter's momentum fraction.
Energy fixedScale() const
Fixed scale for Sudakov sampling with fixed scales.
Energy theLastPt
The last generated pt.
Energy lastPt() const
Return the last generated pt.
tPPtr emission() const
Return a pointer to the emitted parton.
DipoleSplittingInfo()
The default constructor.
const pair< bool, bool > & spectatorConfiguration() const
Get the configuration marking the spectator.
void hardPt(Energy p)
Set the pt below which this splitting has been generated.
double theLastSpectatorZ
The momentum fraction, by which the spectator's momentum fraction should be divided after the splitti...
PPtr theSplitSpectator
A pointer to the spectator parton after emission.
virtual ~DipoleSplittingInfo()
Destructor.
void splittingKinematics(Ptr< DipoleSplittingKinematics >::tptr newSplittingKinematics)
Set the DipoleSplittingKinematics object.
double theEmitterX
The momentum fraction of the emitter.
Energy spectatorMass() const
Return the spectator mass (to cope with off-shell particles)
double lastEmitterZ() const
Return the momentum fraction, by which the emitter's momentum fraction should be divided after the sp...
Energy theFixedScale
Fixed scale for Sudakov evaluation.
DipoleSplittingInfo(DipoleIndex ind, pair< bool, bool > conf, double emitX, double spectX, tPPtr emit, tPPtr spect)
Standard constructor.
pair< bool, bool > theSpectatorConfiguration
The configuration marking the spectator.
void lastSpectatorZ(double z)
Set the momentum fraction, by which the spectator's momentum fraction should be divided after the spl...
void spectatorMass(Energy mass)
Set the spectator mass (to cope with off-shell particles)
PPtr theSpectator
A pointer to the spectator parton before emission.
void fill(const DipoleSplittingInfo &)
Assign data from another splitting info.
double lastZ() const
Return the last generated momentum fraction.
tcPDPtr emitterData() const
Return the particle data object of the emitter after the splitting.
void emitter(tPPtr newEmitter)
Set a pointer to the emitter parton before emission.
PPtr theEmission
A pointer to the emitted parton.
Energy theEmitterMass
The mass of the emitter.
Energy theHardPt
The pt below which this splitting has been generated.
Ptr< DipoleSplittingKernel >::tptr splittingKernel() const
Return a pointer to the DipoleSplittingKernel object which is used to perform the splitting.
void emitterMass(Energy mass)
Set the emitter mass (to cope with off-shell particles)
void splittingKernel(Ptr< DipoleSplittingKernel >::tptr newSplittingKernel)
Set the DipoleSplittingKernel object.
tPPtr spectator() const
Return a pointer to the spectator parton before emission.
double lastPhi() const
Return the last generated azimuthal angle.
bool calcFixedExpansion() const
Flag to calculate the Sudakov with fixed scales.
pair< bool, bool > theConfiguration
Flags indicateing which of the particles in the dipole should be considered emitter (true) and specta...
const pair< bool, bool > & configuration() const
Return which of the particles in the dipole should be considered emitter (true) and spectator (false)
tPPtr splitSpectator() const
Return a pointer to the spectator parton after emission.
void spectatorX(double x)
Set the spectator's momentum fraction.
bool isDecayProc() const
Return whether or not this dipole is part of a decay process.
void lastSplittingParameters(const vector< double > &p)
Set the last splitting parameters.
bool theStoppedEvolving
True, if this splitting will terminate the evolution of the dipole considered.
const vector< double > & lastSplittingParameters() const
Return any additional parameters needed to evaluate the splitting kernel or to generate the full spli...
void print(ostream &) const
Put information to ostream.
bool stoppedEvolving() const
Return true, if this splitting will terminate the evolution of the dipole considered.
double theLastEmitterZ
The momentum fraction, by which the emitter's momentum fraction should be divided after the splitting...
void emission(tPPtr newEmission)
Set a pointer to the emitted parton.
tcPDPtr spectatorData() const
Return the particle data object of the spectator after the splitting.
void scale(Energy s)
Set the dipole scale.
Energy theScale
The scale for this dipole.
void spectatorConfiguration(const pair< bool, bool > &conf)
Set the configuration marking the spectator.
DipoleIndex theIndex
The DipoleIndex associated with this splitting.
void spectator(tPPtr newSpectator)
Set a pointer to the spectator parton before emission.
Energy theSpectatorMass
The mass of the spectator.
tPPtr splitEmitter() const
Return a pointer to the emitter parton after emission.
tcPDPtr emissionData() const
Return the particle data object of the emission after the splitting.
void lastPt(Energy p)
Set the last generated pt.
double spectatorX() const
Return the momentum fraction of the spectator.
void fixedScale(Energy fix)
Set the fixed scale.
double theLastPhi
The last calculated zPrime required for massive FF and decay kinematics dipoles.
vector< double > & splittingParameters()
Access the splitting parameters.
Ptr< DipoleSplittingKinematics >::tptr theSplittingKinematics
A pointer to the DipoleSplittingKinematics object which is to be used to perform the splitting.
double lastSpectatorZ() const
Return the momentum fraction, by which the spectator's momentum fraction should be divided after the ...
PPtr theEmitter
A pointer to the emitter parton before emission.
void spectatorData(tcPDPtr p)
Set the particle data object of the spectator after the splitting.
void lastValue(double v)
Set the last splitting kernel value encountered.
tPPtr emitter() const
Return a pointer to the emitter parton before emission.
double lastValue() const
Return the last splitting kernel value encountered.
tcPDPtr theEmitterData
The particle data object of the emitter after the splitting.
void lastZ(double z)
Set the last generated momentum fraction.
double emitterX() const
Return the momentum fraction of the emitter.
Energy scale() const
Return the dipole scale.
PPtr theSplitEmitter
A pointer to the emitter parton after emission.
void continuesEvolving()
Indicate that this splitting will not terminate the evolution of the dipole considered.
void configuration(const pair< bool, bool > &newConfig)
Reset the configuration.
void lastPhi(double p)
Set the last generated azimuthal angle.
double theLastValue
The last splitting kernel value encountered.
-*- C++ -*-
ThePEG::Ptr< Particle >::transient_pointer tPPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ostream & operator<<(ostream &, const Collision &)