X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenHaloProtvino.cxx;h=4466a194e37e2ee9f556687316d333efa80215ca;hb=58af8e48804de12e122e9597c84f10c6bb8c0704;hp=a757f5b6a5eadbc43e56b76d5c2347e67387d258;hpb=ac3faee4980efbf9c8f8eeafc61770ffc45bb103;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenHaloProtvino.cxx b/EVGEN/AliGenHaloProtvino.cxx index a757f5b6a5e..4466a194e37 100644 --- a/EVGEN/AliGenHaloProtvino.cxx +++ b/EVGEN/AliGenHaloProtvino.cxx @@ -29,13 +29,25 @@ #include #include +#include "AliLog.h" #include "AliGenHaloProtvino.h" #include "AliRun.h" ClassImp(AliGenHaloProtvino) AliGenHaloProtvino::AliGenHaloProtvino() - :AliGenerator(-1) + :AliGenerator(-1), + fFile(0), + fFileName(0), + fSide(1), + fRunPeriod(kY3D90), + fTimePerEvent(1.e-4), + fNskip(0), + fZ1(0), + fZ2(0), + fG1(0), + fG2(0), + fGPASize(0) { // Constructor @@ -44,38 +56,32 @@ AliGenHaloProtvino::AliGenHaloProtvino() // // Read all particles fNpart = -1; - fFile = 0; - fSide = 1; -// - SetRunPeriod(); - SetTimePerEvent(); SetAnalog(0); } AliGenHaloProtvino::AliGenHaloProtvino(Int_t npart) - :AliGenerator(npart) + :AliGenerator(npart), + fFile(0), + fFileName(0), + fSide(1), + fRunPeriod(kY3D90), + fTimePerEvent(1.e-4), + fNskip(0), + fZ1(0), + fZ2(0), + fG1(0), + fG2(0), + fGPASize(0) { // Constructor fName = "Halo"; fTitle= "Halo from LHC Tunnel"; // fNpart = npart; - fFile = 0; - fSide = 1; // - SetRunPeriod(); - SetTimePerEvent(); SetAnalog(0); } -AliGenHaloProtvino::AliGenHaloProtvino(const AliGenHaloProtvino & HaloProtvino): - AliGenerator(HaloProtvino) -{ -// Copy constructor - HaloProtvino.Copy(*this); -} - - //____________________________________________________________ AliGenHaloProtvino::~AliGenHaloProtvino() { @@ -118,8 +124,13 @@ void AliGenHaloProtvino::Init() Fatal("Init()", "No gas pressure file for given run period !"); } + FILE* file = 0; + if (name) file = fopen(name, "r"); + if (!file) { + AliError("No gas pressure file"); + return; + } - FILE* file = fopen(name, "r"); Float_t z; Int_t i; Float_t p[5]; @@ -128,6 +139,7 @@ void AliGenHaloProtvino::Init() const Float_t kFlux = 1.e11 / 25.e-9; // protons/s Float_t pFlux[5] = {0.2, 0.2, 0.3, 0.3, 1.0}; + Int_t ncols = 0; if (fRunPeriod < 5) { // // Ring 1 @@ -135,7 +147,9 @@ void AliGenHaloProtvino::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]); + ncols = fscanf(file, "%f %f %f %f %f %f", &z, &p[0], &p[1], &p[2] , &p[3], &p[4]); + if (ncols<0) break; + fG1[i] = p[fRunPeriod]; if (i > 0) { @@ -149,7 +163,9 @@ void AliGenHaloProtvino::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]); + ncols = fscanf(file, "%f %f %f %f %f %f", &z, &p[0], &p[1], &p[2] , &p[3], &p[4]); + if (ncols<0) break; + fG2[i] = p[fRunPeriod]; if (i > 0) { fZ2[i] = fZ2[i-1] + z; @@ -169,7 +185,9 @@ void AliGenHaloProtvino::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]); + ncols = fscanf(file, "%f %e %e %e %e %e", &z, &p[0], &p[1], &p[2], &p[3], &p[4]); + if (ncols<0) break; + z /= 1000.; fG1[i] = p[4] * kCrossSection * kFlux; // 1/m/s // 1/3 of nominal intensity at startup @@ -191,18 +209,18 @@ void AliGenHaloProtvino::Init() Float_t sum1 = 0.; Float_t sum2 = 0.; - for (Int_t i = 0; i < 300; i++) { - Float_t z = 20.+i*1.; - z*=100; - Float_t wgt1 = GasPressureWeight(z); - Float_t wgt2 = GasPressureWeight(-z); -// printf("weight: %f %f %f %f %f \n", z, wgt1, wgt2, fZ1[20], fZ2[20]); + for (Int_t iz = 0; iz < 300; iz++) { + Float_t zpos = 20. + iz * 1.; + zpos *= 100; + Float_t wgt1 = GasPressureWeight( zpos); + Float_t wgt2 = GasPressureWeight(-zpos); sum1 += wgt1; sum2 += wgt2; } sum1/=250.; sum2/=250.; printf("\n %f %f \n \n", sum1, sum2); + delete file; } //____________________________________________________________ @@ -254,12 +272,15 @@ void AliGenHaloProtvino::Generate() } // Count tracks nread++; - if (fNpart !=-1 && nread > fNpart) break; + if (fNpart !=-1 && nread >= fNpart) break; } // // Mean time between interactions // - Float_t dT = fTimePerEvent/nInt; // sec + + Float_t dT = 0.; // sec + if (nInt > 0) + dT = fTimePerEvent/nInt; Float_t t = 0; // sec // @@ -361,15 +382,6 @@ void AliGenHaloProtvino::Generate() } -AliGenHaloProtvino& AliGenHaloProtvino::operator=(const AliGenHaloProtvino& rhs) -{ -// Assignment operator - rhs.Copy(*this); - return *this; -} - - - Float_t AliGenHaloProtvino::GasPressureWeight(Float_t zPrimary) { // @@ -410,7 +422,7 @@ Float_t AliGenHaloProtvino::GasPressureWeight(Float_t zPrimary) return weight; } -void AliGenHaloProtvino::Draw() +void AliGenHaloProtvino::Draw(Option_t *) { // Draws the gas pressure distribution Float_t z[400]; @@ -429,15 +441,6 @@ void AliGenHaloProtvino::Draw() } -void AliGenHaloProtvino::Copy(TObject&) const -{ - // - // Copy - // - Fatal("Copy","Not implemented!\n"); -} - - /* # Title: README file for the sources of IR8 machine induced background # Author: Vadim Talanov