ThePEG  1.8.0
RemnantData.h
1 // -*- C++ -*-
2 //
3 // RemnantData.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef THEPEG_RemnantData_H
10 #define THEPEG_RemnantData_H
11 //
12 // This is the declaration of the RemnantData class.
13 //
14 
15 #include "ThePEG/PDT/ParticleData.h"
16 #include "ThePEG/PDT/RemnantData.fh"
17 #include "ThePEG/PDT/RemnantDecayer.fh"
18 #include "ThePEG/PDT/DecayMode.h"
19 
20 namespace ThePEG {
21 
46 class RemnantData: public ParticleData {
47 
48 public:
49 
59 
60 public:
61 
65  const RemnantDecayer & decayer() const {
66  return *theDecayer;
67  };
68 
73  bool extract(tcPDPtr parton);
74 
79  bool remove(tcPDPtr parton);
80 
85  bool reextract(tcPDPtr oldp, tcPDPtr newp);
86 
87 protected:
92  bool fixColour();
93 
94 public:
95 
102  void persistentOutput(PersistentOStream & os) const;
103 
109  void persistentInput(PersistentIStream & is, int version);
111 
118  static void Init();
119 
120 protected:
121 
128  virtual IBPtr clone() const;
129 
134  virtual IBPtr fullclone() const;
136 
137 
138 // If needed, insert declarations of virtual function defined in the
139 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
140 
141 
142 private:
143 
148 
153 
158 
162  multiset<tcPDPtr> extracted;
163 
164 protected:
165 
171 
176  friend struct ClassTraits<RemnantData>;
177 
178 private:
179 
185 
190  RemnantData & operator=(const RemnantData &);
191 
192 };
193 
194 }
195 
196 #include "ThePEG/Utilities/ClassTraits.h"
197 
198 namespace ThePEG {
199 
204 template <>
205 struct BaseClassTrait<RemnantData,1> {
207  typedef ParticleData NthBase;
208 };
209 
212 template <>
213 struct ClassTraits<RemnantData>
214  : public ClassTraitsBase<RemnantData> {
216  static string className() { return "ThePEG::RemnantData"; }
218  static TPtr create() { return TPtr::Create(RemnantData()); }
219 };
220 
223 }
224 
225 #endif /* THEPEG_RemnantData_H */