ROOT logo
// @(#)root/pythia6:$Id: TPythia6Decayer.cxx 20882 2007-11-19 11:31:26Z rdm $
// Author: Christian Holm Christensen   22/04/06
// Much of this code has been lifted from AliROOT.

/*************************************************************************
 * Copyright (C) 1995-2006, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// TPythia6Decayer                                                           //
//                                                                           //
// This implements the TVirtualMCDecayer interface.  The TPythia6            //
// singleton object is used to decay particles.  Note, that since this       //
// class modifies common blocks (global variables) it is defined as a        //
// singleton.                                                                //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TPythia6.h"
#include "TPythia6Decayer.h"
#include "TPDGCode.h"
#include "TLorentzVector.h"
#include "TClonesArray.h"

ClassImp(TPythia6Decayer)

TPythia6Decayer* TPythia6Decayer::fgInstance = 0;

//______________________________________________________________________________
TPythia6Decayer* TPythia6Decayer::Instance()
{
   // Get the singleton object.
   if (!fgInstance) fgInstance = new TPythia6Decayer;
   return fgInstance;
}

//______________________________________________________________________________
TPythia6Decayer::TPythia6Decayer()
   : fBraPart(501)
{
   // Constructor
   fBraPart.Reset(1);
}

//______________________________________________________________________________
void TPythia6Decayer::Init()
{
   // Initialize the decayer
   static Bool_t init = kFALSE;
   if (init) return;
   init = kTRUE;
   ForceDecay();
}

//______________________________________________________________________________
void TPythia6Decayer::Decay(Int_t idpart, TLorentzVector* p)
{
   // Decay a particle of type IDPART (PDG code) and momentum P.
   if (!p) return;
   TPythia6::Instance()->Py1ent(0, idpart, p->Energy(), p->Theta(), p->Phi());
   TPythia6::Instance()->GetPrimaries();
}

//______________________________________________________________________________
Int_t TPythia6Decayer::ImportParticles(TClonesArray *particles)
{
   // Get the decay products into the passed PARTICLES TClonesArray of
   // TParticles
   return TPythia6::Instance()->ImportParticles(particles,"All");
}

//______________________________________________________________________________
void TPythia6Decayer::SetForceDecay(Int_t type)
{
   // Force a particular decay type
   if (type > kMaxDecay) {
      Warning("SetForceDecay", "Invalid decay mode: %d", type);
      return;
   }
   fDecay = EDecayType(type);
}

//______________________________________________________________________________
void TPythia6Decayer::ForceDecay()
{
   // Force a particle decay mode
   EDecayType decay=fDecay;
   TPythia6::Instance()->SetMSTJ(21,2);
   if (decay == kNoDecayHeavy) return;

   //
   // select mode
   Int_t products[3];
   Int_t mult[3];

   switch (decay) {
   case kHardMuons:
      products[0] =     13;
      products[1] =    443;
      products[2] = 100443;
      mult[0] = 1;
      mult[1] = 1;
      mult[2] = 1;
      ForceParticleDecay(  511, products, mult, 3);
      ForceParticleDecay(  521, products, mult, 3);
      ForceParticleDecay(  531, products, mult, 3);
      ForceParticleDecay( 5122, products, mult, 3);
      ForceParticleDecay( 5132, products, mult, 3);
      ForceParticleDecay( 5232, products, mult, 3);
      ForceParticleDecay( 5332, products, mult, 3);
      ForceParticleDecay( 100443, 443, 1);  // Psi'  -> J/Psi X
      ForceParticleDecay(    443,  13, 2);  // J/Psi -> mu+ mu-

      ForceParticleDecay(  411,13,1); // D+/-
      ForceParticleDecay(  421,13,1); // D0
      ForceParticleDecay(  431,13,1); // D_s
      ForceParticleDecay( 4122,13,1); // Lambda_c
      ForceParticleDecay( 4132,13,1); // Xsi_c
      ForceParticleDecay( 4232,13,1); // Sigma_c
      ForceParticleDecay( 4332,13,1); // Omega_c
      break;
   case kSemiMuonic:
      ForceParticleDecay(  411,13,1); // D+/-
      ForceParticleDecay(  421,13,1); // D0
      ForceParticleDecay(  431,13,1); // D_s
      ForceParticleDecay( 4122,13,1); // Lambda_c
      ForceParticleDecay( 4132,13,1); // Xsi_c
      ForceParticleDecay( 4232,13,1); // Sigma_c
      ForceParticleDecay( 4332,13,1); // Omega_c
      ForceParticleDecay(  511,13,1); // B0
      ForceParticleDecay(  521,13,1); // B+/-
      ForceParticleDecay(  531,13,1); // B_s
      ForceParticleDecay( 5122,13,1); // Lambda_b
      ForceParticleDecay( 5132,13,1); // Xsi_b
      ForceParticleDecay( 5232,13,1); // Sigma_b
      ForceParticleDecay( 5332,13,1); // Omega_b
      break;
   case kDiMuon:
      ForceParticleDecay(  113,13,2); // rho
      ForceParticleDecay(  221,13,2); // eta
      ForceParticleDecay(  223,13,2); // omega
      ForceParticleDecay(  333,13,2); // phi
      ForceParticleDecay(  443,13,2); // J/Psi
      ForceParticleDecay(100443,13,2);// Psi'
      ForceParticleDecay(  553,13,2); // Upsilon
      ForceParticleDecay(100553,13,2);// Upsilon'
      ForceParticleDecay(200553,13,2);// Upsilon''
      break;
   case kSemiElectronic:
      ForceParticleDecay(  411,11,1); // D+/-
      ForceParticleDecay(  421,11,1); // D0
      ForceParticleDecay(  431,11,1); // D_s
      ForceParticleDecay( 4122,11,1); // Lambda_c
      ForceParticleDecay( 4132,11,1); // Xsi_c
      ForceParticleDecay( 4232,11,1); // Sigma_c
      ForceParticleDecay( 4332,11,1); // Omega_c
      ForceParticleDecay(  511,11,1); // B0
      ForceParticleDecay(  521,11,1); // B+/-
      ForceParticleDecay(  531,11,1); // B_s
      ForceParticleDecay( 5122,11,1); // Lambda_b
      ForceParticleDecay( 5132,11,1); // Xsi_b
      ForceParticleDecay( 5232,11,1); // Sigma_b
      ForceParticleDecay( 5332,11,1); // Omega_b
      break;
   case kDiElectron:
      ForceParticleDecay(  113,11,2); // rho
      ForceParticleDecay(  333,11,2); // phi
      ForceParticleDecay(  221,11,2); // eta
      ForceParticleDecay(  223,11,2); // omega
      ForceParticleDecay(  443,11,2); // J/Psi
      ForceParticleDecay(100443,11,2);// Psi'
      ForceParticleDecay(  553,11,2); // Upsilon
      ForceParticleDecay(100553,11,2);// Upsilon'
      ForceParticleDecay(200553,11,2);// Upsilon''
      break;
   case kBJpsiDiMuon:

      products[0] =    443;
      products[1] = 100443;
      mult[0] = 1;
      mult[1] = 1;

      ForceParticleDecay(  511, products, mult, 2); // B0   -> J/Psi (Psi') X
      ForceParticleDecay(  521, products, mult, 2); // B+/- -> J/Psi (Psi') X
      ForceParticleDecay(  531, products, mult, 2); // B_s  -> J/Psi (Psi') X
      ForceParticleDecay( 5122, products, mult, 2); // Lambda_b -> J/Psi (Psi') X
      ForceParticleDecay( 100443, 443, 1);          // Psi'  -> J/Psi X
      ForceParticleDecay(    443,13,2);             // J/Psi -> mu+ mu-
      break;
   case kBPsiPrimeDiMuon:
      ForceParticleDecay(  511,100443,1); // B0
      ForceParticleDecay(  521,100443,1); // B+/-
      ForceParticleDecay(  531,100443,1); // B_s
      ForceParticleDecay( 5122,100443,1); // Lambda_b
      ForceParticleDecay(100443,13,2);    // Psi'
      break;
   case kBJpsiDiElectron:
      ForceParticleDecay(  511,443,1); // B0
      ForceParticleDecay(  521,443,1); // B+/-
      ForceParticleDecay(  531,443,1); // B_s
      ForceParticleDecay( 5122,443,1); // Lambda_b
      ForceParticleDecay(  443,11,2);  // J/Psi
      break;
   case kBJpsi:
      ForceParticleDecay(  511,443,1); // B0
      ForceParticleDecay(  521,443,1); // B+/-
      ForceParticleDecay(  531,443,1); // B_s
      ForceParticleDecay( 5122,443,1); // Lambda_b
      break;
   case kBPsiPrimeDiElectron:
      ForceParticleDecay(  511,100443,1); // B0
      ForceParticleDecay(  521,100443,1); // B+/-
      ForceParticleDecay(  531,100443,1); // B_s
      ForceParticleDecay( 5122,100443,1); // Lambda_b
      ForceParticleDecay(100443,11,2);   // Psi'
      break;
   case kPiToMu:
      ForceParticleDecay(211,13,1); // pi->mu
      break;
   case kKaToMu:
      ForceParticleDecay(321,13,1); // K->mu
      break;
   case kWToMuon:
      ForceParticleDecay(  24, 13,1); // W -> mu
      break;
   case kWToCharm:
      ForceParticleDecay(   24, 4,1); // W -> c
      break;
   case kWToCharmToMuon:
      ForceParticleDecay(   24, 4,1); // W -> c
      ForceParticleDecay(  411,13,1); // D+/- -> mu
      ForceParticleDecay(  421,13,1); // D0  -> mu
      ForceParticleDecay(  431,13,1); // D_s  -> mu
      ForceParticleDecay( 4122,13,1); // Lambda_c
      ForceParticleDecay( 4132,13,1); // Xsi_c
      ForceParticleDecay( 4232,13,1); // Sigma_c
      ForceParticleDecay( 4332,13,1); // Omega_c
      break;
   case kZDiMuon:
      ForceParticleDecay(  23, 13,2); // Z -> mu+ mu-
      break;
   case kHadronicD:
      ForceHadronicD();
      break;
   case kPhiKK:
      ForceParticleDecay(333,321,2); // Phi->K+K-
      break;
   case kOmega:
      ForceOmega();
   case kAll:
      break;
   case kNoDecay:
      TPythia6::Instance()->SetMSTJ(21,0);
      break;
   case kNoDecayHeavy: break;
   case kMaxDecay: break;
   }
}

//______________________________________________________________________________
Float_t TPythia6Decayer::GetPartialBranchingRatio(Int_t ipart)
{
   // Get the partial branching ratio for a particle of type IPART (a
   // PDG code).
   Int_t kc = TPythia6::Instance()->Pycomp(TMath::Abs(ipart));
   // return TPythia6::Instance()->GetBRAT(kc);
   return fBraPart[kc];
}

//______________________________________________________________________________
Float_t TPythia6Decayer::GetLifetime(Int_t kf)
{
   // Get the life-time of a particle of type KF (a PDG code).
   Int_t kc=TPythia6::Instance()->Pycomp(TMath::Abs(kf));
   return TPythia6::Instance()->GetPMAS(kc,4) * 3.3333e-12;
}

//______________________________________________________________________________
void TPythia6Decayer::ReadDecayTable()
{
   // Read in particle data from an ASCII file.   The file name must
   // previously have been set using the member function
   // SetDecayTableFile.
   if (fDecayTableFile.IsNull()) {
      Warning("ReadDecayTable", "No file set");
      return;
   }
   Int_t lun = 15;
   TPythia6::Instance()->OpenFortranFile(lun,
                                         const_cast<char*>(fDecayTableFile.Data()));
   TPythia6::Instance()->Pyupda(3,lun);
   TPythia6::Instance()->CloseFortranFile(lun);
}

// ===================================================================
// BEGIN COMMENT
//
// It would be better if the particle and decay information could be
// read from the current TDatabasePDG instance.
//
// However, it seems to me that some information is missing.  In
// particular
//
//   - The broadning cut-off,
//   - Resonance width
//   - Color charge
//   - MWID (?)
//
// Further more, it's not clear to me at least, what all the
// parameters Pythia needs are.
//
// Code like the below could be used to make a temporary file that
// Pythia could then read in.   Ofcourse, one could also manipulate
// the data structures directly, but that's propably more dangerous.
//
#if 0
void PrintPDG(TParticlePDG* pdg)
{
   TParticlePDG* anti = pdg->AntiParticle();
   const char* antiName = (anti ? anti->GetName() : "");
   Int_t color = 0;
   switch (TMath::Abs(pdg->PdgCode())) {
      case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: // Quarks
      color = 1; break;
      case 21: // Gluon
      color = 2; break;
      case 1103:
      case 2101: case 2103: case 2203:
      case 3101: case 3103: case 3201: case 3203: case 3303:
      case 4101: case 4103: case 4201: case 4203: case 4301: case 4303: case 4403:
      case 5101: case 5103: case 5201: case 5203: case 5301: case 5303: case 5401:
      case 5403: case 5503:
      // Quark combinations
      color = -1; break;
      case 1000001: case 1000002: case 1000003: case 1000004: case 1000005:
      case 1000006: // super symmetric partners to quars
      color = 1; break;
      case 1000021: // ~g
      color = 2; break;
      case 2000001: case 2000002: case 2000003: case 2000004: case 2000005:
      case 2000006: // R hadrons
      color = 1; break;
      case 3000331: case 3100021: case 3200111: case 3100113: case 3200113:
      case 3300113: case 3400113:
      // Technicolor
      color = 2; break;
      case 4000001: case 4000002:
      color = 1; break;
      case 9900443: case 9900441: case 9910441: case 9900553: case 9900551:
      case 9910551:
      color = 2; break;
   }
   std::cout << std::right
             << " " << std::setw(9) << pdg->PdgCode()
             << "  " << std::left   << std::setw(16) << pdg->GetName()
             << "  " << std::setw(16) << antiName
             << std::right
             << std::setw(3) << Int_t(pdg->Charge())
             << std::setw(3) << color
             << std::setw(3) << (anti ? 1 : 0)
             << std::fixed   << std::setprecision(5)
             << std::setw(12) << pdg->Mass()
             << std::setw(12) << pdg->Width()
             << std::setw(12) << 0 // Broad
             << std::scientific
             << " " << std::setw(13) << pdg->Lifetime()
             << std::setw(3) << 0 // MWID
             << std::setw(3) << pdg->Stable()
             << std::endl;
}

void MakeDecayList()
{
   TDatabasePDG* pdgDB = TDatabasePDG::Instance();
   pdgDB->ReadPDGTable();
   const THashList*    pdgs  = pdgDB->ParticleList();
   TParticlePDG*       pdg   = 0;
   TIter               nextPDG(pdgs);
   while ((pdg = static_cast<TParticlePDG*>(nextPDG()))) {
      // std::cout << "Processing " << pdg->GetName() << std::endl;
      PrintPDG(pdg);

      TObjArray*     decays = pdg->DecayList();
      TDecayChannel* decay  = 0;
      TIter          nextDecay(decays);
      while ((decay = static_cast<TDecayChannel*>(nextDecay()))) {
        // std::cout << "Processing decay number " << decay->Number() << std::endl;
      }
   }
}
#endif
// END COMMENT
// ===================================================================

//______________________________________________________________________________
void TPythia6Decayer::WriteDecayTable()
{
   // write particle data to an ASCII file.   The file name must
   // previously have been set using the member function
   // SetDecayTableFile.
   //
   // Users can use this function to make an initial decay list file,
   // which then can be edited by hand, and re-loaded into the decayer
   // using ReadDecayTable.
   //
   // The file syntax is
   //
   //    particle_list : partcle_data
   //                  | particle_list particle_data
   //                  ;
   //    particle_data : particle_info
   //                  | particle_info '\n' decay_list
   //                  ;
   //    particle_info : See below
   //                  ;
   //    decay_list    : decay_entry
   //                  | decay_list decay_entry
   //                  ;
   //    decay_entry   : See below
   //
   // The particle_info consists of 13 fields:
   //
   //     PDG code             int
   //     Name                 string
   //     Anti-particle name   string  if there's no anti-particle,
   //                                  then this field must be the
   //                                  empty string
   //     Electic charge       int     in units of |e|/3
   //     Color charge         int     in units of quark color charges
   //     Have anti-particle   int     1 of there's an anti-particle
   //                                  to this particle, or 0
   //                                  otherwise
   //     Mass                 float   in units of GeV
   //     Resonance width      float
   //     Max broadning        float
   //     Lifetime             float
   //     MWID                 int     ??? (some sort of flag)
   //     Decay                int     1 if it decays. 0 otherwise
   //
   // The format to write these entries in are
   //
   //    " %9  %-16s  %-16s%3d%3d%3d%12.5f%12.5f%12.5f%13.gf%3d%d\n"
   //
   // The decay_entry consists of 8 fields:
   //
   //     On/Off               int     1 for on, -1 for off
   //     Matrix element type  int
   //     Branching ratio      float
   //     Product 1            int     PDG code of decay product 1
   //     Product 2            int     PDG code of decay product 2
   //     Product 3            int     PDG code of decay product 3
   //     Product 4            int     PDG code of decay product 4
   //     Product 5            int     PDG code of decay product 5
   //
   // The format for these lines are
   //
   //    "          %5d%5d%12.5f%10d%10d%10d%10d%10d\n"
   //
   if (fDecayTableFile.IsNull()) {
      Warning("ReadDecayTable", "No file set");
      return;
   }
   Int_t lun = 15;
   TPythia6::Instance()->OpenFortranFile(lun,
                                         const_cast<char*>(fDecayTableFile.Data()));
   TPythia6::Instance()->Pyupda(1,lun);
   TPythia6::Instance()->CloseFortranFile(lun);
}

//______________________________________________________________________________
Int_t TPythia6Decayer::CountProducts(Int_t channel, Int_t particle)
{
   // Count number of decay products
   Int_t np = 0;
   for (Int_t i = 1; i <= 5; i++)
      if (TMath::Abs(TPythia6::Instance()->GetKFDP(channel,i)) == particle) np++;
   return np;
}

//______________________________________________________________________________
void TPythia6Decayer::ForceHadronicD()
{
   // Force golden D decay modes
   const Int_t kNHadrons = 4;
   Int_t channel;
   Int_t hadron[kNHadrons] = {411,  421, 431, 4112};

   // for D+ -> K0* (-> K- pi+) pi+
   Int_t iKstar0     =  313;
   Int_t iKstarbar0  = -313;
   Int_t products[2] = {kKPlus, kPiMinus}, mult[2] = {1, 1};
   ForceParticleDecay(iKstar0, products, mult, 2);

   // for Ds -> Phi pi+
   Int_t iPhi = 333;
   ForceParticleDecay(iPhi,kKPlus,2); // Phi->K+K-

   Int_t decayP1[kNHadrons][3] = {
      {kKMinus, kPiPlus,    kPiPlus},
      {kKMinus, kPiPlus,    0      },
      {kKPlus , iKstarbar0, 0     },
      {-1     , -1        , -1        }
   };
   Int_t decayP2[kNHadrons][3] = {
      {iKstarbar0, kPiPlus, 0   },
      {-1        , -1     , -1  },
      {iPhi      , kPiPlus, 0  },
      {-1        , -1     , -1  }
   };

   TPythia6* pyth = TPythia6::Instance();
   for (Int_t ihadron = 0; ihadron < kNHadrons; ihadron++) {
      Int_t kc = pyth->Pycomp(hadron[ihadron]);
      pyth->SetMDCY(kc,1,1);
      Int_t ifirst = pyth->GetMDCY(kc,2);
      Int_t ilast  = ifirst + pyth->GetMDCY(kc,3)-1;

      for (channel = ifirst; channel <= ilast; channel++) {
         if ((pyth->GetKFDP(channel,1) == decayP1[ihadron][0] &&
            pyth->GetKFDP(channel,2) == decayP1[ihadron][1] &&
            pyth->GetKFDP(channel,3) == decayP1[ihadron][2] &&
            pyth->GetKFDP(channel,4) == 0) ||
           (pyth->GetKFDP(channel,1) == decayP2[ihadron][0] &&
            pyth->GetKFDP(channel,2) == decayP2[ihadron][1] &&
            pyth->GetKFDP(channel,3) == decayP2[ihadron][2] &&
            pyth->GetKFDP(channel,4) == 0)) {
            pyth->SetMDME(channel,1,1);
         } else {
            pyth->SetMDME(channel,1,0);
            fBraPart[kc] -= pyth->GetBRAT(channel);
         } // selected channel ?
      } // decay channels
   } // hadrons
}

//______________________________________________________________________________
void TPythia6Decayer::ForceParticleDecay(Int_t particle, Int_t product, Int_t mult)
{
   //
   //  Force decay of particle into products with multiplicity mult
   TPythia6* pyth = TPythia6::Instance();

   Int_t kc =  pyth->Pycomp(particle);
   pyth->SetMDCY(kc,1,1);

   Int_t ifirst = pyth->GetMDCY(kc,2);
   Int_t ilast  = ifirst + pyth->GetMDCY(kc,3)-1;
   fBraPart[kc] = 1;

   //
   //  Loop over decay channels
   for (Int_t channel= ifirst; channel <= ilast; channel++) {
      if (CountProducts(channel,product) >= mult) {
         pyth->SetMDME(channel,1,1);
      } else {
         pyth->SetMDME(channel,1,0);
         fBraPart[kc]-=pyth->GetBRAT(channel);
      }
   }
}

//______________________________________________________________________________
void TPythia6Decayer::ForceParticleDecay(Int_t particle, Int_t* products,
                                         Int_t* mult, Int_t npart)
{
   //
   //  Force decay of particle into products with multiplicity mult
   TPythia6* pyth = TPythia6::Instance();

   Int_t kc     = pyth->Pycomp(particle);
   pyth->SetMDCY(kc,1,1);
   Int_t ifirst = pyth->GetMDCY(kc,2);
   Int_t ilast  = ifirst+pyth->GetMDCY(kc,3)-1;
   fBraPart[kc] = 1;
   //
   //  Loop over decay channels
   for (Int_t channel = ifirst; channel <= ilast; channel++) {
      Int_t nprod = 0;
      for (Int_t i = 0; i < npart; i++)
         nprod += (CountProducts(channel, products[i]) >= mult[i]);
      if (nprod)
         pyth->SetMDME(channel,1,1);
      else {
         pyth->SetMDME(channel,1,0);
         fBraPart[kc] -= pyth->GetBRAT(channel);
      }
   }
}

//______________________________________________________________________________
void TPythia6Decayer::ForceOmega()
{
   // Force Omega -> Lambda K- Decay
   TPythia6* pyth = TPythia6::Instance();

   Int_t kc     = pyth->Pycomp(3334);
   pyth->SetMDCY(kc,1,1);
   Int_t ifirst = pyth->GetMDCY(kc,2);
   Int_t ilast  = ifirst + pyth->GetMDCY(kc,3)-1;
   for (Int_t channel = ifirst; channel <= ilast; channel++) {
      if (pyth->GetKFDP(channel,1) == kLambda0 &&
         pyth->GetKFDP(channel,2) == kKMinus  &&
         pyth->GetKFDP(channel,3) == 0)
         pyth->SetMDME(channel,1,1);
      else
         pyth->SetMDME(channel,1,0);
      // selected channel ?
   } // decay channels
}
 TPythia6Decayer.cxx:1
 TPythia6Decayer.cxx:2
 TPythia6Decayer.cxx:3
 TPythia6Decayer.cxx:4
 TPythia6Decayer.cxx:5
 TPythia6Decayer.cxx:6
 TPythia6Decayer.cxx:7
 TPythia6Decayer.cxx:8
 TPythia6Decayer.cxx:9
 TPythia6Decayer.cxx:10
 TPythia6Decayer.cxx:11
 TPythia6Decayer.cxx:12
 TPythia6Decayer.cxx:13
 TPythia6Decayer.cxx:14
 TPythia6Decayer.cxx:15
 TPythia6Decayer.cxx:16
 TPythia6Decayer.cxx:17
 TPythia6Decayer.cxx:18
 TPythia6Decayer.cxx:19
 TPythia6Decayer.cxx:20
 TPythia6Decayer.cxx:21
 TPythia6Decayer.cxx:22
 TPythia6Decayer.cxx:23
 TPythia6Decayer.cxx:24
 TPythia6Decayer.cxx:25
 TPythia6Decayer.cxx:26
 TPythia6Decayer.cxx:27
 TPythia6Decayer.cxx:28
 TPythia6Decayer.cxx:29
 TPythia6Decayer.cxx:30
 TPythia6Decayer.cxx:31
 TPythia6Decayer.cxx:32
 TPythia6Decayer.cxx:33
 TPythia6Decayer.cxx:34
 TPythia6Decayer.cxx:35
 TPythia6Decayer.cxx:36
 TPythia6Decayer.cxx:37
 TPythia6Decayer.cxx:38
 TPythia6Decayer.cxx:39
 TPythia6Decayer.cxx:40
 TPythia6Decayer.cxx:41
 TPythia6Decayer.cxx:42
 TPythia6Decayer.cxx:43
 TPythia6Decayer.cxx:44
 TPythia6Decayer.cxx:45
 TPythia6Decayer.cxx:46
 TPythia6Decayer.cxx:47
 TPythia6Decayer.cxx:48
 TPythia6Decayer.cxx:49
 TPythia6Decayer.cxx:50
 TPythia6Decayer.cxx:51
 TPythia6Decayer.cxx:52
 TPythia6Decayer.cxx:53
 TPythia6Decayer.cxx:54
 TPythia6Decayer.cxx:55
 TPythia6Decayer.cxx:56
 TPythia6Decayer.cxx:57
 TPythia6Decayer.cxx:58
 TPythia6Decayer.cxx:59
 TPythia6Decayer.cxx:60
 TPythia6Decayer.cxx:61
 TPythia6Decayer.cxx:62
 TPythia6Decayer.cxx:63
 TPythia6Decayer.cxx:64
 TPythia6Decayer.cxx:65
 TPythia6Decayer.cxx:66
 TPythia6Decayer.cxx:67
 TPythia6Decayer.cxx:68
 TPythia6Decayer.cxx:69
 TPythia6Decayer.cxx:70
 TPythia6Decayer.cxx:71
 TPythia6Decayer.cxx:72
 TPythia6Decayer.cxx:73
 TPythia6Decayer.cxx:74
 TPythia6Decayer.cxx:75
 TPythia6Decayer.cxx:76
 TPythia6Decayer.cxx:77
 TPythia6Decayer.cxx:78
 TPythia6Decayer.cxx:79
 TPythia6Decayer.cxx:80
 TPythia6Decayer.cxx:81
 TPythia6Decayer.cxx:82
 TPythia6Decayer.cxx:83
 TPythia6Decayer.cxx:84
 TPythia6Decayer.cxx:85
 TPythia6Decayer.cxx:86
 TPythia6Decayer.cxx:87
 TPythia6Decayer.cxx:88
 TPythia6Decayer.cxx:89
 TPythia6Decayer.cxx:90
 TPythia6Decayer.cxx:91
 TPythia6Decayer.cxx:92
 TPythia6Decayer.cxx:93
 TPythia6Decayer.cxx:94
 TPythia6Decayer.cxx:95
 TPythia6Decayer.cxx:96
 TPythia6Decayer.cxx:97
 TPythia6Decayer.cxx:98
 TPythia6Decayer.cxx:99
 TPythia6Decayer.cxx:100
 TPythia6Decayer.cxx:101
 TPythia6Decayer.cxx:102
 TPythia6Decayer.cxx:103
 TPythia6Decayer.cxx:104
 TPythia6Decayer.cxx:105
 TPythia6Decayer.cxx:106
 TPythia6Decayer.cxx:107
 TPythia6Decayer.cxx:108
 TPythia6Decayer.cxx:109
 TPythia6Decayer.cxx:110
 TPythia6Decayer.cxx:111
 TPythia6Decayer.cxx:112
 TPythia6Decayer.cxx:113
 TPythia6Decayer.cxx:114
 TPythia6Decayer.cxx:115
 TPythia6Decayer.cxx:116
 TPythia6Decayer.cxx:117
 TPythia6Decayer.cxx:118
 TPythia6Decayer.cxx:119
 TPythia6Decayer.cxx:120
 TPythia6Decayer.cxx:121
 TPythia6Decayer.cxx:122
 TPythia6Decayer.cxx:123
 TPythia6Decayer.cxx:124
 TPythia6Decayer.cxx:125
 TPythia6Decayer.cxx:126
 TPythia6Decayer.cxx:127
 TPythia6Decayer.cxx:128
 TPythia6Decayer.cxx:129
 TPythia6Decayer.cxx:130
 TPythia6Decayer.cxx:131
 TPythia6Decayer.cxx:132
 TPythia6Decayer.cxx:133
 TPythia6Decayer.cxx:134
 TPythia6Decayer.cxx:135
 TPythia6Decayer.cxx:136
 TPythia6Decayer.cxx:137
 TPythia6Decayer.cxx:138
 TPythia6Decayer.cxx:139
 TPythia6Decayer.cxx:140
 TPythia6Decayer.cxx:141
 TPythia6Decayer.cxx:142
 TPythia6Decayer.cxx:143
 TPythia6Decayer.cxx:144
 TPythia6Decayer.cxx:145
 TPythia6Decayer.cxx:146
 TPythia6Decayer.cxx:147
 TPythia6Decayer.cxx:148
 TPythia6Decayer.cxx:149
 TPythia6Decayer.cxx:150
 TPythia6Decayer.cxx:151
 TPythia6Decayer.cxx:152
 TPythia6Decayer.cxx:153
 TPythia6Decayer.cxx:154
 TPythia6Decayer.cxx:155
 TPythia6Decayer.cxx:156
 TPythia6Decayer.cxx:157
 TPythia6Decayer.cxx:158
 TPythia6Decayer.cxx:159
 TPythia6Decayer.cxx:160
 TPythia6Decayer.cxx:161
 TPythia6Decayer.cxx:162
 TPythia6Decayer.cxx:163
 TPythia6Decayer.cxx:164
 TPythia6Decayer.cxx:165
 TPythia6Decayer.cxx:166
 TPythia6Decayer.cxx:167
 TPythia6Decayer.cxx:168
 TPythia6Decayer.cxx:169
 TPythia6Decayer.cxx:170
 TPythia6Decayer.cxx:171
 TPythia6Decayer.cxx:172
 TPythia6Decayer.cxx:173
 TPythia6Decayer.cxx:174
 TPythia6Decayer.cxx:175
 TPythia6Decayer.cxx:176
 TPythia6Decayer.cxx:177
 TPythia6Decayer.cxx:178
 TPythia6Decayer.cxx:179
 TPythia6Decayer.cxx:180
 TPythia6Decayer.cxx:181
 TPythia6Decayer.cxx:182
 TPythia6Decayer.cxx:183
 TPythia6Decayer.cxx:184
 TPythia6Decayer.cxx:185
 TPythia6Decayer.cxx:186
 TPythia6Decayer.cxx:187
 TPythia6Decayer.cxx:188
 TPythia6Decayer.cxx:189
 TPythia6Decayer.cxx:190
 TPythia6Decayer.cxx:191
 TPythia6Decayer.cxx:192
 TPythia6Decayer.cxx:193
 TPythia6Decayer.cxx:194
 TPythia6Decayer.cxx:195
 TPythia6Decayer.cxx:196
 TPythia6Decayer.cxx:197
 TPythia6Decayer.cxx:198
 TPythia6Decayer.cxx:199
 TPythia6Decayer.cxx:200
 TPythia6Decayer.cxx:201
 TPythia6Decayer.cxx:202
 TPythia6Decayer.cxx:203
 TPythia6Decayer.cxx:204
 TPythia6Decayer.cxx:205
 TPythia6Decayer.cxx:206
 TPythia6Decayer.cxx:207
 TPythia6Decayer.cxx:208
 TPythia6Decayer.cxx:209
 TPythia6Decayer.cxx:210
 TPythia6Decayer.cxx:211
 TPythia6Decayer.cxx:212
 TPythia6Decayer.cxx:213
 TPythia6Decayer.cxx:214
 TPythia6Decayer.cxx:215
 TPythia6Decayer.cxx:216
 TPythia6Decayer.cxx:217
 TPythia6Decayer.cxx:218
 TPythia6Decayer.cxx:219
 TPythia6Decayer.cxx:220
 TPythia6Decayer.cxx:221
 TPythia6Decayer.cxx:222
 TPythia6Decayer.cxx:223
 TPythia6Decayer.cxx:224
 TPythia6Decayer.cxx:225
 TPythia6Decayer.cxx:226
 TPythia6Decayer.cxx:227
 TPythia6Decayer.cxx:228
 TPythia6Decayer.cxx:229
 TPythia6Decayer.cxx:230
 TPythia6Decayer.cxx:231
 TPythia6Decayer.cxx:232
 TPythia6Decayer.cxx:233
 TPythia6Decayer.cxx:234
 TPythia6Decayer.cxx:235
 TPythia6Decayer.cxx:236
 TPythia6Decayer.cxx:237
 TPythia6Decayer.cxx:238
 TPythia6Decayer.cxx:239
 TPythia6Decayer.cxx:240
 TPythia6Decayer.cxx:241
 TPythia6Decayer.cxx:242
 TPythia6Decayer.cxx:243
 TPythia6Decayer.cxx:244
 TPythia6Decayer.cxx:245
 TPythia6Decayer.cxx:246
 TPythia6Decayer.cxx:247
 TPythia6Decayer.cxx:248
 TPythia6Decayer.cxx:249
 TPythia6Decayer.cxx:250
 TPythia6Decayer.cxx:251
 TPythia6Decayer.cxx:252
 TPythia6Decayer.cxx:253
 TPythia6Decayer.cxx:254
 TPythia6Decayer.cxx:255
 TPythia6Decayer.cxx:256
 TPythia6Decayer.cxx:257
 TPythia6Decayer.cxx:258
 TPythia6Decayer.cxx:259
 TPythia6Decayer.cxx:260
 TPythia6Decayer.cxx:261
 TPythia6Decayer.cxx:262
 TPythia6Decayer.cxx:263
 TPythia6Decayer.cxx:264
 TPythia6Decayer.cxx:265
 TPythia6Decayer.cxx:266
 TPythia6Decayer.cxx:267
 TPythia6Decayer.cxx:268
 TPythia6Decayer.cxx:269
 TPythia6Decayer.cxx:270
 TPythia6Decayer.cxx:271
 TPythia6Decayer.cxx:272
 TPythia6Decayer.cxx:273
 TPythia6Decayer.cxx:274
 TPythia6Decayer.cxx:275
 TPythia6Decayer.cxx:276
 TPythia6Decayer.cxx:277
 TPythia6Decayer.cxx:278
 TPythia6Decayer.cxx:279
 TPythia6Decayer.cxx:280
 TPythia6Decayer.cxx:281
 TPythia6Decayer.cxx:282
 TPythia6Decayer.cxx:283
 TPythia6Decayer.cxx:284
 TPythia6Decayer.cxx:285
 TPythia6Decayer.cxx:286
 TPythia6Decayer.cxx:287
 TPythia6Decayer.cxx:288
 TPythia6Decayer.cxx:289
 TPythia6Decayer.cxx:290
 TPythia6Decayer.cxx:291
 TPythia6Decayer.cxx:292
 TPythia6Decayer.cxx:293
 TPythia6Decayer.cxx:294
 TPythia6Decayer.cxx:295
 TPythia6Decayer.cxx:296
 TPythia6Decayer.cxx:297
 TPythia6Decayer.cxx:298
 TPythia6Decayer.cxx:299
 TPythia6Decayer.cxx:300
 TPythia6Decayer.cxx:301
 TPythia6Decayer.cxx:302
 TPythia6Decayer.cxx:303
 TPythia6Decayer.cxx:304
 TPythia6Decayer.cxx:305
 TPythia6Decayer.cxx:306
 TPythia6Decayer.cxx:307
 TPythia6Decayer.cxx:308
 TPythia6Decayer.cxx:309
 TPythia6Decayer.cxx:310
 TPythia6Decayer.cxx:311
 TPythia6Decayer.cxx:312
 TPythia6Decayer.cxx:313
 TPythia6Decayer.cxx:314
 TPythia6Decayer.cxx:315
 TPythia6Decayer.cxx:316
 TPythia6Decayer.cxx:317
 TPythia6Decayer.cxx:318
 TPythia6Decayer.cxx:319
 TPythia6Decayer.cxx:320
 TPythia6Decayer.cxx:321
 TPythia6Decayer.cxx:322
 TPythia6Decayer.cxx:323
 TPythia6Decayer.cxx:324
 TPythia6Decayer.cxx:325
 TPythia6Decayer.cxx:326
 TPythia6Decayer.cxx:327
 TPythia6Decayer.cxx:328
 TPythia6Decayer.cxx:329
 TPythia6Decayer.cxx:330
 TPythia6Decayer.cxx:331
 TPythia6Decayer.cxx:332
 TPythia6Decayer.cxx:333
 TPythia6Decayer.cxx:334
 TPythia6Decayer.cxx:335
 TPythia6Decayer.cxx:336
 TPythia6Decayer.cxx:337
 TPythia6Decayer.cxx:338
 TPythia6Decayer.cxx:339
 TPythia6Decayer.cxx:340
 TPythia6Decayer.cxx:341
 TPythia6Decayer.cxx:342
 TPythia6Decayer.cxx:343
 TPythia6Decayer.cxx:344
 TPythia6Decayer.cxx:345
 TPythia6Decayer.cxx:346
 TPythia6Decayer.cxx:347
 TPythia6Decayer.cxx:348
 TPythia6Decayer.cxx:349
 TPythia6Decayer.cxx:350
 TPythia6Decayer.cxx:351
 TPythia6Decayer.cxx:352
 TPythia6Decayer.cxx:353
 TPythia6Decayer.cxx:354
 TPythia6Decayer.cxx:355
 TPythia6Decayer.cxx:356
 TPythia6Decayer.cxx:357
 TPythia6Decayer.cxx:358
 TPythia6Decayer.cxx:359
 TPythia6Decayer.cxx:360
 TPythia6Decayer.cxx:361
 TPythia6Decayer.cxx:362
 TPythia6Decayer.cxx:363
 TPythia6Decayer.cxx:364
 TPythia6Decayer.cxx:365
 TPythia6Decayer.cxx:366
 TPythia6Decayer.cxx:367
 TPythia6Decayer.cxx:368
 TPythia6Decayer.cxx:369
 TPythia6Decayer.cxx:370
 TPythia6Decayer.cxx:371
 TPythia6Decayer.cxx:372
 TPythia6Decayer.cxx:373
 TPythia6Decayer.cxx:374
 TPythia6Decayer.cxx:375
 TPythia6Decayer.cxx:376
 TPythia6Decayer.cxx:377
 TPythia6Decayer.cxx:378
 TPythia6Decayer.cxx:379
 TPythia6Decayer.cxx:380
 TPythia6Decayer.cxx:381
 TPythia6Decayer.cxx:382
 TPythia6Decayer.cxx:383
 TPythia6Decayer.cxx:384
 TPythia6Decayer.cxx:385
 TPythia6Decayer.cxx:386
 TPythia6Decayer.cxx:387
 TPythia6Decayer.cxx:388
 TPythia6Decayer.cxx:389
 TPythia6Decayer.cxx:390
 TPythia6Decayer.cxx:391
 TPythia6Decayer.cxx:392
 TPythia6Decayer.cxx:393
 TPythia6Decayer.cxx:394
 TPythia6Decayer.cxx:395
 TPythia6Decayer.cxx:396
 TPythia6Decayer.cxx:397
 TPythia6Decayer.cxx:398
 TPythia6Decayer.cxx:399
 TPythia6Decayer.cxx:400
 TPythia6Decayer.cxx:401
 TPythia6Decayer.cxx:402
 TPythia6Decayer.cxx:403
 TPythia6Decayer.cxx:404
 TPythia6Decayer.cxx:405
 TPythia6Decayer.cxx:406
 TPythia6Decayer.cxx:407
 TPythia6Decayer.cxx:408
 TPythia6Decayer.cxx:409
 TPythia6Decayer.cxx:410
 TPythia6Decayer.cxx:411
 TPythia6Decayer.cxx:412
 TPythia6Decayer.cxx:413
 TPythia6Decayer.cxx:414
 TPythia6Decayer.cxx:415
 TPythia6Decayer.cxx:416
 TPythia6Decayer.cxx:417
 TPythia6Decayer.cxx:418
 TPythia6Decayer.cxx:419
 TPythia6Decayer.cxx:420
 TPythia6Decayer.cxx:421
 TPythia6Decayer.cxx:422
 TPythia6Decayer.cxx:423
 TPythia6Decayer.cxx:424
 TPythia6Decayer.cxx:425
 TPythia6Decayer.cxx:426
 TPythia6Decayer.cxx:427
 TPythia6Decayer.cxx:428
 TPythia6Decayer.cxx:429
 TPythia6Decayer.cxx:430
 TPythia6Decayer.cxx:431
 TPythia6Decayer.cxx:432
 TPythia6Decayer.cxx:433
 TPythia6Decayer.cxx:434
 TPythia6Decayer.cxx:435
 TPythia6Decayer.cxx:436
 TPythia6Decayer.cxx:437
 TPythia6Decayer.cxx:438
 TPythia6Decayer.cxx:439
 TPythia6Decayer.cxx:440
 TPythia6Decayer.cxx:441
 TPythia6Decayer.cxx:442
 TPythia6Decayer.cxx:443
 TPythia6Decayer.cxx:444
 TPythia6Decayer.cxx:445
 TPythia6Decayer.cxx:446
 TPythia6Decayer.cxx:447
 TPythia6Decayer.cxx:448
 TPythia6Decayer.cxx:449
 TPythia6Decayer.cxx:450
 TPythia6Decayer.cxx:451
 TPythia6Decayer.cxx:452
 TPythia6Decayer.cxx:453
 TPythia6Decayer.cxx:454
 TPythia6Decayer.cxx:455
 TPythia6Decayer.cxx:456
 TPythia6Decayer.cxx:457
 TPythia6Decayer.cxx:458
 TPythia6Decayer.cxx:459
 TPythia6Decayer.cxx:460
 TPythia6Decayer.cxx:461
 TPythia6Decayer.cxx:462
 TPythia6Decayer.cxx:463
 TPythia6Decayer.cxx:464
 TPythia6Decayer.cxx:465
 TPythia6Decayer.cxx:466
 TPythia6Decayer.cxx:467
 TPythia6Decayer.cxx:468
 TPythia6Decayer.cxx:469
 TPythia6Decayer.cxx:470
 TPythia6Decayer.cxx:471
 TPythia6Decayer.cxx:472
 TPythia6Decayer.cxx:473
 TPythia6Decayer.cxx:474
 TPythia6Decayer.cxx:475
 TPythia6Decayer.cxx:476
 TPythia6Decayer.cxx:477
 TPythia6Decayer.cxx:478
 TPythia6Decayer.cxx:479
 TPythia6Decayer.cxx:480
 TPythia6Decayer.cxx:481
 TPythia6Decayer.cxx:482
 TPythia6Decayer.cxx:483
 TPythia6Decayer.cxx:484
 TPythia6Decayer.cxx:485
 TPythia6Decayer.cxx:486
 TPythia6Decayer.cxx:487
 TPythia6Decayer.cxx:488
 TPythia6Decayer.cxx:489
 TPythia6Decayer.cxx:490
 TPythia6Decayer.cxx:491
 TPythia6Decayer.cxx:492
 TPythia6Decayer.cxx:493
 TPythia6Decayer.cxx:494
 TPythia6Decayer.cxx:495
 TPythia6Decayer.cxx:496
 TPythia6Decayer.cxx:497
 TPythia6Decayer.cxx:498
 TPythia6Decayer.cxx:499
 TPythia6Decayer.cxx:500
 TPythia6Decayer.cxx:501
 TPythia6Decayer.cxx:502
 TPythia6Decayer.cxx:503
 TPythia6Decayer.cxx:504
 TPythia6Decayer.cxx:505
 TPythia6Decayer.cxx:506
 TPythia6Decayer.cxx:507
 TPythia6Decayer.cxx:508
 TPythia6Decayer.cxx:509
 TPythia6Decayer.cxx:510
 TPythia6Decayer.cxx:511
 TPythia6Decayer.cxx:512
 TPythia6Decayer.cxx:513
 TPythia6Decayer.cxx:514
 TPythia6Decayer.cxx:515
 TPythia6Decayer.cxx:516
 TPythia6Decayer.cxx:517
 TPythia6Decayer.cxx:518
 TPythia6Decayer.cxx:519
 TPythia6Decayer.cxx:520
 TPythia6Decayer.cxx:521
 TPythia6Decayer.cxx:522
 TPythia6Decayer.cxx:523
 TPythia6Decayer.cxx:524
 TPythia6Decayer.cxx:525
 TPythia6Decayer.cxx:526
 TPythia6Decayer.cxx:527
 TPythia6Decayer.cxx:528
 TPythia6Decayer.cxx:529
 TPythia6Decayer.cxx:530
 TPythia6Decayer.cxx:531
 TPythia6Decayer.cxx:532
 TPythia6Decayer.cxx:533
 TPythia6Decayer.cxx:534
 TPythia6Decayer.cxx:535
 TPythia6Decayer.cxx:536
 TPythia6Decayer.cxx:537
 TPythia6Decayer.cxx:538
 TPythia6Decayer.cxx:539
 TPythia6Decayer.cxx:540
 TPythia6Decayer.cxx:541
 TPythia6Decayer.cxx:542
 TPythia6Decayer.cxx:543
 TPythia6Decayer.cxx:544
 TPythia6Decayer.cxx:545
 TPythia6Decayer.cxx:546
 TPythia6Decayer.cxx:547
 TPythia6Decayer.cxx:548
 TPythia6Decayer.cxx:549
 TPythia6Decayer.cxx:550
 TPythia6Decayer.cxx:551
 TPythia6Decayer.cxx:552
 TPythia6Decayer.cxx:553
 TPythia6Decayer.cxx:554
 TPythia6Decayer.cxx:555
 TPythia6Decayer.cxx:556
 TPythia6Decayer.cxx:557
 TPythia6Decayer.cxx:558
 TPythia6Decayer.cxx:559
 TPythia6Decayer.cxx:560
 TPythia6Decayer.cxx:561
 TPythia6Decayer.cxx:562
 TPythia6Decayer.cxx:563
 TPythia6Decayer.cxx:564
 TPythia6Decayer.cxx:565
 TPythia6Decayer.cxx:566
 TPythia6Decayer.cxx:567
 TPythia6Decayer.cxx:568
 TPythia6Decayer.cxx:569
 TPythia6Decayer.cxx:570
 TPythia6Decayer.cxx:571
 TPythia6Decayer.cxx:572
 TPythia6Decayer.cxx:573
 TPythia6Decayer.cxx:574
 TPythia6Decayer.cxx:575
 TPythia6Decayer.cxx:576
 TPythia6Decayer.cxx:577
 TPythia6Decayer.cxx:578
 TPythia6Decayer.cxx:579
 TPythia6Decayer.cxx:580
 TPythia6Decayer.cxx:581
 TPythia6Decayer.cxx:582
 TPythia6Decayer.cxx:583
 TPythia6Decayer.cxx:584
 TPythia6Decayer.cxx:585
 TPythia6Decayer.cxx:586
 TPythia6Decayer.cxx:587
 TPythia6Decayer.cxx:588
 TPythia6Decayer.cxx:589
 TPythia6Decayer.cxx:590
 TPythia6Decayer.cxx:591
 TPythia6Decayer.cxx:592
 TPythia6Decayer.cxx:593
 TPythia6Decayer.cxx:594
 TPythia6Decayer.cxx:595
 TPythia6Decayer.cxx:596
 TPythia6Decayer.cxx:597
 TPythia6Decayer.cxx:598
 TPythia6Decayer.cxx:599
 TPythia6Decayer.cxx:600
 TPythia6Decayer.cxx:601
 TPythia6Decayer.cxx:602
 TPythia6Decayer.cxx:603
 TPythia6Decayer.cxx:604
 TPythia6Decayer.cxx:605
 TPythia6Decayer.cxx:606
 TPythia6Decayer.cxx:607
 TPythia6Decayer.cxx:608
 TPythia6Decayer.cxx:609
 TPythia6Decayer.cxx:610
 TPythia6Decayer.cxx:611
 TPythia6Decayer.cxx:612
 TPythia6Decayer.cxx:613
 TPythia6Decayer.cxx:614