Converting PWG/TRD to native cmake
[u/mrichter/AliRoot.git] / EVGEN / AliGenHalo.h
1 #ifndef ALIGENHALO_H
2 #define ALIGENHALO_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8
9 #include "AliGenerator.h"
10 #include <TString.h>
11
12 // Read beam halo background particles from a boundary source
13 // Boundary source is in the LHCb format
14 // http://www.hep.manchester.ac.uk/u/robert/LHC_backgrounds/Note-MIBStudies.pdf
15 // and has been provided by Robert Appleby
16 // Author: andreas.morsch@cern.ch
17
18 class AliGenHalo : public AliGenerator
19 {
20 public:
21     enum constants{kY1Day0, kY1Day70, kY2D0, kY2D10, kY3D90, kLHCPR674Startup, kLHCPR674Conditioned};
22     AliGenHalo();
23     AliGenHalo(Int_t npart);
24     virtual ~AliGenHalo();
25     virtual void Init();
26     virtual void SetFileName(TString filename) {fFileName=TString(filename);}
27     virtual void Generate();
28     virtual Float_t GasPressureWeight(Float_t zPrimary);
29     virtual void SetSide(Int_t flag = 1) {fSide = flag;}
30     virtual void SetNskip(Int_t nskip) {fNskip = nskip;}
31     virtual void SetRunPeriod(Int_t t = kY3D90) {fRunPeriod = t;}
32     virtual void SetTimePerEvent(Float_t t = 1.e-4) {fTimePerEvent = t;}
33     virtual void Draw(Option_t * opt="");
34     virtual void  CountEvents();
35  private:
36     virtual void  SkipEvents();
37     virtual Int_t ReadNextParticle();
38  protected:
39     FILE*    fFile;                       // ! Pointer to file
40     TString  fFileName;                   //   Choose the file
41     Int_t    fSide;                       //   Muon arm side (1) / Castor side (-1)
42     Int_t    fRunPeriod;                  //   LHC Running Period
43     Float_t  fTimePerEvent;               //   Time corresponding to one event [s]
44     Int_t    fNskip;                      //   Number of entries to skip
45     Float_t* fZ1;                         // ! z-positions for gas pressure tables
46     Float_t* fZ2;                         // ! z-positions for gas pressure tables 
47     Float_t* fG1;                         // ! gas pressures
48     Float_t* fG2;                         // ! gas pressures
49     Int_t    fGPASize;                    // ! Size of arrays
50     Int_t    fLossID;                     // ! unique loss ID
51     Int_t    fLossA;                      // ! atomic number of scatterer
52     Int_t    fPdg;                        // ! pdg code 
53     Float_t  fLossT0;                     // ! relative time
54     Float_t  fLossZ;                      // ! scaterring position 
55     Float_t  fLossW;                      // ! weight of proton loss
56     Float_t  fXS;                         // ! x-position on scoring plane 
57     Float_t  fYS;                         // ! y-position on scoring plane
58     Float_t  fZS;                         // ! z-position on scoring plane
59     Float_t  fDX;                         // ! direction cosine x
60     Float_t  fDY;                         // ! direction cosine y
61     Float_t  fEkin;                       // ! kinetic energy
62     Float_t  fTS;                         // ! relative arrival time
63     Float_t  fWS;                         // ! weight
64  private:
65     AliGenHalo(const AliGenHalo &Halo);
66     AliGenHalo & operator=(const AliGenHalo & rhs);
67     
68     ClassDef(AliGenHalo,1)        // LHC beam halo boundary source
69 };
70 #endif
71
72
73
74
75
76