CMS 3D CMS Logo

Public Member Functions | Private Attributes

Pythia6Decays Class Reference

#include <Pythia6Decays.h>

List of all members.

Public Member Functions

const DaughterParticleListparticleDaughters (ParticlePropagator &particle)
 Pythia6Decays ()
 ~Pythia6Decays ()

Private Attributes

Pythia6jetspyjets
gen::Pythia6Servicepyservice
DaughterParticleList theList

Detailed Description

Definition at line 15 of file Pythia6Decays.h.


Constructor & Destructor Documentation

Pythia6Decays::Pythia6Decays ( )

Definition at line 18 of file Pythia6Decays.cc.

References pyjets, and pyservice.

{
  // Create a new Pythia6jets
  pyjets = new Pythia6jets();
  // Create a new Pythia6Service helper
  pyservice = new gen::Pythia6Service();
  // The PYTHIA decay tables will be initialized later 
}
Pythia6Decays::~Pythia6Decays ( )

Definition at line 27 of file Pythia6Decays.cc.

References pyjets, and pyservice.

                              {
  delete pyjets;
  delete pyservice;
}

Member Function Documentation

const DaughterParticleList & Pythia6Decays::particleDaughters ( ParticlePropagator particle)

Definition at line 33 of file Pythia6Decays.cc.

References i, Pythia6jets::k(), RawParticle::mass(), max(), Pythia6jets::n(), Pythia6jets::p(), RawParticle::pid(), pyjets, pyservice, PYTHIA6PYDECY, RawParticle::T(), theList, Pythia6jets::v(), RawParticle::X(), RawParticle::Y(), and RawParticle::Z().

Referenced by TrajectoryManager::updateWithDaughters().

{
  gen::Pythia6Service::InstanceWrapper guard(pyservice); // grab Py6 context

  //  Pythia6jets pyjets;
  int ip;

  pyjets->k(1,1) = 1;
  pyjets->k(1,2) = particle.pid();
  pyjets->p(1,1) = particle.Px();
  pyjets->p(1,2) = particle.Py();
  pyjets->p(1,3) = particle.Pz();
  pyjets->p(1,4) = std::max(particle.mass(),particle.e());
  pyjets->p(1,5) = particle.mass();
  pyjets->v(1,1) = particle.X();
  pyjets->v(1,2) = particle.Y();
  pyjets->v(1,3) = particle.Z();
  pyjets->v(1,4) = particle.T();
  pyjets->n() = 1;
  
  ip = 1;
  PYTHIA6PYDECY(&ip);

  // Fill the list of daughters
  theList.clear();
  if ( pyjets->n()==1 ) return theList; 

  theList.resize(pyjets->n()-1,RawParticle());

  for (int i=2;i<=pyjets->n();++i) {
    
    theList[i-2].SetXYZT(pyjets->p(i,1),pyjets->p(i,2),
                         pyjets->p(i,3),pyjets->p(i,4)); 
    theList[i-2].setVertex(pyjets->v(i,1),pyjets->v(i,2),
                           pyjets->v(i,3),pyjets->v(i,4));
    theList[i-2].setID(pyjets->k(i,2));
    theList[i-2].setMass(pyjets->p(i,5));

  }

  return theList;
  
}

Member Data Documentation

Definition at line 27 of file Pythia6Decays.h.

Referenced by particleDaughters(), Pythia6Decays(), and ~Pythia6Decays().

Definition at line 26 of file Pythia6Decays.h.

Referenced by particleDaughters(), Pythia6Decays(), and ~Pythia6Decays().

Definition at line 28 of file Pythia6Decays.h.

Referenced by particleDaughters().