- hvq = (TParticle*)fParticles.At(i);
- pdgQ = hvq->GetPdgCode();
- if(TMath::Abs(pdgQ) != fFlavorSelect) continue;
- if(pdgQ>0) { theQ=kTRUE; } else { theQbar=kTRUE; }
- yQ = 0.5*TMath::Log((hvq->Energy()+hvq->Pz()+1.e-13)/
- (hvq->Energy()-hvq->Pz()+1.e-13));
- if(yQ>fYMin && yQ<fYMax) inYcut=kTRUE;
+ partCheck = (TParticle*)fParticles.At(i);
+ pdg = partCheck->GetPdgCode();
+ if(TMath::Abs(pdg) == fFlavorSelect) { // quark
+ if(pdg>0) { theQ=kTRUE; } else { theQbar=kTRUE; }
+ y = 0.5*TMath::Log((partCheck->Energy()+partCheck->Pz()+1.e-13)/
+ (partCheck->Energy()-partCheck->Pz()+1.e-13));
+ if(y>fYMin && y<fYMax) inYcut=kTRUE;
+ }
+
+ if(fCutOnChild && TMath::Abs(pdg) == fPdgCodeParticleforAcceptanceCut) {
+ Int_t mi = partCheck->GetFirstMother() - 1;
+ if(mi<0) continue;
+ mother = (TParticle*)fParticles.At(mi);
+ mpdg=TMath::Abs(mother->GetPdgCode());
+ mpdgUpperFamily=(mpdg>1000 ? mpdg+1000 : mpdg+100); // keep e from c from b
+ if ( ParentSelected(mpdg) ||
+ (fFlavorSelect==5 && ParentSelected(mpdgUpperFamily))) {
+ if (KinematicSelection(partCheck,1)) {
+ theChild=kTRUE;
+ }
+ }
+ }