Updates for pile-up vertex (F. Prino)
[u/mrichter/AliRoot.git] / LHC / AliLhcBeam.h
1 #ifndef ALILHCBEAM_H
2 #define ALILHCBEAM_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 // Class that holds all parameters about an LHC beam.
10 // The parameters can change with time.
11 // A monitor can be set that stores the time distribution of 
12 // emittance and number of particles per bunch.
13 // Author: Andreas Morsch
14 // andreas.morsch@cern.ch
15 //
16
17 #include <TNamed.h>
18 #include "AliLhcMonitor.h"
19
20 class AliLHC;
21
22 class AliLhcBeam : public TNamed, public AliLhcMonitor
23 {
24  public:
25     AliLhcBeam(AliLHC* lhc);
26     AliLhcBeam(const AliLhcBeam &beam);
27     virtual ~AliLhcBeam();
28     
29     virtual void Init();
30     
31     virtual Float_t N() const {return fN;}
32     virtual Float_t A() const {return fA;}
33     virtual Float_t Z() const {return fZ;}
34     virtual Float_t Emittance() const   {return fEmittance;}
35     virtual Float_t Energy()    const   {return fEnergy;}
36     virtual Float_t Gamma()     const   {return fGamma;}
37     virtual Float_t LongEmittance() const {return fEmittanceL;}
38     virtual Float_t EnergySpread()  const {return fEnergySpread;}
39
40     virtual void  SetParticle(Float_t a, Float_t z) {fA = a; fZ = z;}
41     virtual void  SetN(Float_t n) {fN = n;}         
42     virtual void  SetAccelerator(AliLHC* acc) {fAccelerator = acc;}
43     virtual void  SetEnergy(Float_t  e) {fEnergy = e;}
44     virtual void  SetNEmittance(Float_t  e) {fNEmittance = e;}
45     virtual void  SetLongEmittance(Float_t  e) {fEmittanceL = e;}
46     virtual void  SetEnergySpread(Float_t b) {fEnergySpread = b;}    
47     
48     virtual void  RemoveParticles(Float_t loss);
49     virtual void  IncreaseEmittance(Float_t de, Float_t del);
50     virtual void  SetMonitor(Int_t n);
51     virtual void  Record();
52     virtual void  DrawPlots();
53
54
55     AliLhcBeam & operator=(const AliLhcBeam & rhs);
56     
57  protected:
58     AliLHC* fAccelerator;         // Accelerator
59     Float_t fN;                   // Number of Particles
60     Float_t fN0;                  // Initial Number of Particles
61     Float_t fNEmittance;          // Normalized Emittance
62     Float_t fEmittance;           // Emittance
63     Float_t fEmittance0;          // Initial Emittance
64     Float_t fEmittanceL;          // Longitudinal Emittance
65     Float_t fEmittanceL0;         // Longitudinal Emittance
66     Float_t fEnergySpread;        // Energy Spread
67
68     Float_t fA;                   // Atomic Number
69     Float_t fZ;                   // Charge Number 
70     Float_t fEnergy;              // Energy   
71     Float_t fGamma;               // relativistic gamma 
72     //
73     Float_t* fTimeArray;          // [fNmax] Time array
74     Float_t* fEmittanceArray;     // [fNmax] Emittance array
75     Float_t* fEmittanceLArray;    // [fNmax] Long. Emittance array      
76 //
77     ClassDef(AliLhcBeam,1) // LHC Beam
78 };
79
80 #endif
81
82
83
84
85