]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenPythia.cxx
Avoid warnings on SunOS
[u/mrichter/AliRoot.git] / EVGEN / AliGenPythia.cxx
index 529054bab1b22838d54f6bc9963fd5cb2286b371..8765fb3cfcc1a108df0d61e1b8b65725cea984f6 100644 (file)
@@ -1,6 +1,5 @@
 #include "AliGenerator.h"
 #include "AliGenPythia.h"
-#include "TGeant3.h"
 #include "AliRun.h"
 #include "AliPythia.h"
 #include <TDirectory.h>
@@ -8,8 +7,8 @@
 #include <TTree.h>
 #include <stdlib.h>
 #include <AliPythia.h>
-#include <TMCParticle.h>
-#include <GParticle.h>
+#include <TParticle.h>
+//#include <GParticle.h>
  ClassImp(AliGenPythia)
 
 AliGenPythia::AliGenPythia()
@@ -112,13 +111,13 @@ void AliGenPythia::Init()
 
 void AliGenPythia::Generate()
 {
-    AliMC* pMC = AliMC::GetMC();
 
     Float_t polar[3] =   {0,0,0};
     Float_t origin[3]=   {0,0,0};
     Float_t origin_p[3]= {0,0,0};
     Float_t origin0[3]=  {0,0,0};
     Float_t p[3], p_p[4], random[6];
+    static TClonesArray *particles;
 //  converts from mm/c to s
     const Float_t kconv=0.001/2.999792458e8;
     
@@ -127,12 +126,14 @@ void AliGenPythia::Generate()
     Int_t nt=0;
     Int_t nt_p=0;
     Int_t jev=0;
-    Int_t j;
+    Int_t j, kf;
+
+    if(!particles) particles=new TClonesArray("TParticle",1000);
     
     fTrials=0;
     for (j=0;j<3;j++) origin0[j]=fOrigin[j];
     if(fVertexSmear==perEvent) {
-       pMC->Rndm(random,6);
+       gMC->Rndm(random,6);
        for (j=0;j<3;j++) {
            origin0[j]+=fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
                TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
@@ -148,15 +149,15 @@ void AliGenPythia::Generate()
     {
        fPythia->PyEvnt();
        fTrials++;
-       TObjArray* particles = fPythia->GetPrimaries() ;
+       fPythia->ImportParticles(particles,"All");
        Int_t np = particles->GetEntriesFast();
        printf("\n **************************************************%d\n",np);
        Int_t nc=0;
        if (np == 0 ) continue;
        if (fProcess != mb) {
            for (Int_t i = 0; i<np; i++) {
-               TMCParticle *  iparticle = (TMCParticle *) particles->At(i);
-               Int_t kf = iparticle->GetKF();
+               TParticle *  iparticle = (TParticle *) particles->At(i);
+               kf = iparticle->GetPdgCode();
                fChildWeight=(fPythia->GetBraPart(kf))*fParentWeight;     
 //
 // Parent
@@ -183,17 +184,17 @@ void AliGenPythia::Generate()
                        nc++;
 //
 // store parent track information
-                       p[0]=iparticle->GetPx();
-                       p[1]=iparticle->GetPy();
-                       p[2]=iparticle->GetPz();
-                       origin[0]=origin0[0]+iparticle->GetVx()/10;
-                       origin[1]=origin0[1]+iparticle->GetVy()/10;
-                       origin[2]=origin0[2]+iparticle->GetVz()/10;
+                       p[0]=iparticle->Px();
+                       p[1]=iparticle->Py();
+                       p[2]=iparticle->Pz();
+                       origin[0]=origin0[0]+iparticle->Vx()/10;
+                       origin[1]=origin0[1]+iparticle->Vy()/10;
+                       origin[2]=origin0[2]+iparticle->Vz()/10;
 
-                       Int_t ifch=iparticle->GetFirstChild();
-                       Int_t ilch=iparticle->GetLastChild();   
+                       Int_t ifch=iparticle->GetFirstDaughter();
+                       Int_t ilch=iparticle->GetLastDaughter();        
                        if (ifch !=0 && ilch !=0) {
-                           gAlice->SetTrack(0,nt_p,fPythia->GetGeantCode(kf),
+                           gAlice->SetTrack(0,nt_p,kf,
                                             p,origin,polar,
                                             0,"Primary",nt,fParentWeight);
                            gAlice->KeepTrack(nt);
@@ -201,23 +202,22 @@ void AliGenPythia::Generate()
 //
 // Children        
 
-                           for (Int_t j=ifch; j<=ilch; j++)
+                           for (j=ifch; j<=ilch; j++)
                            {
-                               TMCParticle *  ichild = 
-                                   (TMCParticle *) particles->At(j-1);
-                               Int_t kf = ichild->GetKF();
+                               TParticle *  ichild = 
+                                   (TParticle *) particles->At(j-1);
+                               Int_t kf = ichild->GetPdgCode();
 //
 // 
                                if (ChildSelected(TMath::Abs(kf))) {
-                                   Int_t kg=fPythia->GetGeantCode(kf);
-                                   origin[0]=ichild->GetVx();
-                                   origin[1]=ichild->GetVy();
-                                   origin[2]=ichild->GetVz();          
-                                   p[0]=ichild->GetPx();
-                                   p[1]=ichild->GetPy();
-                                   p[2]=ichild->GetPz();
-                                   Float_t tof=kconv*ichild->GetTime();
-                                   gAlice->SetTrack(fTrackIt, iparent, kg,
+                                   origin[0]=ichild->Vx();
+                                   origin[1]=ichild->Vy();
+                                   origin[2]=ichild->Vz();             
+                                   p[0]=ichild->Px();
+                                   p[1]=ichild->Py();
+                                   p[2]=ichild->Pz();
+                                   Float_t tof=kconv*ichild->T();
+                                   gAlice->SetTrack(fTrackIt, iparent, kf,
                                                     p,origin,polar,
                                                     tof,"Decay",nt,fChildWeight);
                                    gAlice->KeepTrack(nt);
@@ -229,22 +229,21 @@ void AliGenPythia::Generate()
            } // particle loop
        } else {
            for (Int_t i = 0; i<np; i++) {
-               TMCParticle *  iparticle = (TMCParticle *) particles->At(i);
-               Int_t kf = iparticle->GetKF();
-               Int_t ks = iparticle->GetKS();
-               Int_t gc = fPythia->GetGeantCode(kf);
-               if (ks==1 && gc!=0 && KinematicSelection(iparticle)) {
+               TParticle *  iparticle = (TParticle *) particles->At(i);
+               Int_t kf = iparticle->GetPdgCode();
+               Int_t ks = iparticle->GetStatusCode();
+               if (ks==1 && kf!=0 && KinematicSelection(iparticle)) {
                        nc++;
 //
 // store track information
-                       p[0]=iparticle->GetPx();
-                       p[1]=iparticle->GetPy();
-                       p[2]=iparticle->GetPz();
-                       origin[0]=origin0[0]+iparticle->GetVx()/10;
-                       origin[1]=origin0[1]+iparticle->GetVy()/10;
-                       origin[2]=origin0[2]+iparticle->GetVz()/10;
-                       Float_t tof=kconv*iparticle->GetTime();
-                       gAlice->SetTrack(fTrackIt,-1,gc,p,origin,polar,
+                       p[0]=iparticle->Px();
+                       p[1]=iparticle->Py();
+                       p[2]=iparticle->Pz();
+                       origin[0]=origin0[0]+iparticle->Vx()/10;
+                       origin[1]=origin0[1]+iparticle->Vy()/10;
+                       origin[2]=origin0[2]+iparticle->Vz()/10;
+                       Float_t tof=kconv*iparticle->T();
+                       gAlice->SetTrack(fTrackIt,-1,kf,p,origin,polar,
                                         tof,"Primary",nt);
                        gAlice->KeepTrack(nt);
                } // select particle
@@ -284,12 +283,12 @@ Bool_t AliGenPythia::ChildSelected(Int_t ip)
     return kFALSE;
 }
 
-Bool_t AliGenPythia::KinematicSelection(TMCParticle *particle)
+Bool_t AliGenPythia::KinematicSelection(TParticle *particle)
 {
-    Float_t px=particle->GetPx();
-    Float_t py=particle->GetPy();
-    Float_t pz=particle->GetPz();
-    Float_t  e=particle->GetEnergy();
+    Float_t px=particle->Px();
+    Float_t py=particle->Py();
+    Float_t pz=particle->Pz();
+    Float_t  e=particle->Energy();
 
 //
 //  transverse momentum cut    
@@ -340,11 +339,11 @@ Bool_t AliGenPythia::KinematicSelection(TMCParticle *particle)
 void AliGenPythia::AdjustWeights()
 {
     TClonesArray *PartArray = gAlice->Particles();
-    GParticle *Part;
+    TParticle *Part;
     Int_t ntrack=gAlice->GetNtrack();
     for (Int_t i=0; i<ntrack; i++) {
-       Part= (GParticle*) PartArray->UncheckedAt(i);
-       Part->SetWgt(Part->GetWgt()*fKineBias);
+       Part= (TParticle*) PartArray->UncheckedAt(i);
+       Part->SetWeight(Part->GetWeight()*fKineBias);
     }
 }