File indexing completed on 2026-08-06 09:38:27
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef ThePEG_BlobDiagram_H
0010 #define ThePEG_BlobDiagram_H
0011
0012
0013 #include "ThePEG/MatrixElement/DiagramBase.h"
0014 #include "ThePEG/MatrixElement/ColourLines.h"
0015 #include "ThePEG/Handlers/StandardXComb.fh"
0016
0017 namespace ThePEG {
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 class BlobDiagram: public DiagramBase {
0028
0029 public:
0030
0031
0032 typedef cPDVector::size_type size_type;
0033
0034 public:
0035
0036
0037
0038
0039
0040
0041 BlobDiagram()
0042 : DiagramBase() {}
0043
0044
0045
0046
0047 BlobDiagram(int id, tcPDPtr first, tcPDPtr second)
0048 : DiagramBase() {
0049 addParton(first);
0050 addParton(second);
0051 diagramInfo(2,id);
0052 }
0053
0054
0055
0056
0057 ~BlobDiagram();
0058
0059
0060 public:
0061
0062
0063
0064
0065 BlobDiagram& operator,(PDPtr pd) { addParton(pd); return *this; }
0066
0067
0068
0069
0070 BlobDiagram& operator,(cPDPtr pd) { addParton(pd); return *this; }
0071
0072
0073
0074
0075 BlobDiagram& operator,(tPDPtr pd) { addParton(pd); return *this; }
0076
0077
0078
0079
0080 BlobDiagram& operator,(tcPDPtr pd) { addParton(pd); return *this; }
0081
0082
0083
0084
0085
0086
0087
0088
0089 virtual tPVector construct(SubProPtr sb, const StandardXComb&,
0090 const ColourLines&) const;
0091
0092
0093
0094
0095 tcPDPair incoming() const {
0096 return tcPDPair(partons()[0],partons()[1]);
0097 }
0098
0099
0100
0101
0102 tcPDVector outgoing() const {
0103 return tcPDVector(partons().begin()+2,partons().end());
0104 }
0105
0106
0107
0108
0109
0110 tcPDVector external() const {
0111 return tcPDVector(partons().begin(),partons().end());
0112 }
0113
0114
0115
0116
0117 size_type nOutgoing() const { return partons().size() - 2; }
0118
0119 public:
0120
0121
0122
0123
0124
0125
0126
0127 void persistentOutput(PersistentOStream & os) const;
0128
0129
0130
0131
0132
0133
0134 void persistentInput(PersistentIStream & is, int version);
0135
0136
0137 private:
0138
0139
0140
0141
0142 static ClassDescription<BlobDiagram> initBlobDiagram;
0143
0144
0145
0146
0147 BlobDiagram & operator=(const BlobDiagram &) = delete;
0148
0149 };
0150
0151 }
0152
0153 namespace ThePEG {
0154
0155
0156
0157
0158
0159
0160
0161 template <>
0162 struct BaseClassTrait<BlobDiagram,1>: public ClassTraitsType {
0163
0164 typedef DiagramBase NthBase;
0165 };
0166
0167
0168
0169
0170
0171 template <>
0172 struct ClassTraits<BlobDiagram>: public ClassTraitsBase<BlobDiagram> {
0173
0174 static string className() { return "ThePEG::BlobDiagram"; }
0175 };
0176
0177
0178
0179 }
0180
0181 #endif