+
+
+//____________________________________________________________________________________
+void AliGenCorrHF::LoadTracks(Int_t iquark, Float_t *pq,
+ Int_t iPart, Float_t *p,
+ Int_t np, TClonesArray *particles,
+ Float_t *origin0, Float_t *polar,
+ Float_t wgtp, Float_t wgtch,
+ Int_t &nt, Int_t ncsel, Int_t *pSelected,
+ Int_t *trackIt){
+ Int_t i;
+ Int_t ntq=-1;
+ Int_t* pParent = new Int_t[np];
+ Float_t pc[3], och[3];
+ Int_t iparent;
+
+ for(i=0;i<np;i++) pParent[i]=-1;
+
+ if ((fCutOnChild && ncsel >0) || !fCutOnChild){
+ // Parents
+ // quark
+ PushTrack(0, -1, iquark, pq, origin0, polar, 0, kPPrimary, nt, wgtp);
+ KeepTrack(nt);
+ ntq = nt;
+ // hadron
+ PushTrack(0, ntq, iPart, p, origin0, polar, 0, kPDecay, nt, wgtp);
+ 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 jpa = iparticle->GetFirstMother()-1;
+ Int_t ksc = iparticle->GetStatusCode();
+ // RS: note, the conversion mm->cm is done now in the decayer. The time is ignored here!
+ och[0] = origin0[0]+iparticle->Vx();
+ och[1] = origin0[1]+iparticle->Vy();
+ och[2] = origin0[2]+iparticle->Vz();
+ 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
+ }
+ if (pParent) delete[] pParent;
+
+ return;
+}