Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:26:46

0001 #ifndef FASTSIM_DECAYER_H
0002 #define FASTSIM_DECAYER_H
0003 
0004 #include <memory>
0005 #include <vector>
0006 
0007 ///////////////////////////////////////////////
0008 // Author: L. Vanelderen
0009 // Date: 13 May 2014
0010 //
0011 // Revision: Class structure modified to match SimplifiedGeometryPropagator
0012 //           S. Kurz, 29 May 2017
0013 //////////////////////////////////////////////////////////
0014 
0015 namespace gen {
0016   class P8RndmEngine;
0017 }
0018 
0019 namespace CLHEP {
0020   class HepRandomEngine;
0021 }
0022 
0023 namespace Pythia8 {
0024   class Pythia;
0025 }
0026 
0027 namespace fastsim {
0028   class Particle;
0029 
0030   //! Implementation of non-stable particle decays.
0031   /*!
0032         Inspired by method Pythia8Hadronizer::residualDecay() in GeneratorInterface/Pythia8Interface/src/Py8GunBase.cc
0033     */
0034   class Decayer {
0035   public:
0036     //! Default Constructor.
0037     Decayer();
0038 
0039     //! Default destructor.
0040     ~Decayer();
0041 
0042     //! Decay particle using pythia.
0043     /*!
0044             \param particle The particle that should be decayed.
0045             \param secondaries The decay products.
0046             \param engine The Random Engine.
0047         */
0048     void decay(const Particle& particle,
0049                std::vector<std::unique_ptr<Particle> >& secondaries,
0050                CLHEP::HepRandomEngine& engine) const;
0051 
0052   private:
0053     std::unique_ptr<Pythia8::Pythia> pythia_;                //!< Instance of pythia
0054     std::unique_ptr<gen::P8RndmEngine> pythiaRandomEngine_;  //!< Instance of pythia Random Engine
0055   };
0056 }  // namespace fastsim
0057 #endif