library: libPhysics #include "TGenPhaseSpace.h"

# TGenPhaseSpace

class description - source file - inheritance tree (.pdf)

## class TGenPhaseSpace : public TObject

| Inheritance Chart:
`TObject`
| <- | `TGenPhaseSpace` |

        private:

          Double_t pdk(Double_t a, Double_t b, Double_t c)

        public:

                          TGenPhaseSpace()
                          TGenPhaseSpace(const TGenPhaseSpace& gen)
                  virtual ~TGenPhaseSpace()
           static TClass* Class()
                 Double_t Generate()
          TLorentzVector* GetDecay(Int_t n)
                    Int_t GetNt() const
                 Double_t GetWtMax() const
          virtual TClass* IsA() const
          TGenPhaseSpace& operator=(const TGenPhaseSpace&)
                   Bool_t SetDecay(TLorentzVector& P, Int_t nt, Double_t* mass, Option_t* opt = "")
             virtual void ShowMembers(TMemberInspector& insp, char* parent)
             virtual void Streamer(TBuffer& b)
                     void StreamerNVirtual(TBuffer& b)

### Data Members

        private:

                   Int_t fNt          number of decay particles
                Double_t fMass[18]    masses of particles
                Double_t fBeta[3]     betas of decaying particle
                Double_t fTeCmTm      total energy in the C.M. minus the total mass
                Double_t fWtMax       maximum weigth
          TLorentzVector fDecPro[18]  kinematics of the generated particles

## Class Description

      Utility class to generate n-body event,
      with constant cross-section (default)
      or with Fermi energy dependence (opt="Fermi").
      The event is generated in the center-of-mass frame,
      but the decay products are finally boosted
      using the betas of the original particle.

      The code is based on the GENBOD function (W515 from CERNLIB)
      using the Raubold and Lynch method
          F. James, Monte Carlo Phase Space, CERN 68-15 (1968)

     see example of use in $ROOTSYS/tutorials/PhaseSpace.C

Double_t pdk(Double_t a, Double_t b, Double_t c)

TGenPhaseSpace(const TGenPhaseSpace &gen) : TObject(gen)

Double_t Generate()

      Generate a random final state.
      The function returns the weigth of the current event.
      The TLorentzVector of each decay product can be get using GetDecay(n).
      The maximum weigth can be get using GetWtMax().

TLorentzVector* GetDecay(Int_t n)

Bool_t SetDecay(TLorentzVector &P, Int_t nt, Double_t *mass, Option_t *opt)

     input:
     TLorentzVector &P:    decay particle
     Int_t nt:             number of decay products
     Double_t *mass:       array of decay product masses
     Option_t *opt:        default -> constant cross section
                           "Fermi" -> Fermi energy dependece
     return value:
     kTRUE:      the decay is permitted by kinematics
     kFALSE:     the decay is forbidden by kinematics

### Inline Functions

                       void ~TGenPhaseSpace()
             TGenPhaseSpace TGenPhaseSpace(const TGenPhaseSpace& gen)
                      Int_t GetNt() const
                   Double_t GetWtMax() const
                    TClass* Class()
                    TClass* IsA() const
                       void ShowMembers(TMemberInspector& insp, char* parent)
                       void Streamer(TBuffer& b)
                       void StreamerNVirtual(TBuffer& b)
            TGenPhaseSpace& operator=(const TGenPhaseSpace&)

Author: Rene Brun, Valerio Filippini 06/09/2000
Last update: root/physics:$Name: $:$Id: TGenPhaseSpace.cxx,v 1.7 2004/09/01 11:09:48 brun Exp $