#ifndef URUN_H
#define URUN_H

#include "TNamed.h"
#include "TString.h"


class URun : public TNamed {

 private:
    TString    fGenerator;     // Generator description
    TString    fComment;       // Run comment
    TString    fDecayer;       // Decayer description
    Int_t      fAProj;         // Projectile mass number
    Int_t      fZProj;         // Projectile charge
    Double32_t fPProj;         // Projectile momentum per nucleon (GeV)
    Int_t      fATarg;         // Target mass number
    Int_t      fZTarg;         // Target charge
    Double32_t fPTarg;         // Target momentum per nucleon (GeV)
    Double32_t fBMin;          // Minimum impact parameter
    Double32_t fBMax;          // Maximum impact parameter
    
    Int_t      fBWeight;       
    // Impact parameter weighting
    // 0 for geometrical weights (bdb)
    // 1 for flat distribution
    
    Double32_t fPhiMin;        // Event plane minimum angle (rad)
    Double32_t fPhiMax;        // Event plane maximum angle (rad)
    Double32_t fSigma;         // Cross-section (mb)
    Int_t      fNEvents;       // Requested number of events
    
 public:
    URun();
    URun(const char *generator, const char *comment, Int_t aProj,
	 Int_t zProj, Double_t pProj, Int_t aTarg, Int_t zTarg,
	 Double_t pTarg, Double_t bMin, Double_t bMax, Int_t bWeight,
	 Double_t phiMin, Double_t phiMax, Double_t sigma, Int_t nEvents);
    virtual ~URun();
    using TNamed::Print;
    void Print(Option_t *option = "");
    void GetGenerator(TString& generator) {generator = fGenerator;}
    void GetComment(TString& comment)     {comment = fComment;}
    void GetDecayer(TString& decayer)     {decayer = fDecayer;}
    inline Int_t       GetAProj()   const {return fAProj;}
    inline Int_t       GetZProj()   const {return fZProj;}
    inline Double_t    GetPProj()   const {return fPProj;}
    inline Int_t       GetATarg()   const {return fATarg;}
    inline Int_t       GetZTarg()   const {return fZTarg;}
    inline Double_t    GetPTarg()   const {return fPTarg;}
    inline Double_t    GetBMin()    const {return fBMin;}
    inline Double_t    GetBMax()    const {return fBMax;}
    inline Int_t       GetBWeight() const {return fBWeight;}
    inline Double_t    GetPhiMax()  const {return fPhiMax;}
    inline Double_t    GetPhiMin()  const {return fPhiMin;}
    inline Double_t    GetSigma()   const {return fSigma;}
    inline Int_t       GetNEvents() const {return fNEvents;}
    Double_t    GetSqrtS();
    Double_t    GetProjectileEnergy();
    Double_t    GetTargetEnergy();
    Double_t    GetBetaCM();
    Double_t    GetGammaCM();
    inline void SetNEvents(Int_t nEvents)   {fNEvents = nEvents;}
    inline void SetPProj  (Double_t pProj)  {fPProj   = pProj;}
    inline void SetPTarg  (Double_t pTarg)  {fPTarg   = pTarg;}
    inline void SetDecayer(TString decayer) {fDecayer = decayer;}
    
    ClassDef(URun, 1);
};


#endif
 URun.h:1
 URun.h:2
 URun.h:3
 URun.h:4
 URun.h:5
 URun.h:6
 URun.h:7
 URun.h:8
 URun.h:9
 URun.h:10
 URun.h:11
 URun.h:12
 URun.h:13
 URun.h:14
 URun.h:15
 URun.h:16
 URun.h:17
 URun.h:18
 URun.h:19
 URun.h:20
 URun.h:21
 URun.h:22
 URun.h:23
 URun.h:24
 URun.h:25
 URun.h:26
 URun.h:27
 URun.h:28
 URun.h:29
 URun.h:30
 URun.h:31
 URun.h:32
 URun.h:33
 URun.h:34
 URun.h:35
 URun.h:36
 URun.h:37
 URun.h:38
 URun.h:39
 URun.h:40
 URun.h:41
 URun.h:42
 URun.h:43
 URun.h:44
 URun.h:45
 URun.h:46
 URun.h:47
 URun.h:48
 URun.h:49
 URun.h:50
 URun.h:51
 URun.h:52
 URun.h:53
 URun.h:54
 URun.h:55
 URun.h:56
 URun.h:57
 URun.h:58
 URun.h:59
 URun.h:60
 URun.h:61
 URun.h:62
 URun.h:63
 URun.h:64
 URun.h:65
 URun.h:66
 URun.h:67
 URun.h:68
 URun.h:69
 URun.h:70
 URun.h:71
 URun.h:72