]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EPOS/AliGenEpos.cxx
Update master to aliroot
[u/mrichter/AliRoot.git] / EPOS / AliGenEpos.cxx
index 46d7a7bc6598ec4c2d58356e900a4201ab053c8c..e56fbfa545711712a4018a8075aa880f4af9ebfb 100644 (file)
@@ -1,11 +1,11 @@
-/*
- * AliGenEpos.cxx
- *
- *  ALICE event generator based on EPOS model from Klaus Werner
- *
- *  Created on: Feb 28, 2009
- *      Author: Piotr Ostrowski, postrow@if.pw.edu.pl
- */
+//
+// AliGenEpos.cxx
+//
+//  ALICE event generator based on EPOS model from Klaus Werner
+//
+//  Created on: Feb 28, 2009
+//      Author: Piotr Ostrowski, postrow@if.pw.edu.pl
+//
 
 #include "AliGenEpos.h"
 #include "TEpos.h"
@@ -36,6 +36,7 @@ AliGenEpos::AliGenEpos(Int_t npart) : AliGenMC(npart),
 }
 
 void AliGenEpos::Init() {
+  // Sets up TEpos
        AliGenMC::Init();
        TEpos *epos = GetTEpos();
        epos->SetLaproj(this->fZProjectile);
@@ -47,23 +48,28 @@ void AliGenEpos::Init() {
        epos->SetBminim(this->fBmin);
        epos->SetBmaxim(this->fBmax);
        epos->SetEcms(this->fEnergyCMS);
+       epos->SetSplitting(kTRUE);
        GetTEpos()->Initialize();
 }
 
 void AliGenEpos::Generate() {
-         Float_t polar[3]   =   {0,0,0};
+  // Does actual generation and output conversion
+         Float_t polar[3]    =   {0,0,0};
          Float_t origin0[3]  =   {0,0,0};
          Float_t origin[3]   =   {0,0,0};
+         Float_t time0 = 0.;
+         Float_t time  = 0.;
          fNprimaries = 0;
          Int_t nt  = 0; //output parameter for PushTrack
 
          Vertex();
          for (int j=0; j < 3; j++) origin0[j] = fVertex[j];
+         time0 = fTime;
 
          // Generate one event
 
          GetTEpos()->GenerateEvent();
-         AliWarning("Generated");
+         //AliWarning("Generated");
          GetTEpos()->ImportParticles(&fParticles);
 
          Int_t np = fParticles.GetEntriesFast();
@@ -71,6 +77,7 @@ void AliGenEpos::Generate() {
 
          Int_t *idsOnStack = NULL;
          idsOnStack = new Int_t[np];
+         for (int i = 0; i < np; i++) idsOnStack[i] = 0;
          TParticle *iparticle;
 
          for (int i = 0; i < np; i++) {
@@ -87,15 +94,15 @@ void AliGenEpos::Generate() {
                          origin[0] = iparticle->Vx();
                          origin[1] = iparticle->Vy();
                          origin[2] = iparticle->Vz();
+                         time      = iparticle->T();
                          //doubled track with freeze out coordinates for femtoscopy
-                         PushTrack(0,
-                                         imo>=0?idsOnStack[imo]:-1,
-                                         iparticle->GetPdgCode(),
+                         PushTrack(0, imo>=0?idsOnStack[imo]:-1,
+                               iparticle->GetPdgCode(),
                                iparticle->Px(),iparticle->Py(),iparticle->Pz(),iparticle->Energy(),
-                               origin[0], origin[1], origin[2],
-                               iparticle->T(),
+                               origin[0], origin[1], origin[2], time,
                                polar[0],polar[1],polar[2],
-                               hasMother ? kPDecay:kPNoProcess,nt);
+                               hasMother ? kPDecay:kPNoProcess, nt, 1., 
+                               iparticle->GetStatusCode());
 
                      idsOnStack[i] = nt;
                      fNprimaries++;
@@ -105,12 +112,13 @@ void AliGenEpos::Generate() {
                      origin[0] += origin0[0];
                      origin[1] += origin0[1];
                      origin[2] += origin0[2];
+                     time      += time0;
                          PushTrack(1,
                                          nt,   //doubled track as mother
                                          iparticle->GetPdgCode(),
                                iparticle->Px(),iparticle->Py(),iparticle->Pz(),iparticle->Energy(),
                                origin[0], origin[1], origin[2],
-                               iparticle->T(),
+                               time,
                                polar[0],polar[1],polar[2],
                                kPDecay,nt);
                      fNprimaries++;
@@ -120,14 +128,14 @@ void AliGenEpos::Generate() {
                          origin[0] = iparticle->Vx();
                          origin[1] = iparticle->Vy();
                          origin[2] = iparticle->Vz();
-                         PushTrack(0,
-                                         imo>=0?idsOnStack[imo]:-1,
-                                         iparticle->GetPdgCode(),
+                         time      = iparticle->T();
+                         PushTrack(0, imo>=0?idsOnStack[imo]:-1,
+                               iparticle->GetPdgCode(),
                                iparticle->Px(),iparticle->Py(),iparticle->Pz(),iparticle->Energy(),
-                               origin[0], origin[1], origin[2],
-                               iparticle->T(),
+                               origin[0], origin[1], origin[2], time,
                                polar[0],polar[1],polar[2],
-                               hasMother ? kPDecay:kPNoProcess,nt);
+                               hasMother ? kPDecay:kPNoProcess, nt, 1., 
+                               iparticle->GetStatusCode());
                      idsOnStack[i] = nt;
                      fNprimaries++;
                      KeepTrack(nt);
@@ -147,6 +155,7 @@ void AliGenEpos::Generate() {
 
          header->SetNProduced(fNprimaries);
          header->SetPrimaryVertex(eventVertex);
+         header->SetInteractionTime(time0);
 
          header->SetImpactParameter(GetTEpos()->GetBimevt());
          header->SetReactionPlaneAngle(GetTEpos()->GetPhievt());
@@ -158,11 +167,32 @@ void AliGenEpos::Generate() {
 
        // Event Vertex
          header->SetPrimaryVertex(fVertex);
-         header->FillInternalFields(GetTEpos());
-         AddHeader(header);
-         fCollisionGeometry = (AliGenEposEventHeader*)  header;
-
-         delete[] idsOnStack;
+         
+         header->SetBimevt(GetTEpos()->GetBimevt());
+         header->SetPhievt(GetTEpos()->GetPhievt());
+         header->SetKolevt(GetTEpos()->GetKolevt());
+         header->SetKoievt(GetTEpos()->GetKoievt());
+         header->SetPmxevt(GetTEpos()->GetPmxevt());
+         header->SetEgyevt(GetTEpos()->GetEgyevt());
+         header->SetNpjevt(GetTEpos()->GetNpjevt());
+         header->SetNtgevt(GetTEpos()->GetNtgevt());
+         header->SetNpnevt(GetTEpos()->GetNpnevt());
+         header->SetNppevt(GetTEpos()->GetNppevt());
+         header->SetNtnevt(GetTEpos()->GetNtnevt());
+         header->SetNtpevt(GetTEpos()->GetNtpevt());
+         header->SetJpnevt(GetTEpos()->GetJpnevt());
+         header->SetJppevt(GetTEpos()->GetJppevt());
+         header->SetJtnevt(GetTEpos()->GetJtnevt());
+         header->SetJtpevt(GetTEpos()->GetJtpevt());
+         header->SetXbjevt(GetTEpos()->GetXbjevt());
+         header->SetQsqevt(GetTEpos()->GetQsqevt());
+         header->SetNglevt(GetTEpos()->GetNglevt());
+         header->SetZppevt(GetTEpos()->GetZppevt());
+         header->SetZptevt(GetTEpos()->GetZptevt());
+    AddHeader(header);
+    fCollisionGeometry = (AliGenEposEventHeader*)  header;
+    
+    delete[] idsOnStack;
 }
 
 AliGenEpos::~AliGenEpos() {