+
+ if (fTriggerParticle) {
+ Bool_t triggered = kFALSE;
+ for (i = 0; i < np; i++) {
+ TParticle * iparticle = (TParticle *) fParticles->At(i);
+ kf = CheckPDGCode(iparticle->GetPdgCode());
+ if (kf != fTriggerParticle) continue;
+ if (iparticle->Pt() == 0.) continue;
+ if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+ triggered = kTRUE;
+ break;
+ }
+ if (!triggered) return 0;
+ }
+
+
+ // Check if there is a ccbar or bbbar pair with at least one of the two
+ // in fYMin < y < fYMax
+ if (fProcess == kPyCharmppMNRwmi || fProcess == kPyBeautyppMNRwmi) {
+ TParticle *hvq;
+ Bool_t theQ=kFALSE,theQbar=kFALSE,inYcut=kFALSE;
+ Float_t yQ;
+ Int_t pdgQ;
+ for(i=0; i<np; i++) {
+ 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;
+ }
+ if (!theQ || !theQbar || !inYcut) {
+ if (pParent) delete[] pParent;
+ return 0;
+ }
+ }
+
+ //Introducing child cuts in case kPyW, kPyZ, kPyMb, and kPyMbNonDiff
+ if ( (fProcess == kPyW || fProcess == kPyZ || fProcess == kPyMb || fProcess == kPyMbNonDiffr)
+ && (fCutOnChild == 1) ) {
+ if ( !CheckKinematicsOnChild() ) {
+ if (pParent) delete[] pParent;
+ return 0;
+ }
+ }
+
+