-// parent
- gAlice->
- SetTrack(0,-1,iPart,p,origin0,polar,0,"Primary",nt,wgtp);
- iparent=nt;
-
- for (i=0; i< ncsel; i++) {
- gAlice->SetTrack(fTrackIt,iparent,kfch[i],
- &pch[i][0],och,polar,
- 0,"Decay",nt,wgtch);
- gAlice->KeepTrack(nt);
- }
+// Parent
+
+
+ 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 ksc = iparticle->GetStatusCode();
+ Int_t jpa = iparticle->GetFirstMother()-1;
+
+ och[0] = origin0[0]+iparticle->Vx()/10;
+ och[1] = origin0[1]+iparticle->Vy()/10;
+ och[2] = origin0[2]+iparticle->Vz()/10;
+ pc[0] = iparticle->Px();
+ pc[1] = iparticle->Py();
+ pc[2] = iparticle->Pz();
+
+ if (jpa > -1) {
+ iparent = pParent[jpa];
+ } else {
+ iparent = -1;
+ }
+
+ PushTrack(fTrackIt * trackIt[i], iparent, kf,
+ pc, och, polar,
+ 0, kPDecay, nt, wgtch, ksc);
+ pParent[i] = nt;
+ KeepTrack(nt);
+ fNprimaries++;
+ } // Selected
+ } // Particle loop