]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliDecayerPythia.cxx
support for LHC10de + some code reshuffling
[u/mrichter/AliRoot.git] / PYTHIA6 / AliDecayerPythia.cxx
index 12bb7358850c86f9b46d5a44c437697d74d5d9c0..1465fdf9865ed16cd5b5f016fe828eec06a0a412 100644 (file)
@@ -28,6 +28,7 @@
 #include <TPDGCode.h>
 #include <TLorentzVector.h>
 #include <TClonesArray.h>
+#include <TParticle.h>
 
 ClassImp(AliDecayerPythia)
 
@@ -158,7 +159,16 @@ Int_t AliDecayerPythia::ImportParticles(TClonesArray *particles)
 {
 // Import the decay products
 //
-    return fPythia->ImportParticles(particles, "All");
+  const Float_t kconvT=0.001/2.999792458e8; // mm/c to seconds conversion
+  const Float_t kconvL=1./10; // mm to cm conversion
+  int np = fPythia->ImportParticles(particles, "All");
+  // pythia assigns decay time in mm/c, convert to seconds
+  for (int ip=1;ip<np;ip++) {
+    TParticle* prod = (TParticle*)particles->At(ip);
+    if (!prod) continue;
+    prod->SetProductionVertex(prod->Vx()*kconvL,prod->Vy()*kconvL,prod->Vz()*kconvL,kconvT*prod->T());
+  }
+  return np;
 }
 
 
@@ -340,6 +350,13 @@ void AliDecayerPythia::ForceDecay()
        ForceParticleDecay(  531,443,1); // B_s     
        ForceParticleDecay( 5122,443,1); // Lambda_b
        break;
+    case kBJpsiUndecayed:
+        ForceParticleDecay(  511,443,1); // B0     
+        ForceParticleDecay(  521,443,1); // B+/-     
+        ForceParticleDecay(  531,443,1); // B_s     
+        ForceParticleDecay( 5122,443,1); // Lambda_b
+        fPythia->SetMDCY(fPythia->Pycomp(443),1,0); // switch-off J/psi 
+        break;
     case kBPsiPrimeDiElectron:
        ForceParticleDecay(  511,100443,1); // B0     
        ForceParticleDecay(  521,100443,1); // B+/-     
@@ -536,7 +553,7 @@ void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
     };
   Int_t decayP3[kNHadrons][4] = 
     { 
-      {-1        , -1     , -1      , -1},
+      {kPiPlus   , iPhi   , 0       , 0},
       {kKMinus   , kPiPlus, iRho0   , 0 },
       {-1        , -1     , -1      , -1},
       {-1        , -1     , -1      , -1},
@@ -545,7 +562,7 @@ void AliDecayerPythia::ForceHadronicD(Int_t optUse4Bodies)
   // for Lambda_c -> Lambda_1520 pi+ -> p K- pi+, D0-> K*0 pi+ pi- -> K3pi
     Int_t decayP4[kNHadrons][4] =
     {
-      {-1          , -1      , -1      , -1},
+      {iKstarbar0  , kKPlus  , 0       ,  0},
       {iKstarbar0  , kPiPlus , kPiMinus,  0},
       {-1          , -1      , -1      , -1},
       {-1          , -1      , -1      , -1},