Fixed bug in parent assignment and implemented Birk's law in the Step Manager
[u/mrichter/AliRoot.git] / LHC / AliLHC.h
1 #ifndef ALILHC_H
2 #define ALILHC_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 #include <TObject.h>
8 #include <TList.h>
9 #include <TObjArray.h>
10
11 class AliLhcIRegion;
12 class AliLhcProcess;
13 class AliLhcBeam;
14
15
16 class AliLHC : public TObject
17 {
18  public:
19     AliLHC();
20     AliLHC(const AliLHC &lhc);
21     virtual ~AliLHC();
22
23     virtual void AddIRegion(AliLhcIRegion *region);
24     virtual void AddProcess(AliLhcProcess *process);
25     virtual void SetBeams(AliLhcBeam* beam1, AliLhcBeam* beam2);
26     virtual void SetTime(Float_t dt, Float_t tmax) 
27         {fTimeStep = dt; fTimeMax = tmax;}
28     virtual void SetFillingTime(Float_t t) {fFillingTime = t;}
29     virtual void SetSetUpTime(Float_t t)   {fSetUpTime = t;}
30
31     virtual void SetRadius(Float_t r) {fRadius = r;}
32     virtual void SetAverageBeta(Float_t b) {fAverageBeta = b;}
33     virtual void SetAverageDisp(Float_t b) {fAverageDisp = b;}
34     
35     virtual Float_t Radius() {return fRadius;}
36     virtual Float_t AverageBeta() {return fAverageBeta;}
37     virtual Float_t AverageDisp() {return fAverageDisp;}
38     virtual Float_t SetUpTime()   {return fSetUpTime;}
39     virtual Float_t FillingTime() {return fFillingTime;}
40
41
42     virtual AliLhcBeam* Beam(Int_t i) 
43       {return (AliLhcBeam*) (*fBeams)[i];}
44     virtual TList* IRegions(){return fIRegions;}
45     virtual void Init();
46     virtual void EvolveTime();
47     virtual void Evaluate();
48     virtual Float_t  Time()     {return fTime;}
49     virtual Float_t  TimeStep() {return fTimeStep;}
50     virtual Float_t* TimeA()    {return fTimeA;}
51     virtual Int_t    Nt()       {return fNt;}
52     
53     AliLHC & operator=(const AliLHC & rhs);
54     
55  protected:
56     Int_t           fNRegions;              // Number of IR
57     Int_t           fNProcesses;            // Number of processes
58     TList*          fIRegions;              // List of intercation regions
59     TList*          fProcesses;             // Beam processes
60     TObjArray*      fBeams;                 // Lhc beams
61     Float_t         fRadius;                // Radius (cm)
62     Float_t         fAverageBeta;           // Average beta (cm)
63     Float_t         fAverageDisp;           // Average dispersion (cm)
64
65     Int_t    fNt;                  // Number of time steps
66     Int_t  fNmax;                  // Max. Number of time steps
67
68     Float_t  fTime;                // Current time
69     Float_t* fTimeA;               // [fNmax] Current time
70     Float_t  fTimeStep;            // Current time step
71     Float_t  fTimeMax;             // Maximal time 
72     //
73     Float_t  fFillingTime;         // Filling Time
74     Float_t  fSetUpTime;           // Set-up time
75 //
76     ClassDef(AliLHC,1) // LHC manager class
77 };
78
79 #endif
80
81
82
83
84
85
86
87
88