Updates for B->J/Psi (psi') X decays.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Aug 2003 13:49:59 +0000 (13:49 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Aug 2003 13:49:59 +0000 (13:49 +0000)
PYTHIA6/AliDecayerPythia.cxx
PYTHIA6/AliDecayerPythia.h

index 491f93a..2372c66 100644 (file)
@@ -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()
 {
 //
index 14f9d86..b6047bd 100644 (file)
@@ -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);