File indexing completed on 2026-08-06 09:24:27
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef HERWIG_RealEmissionProcess_H
0010 #define HERWIG_RealEmissionProcess_H
0011
0012 #include "ThePEG/Config/ThePEG.h"
0013 #include "ThePEG/EventRecord/Particle.h"
0014 #include "ThePEG/EventRecord/SubProcess.h"
0015 #include "ThePEG/Handlers/XComb.h"
0016 #include "ThePEG/Config/Pointers.h"
0017 #include "RealEmissionProcess.fh"
0018 #include "Herwig/Shower/ShowerInteraction.h"
0019
0020 namespace Herwig {
0021 using namespace ThePEG;
0022
0023
0024
0025
0026 class RealEmissionProcess : public Base {
0027
0028 friend ostream & operator<<(ostream & os, const RealEmissionProcess & proc);
0029
0030 public:
0031
0032
0033
0034
0035 ParticleVector & incoming() {
0036 return incoming_;
0037 }
0038
0039
0040
0041
0042 ParticleVector & outgoing() {
0043 return outgoing_;
0044 }
0045
0046 public:
0047
0048
0049
0050
0051 ParticleVector & bornIncoming() {
0052 return bornIncoming_;
0053 }
0054
0055
0056
0057
0058 ParticleVector & bornOutgoing() {
0059 return bornOutgoing_;
0060 }
0061
0062
0063
0064
0065 ParticleVector & hadrons() {
0066 return hadrons_;
0067 }
0068
0069 public:
0070
0071
0072
0073
0074 unsigned int emitter () const {return emitter_;}
0075
0076
0077
0078
0079 unsigned int spectator() const {return spectator_;}
0080
0081
0082
0083
0084 unsigned int emitted () const {return emitted_;}
0085
0086
0087
0088
0089 void emitter (unsigned int in) {emitter_=in;}
0090
0091
0092
0093
0094 void spectator(unsigned int in) {spectator_=in;}
0095
0096
0097
0098
0099 void emitted (unsigned int in) {emitted_=in;}
0100
0101 public:
0102
0103
0104
0105
0106 LorentzRotation transformation() const { return trans_;}
0107
0108
0109
0110
0111 void transformation(LorentzRotation in) {trans_=in;}
0112
0113 public:
0114
0115
0116
0117
0118 pair<double,double> x() const {return x_;}
0119
0120
0121
0122
0123 void x(pair<double,double> in) {x_=in;}
0124
0125 public:
0126
0127
0128
0129
0130 ShowerInteraction interaction() {return interaction_;}
0131
0132
0133
0134
0135 void interaction(ShowerInteraction in) {interaction_ = in;}
0136
0137
0138
0139
0140 map<ShowerInteraction,Energy> & pT() {return pT_;}
0141
0142 private:
0143
0144
0145
0146
0147 unsigned int emitter_;
0148
0149
0150
0151
0152 unsigned int spectator_;
0153
0154
0155
0156 unsigned int emitted_;
0157
0158 private:
0159
0160
0161
0162
0163 ParticleVector incoming_;
0164
0165
0166
0167
0168 ParticleVector outgoing_;
0169
0170 private:
0171
0172
0173
0174
0175 ParticleVector hadrons_;
0176
0177 private:
0178
0179
0180
0181
0182 ParticleVector bornIncoming_;
0183
0184
0185
0186
0187 ParticleVector bornOutgoing_;
0188
0189 private:
0190
0191
0192
0193
0194 LorentzRotation trans_;
0195
0196
0197
0198
0199 pair<double,double> x_;
0200
0201 private:
0202
0203
0204
0205
0206 ShowerInteraction interaction_;
0207
0208
0209
0210
0211 map<ShowerInteraction,Energy> pT_;
0212 };
0213
0214
0215
0216
0217 inline ostream & operator<<(ostream & os, const RealEmissionProcess & proc) {
0218 os << "REAL EMISSION "
0219 << proc.emitter_ << " "
0220 << proc.spectator_ << " "
0221 << proc.emitted_ << "\n";
0222 os << "BORN\n";
0223 for(unsigned int ix=0;ix<proc.bornIncoming_.size();++ix)
0224 os << proc.bornIncoming_[ix]->colourLine() << " "
0225 << proc.bornIncoming_[ix]->antiColourLine() << " "
0226 << *proc.bornIncoming_[ix] << "\n";
0227 for(unsigned int ix=0;ix<proc.bornOutgoing_.size();++ix)
0228 os << proc.bornOutgoing_[ix]->colourLine() << " "
0229 << proc.bornOutgoing_[ix]->antiColourLine() << " "
0230 << *proc.bornOutgoing_[ix] << "\n";
0231 os << "REAL\n";
0232 for(unsigned int ix=0;ix<proc.incoming_.size();++ix)
0233 os << proc.incoming_[ix]->colourLine() << " "
0234 << proc.incoming_[ix]->antiColourLine() << " "
0235 << *proc.incoming_[ix] << "\n";
0236 for(unsigned int ix=0;ix<proc.outgoing_.size();++ix)
0237 os << proc.outgoing_[ix]->colourLine() << " "
0238 << proc.outgoing_[ix]->antiColourLine() << " "
0239 << *proc.outgoing_[ix] << "\n";
0240 return os;
0241 }
0242
0243 }
0244
0245 #endif