]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenParam.cxx
Minor corrections needed on alpha
[u/mrichter/AliRoot.git] / EVGEN / AliGenParam.cxx
index 13f4af9cf0b1d7a9c2dd3751753653fb9caae490..b43b53967b07fb235265c6ac6cc6c690b40f5091 100644 (file)
 
 /*
 $Log$
+Revision 1.20  2000/09/06 14:35:44  morsch
+Use AliDecayerPythia for particle decays.
+
+Revision 1.19  2000/07/11 18:24:56  fca
+Coding convention corrections + few minor bug fixes
+
 Revision 1.18  2000/06/29 21:08:27  morsch
 All paramatrisation libraries derive from the pure virtual base class AliGenLib.
 This allows to pass a pointer to a library directly to AliGenParam and avoids the
@@ -47,10 +53,15 @@ Introduction of the Copyright and cvs Log
 */
 
 #include "AliGenParam.h"
+#include "AliDecayerPythia.h"
 #include "AliGenMUONlib.h"
 #include "AliRun.h"
 #include "AliPythia.h"
 #include <TParticle.h>
+#include <TParticlePDG.h>
+#include <TDatabasePDG.h>
+#include <TLorentzVector.h>
+
 #include <TF1.h>
 
 ClassImp(AliGenParam)
@@ -176,9 +187,8 @@ AliGenParam::~AliGenParam()
 void AliGenParam::Init()
 {
 // Initialisation
-    SetMC(new AliPythia());
-    fPythia= (AliPythia*) fgMCEvGen;
-    
+
+    fDecayer = new AliDecayerPythia();
   //Begin_Html
   /*
     <img src="picts/AliGenParam.gif">
@@ -218,9 +228,9 @@ void AliGenParam::Init()
     }
 //
 // particle decay related initialization
-    fPythia->DefineParticles();
+    fDecayer->Init();
 // semimuonic decays of charm and beauty
-    fPythia->ForceDecay(fForceDecay);
+    fDecayer->ForceDecay(fForceDecay);
 //
     switch (fForceDecay) 
     {
@@ -277,6 +287,9 @@ void AliGenParam::Generate()
   static TClonesArray *particles;
   //
   if(!particles) particles=new TClonesArray("TParticle",1000);
+
+  static TDatabasePDG *DataBase = new TDatabasePDG();
+  if(!DataBase) DataBase = new TDatabasePDG();
   //
   Float_t random[6];
  
@@ -296,8 +309,10 @@ void AliGenParam::Generate()
 //
 // particle type
          Int_t iPart = fIpParaFunc();
-         fChildWeight=(fPythia->GetBraPart(iPart))*fParentWeight;        
-         Float_t am=fPythia->GetPMAS(fPythia->Lucomp(iPart),1);
+         fChildWeight=(fDecayer->GetPartialBranchingRatio(iPart))*fParentWeight;          
+         TParticlePDG *particle = DataBase->GetParticle(iPart);
+         Float_t am = particle->Mass();
+
          gMC->Rndm(random,2);
 //
 // phi
@@ -347,17 +362,18 @@ void AliGenParam::Generate()
          if (fForceDecay != nodecay) {
 // Using lujet to decay particle
              Float_t energy=TMath::Sqrt(ptot*ptot+am*am);
-             fPythia->DecayParticle(iPart,energy,theta,phi);
+             TLorentzVector pmom(p[0], p[1], p[2], energy);
+             fDecayer->Decay(iPart,&pmom);
 //
 // select decay particles
-             Int_t np=fPythia->ImportParticles(particles,"All");
+             Int_t np=fDecayer->ImportParticles(particles);
              Int_t ncsel=0;
              for (i = 1; i<np; i++) {
                  TParticle *  iparticle = (TParticle *) particles->At(i);
                  Int_t kf = iparticle->GetPdgCode();
 //
 // children
-                 if (ChildSelected(TMath::Abs(kf)))
+                 if (ChildSelected(TMath::Abs(kf)) || fForceDecay==all)
                  {
                      pc[0]=iparticle->Px();
                      pc[1]=iparticle->Py();