]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliDecayerPythia.cxx
reverted commit 092db0d78a7a4058bb5893bf8110127f6fa3bfe1
[u/mrichter/AliRoot.git] / PYTHIA6 / AliDecayerPythia.cxx
index 891f9f82d7c6b863e58aa2ce3db0f48f69b29808..7119714aef1acb5df679a624ea3bb6576cf38f51 100644 (file)
@@ -61,7 +61,9 @@ AliDecayerPythia::AliDecayerPythia():
     fDecay(kAll),
     fHeavyFlavour(kTRUE),
     fLongLived(kFALSE),
-    fPatchOmegaDalitz(0)
+    fPatchOmegaDalitz(0),
+    fDecayerExodus(0),
+    fPi0(1)
 {
 // Default Constructor
     for (Int_t i=0; i< 501; i++) fBraPart[i]= 1.;
@@ -74,7 +76,9 @@ AliDecayerPythia::AliDecayerPythia(const AliDecayerPythia &decayer):
     fDecay(kAll),
     fHeavyFlavour(kTRUE),
     fLongLived(kFALSE),
-    fPatchOmegaDalitz(0)
+    fPatchOmegaDalitz(0),
+    fDecayerExodus(0),
+    fPi0(1)
 {
     // Copy Constructor
     decayer.Copy(*this);
@@ -118,8 +122,8 @@ void AliDecayerPythia::Init()
        fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
     }
 */
+    if (fPi0) fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
 
-    fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
     Int_t isw = 0;
     if (fLongLived) isw = 1;
     
@@ -136,23 +140,68 @@ void AliDecayerPythia::Init()
     ForceDecay();
 }
 
+void AliDecayerPythia::SwitchOffParticle(Int_t kf)
+{
+//switch off decay for particle "kf"
+fPythia->SetMDCY(fPythia->Pycomp(kf),1,0);
+}
+
 void AliDecayerPythia::Decay(Int_t idpart, TLorentzVector* p)
 {
 //  Decay a particle
 // 
-    Float_t energy = p->Energy();
-    Float_t theta  = p->Theta();
-    Float_t phi    = p->Phi();
-    if (!fPatchOmegaDalitz) {
-       Lu1Ent(0, idpart, energy, theta, phi);
-    } else {
-       fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
-       Lu1Ent(0, idpart, energy, theta, phi);
-       fPythia->DalitzDecays();
-       fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
-       fPythia->Pyexec();
+  Float_t energy = p->Energy();
+  Float_t theta  = p->Theta();
+  Float_t phi    = p->Phi();
+
+  if(!fDecayerExodus) {
+    Lu1Ent(0, idpart, energy, theta, phi);
+  } else {
+
+  // EXODUS decayer
+    if(idpart == 111){
+      fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0);
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->PizeroDalitz();
+      fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1);
+    }
+    else if(idpart == 221){
+      fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0);
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->EtaDalitz();
+      fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1);
     }
-    fPythia->GetPrimaries();
+    else if(idpart == 113){
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->RhoDirect();
+    }
+    else if(idpart == 223){
+      fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 0);
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->OmegaDirect();
+      fPythia->OmegaDalitz();
+      fPythia->SetMDCY(fPythia->Pycomp(111) ,1, 1);
+    }
+    else if(idpart == 331){
+      fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 0);
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->EtaprimeDalitz();
+      fPythia->SetMDCY(fPythia->Pycomp(22) ,1, 1);
+    }
+    else if(idpart == 333){
+      fPythia->SetMDCY(fPythia->Pycomp(221) ,1, 0);
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->PhiDirect();
+      fPythia->PhiDalitz();
+      fPythia->SetMDCY(fPythia->Pycomp(221) ,1, 1);
+    }
+    else if(idpart == 443){
+      Lu1Ent(0, idpart, energy, theta, phi);
+      fPythia->JPsiDirect();
+    }  
+  }
+
+  fPythia->GetPrimaries();
 }
 
 Int_t AliDecayerPythia::ImportParticles(TClonesArray *particles)
@@ -692,8 +741,7 @@ void AliDecayerPythia::ForceParticleDecay(Int_t particle, Int_t product, Int_t m
     Double_t norm = 0.;
     for (Int_t channel=ifirst; channel<=ilast;channel++){
       norm+=fPythia->GetBRAT(channel);
-      printf("%f ",fPythia->GetBRAT(channel));
-    }printf("\n");
+    }
     if (norm < 1.-1.e-12 || norm > 1.+1.e-12) {
         char pName[16];
         fPythia->Pyname(particle,pName);