X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=EVGEN%2FAliGenParam.cxx;h=2a914c8ac600dc1e8a19eb650d5ff3f265a9c801;hb=db742b8ecc95af12932b3a44bea2fa5c0d1c7664;hp=9c897e97b06e13a0ddd26f50abf9b11823475a43;hpb=7ca4655fc9c861260bd2b42a5de05a36f9574d60;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenParam.cxx b/EVGEN/AliGenParam.cxx index 9c897e97b06..2a914c8ac60 100644 --- a/EVGEN/AliGenParam.cxx +++ b/EVGEN/AliGenParam.cxx @@ -38,6 +38,7 @@ #include "AliGenParam.h" #include "AliMC.h" #include "AliRun.h" +#include "AliGenEventHeader.h" ClassImp(AliGenParam) @@ -68,7 +69,7 @@ ClassImp(AliGenParam) // Default constructor } //____________________________________________________________ -AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library, Int_t param, char* tname) +AliGenParam::AliGenParam(Int_t npart, AliGenLib * Library, Int_t param, const char* tname) :AliGenMC(npart), fPtParaFunc(Library->GetPt(param, tname)), fYParaFunc (Library->GetY (param, tname)), @@ -130,8 +131,8 @@ AliGenParam::AliGenParam(Int_t npart, Int_t param, const char* tname, const char //____________________________________________________________ AliGenParam::AliGenParam(Int_t npart, Int_t param, - Double_t (*PtPara) (Double_t*, Double_t*), - Double_t (*YPara ) (Double_t* ,Double_t*), + Double_t (*PtPara) (const Double_t*, const Double_t*), + Double_t (*YPara ) (const Double_t* ,const Double_t*), Int_t (*IpPara) (TRandom *)) :AliGenMC(npart), @@ -283,6 +284,8 @@ void AliGenParam::Generate() Int_t ipa=0; // Generating fNpart particles + fNprimaries = 0; + while (ipafThetaMax) continue; @@ -345,6 +348,8 @@ void AliGenParam::Generate() // if fForceDecay == none Primary particle is tracked by GEANT // (In the latest, make sure that GEANT actually does all the decays you want) // + Bool_t decayed = kFALSE; + if (fForceDecay != kNoDecay) { // Using lujet to decay particle @@ -371,6 +376,7 @@ void AliGenParam::Generate() } if (np >1) { + decayed = kTRUE; TParticle* iparticle = (TParticle *) particles->At(0); Int_t ipF, ipL; for (i = 1; iPx(); @@ -434,17 +440,22 @@ void AliGenParam::Generate() ipa++; // // Parent - PushTrack(0, -1, iPart, p, origin0, polar, 0, kPPrimary, nt, wgtp); + + + PushTrack(0, -1, iPart, p, origin0, polar, 0, kPPrimary, nt, wgtp, ((decayed)? 11 : 1)); pParent[0] = nt; KeepTrack(nt); + fNprimaries++; + // // Decay Products // for (i = 1; i < np; i++) { if (pSelected[i]) { TParticle* iparticle = (TParticle *) particles->At(i); - Int_t kf = iparticle->GetPdgCode(); - Int_t ipa = iparticle->GetFirstMother()-1; + Int_t kf = iparticle->GetPdgCode(); + Int_t ksc = iparticle->GetStatusCode(); + Int_t jpa = iparticle->GetFirstMother()-1; och[0] = origin0[0]+iparticle->Vx()/10; och[1] = origin0[1]+iparticle->Vy()/10; @@ -453,17 +464,18 @@ void AliGenParam::Generate() pc[1] = iparticle->Py(); pc[2] = iparticle->Pz(); - if (ipa > -1) { - iparent = pParent[ipa]; + if (jpa > -1) { + iparent = pParent[jpa]; } else { iparent = -1; } - PushTrack(fTrackIt*trackIt[i], iparent, kf, + PushTrack(fTrackIt * trackIt[i], iparent, kf, pc, och, polar, - 0, kPDecay, nt, wgtch); + 0, kPDecay, nt, wgtch, ksc); pParent[i] = nt; KeepTrack(nt); + fNprimaries++; } // Selected } // Particle loop } // Decays by Lujet @@ -476,13 +488,20 @@ void AliGenParam::Generate() else // nodecay option, so parent will be tracked by GEANT (pions, kaons, eta, omegas, baryons) { gAlice->GetMCApp()-> - PushTrack(fTrackIt,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp); + PushTrack(fTrackIt,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp, 1); ipa++; + fNprimaries++; } break; } // while } // event loop + SetHighWaterMark(nt); + + AliGenEventHeader* header = new AliGenEventHeader("PARAM"); + header->SetPrimaryVertex(fVertex); + header->SetNProduced(fNprimaries); + AddHeader(header); } //____________________________________________________________________________________ Float_t AliGenParam::GetRelativeArea(Float_t ptMin, Float_t ptMax, Float_t yMin, Float_t yMax, Float_t phiMin, Float_t phiMax)