]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenHaloProtvino.cxx
Converting PWG/TRD to native cmake
[u/mrichter/AliRoot.git] / EVGEN / AliGenHaloProtvino.cxx
index e598e1a82a013b553bb7720904613d8e62dc83c6..4466a194e37e2ee9f556687316d333efa80215ca 100644 (file)
 #include <TPDGCode.h>
 #include <TSystem.h>
 
+#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;
 }
 
 //____________________________________________________________
@@ -232,7 +250,7 @@ void AliGenHaloProtvino::Generate()
   
   Float_t zVertexOld = -1.e10;
   Int_t   nInt       = 0;        // Counts number of interactions
-  Float_t Wgt = 0.;
+  Float_t wwgt = 0.;
   
   while(1) {
 //
@@ -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
   
 //
@@ -343,7 +364,7 @@ void AliGenHaloProtvino::Generate()
              PushTrack(fTrackIt,ntP,ipart[nprim],p,origin,polar,t,kPNoProcess,nt,fParentWeight);
          }
       }
-      Wgt += fParentWeight;
+      wwgt += fParentWeight;
       
       SetHighWaterMark(nt);
   }
@@ -356,20 +377,11 @@ void AliGenHaloProtvino::Generate()
   delete [] vy;      
   delete [] tx;      
   delete [] ty;     
-  printf("Total weight %f\n\n", Wgt);
+  printf("Total weight %f\n\n", wwgt);
   
 }
  
 
-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 <Vadim.Talanov@cern.ch>