- Int_t iparent;
- if ((fCutOnChild && ncsel >0) || !fCutOnChild){
-
- nhadron++;
-//
-// Parents and Decay Products
- if (ipair == 0) {
- np1 = np;
- wgtch1 = wgtch;
- p1[0] = p[0]; p1[1] = p[1]; p1[2] = p[2];
- } else {
- ipap++;
- PushTrack(0, -1, ihadron[0], p1, origin0, polar, 0,
- kPPrimary, nt, wgtp);
- KeepTrack(nt);
- for (i = 1; i < np1; i++) {
- if (select1[i]) {
- for (j=0; j<3; j++) {
- och[j] = och1[i][j];
- pc[j] = pc1[i][j];
- }
- PushTrack(fTrackIt*trackIt1[i], iparent1[i], kf1[i], pc, och,
- polar, 0, kPDecay, nt, wgtch1);
- KeepTrack(nt);
- }
- }
- PushTrack(0, -1, iPart, p, origin0, polar, 0, kPPrimary, nt, wgtp);
- KeepTrack(nt);
- }
- pParent[0] = nt;
-//
-// Decay Products
- Int_t ntcount = 0;
- 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;
-
- 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 (ipa > -1) {
- iparent = pParent[ipa];
- } else {
- iparent = -1;
- }
-
- if (ipair == 0) {
- kf1[i] = kf;
- select1[i] = pSelected[i];
- iparent1[i] = iparent;
- trackIt1[i] = trackIt[i];
- for (j=0; j<3; j++) {
- och1[i][j] = och[j];
- pc1[i][j] = pc[j];
- }
- ntcount++;
- } else {
- PushTrack(fTrackIt*trackIt[i], iparent, kf, pc, och,
- polar, 0, kPDecay, nt, wgtch);
- KeepTrack(nt);
- }
- pParent[i] = nt + ntcount;
- } // Selected
- } // Particle loop
- } // Decays by Lujet
- particles->Clear();
- if (pParent) delete[] pParent;
- if (pSelected) delete[] pSelected;
- if (trackIt) delete[] trackIt;
- } // kinematic selection
- else // nodecay option, so parent will be tracked by GEANT
- {
- nhadron++;
- if (ipair == 0) {
- p1[0] = p[0]; p1[1] = p[1]; p1[2] = p[2];
- } else {
- ipap++;
- gAlice->GetMCApp()->
- PushTrack(fTrackIt,-1,ihadron[0],p1,origin0,polar,0,kPPrimary,nt,wgtp);
- gAlice->GetMCApp()->
- PushTrack(fTrackIt,-1,iPart,p,origin0,polar,0,kPPrimary,nt,wgtp);
- }
- }
- if (nhadron == 0) break;
- } // ipair loop
- if (nhadron != 2) continue;
+ if (jpa > -1) {
+ iparent = pParent[jpa];
+ } else {
+ iparent = -1;
+ }
+
+ PushTrack(fTrackIt*trackIt[i], iparent, kf,
+ pc, och, polar,
+ 0, kPDecay, nt, wgtch);
+ pParent[i] = nt;
+ KeepTrack(nt);
+ fNprimaries++;
+ } // Selected
+ } // Particle loop
+ } // Decays by Lujet
+ particles->Clear();
+ if (pFlag) delete[] pFlag;
+ if (pParent) delete[] pParent;
+ if (pSelected) delete[] pSelected;
+ if (trackIt) delete[] trackIt;
+ } // kinematic selection
+ 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);
+ ipa++;
+ fNprimaries++;
+ }