X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenHalo.cxx;h=82031dab68cab887ab0dd691ff99ca18b494ccaf;hb=75eff6de2d7200ef8cd1a53bb2f14934ae346818;hp=1789853515ea15785ce80e3854a8428f9b14939a;hpb=c321951cfac60908e3fbab1b42b128cb09ded1a7;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenHalo.cxx b/EVGEN/AliGenHalo.cxx index 1789853515e..82031dab68c 100644 --- a/EVGEN/AliGenHalo.cxx +++ b/EVGEN/AliGenHalo.cxx @@ -30,7 +30,9 @@ #include #include "AliGenHalo.h" +#include "AliGenEventHeader.h" #include "AliRun.h" +#include "AliLog.h" ClassImp(AliGenHalo) @@ -120,10 +122,14 @@ 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 { printf("\n Opening of file %s failed, %p ! \n ", fFileName.Data(), (void*)fFile); + return; } if (fNskip > 0) { @@ -156,8 +162,14 @@ void AliGenHalo::Init() Fatal("Init()", "No gas pressure file for given run period !"); } - - FILE* file = fopen(name, "r"); + + FILE* file = 0; + if (name) file = fopen(name, "r"); + if (!file) { + AliError("No gas pressure file"); + return; + } + Float_t z; Int_t i; Float_t p[5]; @@ -173,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) { @@ -187,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; @@ -207,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 @@ -240,6 +257,7 @@ void AliGenHalo::Init() sum1/=250.; sum2/=250.; printf("\n %f %f \n \n", sum1, sum2); + delete file; } //____________________________________________________________ @@ -261,14 +279,15 @@ void AliGenHalo::Generate() if (first && (fNskip == 0)) ReadNextParticle(); first = kFALSE; oldID = fLossID; + Int_t np = 0; while(1) { // Push particle to stack mass = TDatabasePDG::Instance()->GetParticle(fPdg)->Mass(); p0 = TMath::Sqrt(fEkin * fEkin + 2. * mass * fEkin); txy = TMath::Sqrt(fDX * fDX + fDY * fDY); - if (txy == 1.) { - tz = 0; + if (txy > 1.) { + tz = 0.; } else { tz = - TMath::Sqrt(1. - txy); } @@ -282,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) { @@ -290,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) { @@ -381,3 +410,24 @@ void AliGenHalo::SkipEvents() } } } +void AliGenHalo::CountEvents() +{ + // Count total number of events + Int_t nev = 0; + Int_t oldID = -1; + Int_t nc = 1; + while (nc != -1) + { + nc = ReadNextParticle(); + if (oldID != fLossID) { + oldID = fLossID; + nev++; + printf("Number of events %10d %10d \n", nev, oldID); + } + } + + + rewind(fFile); +} + +