]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenHalo.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / EVGEN / AliGenHalo.h
index e61d49e4e1918cc97d4ea66b79a7a9a20fb29ef4..c7c8379790ae7b3725c6464d9c70a06c95a23597 100644 (file)
@@ -9,25 +9,63 @@
 #include "AliGenerator.h"
 #include <TString.h>
 
-// Read background particles from a boundary source
-// Very specialized generator to simulate background from beam halo.
+// Read beam halo background particles from a boundary source
+// Boundary source is in the LHCb format
+// http://www.hep.manchester.ac.uk/u/robert/LHC_backgrounds/Note-MIBStudies.pdf
+// and has been provided by Robert Appleby
 // Author: andreas.morsch@cern.ch
 
 class AliGenHalo : public AliGenerator
 {
 public:
+    enum constants{kY1Day0, kY1Day70, kY2D0, kY2D10, kY3D90, kLHCPR674Startup, kLHCPR674Conditioned};
     AliGenHalo();
     AliGenHalo(Int_t npart);
-    AliGenHalo(const AliGenHalo &Halo);
     virtual ~AliGenHalo();
     virtual void Init();
     virtual void SetFileName(TString filename) {fFileName=TString(filename);}
     virtual void Generate();
+    virtual Float_t GasPressureWeight(Float_t zPrimary);
+    virtual void SetSide(Int_t flag = 1) {fSide = flag;}
+    virtual void SetNskip(Int_t nskip) {fNskip = nskip;}
+    virtual void SetRunPeriod(Int_t t = kY3D90) {fRunPeriod = t;}
+    virtual void SetTimePerEvent(Float_t t = 1.e-4) {fTimePerEvent = t;}
+    virtual void Draw(Option_t * opt="");
+    virtual void  CountEvents();
+ private:
+    virtual void  SkipEvents();
+    virtual Int_t ReadNextParticle();
+ protected:
+    FILE*    fFile;                       // ! Pointer to file
+    TString  fFileName;                   //   Choose the file
+    Int_t    fSide;                       //   Muon arm side (1) / Castor side (-1)
+    Int_t    fRunPeriod;                  //   LHC Running Period
+    Float_t  fTimePerEvent;               //   Time corresponding to one event [s]
+    Int_t    fNskip;                      //   Number of entries to skip
+    Float_t* fZ1;                         // ! z-positions for gas pressure tables
+    Float_t* fZ2;                         // ! z-positions for gas pressure tables 
+    Float_t* fG1;                         // ! gas pressures
+    Float_t* fG2;                         // ! gas pressures
+    Int_t    fGPASize;                    // ! Size of arrays
+    Int_t    fLossID;                     // ! unique loss ID
+    Int_t    fLossA;                      // ! atomic number of scatterer
+    Int_t    fPdg;                        // ! pdg code 
+    Float_t  fLossT0;                     // ! relative time
+    Float_t  fLossZ;                      // ! scaterring position 
+    Float_t  fLossW;                      // ! weight of proton loss
+    Float_t  fXS;                         // ! x-position on scoring plane 
+    Float_t  fYS;                         // ! y-position on scoring plane
+    Float_t  fZS;                         // ! z-position on scoring plane
+    Float_t  fDX;                         // ! direction cosine x
+    Float_t  fDY;                         // ! direction cosine y
+    Float_t  fEkin;                       // ! kinetic energy
+    Float_t  fTS;                         // ! relative arrival time
+    Float_t  fWS;                         // ! weight
+ private:
+    AliGenHalo(const AliGenHalo &Halo);
     AliGenHalo & operator=(const AliGenHalo & rhs);
-protected:
-  FILE *fp;                             // ! Pointer to file
-  TString  fFileName;                   //   Choose the file
-  ClassDef(AliGenHalo,1) // LHC background boundary source (MARS input)
+    
+    ClassDef(AliGenHalo,1)        // LHC beam halo boundary source
 };
 #endif