File indexing completed on 2026-08-06 09:24:27
0001
0002 #ifndef Herwig_ShowerEventRecord_H
0003 #define Herwig_ShowerEventRecord_H
0004
0005
0006
0007
0008 #include "ThePEG/Config/ThePEG.h"
0009 #include "ThePEG/Handlers/StandardXComb.h"
0010 #include "ThePEG/PDF/PDF.h"
0011 #include "Herwig/MatrixElement/Matchbox/Matching/ShowerApproximation.h"
0012
0013 namespace Herwig {
0014
0015 using namespace ThePEG;
0016
0017
0018
0019
0020 class ShowerEventRecord: public Base {
0021
0022 public:
0023
0024
0025
0026
0027
0028
0029 ShowerEventRecord();
0030
0031
0032
0033
0034 virtual ~ShowerEventRecord();
0035
0036
0037 public:
0038
0039
0040
0041
0042 tSubProPtr subProcess() const { return subProcess_; }
0043
0044
0045
0046
0047 tStdXCombPtr xcombPtr() const { return XComb_; }
0048
0049
0050
0051
0052 void xcombPtr(tStdXCombPtr in) { XComb_ = in; }
0053
0054
0055
0056
0057 const StandardXComb& xcomb() const { return *XComb_; }
0058
0059 public:
0060
0061
0062
0063
0064
0065 PPair& incoming() { return incoming_; }
0066
0067
0068
0069
0070
0071 const PPair& incoming() const { return incoming_; }
0072
0073
0074
0075
0076
0077 PList& outgoing() { return outgoing_; }
0078
0079
0080
0081
0082
0083 const PList& outgoing() const { return outgoing_; }
0084
0085
0086
0087
0088
0089 PList& intermediates() { return intermediates_; }
0090
0091
0092
0093
0094
0095 const PList& intermediates() const { return intermediates_; }
0096
0097
0098
0099
0100 const pair<double,double>& fractions() const { return fractions_; }
0101
0102
0103
0104
0105 pair<double,double>& fractions() { return fractions_; }
0106
0107
0108
0109
0110 const pair<PDF,PDF>& pdfs() const { return PDFs_; }
0111
0112 public:
0113
0114
0115
0116
0117
0118
0119 bool isMCatNLOSEvent() const { return isMCatNLOSEvent_; }
0120
0121
0122
0123
0124 bool isMCatNLOHEvent() const { return isMCatNLOHEvent_; }
0125
0126
0127
0128
0129 bool isPowhegSEvent() const { return isPowhegSEvent_; }
0130
0131
0132
0133
0134 bool isPowhegHEvent() const { return isPowhegHEvent_; }
0135
0136
0137
0138
0139 void isMCatNLOSEvent(bool in) { isMCatNLOSEvent_ = in; }
0140
0141
0142
0143
0144 void isMCatNLOHEvent(bool in) { isMCatNLOHEvent_ = in; }
0145
0146
0147
0148
0149 Ptr<ShowerApproximation>::tptr showerApproximation() {
0150 return showerApproximation_;
0151 }
0152
0153
0154
0155
0156 bool truncatedShower() const { return truncatedShower_; }
0157
0158
0159
0160
0161 void truncatedShower(bool in) { truncatedShower_=in; }
0162
0163
0164 public:
0165
0166
0167
0168
0169
0170 virtual void clear();
0171
0172 protected:
0173
0174
0175
0176
0177 void subProcess(tSubProPtr in) { subProcess_ = in; }
0178
0179
0180
0181
0182 pair<PDF,PDF>& pdfs() { return PDFs_; }
0183
0184 public:
0185
0186
0187
0188
0189 void identifyEventType();
0190
0191 protected:
0192
0193
0194
0195
0196 map<ColinePtr,ColinePtr> & colourLines() {return colourLines_;}
0197
0198
0199
0200
0201
0202 void colourIsolate(const vector<PPtr> & original, const vector<PPtr> & copy);
0203
0204
0205
0206
0207
0208 void updateColour(PPtr particle, bool recursive);
0209
0210
0211
0212
0213 void mapColour(PPtr original, PPtr copy);
0214
0215 private:
0216
0217
0218
0219
0220 void isolateLine(vector<PPair>::const_iterator cit,
0221 vector<PPair> & particles,
0222 tcColinePtr oldline,
0223 tColinePtr newline);
0224
0225 private:
0226
0227
0228
0229
0230
0231 ShowerEventRecord & operator=(const ShowerEventRecord &) = delete;
0232
0233
0234 private:
0235
0236
0237
0238
0239 SubProPtr subProcess_;
0240
0241
0242
0243
0244 StdXCombPtr XComb_;
0245
0246
0247
0248
0249
0250 PPair incoming_;
0251
0252
0253
0254
0255 PList outgoing_;
0256
0257
0258
0259
0260
0261 PList intermediates_;
0262
0263
0264
0265
0266 pair<PDF,PDF> PDFs_;
0267
0268
0269
0270
0271 pair<double,double> fractions_;
0272
0273 private:
0274
0275
0276
0277
0278
0279
0280
0281
0282 bool isMCatNLOSEvent_;
0283
0284
0285
0286
0287 bool isMCatNLOHEvent_;
0288
0289
0290
0291
0292 bool isPowhegSEvent_;
0293
0294
0295
0296
0297 bool isPowhegHEvent_;
0298
0299
0300
0301
0302 Ptr<ShowerApproximation>::tptr showerApproximation_;
0303
0304
0305
0306
0307 map<ColinePtr,ColinePtr> colourLines_;
0308
0309
0310
0311
0312 bool truncatedShower_;
0313
0314
0315 };
0316
0317 }
0318
0319 #endif