File indexing completed on 2026-08-06 09:24:26
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef HERWIG_ShowerProgenitor_H
0010 #define HERWIG_ShowerProgenitor_H
0011
0012
0013
0014
0015 #include "ThePEG/Config/ThePEG.h"
0016 #include "Herwig/Shower/QTilde/ShowerConfig.h"
0017 #include "Herwig/Shower/QTilde/Base/ShowerParticle.h"
0018 #include "ShowerProgenitor.fh"
0019 #include "ThePEG/PDF/BeamParticleData.h"
0020
0021 namespace Herwig {
0022
0023 using namespace ThePEG;
0024
0025
0026
0027
0028
0029 class ShowerProgenitor : public Base {
0030
0031 public:
0032
0033
0034
0035
0036 enum Reconstructed { notReconstructed=0, done, dontReconstruct};
0037
0038
0039
0040
0041
0042 typedef Ptr<BeamParticleData>::transient_const_pointer tcBeamPtr;
0043
0044 public:
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054 ShowerProgenitor(PPtr original,PPtr copy, ShowerParticlePtr particle,
0055 Energy pT=ZERO,bool emitted=false)
0056 : _original(original), _copy(copy), _perturbative(true),
0057 _particle(particle), _highestpT(pT),
0058 _maxHardPt(ZERO), _hardScale(ZERO), _hasEmitted(emitted),
0059 _reconstructed(notReconstructed) {
0060
0061 if ( original->parents().empty() ) {
0062 _beam=dynamic_ptr_cast<tcBeamPtr>(original->dataPtr());
0063 }
0064 else {
0065 _beam=dynamic_ptr_cast<tcBeamPtr>(original->parents()[0]->dataPtr());
0066 }
0067 }
0068
0069
0070
0071
0072 ShowerParticlePtr progenitor() const { return _particle; }
0073
0074
0075
0076
0077 void progenitor(ShowerParticlePtr in) { _particle=in; }
0078
0079
0080
0081
0082 PPtr original() const { return _original; }
0083
0084
0085
0086
0087 PPtr copy() const { return _copy; }
0088
0089
0090
0091
0092 void copy(PPtr in) { _copy=in; }
0093
0094
0095
0096
0097
0098 bool perturbative() const { return _perturbative; }
0099
0100
0101
0102
0103
0104 void perturbative(bool in) { _perturbative=in; }
0105
0106
0107
0108
0109
0110
0111
0112
0113 Energy highestpT() const { return _highestpT; }
0114
0115
0116
0117
0118 void highestpT(Energy in) { _highestpT=in; }
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128 Energy maximumpT(ShowerInteraction type) const {
0129 assert(type!=ShowerInteraction::QEDQCD && type!=ShowerInteraction::ALL && type!=ShowerInteraction::UNDEFINED);
0130 map<ShowerInteraction,Energy>::const_iterator it = _maxpT.find(type);
0131 return it !=_maxpT.end() ? it->second : Constants::MaxEnergy;
0132 }
0133
0134
0135
0136
0137 void maximumpT(Energy in,ShowerInteraction type) {
0138 _maxpT[type]=in; }
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148 Energy maxHardPt() const { return _maxHardPt; }
0149
0150
0151
0152
0153 void maxHardPt(Energy in) { _maxHardPt = in; }
0154
0155
0156
0157
0158
0159
0160 Energy hardScale() const { return _hardScale; }
0161
0162
0163
0164
0165
0166
0167 void hardScale(Energy in) { _hardScale = in; }
0168
0169
0170
0171
0172 bool hasEmitted() const { return _hasEmitted; }
0173
0174
0175
0176
0177 void hasEmitted(bool in) { _hasEmitted=in; }
0178
0179
0180
0181
0182
0183 long id() const { return _particle->id(); }
0184
0185
0186
0187
0188 tcBeamPtr beam() { return _beam; }
0189
0190
0191
0192
0193 Reconstructed reconstructed() const {return _reconstructed;}
0194
0195
0196
0197
0198 void reconstructed(Reconstructed recon) {_reconstructed = recon;}
0199
0200 private:
0201
0202
0203
0204
0205 PPtr _original;
0206
0207
0208
0209
0210 PPtr _copy;
0211
0212
0213
0214
0215
0216 bool _perturbative;
0217
0218
0219
0220
0221 ShowerParticlePtr _particle;
0222
0223
0224
0225
0226 Energy _highestpT;
0227
0228
0229
0230
0231 map<ShowerInteraction,Energy> _maxpT;
0232
0233
0234
0235
0236 Energy _maxHardPt;
0237
0238
0239
0240
0241
0242
0243 Energy _hardScale;
0244
0245
0246
0247
0248 bool _hasEmitted;
0249
0250
0251
0252
0253 tcBeamPtr _beam;
0254
0255
0256
0257
0258 Reconstructed _reconstructed;
0259
0260 };
0261 }
0262
0263 #endif