ThePEG  1.8.0
RemnantParticle.h
1 // -*- C++ -*-
2 //
3 // RemnantParticle.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_RemnantParticle_H
10 #define THEPEG_RemnantParticle_H
11 //
12 // This is the declaration of the RemnantParticle class.
13 //
14 
15 #include "ThePEG/EventRecord/Particle.h"
16 #include "RemnantParticle.fh"
17 #include "ThePEG/PDT/RemnantData.fh"
18 #include "ThePEG/PDT/RemnantDecayer.fh"
19 
20 namespace ThePEG {
21 
25 class RemnantParticle: public Particle {
26 
27 public:
28 
32  friend class RemnantDecayer;
33 
34 public:
35 
44  RemnantParticle(const Particle & particle, RemDecPtr decayer,
45  tPPtr parton = tPPtr());
46 
47 public:
48 
54  bool extract(tPPtr parton, bool fixcolour = false);
55 
62  bool reextract(tPPtr oldp, tPPtr newp, bool fixcolour = false);
63 
68  bool remove(tPPtr parton);
69 
73  const PVector & extracted() const {
74  return theExtracted;
75  }
76 
77 public:
78 
85  void persistentOutput(PersistentOStream & os) const;
86 
92  void persistentInput(PersistentIStream & is, int version);
94 
101  static void Init();
102 
103 protected:
104 
108  void fixColourLines(tPPtr parton);
109 
110 private:
111 
116 
121 
126 
127 protected:
128 
134 
139  friend struct ClassTraits<RemnantParticle>;
140 
141 private:
142 
148 
154 
155 };
156 
157 }
158 
159 #include "ThePEG/Utilities/ClassTraits.h"
160 
161 namespace ThePEG {
162 
167 template <>
168 struct BaseClassTrait<RemnantParticle,1> {
170  typedef Particle NthBase;
171 };
172 
175 template <>
176 struct ClassTraits<RemnantParticle>
177  : public ClassTraitsBase<RemnantParticle> {
179  static string className() { return "ThePEG::RemnantParticle"; }
181  static TPtr create() { return TPtr::Create(RemnantParticle()); }
182 };
183 
186 }
187 
188 #endif /* THEPEG_RemnantParticle_H */