Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:28

0001 // -*- C++ -*-
0002 //
0003 // DummyDecayer.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef THEPEG_DummyDecayer_H
0010 #define THEPEG_DummyDecayer_H
0011 // This is the declaration of the DummyDecayer class.
0012 
0013 #include "ThePEG/PDT/Decayer.h"
0014 
0015 namespace ThePEG {
0016 
0017 /**
0018  * DummyDecayer inherits from Decayer and is a dummy decayer class to
0019  * be used for symbolic decay channels. If it for some reason is
0020  * called to perform a decay, it will throw a std::logic_error.
0021  *
0022  * @see \ref DummyDecayerInterfaces "The interfaces"
0023  * defined for DummyDecayer.
0024  */
0025 class DummyDecayer: public Decayer {
0026 
0027 public:
0028 
0029   /** @name Virtual functions required by the Decayer class.
0030    */
0031   //@{
0032   /**
0033    * Check if this decayer can perfom the decay specified by the
0034    * given decay mode.
0035    * @param dm the DecayMode describing the decay.
0036    * @return true always.
0037    */
0038   virtual bool accept(const DecayMode & dm) const;
0039 
0040   /**
0041    * Perform a decay for a given DecayMode and a given Particle
0042    * instance. Will throw std::logic_error if called.
0043    * @param dm the DecayMode describing the decay.
0044    * @param p the Particle instance to be decayed.
0045    * @return a ParticleVector containing the decay products.
0046    */
0047   virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const;
0048  
0049   /**
0050    * Will always return zero, since no decay can ever be performed
0051    * with this decayer.
0052    */
0053   virtual double brat(const DecayMode &,
0054               const ParticleData &, double) const;
0055   /**
0056    * Will always return zero, since no decay can ever be performed
0057    * with this decayer.
0058    */
0059   virtual double brat(const DecayMode &, const Particle &, double) const;
0060   //@}
0061 
0062 public:
0063 
0064   /**
0065    * Standard Init function used to initialize the interfaces.
0066    */
0067   static void Init();
0068 
0069 protected:
0070 
0071 
0072 protected:
0073 
0074   /** @name Clone Methods. */
0075   //@{
0076   /**
0077    * Make a simple clone of this object.
0078    * @return a pointer to the new object.
0079    */
0080   virtual IBPtr clone() const;
0081 
0082   /** Make a clone of this object, possibly modifying the cloned object
0083    * to make it sane.
0084    * @return a pointer to the new object.
0085    */
0086   virtual IBPtr fullclone() const;
0087   //@}
0088 
0089 private:
0090 
0091   /**
0092    * Describe a concrete class without persistent data.
0093    */
0094   static NoPIOClassDescription<DummyDecayer> initDummyDecayer;
0095 
0096   /**
0097    * Private and non-existent assignment operator.
0098    */
0099   DummyDecayer & operator=(const DummyDecayer &) = delete;
0100 
0101 };
0102 
0103 }
0104 
0105 
0106 namespace ThePEG {
0107 
0108 /** @cond TRAITSPECIALIZATIONS */
0109 
0110 /** This template specialization informs ThePEG about the base classes
0111  *  of DummyDecayer. */
0112 template <>
0113 struct BaseClassTrait<DummyDecayer,1>: public ClassTraitsType {
0114   /** Typedef of the first base class of DummyDecayer. */
0115   typedef Decayer NthBase;
0116 };
0117 
0118 /** This template specialization informs ThePEG about the name of the
0119  *  DummyDecayer class. */
0120 template <>
0121 struct ClassTraits<DummyDecayer>
0122   : public ClassTraitsBase<DummyDecayer> {
0123   /** Return a platform-independent class name */
0124   static string className() { return "ThePEG::DummyDecayer"; }
0125 
0126 };
0127 
0128 /** @endcond */
0129 
0130 }
0131 
0132 #endif /* THEPEG_DummyDecayer_H */