LCOV - code coverage report
Current view: top level - PYTHIA8/pythia8210dev/include/Pythia8 - ParticleDecays.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 3 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 5 0.0 %

          Line data    Source code
       1             : // ParticleDecays.h is a part of the PYTHIA event generator.
       2             : // Copyright (C) 2015 Torbjorn Sjostrand.
       3             : // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
       4             : // Please respect the MCnet Guidelines, see GUIDELINES for details.
       5             : 
       6             : // This file contains the classes to perform a particle decay.
       7             : // DecayHandler: base class for external handling of decays.
       8             : // ParticleDecays: decay a particle.
       9             : 
      10             : #ifndef Pythia8_ParticleDecays_H
      11             : #define Pythia8_ParticleDecays_H
      12             : 
      13             : #include "Pythia8/Basics.h"
      14             : #include "Pythia8/Event.h"
      15             : #include "Pythia8/FragmentationFlavZpT.h"
      16             : #include "Pythia8/Info.h"
      17             : #include "Pythia8/ParticleData.h"
      18             : #include "Pythia8/PythiaStdlib.h"
      19             : #include "Pythia8/Settings.h"
      20             : #include "Pythia8/TimeShower.h"
      21             : #include "Pythia8/TauDecays.h"
      22             : 
      23             : namespace Pythia8 {
      24             : 
      25             : //==========================================================================
      26             : 
      27             : // DecayHandler is base class for the external handling of decays.
      28             : // There is only one pure virtual method, that should do the decay.
      29             : 
      30             : class DecayHandler {
      31             : 
      32             : public:
      33             : 
      34             :   // Destructor.
      35             :   virtual ~DecayHandler() {}
      36             : 
      37             :   // A pure virtual method, wherein the derived class method does a decay.
      38             :   virtual bool decay(vector<int>& idProd, vector<double>& mProd,
      39             :     vector<Vec4>& pProd, int iDec, const Event& event) = 0;
      40             : 
      41             : };
      42             : 
      43             : //==========================================================================
      44             : 
      45             : // The ParticleDecays class contains the routines to decay a particle.
      46             : 
      47           0 : class ParticleDecays {
      48             : 
      49             : public:
      50             : 
      51             :   // Constructor.
      52           0 :   ParticleDecays() {}
      53             : 
      54             :   // Initialize: store pointers and find settings
      55             :   void init(Info* infoPtrIn, Settings& settings,
      56             :     ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
      57             :     Couplings* couplingsPtrIn, TimeShower* timesDecPtrIn,
      58             :     StringFlav* flavSelPtrIn, DecayHandler* decayHandlePtrIn,
      59             :     vector<int> handledParticles);
      60             : 
      61             :   // Perform a decay of a single particle.
      62             :   bool decay(int iDec, Event& event);
      63             : 
      64             :   // Did decay result in new partons to hadronize?
      65           0 :   bool moreToDo() const {return hasPartons && keepPartons;}
      66             : 
      67             : private:
      68             : 
      69             :   // Constants: could only be changed in the code itself.
      70             :   static const int    NTRYDECAY, NTRYPICK, NTRYMEWT, NTRYDALITZ;
      71             :   static const double MSAFEDALITZ, WTCORRECTION[11];
      72             : 
      73             :   // Pointer to various information on the generation.
      74             :   Info*         infoPtr;
      75             : 
      76             :   // Pointer to the particle data table.
      77             :   ParticleData* particleDataPtr;
      78             : 
      79             :   // Pointer to the random number generator.
      80             :   Rndm*         rndmPtr;
      81             : 
      82             :   // Pointers to Standard Model couplings.
      83             :   Couplings*    couplingsPtr;
      84             : 
      85             :   // Pointers to timelike showers, for decays to partons (e.g. Upsilon).
      86             :   TimeShower*   timesDecPtr;
      87             : 
      88             :   // Pointer to class for flavour generation; needed when to pick hadrons.
      89             :   StringFlav*   flavSelPtr;
      90             : 
      91             :   // Pointer to a handler of external decays.
      92             :   DecayHandler* decayHandlePtr;
      93             : 
      94             :   // Initialization data, read from Settings.
      95             :   bool   limitTau0, limitTau, limitRadius, limitCylinder, limitDecay,
      96             :          mixB, doFSRinDecays, doGammaRad;
      97             :   int    tauMode;
      98             :   double mSafety, tau0Max, tauMax, rMax, xyMax, zMax, xBdMix, xBsMix,
      99             :          sigmaSoft, multIncrease, multIncreaseWeak, multRefMass, multGoffset,
     100             :          colRearrange, stopMass, sRhoDal, wRhoDal;
     101             : 
     102             :   // Multiplicity. Decay products positions and masses.
     103             :   bool   hasPartons, keepPartons;
     104             :   int    idDec, meMode, mult;
     105             :   double scale;
     106             :   vector<int>    iProd, idProd, cols, acols, idPartons;
     107             :   vector<double> mProd, mInv, rndmOrd;
     108             :   vector<Vec4>   pInv, pProd;
     109             :   vector<FlavContainer> flavEnds;
     110             : 
     111             :   // Pointer to particle data for currently decaying particle
     112             :   ParticleDataEntry* decDataPtr;
     113             : 
     114             :   // Tau particle decayer.
     115             :   TauDecays tauDecayer;
     116             : 
     117             :   // Check whether a decay is allowed, given the upcoming decay vertex.
     118             :   bool checkVertex(Particle& decayer);
     119             : 
     120             :   // Check for oscillations B0 <-> B0bar or B_s0 <-> B_s0bar.
     121             :   bool oscillateB(Particle& decayer);
     122             : 
     123             :   // Do a one-body decay.
     124             :   bool oneBody(Event& event);
     125             : 
     126             :   // Do a two-body decay;
     127             :   bool twoBody(Event& event);
     128             : 
     129             :   // Do a three-body decay;
     130             :   bool threeBody(Event& event);
     131             : 
     132             :   // Do a multibody decay using the M-generator algorithm.
     133             :   bool mGenerator(Event& event);
     134             : 
     135             :   // Select mass of lepton pair in a Dalitz decay.
     136             :   bool dalitzMass();
     137             : 
     138             :   // Do kinematics of gamma* -> l- l+ in Dalitz decay.
     139             :   bool dalitzKinematics(Event& event);
     140             : 
     141             :   // Translate a partonic content into a set of actual hadrons.
     142             :   bool pickHadrons();
     143             : 
     144             :   // Set colour flow and scale in a decay explicitly to partons.
     145             :   bool setColours(Event& event);
     146             : 
     147             : };
     148             : 
     149             : //==========================================================================
     150             : 
     151             : } // end namespace Pythia8
     152             : 
     153             : #endif // Pythia8_ParticleDecays_H

Generated by: LCOV version 1.11