From 7935c2c73ac3aee3cfeca76998abaed953dbc850 Mon Sep 17 00:00:00 2001 From: morsch Date: Mon, 11 Aug 2003 13:49:59 +0000 Subject: [PATCH] Updates for B->J/Psi (psi') X decays. --- PYTHIA6/AliDecayerPythia.cxx | 59 ++++++++++++++++++++++++++++-------- PYTHIA6/AliDecayerPythia.h | 1 + 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/PYTHIA6/AliDecayerPythia.cxx b/PYTHIA6/AliDecayerPythia.cxx index 491f93a08c7..2372c6661ae 100644 --- a/PYTHIA6/AliDecayerPythia.cxx +++ b/PYTHIA6/AliDecayerPythia.cxx @@ -119,6 +119,8 @@ void AliDecayerPythia::ForceDecay() // // select mode + Int_t products[2]; + Int_t mult[2]; switch (decay) { @@ -143,10 +145,10 @@ void AliDecayerPythia::ForceDecay() ForceParticleDecay( 223,13,2); // omega ForceParticleDecay( 333,13,2); // phi ForceParticleDecay( 443,13,2); // J/Psi - ForceParticleDecay(100443,13,2); // Psi' + ForceParticleDecay(100443,13,2);// Psi' ForceParticleDecay( 553,13,2); // Upsilon - ForceParticleDecay(100553,13,2); // Upsilon' - ForceParticleDecay(200553,13,2); // Upsilon'' + ForceParticleDecay(100553,13,2);// Upsilon' + ForceParticleDecay(200553,13,2);// Upsilon'' break; case kSemiElectronic: ForceParticleDecay( 411,11,1); // D+/- @@ -169,17 +171,24 @@ void AliDecayerPythia::ForceDecay() ForceParticleDecay( 221,11,2); // eta ForceParticleDecay( 223,11,2); // omega ForceParticleDecay( 443,11,2); // J/Psi - ForceParticleDecay(100443,11,2); // Psi' + ForceParticleDecay(100443,11,2);// Psi' ForceParticleDecay( 553,11,2); // Upsilon - ForceParticleDecay(100553,11,2); // Upsilon' - ForceParticleDecay(200553,11,2); // Upsilon'' + ForceParticleDecay(100553,11,2);// Upsilon' + ForceParticleDecay(200553,11,2);// Upsilon'' break; case kBJpsiDiMuon: - ForceParticleDecay( 511,443,1); // B0 - ForceParticleDecay( 521,443,1); // B+/- - ForceParticleDecay( 531,443,1); // B_s - ForceParticleDecay( 5122,443,1); // Lambda_b - ForceParticleDecay( 443,13,2); // J/Psi + + products[0] = 443; + products[1] = 100443; + mult[0] = 1; + mult[1] = 1; + + ForceParticleDecay( 511, products, mult, 2); // B0 -> J/Psi (Psi') X + ForceParticleDecay( 521, products, mult, 2); // B+/- -> J/Psi (Psi') X + ForceParticleDecay( 531, products, mult, 2); // B_s -> J/Psi (Psi') X + ForceParticleDecay( 5122, products, mult, 2); // Lambda_b -> J/Psi (Psi') X + ForceParticleDecay( 100443, 443, 1); // Psi' -> J/Psi X + ForceParticleDecay( 443,13,2); // J/Psi -> mu+ mu- break; case kBPsiPrimeDiMuon: ForceParticleDecay( 511,30443,1); // B0 @@ -292,7 +301,7 @@ void AliDecayerPythia::ForceHadronicD() void AliDecayerPythia::ForceParticleDecay(Int_t particle, Int_t product, Int_t mult) { // -// force decay of particle into products with multiplicity mult +// Force decay of particle into products with multiplicity mult Int_t kc=fPythia->Pycomp(particle); fPythia->SetMDCY(kc,1,1); @@ -311,6 +320,32 @@ void AliDecayerPythia::ForceParticleDecay(Int_t particle, Int_t product, Int_t m } } +void AliDecayerPythia::ForceParticleDecay(Int_t particle, Int_t* products, Int_t* mult, Int_t npart) +{ +// +// Force decay of particle into products with multiplicity mult + + Int_t kc=fPythia->Pycomp(particle); + fPythia->SetMDCY(kc,1,1); + Int_t ifirst=fPythia->GetMDCY(kc,2); + Int_t ilast=ifirst+fPythia->GetMDCY(kc,3)-1; + fBraPart[kc] = 1; +// +// Loop over decay channels + for (Int_t channel = ifirst; channel <= ilast; channel++) { + Int_t nprod = 0; + for (Int_t i = 0; i < npart; i++) { + nprod += (CountProducts(channel, products[i]) >= mult[i]); + } + if (nprod) { + fPythia->SetMDME(channel,1,1); + } else { + fPythia->SetMDME(channel,1,0); + fBraPart[kc]-=fPythia->GetBRAT(channel); + } + } +} + void AliDecayerPythia::DefineParticles() { // diff --git a/PYTHIA6/AliDecayerPythia.h b/PYTHIA6/AliDecayerPythia.h index 14f9d865f7f..b6047bd3e59 100644 --- a/PYTHIA6/AliDecayerPythia.h +++ b/PYTHIA6/AliDecayerPythia.h @@ -39,6 +39,7 @@ public AliDecayer Double_t mom, Double_t theta, Double_t phi); Int_t CountProducts(Int_t channel, Int_t particle); void ForceParticleDecay(Int_t particle, Int_t product, Int_t mult); + void ForceParticleDecay(Int_t particle, Int_t* products, Int_t* mult, Int_t npart); void ForceHadronicD(); void ForceOmega(); Float_t GetBraPart(Int_t kf); -- 2.31.1