#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
//
// 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()
{
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];
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
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) {
//
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;
} 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
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;
}
//____________________________________________________________
Float_t zVertexOld = -1.e10;
Int_t nInt = 0; // Counts number of interactions
- Float_t Wgt = 0.;
+ Float_t wwgt = 0.;
while(1) {
//
}
// 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
//
PushTrack(fTrackIt,ntP,ipart[nprim],p,origin,polar,t,kPNoProcess,nt,fParentWeight);
}
}
- Wgt += fParentWeight;
+ wwgt += fParentWeight;
SetHighWaterMark(nt);
}
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)
{
//
return weight;
}
-void AliGenHaloProtvino::Draw()
+void AliGenHaloProtvino::Draw(Option_t *)
{
// Draws the gas pressure distribution
Float_t z[400];
}
-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>