X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PYTHIA6%2FAliGenPythiaPlus.cxx;h=5579ebd84f138816b35bc03238936a36beacb28e;hb=3e0577a21c5c3c91448fb6bb1808e9d468041113;hp=6ac8faa176ec8f03b727ede4c8523304ef0d3967;hpb=e7c989e4b7fb4940e1b7175670324ca85b25f6fc;p=u%2Fmrichter%2FAliRoot.git diff --git a/PYTHIA6/AliGenPythiaPlus.cxx b/PYTHIA6/AliGenPythiaPlus.cxx index 6ac8faa176e..5579ebd84f1 100644 --- a/PYTHIA6/AliGenPythiaPlus.cxx +++ b/PYTHIA6/AliGenPythiaPlus.cxx @@ -375,6 +375,9 @@ void AliGenPythiaPlus::Init() fParentSelect[1] = 421; fParentSelect[2] = 431; fParentSelect[3] = 4122; + fParentSelect[4] = 4232; + fParentSelect[5] = 4132; + fParentSelect[6] = 4332; fFlavorSelect = 4; break; case kPyD0PbPbMNR: @@ -425,6 +428,7 @@ void AliGenPythiaPlus::Init() break; case kPyMbDefault: case kPyMb: + case kPyMbWithDirectPhoton: case kPyMbNonDiffr: case kPyMbMSEL1: case kPyJets: @@ -580,6 +584,7 @@ void AliGenPythiaPlus::Generate() Int_t nTkbles = 0; // Trackable particles if (fProcess != kPyMbDefault && fProcess != kPyMb && + fProcess != kPyMbWithDirectPhoton && fProcess != kPyJets && fProcess != kPyDirectGamma && fProcess != kPyMbNonDiffr && @@ -905,23 +910,45 @@ Int_t AliGenPythiaPlus::GenerateMB() // 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; + TParticle *partCheck; + TParticle *mother; Bool_t theQ=kFALSE,theQbar=kFALSE,inYcut=kFALSE; - Float_t yQ; - Int_t pdgQ; + Bool_t theChild=kFALSE; + Float_t y; + Int_t pdg,mpdg,mpdgUpperFamily; for(i=0; iGetPdgCode(); - 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 && yQGetPdgCode(); + 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 && yGetFirstMother() - 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; + } + } + } } - if (!theQ || !theQbar || !inYcut) { + if (!theQ || !theQbar || !inYcut) { // one of the c/b conditions not satisfied delete[] pParent; return 0; } + if (fCutOnChild && !theChild) { // one of the child conditions not satisfied + delete[] pParent; + return 0; + } + } //Introducing child cuts in case kPyW, kPyZ, kPyMb, and kPyMbNonDiff @@ -929,6 +956,7 @@ Int_t AliGenPythiaPlus::GenerateMB() fProcess == kPyZ || fProcess == kPyMbDefault || fProcess == kPyMb || + fProcess == kPyMbWithDirectPhoton || fProcess == kPyMbNonDiffr) && (fCutOnChild == 1) ) { if ( !CheckKinematicsOnChild() ) {