From 1058d9df13456512344aae22e9b810e032811eab Mon Sep 17 00:00:00 2001 From: morsch Date: Wed, 18 Feb 2009 15:05:10 +0000 Subject: [PATCH] Load stack of particles from a TObjArray (Y. Schutz) --- PYTHIA6/AliGenPythia.cxx | 140 +++++++++++++++++++++++++++------------ PYTHIA6/AliGenPythia.h | 4 +- 2 files changed, 100 insertions(+), 44 deletions(-) diff --git a/PYTHIA6/AliGenPythia.cxx b/PYTHIA6/AliGenPythia.cxx index b68ab23cb15..83cbdd02893 100644 --- a/PYTHIA6/AliGenPythia.cxx +++ b/PYTHIA6/AliGenPythia.cxx @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include "AliConst.h" @@ -1292,56 +1293,109 @@ Bool_t AliGenPythia::CheckKinematicsOnChild(){ void AliGenPythia::LoadEvent(AliStack* stack, Int_t flag, Int_t reHadr) { -// -// Load event into Pythia Common Block -// - - Int_t npart = stack -> GetNprimary(); - Int_t n0 = 0; + // + // Load event into Pythia Common Block + // + + Int_t npart = stack -> GetNprimary(); + Int_t n0 = 0; + + if (!flag) { + (fPythia->GetPyjets())->N = npart; + } else { + n0 = (fPythia->GetPyjets())->N; + (fPythia->GetPyjets())->N = n0 + npart; + } + + + for (Int_t part = 0; part < npart; part++) { + TParticle *mPart = stack->Particle(part); - if (!flag) { - (fPythia->GetPyjets())->N = npart; - } else { - n0 = (fPythia->GetPyjets())->N; - (fPythia->GetPyjets())->N = n0 + npart; + Int_t kf = mPart->GetPdgCode(); + Int_t ks = mPart->GetStatusCode(); + Int_t idf = mPart->GetFirstDaughter(); + Int_t idl = mPart->GetLastDaughter(); + + if (reHadr) { + if (ks == 11 || ks == 12) { + ks -= 10; + idf = -1; + idl = -1; + } } + Float_t px = mPart->Px(); + Float_t py = mPart->Py(); + Float_t pz = mPart->Pz(); + Float_t e = mPart->Energy(); + Float_t m = mPart->GetCalcMass(); - for (Int_t part = 0; part < npart; part++) { - TParticle *mPart = stack->Particle(part); - - Int_t kf = mPart->GetPdgCode(); - Int_t ks = mPart->GetStatusCode(); - Int_t idf = mPart->GetFirstDaughter(); - Int_t idl = mPart->GetLastDaughter(); - - if (reHadr) { + + (fPythia->GetPyjets())->P[0][part+n0] = px; + (fPythia->GetPyjets())->P[1][part+n0] = py; + (fPythia->GetPyjets())->P[2][part+n0] = pz; + (fPythia->GetPyjets())->P[3][part+n0] = e; + (fPythia->GetPyjets())->P[4][part+n0] = m; + + (fPythia->GetPyjets())->K[1][part+n0] = kf; + (fPythia->GetPyjets())->K[0][part+n0] = ks; + (fPythia->GetPyjets())->K[3][part+n0] = idf + 1; + (fPythia->GetPyjets())->K[4][part+n0] = idl + 1; + (fPythia->GetPyjets())->K[2][part+n0] = mPart->GetFirstMother() + 1; + } +} + +void AliGenPythia::LoadEvent(TObjArray* stack, Int_t flag, Int_t reHadr) +{ + // + // Load event into Pythia Common Block + // + + Int_t npart = stack -> GetEntries(); + Int_t n0 = 0; + + if (!flag) { + (fPythia->GetPyjets())->N = npart; + } else { + n0 = (fPythia->GetPyjets())->N; + (fPythia->GetPyjets())->N = n0 + npart; + } + + + for (Int_t part = 0; part < npart; part++) { + TParticle *mPart = dynamic_cast(stack->At(part)); + Int_t kf = mPart->GetPdgCode(); + Int_t ks = mPart->GetStatusCode(); + Int_t idf = mPart->GetFirstDaughter(); + Int_t idl = mPart->GetLastDaughter(); + + if (reHadr) { if (ks == 11 || ks == 12) { - ks -= 10; - idf = -1; - idl = -1; + ks -= 10; + idf = -1; + idl = -1; } - } - - Float_t px = mPart->Px(); - Float_t py = mPart->Py(); - Float_t pz = mPart->Pz(); - Float_t e = mPart->Energy(); - Float_t m = mPart->GetCalcMass(); - - - (fPythia->GetPyjets())->P[0][part+n0] = px; - (fPythia->GetPyjets())->P[1][part+n0] = py; - (fPythia->GetPyjets())->P[2][part+n0] = pz; - (fPythia->GetPyjets())->P[3][part+n0] = e; - (fPythia->GetPyjets())->P[4][part+n0] = m; - - (fPythia->GetPyjets())->K[1][part+n0] = kf; - (fPythia->GetPyjets())->K[0][part+n0] = ks; - (fPythia->GetPyjets())->K[3][part+n0] = idf + 1; - (fPythia->GetPyjets())->K[4][part+n0] = idl + 1; - (fPythia->GetPyjets())->K[2][part+n0] = mPart->GetFirstMother() + 1; } + + Float_t px = mPart->Px(); + Float_t py = mPart->Py(); + Float_t pz = mPart->Pz(); + Float_t e = mPart->Energy(); + Float_t m = mPart->GetCalcMass(); + + + (fPythia->GetPyjets())->P[0][part+n0] = px; + (fPythia->GetPyjets())->P[1][part+n0] = py; + (fPythia->GetPyjets())->P[2][part+n0] = pz; + (fPythia->GetPyjets())->P[3][part+n0] = e; + (fPythia->GetPyjets())->P[4][part+n0] = m; + + (fPythia->GetPyjets())->K[1][part+n0] = kf; + (fPythia->GetPyjets())->K[0][part+n0] = ks; + (fPythia->GetPyjets())->K[3][part+n0] = idf + 1; + (fPythia->GetPyjets())->K[4][part+n0] = idl + 1; + (fPythia->GetPyjets())->K[2][part+n0] = mPart->GetFirstMother() + 1; + } } diff --git a/PYTHIA6/AliGenPythia.h b/PYTHIA6/AliGenPythia.h index 8dde2b1d3f2..f489fee2478 100644 --- a/PYTHIA6/AliGenPythia.h +++ b/PYTHIA6/AliGenPythia.h @@ -25,6 +25,7 @@ class AliGenPythiaEventHeader; class AliGenEventHeader; class AliStack; class AliRunLoader; +class TObjArray; class AliGenPythia : public AliGenMC { @@ -153,7 +154,8 @@ class AliGenPythia : public AliGenMC Float_t thresh = 0., Float_t etseed = 4., Float_t minet = 10., Float_t r = 1.); - void LoadEvent(AliStack* stack, Int_t flag = 0, Int_t reHadr = 0); + void LoadEvent(AliStack* stack, Int_t flag = 0, Int_t reHadr = 0); + void LoadEvent(TObjArray* stack, Int_t flag = 0, Int_t reHadr = 0); // Getters virtual Process_t GetProcess() const {return fProcess;} virtual StrucFunc_t GetStrucFunc() const {return fStrucFunc;} -- 2.39.3