CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
InitialState.cc
Go to the documentation of this file.
1 /*
2  Ludmila Malinina malinina@lav01.sinp.msu.ru, SINP MSU/Moscow and JINR/Dubna
3  Ionut Arsene i.c.arsene@fys.uio.no, Oslo University and ISS-Bucharest
4  Date : 2007/05/30
5 */
6 
7 #include "TVector3.h"
10 #include <iostream>
11 #include <fstream>
12 
13 void InitialState::Evolve(List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit) {
14  // Particle indexes are set for primaries already from InitialStateHydjet::Initialize()
15 
16  // particle list iterators
17  LPIT_t it;
18  LPIT_t e;
19 
20  // Decay loop
21  // Note that the decay products are always added at the end of list so the unstable products are
22  // decayed when the iterator reaches them (used for cascade decays)
23  for(it = secondaries.begin(), e = secondaries.end(); it != e; ++it) {
24 
25  // if the decay procedure was applied already skip ... (e.g. particles from pythia history information)
26  if(it->GetDecayed()) {
27  continue;
28  }
29 
30  // generate the decay time; if particle is stable or set to stable decayTime=0
31  double decayTime = GetDecayTime(*it, weakDecayLimit);
32  it->SetLastInterTime(it->T() + decayTime);
33  TVector3 shift(it->Mom().BoostVector());
34  shift *= decayTime;
35  it->SetDecayed();
36 
37  // if decayTime>0 then apply the decay procedure (only 2 or 3 body decays)
38  if(decayTime > 0.) {
39 
40  it->Pos(it->Pos() += TLorentzVector(shift, 0.));
41  it->T(it->T() + decayTime);
42  Decay(secondaries, *it, allocator, fDatabase);
43  }
44  // if particle is stable just continue
45  }
46 }
std::list< Particle > List_t
Definition: Particle.h:141
void Decay(List_t &output, Particle &p, ParticleAllocator &allocator, DatabasePDG *database)
virtual void Evolve(List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit)
Definition: InitialState.cc:13
double GetDecayTime(const Particle &p, double weakDecayLimit)
DatabasePDG * fDatabase
Definition: InitialState.h:16
static unsigned int const shift
std::list< Particle >::iterator LPIT_t
Definition: Particle.h:142