]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenHalo.cxx
Propagate generator names to headers
[u/mrichter/AliRoot.git] / EVGEN / AliGenHalo.cxx
index d7d55249a2f7a1ef7c4c11858fe3f10397069c18..82031dab68cab887ab0dd691ff99ca18b494ccaf 100644 (file)
@@ -30,6 +30,7 @@
 #include <TSystem.h>
 
 #include "AliGenHalo.h"
+#include "AliGenEventHeader.h"
 #include "AliRun.h"
 #include "AliLog.h"
 
@@ -121,6 +122,9 @@ void AliGenHalo::Init()
 {
 // Initialisation
     fFile = fopen(fFileName,"r");
+    Int_t ir = 0;
+    
+    
     if (fFile) {
        printf("\n File %s opened for reading, %p ! \n ",  fFileName.Data(), (void*)fFile);
     } else {
@@ -181,7 +185,9 @@ void AliGenHalo::Init()
 
        for (i = 0; i < fGPASize; i++)
        {
-           fscanf(file, "%f %f %f %f %f %f", &z, &p[0], &p[1], &p[2] , &p[3], &p[4]);
+           ir = fscanf(file, "%f %f %f %f %f %f", &z, &p[0], &p[1], &p[2] , &p[3], &p[4]);
+           if (ir == 0) break;
+           
            fG1[i] = p[fRunPeriod];
            
            if (i > 0) {
@@ -195,7 +201,9 @@ void AliGenHalo::Init()
 //
        for (i = 0; i < fGPASize; i++)
        {
-           fscanf(file, "%f %f %f %f %f %f", &z, &p[0], &p[1], &p[2] , &p[3], &p[4]);
+           ir = fscanf(file, "%f %f %f %f %f %f", &z, &p[0], &p[1], &p[2] , &p[3], &p[4]);
+           if (ir == 0) break;
+
            fG2[i] = p[fRunPeriod];
            if (i > 0) {
                fZ2[i] = fZ2[i-1] + z;
@@ -215,7 +223,8 @@ void AliGenHalo::Init()
     } else {
        for (i = 0; i < fGPASize; i++) 
        {
-           fscanf(file, "%f %e %e %e %e %e", &z, &p[0], &p[1], &p[2], &p[3], &p[4]);
+           ir = fscanf(file, "%f %e %e %e %e %e", &z, &p[0], &p[1], &p[2], &p[3], &p[4]);
+           if (ir == 0) break;
            z /= 1000.;
            fG1[i] = p[4] * kCrossSection * kFlux;             // 1/m/s
            // 1/3 of nominal intensity at startup
@@ -270,6 +279,7 @@ void AliGenHalo::Generate()
   if (first && (fNskip == 0)) ReadNextParticle();
   first = kFALSE;
   oldID = fLossID;
+  Int_t np = 0;
   
   while(1) {
       // Push particle to stack
@@ -291,7 +301,7 @@ void AliGenHalo::Generate()
       origin[2] = 1950.;
 
       PushTrack(fTrackIt , -1, fPdg , p, origin, polar, fTS - 1950./2.9979e10, kPNoProcess, nt, fWS);
-      
+      np++;
       Int_t nc = ReadNextParticle();
       
       if (fLossID != oldID || nc == 0) {
@@ -299,9 +309,19 @@ void AliGenHalo::Generate()
          break;
       }
   }
+
   SetHighWaterMark(nt);
+  AliGenEventHeader* header = new AliGenEventHeader("HALO");
+  header->SetNProduced(np);
+  // Passes header either to the container or to gAlice
+  if (fContainer) {
+      header->SetName(fName);
+      fContainer->AddHeader(header);
+  } else {
+      gAlice->SetGenEventHeader(header);       
+  }
 }
+
 
 Float_t AliGenHalo::GasPressureWeight(Float_t zPrimary)
 {