]>
Commit | Line | Data |
---|---|---|
aee8290b | 1 | #ifndef ALIRUN_H |
2 | #define ALIRUN_H | |
3da30618 | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
e191bb57 | 8 | // |
2057aecb | 9 | // General configuration class for Simulation and Reconstruction |
10 | // Basic driver for AliRoot runs | |
11 | // Containing pointers to data elements for AliRoot | |
e191bb57 | 12 | // |
13 | ||
4d81e5e7 | 14 | #include <TSystem.h> |
116cbefd | 15 | |
e2afb3b6 | 16 | class TRandom; |
1578254f | 17 | |
88cb7938 | 18 | #include "AliRunLoader.h" |
e2afb3b6 | 19 | class AliGenEventHeader; |
65fb704d | 20 | class AliGenerator; |
e2afb3b6 | 21 | class AliHeader; |
22 | class AliLego; | |
23 | class AliLegoGenerator; | |
5d12ce38 | 24 | class AliMC; |
e2afb3b6 | 25 | class AliMagF; |
9e1a0ddb | 26 | class AliStack; |
88cb7938 | 27 | |
1578254f | 28 | |
5d12ce38 | 29 | class AliRun : public TNamed { |
3d45e923 | 30 | |
fe4da5cc | 31 | public: |
32 | // Creators - distructors | |
33 | AliRun(); | |
34 | AliRun(const char *name, const char *title); | |
35 | virtual ~AliRun(); | |
36 | ||
8494b010 | 37 | TObjArray *Detectors() const {return fModules;} |
38 | TObjArray *Modules() const {return fModules;} | |
fe4da5cc | 39 | virtual AliMagF *Field() const {return fField;} |
fe4da5cc | 40 | virtual void FinishRun(); |
88cb7938 | 41 | void AddModule(AliModule* mod); |
42 | Int_t GetEvNumber() const; | |
fe4da5cc | 43 | Int_t GetRunNumber() const {return fRun;} |
eef4b160 | 44 | void SetEventNrInRun(Int_t event) {fEventNrInRun=event;} |
45 | Int_t GetEventNrInRun() const {return fEventNrInRun;} | |
6df200c3 | 46 | Int_t GetEventsPerRun() const {return fEventsPerRun;} |
5d12ce38 | 47 | Int_t GetNdets() const {return fNdets;} |
94de3818 | 48 | AliModule *GetModule(const char *name) const; |
49 | AliDetector *GetDetector(const char *name) const; | |
50 | Int_t GetModuleID(const char *name) const; | |
39de14fb | 51 | virtual const char *GetBaseFile() const |
52 | {return fBaseFileName.Data();} | |
fe4da5cc | 53 | virtual Int_t GetEvent(Int_t event); |
45189757 | 54 | virtual void SetEvent(Int_t event) {fEvent=event;} |
94de3818 | 55 | virtual void SetConfigFunction(const char * config="Config();"); |
45189757 | 56 | virtual const char *GetConfigFunction() const |
57 | {return fConfigFunction.Data();} | |
42f33748 | 58 | virtual void SetGenEventHeader(AliGenEventHeader* header); |
5d12ce38 | 59 | AliMC* GetMCApp() const {return fMCApp;} |
d47c658f | 60 | virtual void Hits2Digits(const char *detector=0); |
61 | virtual void Hits2SDigits(const char *detector=0) {Tree2Tree("S",detector);} | |
62 | virtual void SDigits2Digits(const char *detector=0) {Tree2Tree("D",detector);} | |
63 | virtual void Digits2Reco(const char *detector=0) {Tree2Tree("R",detector);} | |
875c717b | 64 | virtual void InitMC(const char *setup="Config.C"); |
65 | virtual void Init(const char *setup="Config.C") {InitMC(setup);} | |
b21a3d1a | 66 | Bool_t IsFolder() const {return kTRUE;} |
838edcaf | 67 | virtual AliLego* Lego() const {return fLego;} |
4a9de4af | 68 | Bool_t IsRootGeometry() const {return fIsRootGeometry;} |
69 | void SetRootGeometry(Bool_t flag=kTRUE); | |
70 | const char* GetGeometryFileName() const {return fGeometryFileName.Data();} | |
ced249e6 | 71 | void SetGeometryFromFile(const char *filename) { |
72 | SetRootGeometry(); | |
73 | fGeometryFileName = filename; | |
74 | } | |
75 | void SetGeometryFromCDB(); | |
76 | Bool_t IsGeomFromCDB() const {return fGeometryFromCDB;} | |
4539539b | 77 | const char* GetTriggerDescriptor() const {return fTriggerDescriptor.Data();} |
78 | void SetTriggerDescriptor(const char *name) {fTriggerDescriptor = name;} | |
fe4da5cc | 79 | virtual void ResetDigits(); |
2ab0c725 | 80 | virtual void ResetSDigits(); |
e2afb3b6 | 81 | virtual void SetBaseFile(const char *filename="galice.root"); |
875c717b | 82 | virtual void RunMC(Int_t nevent=1, const char *setup="Config.C"); |
dea76e7a | 83 | virtual void RunLego(const char *setup="Config.C",Int_t nc1=60,Float_t c1min=2,Float_t c1max=178, |
88cb7938 | 84 | Int_t nc2=60,Float_t c2min=0,Float_t c2max=360,Float_t rmin=0, |
93dccc77 | 85 | Float_t rmax=430,Float_t zmax=10000, AliLegoGenerator* gener=NULL, Int_t nev = -1); |
dffd31ef | 86 | virtual Bool_t IsLegoRun() const {return (fLego!=0);} |
07c4aae4 | 87 | virtual void SetField(Int_t type=2, Int_t version=1, Float_t scale=1, Float_t maxField=10, const char* filename="$(ALICE_ROOT)/data/field01.dat"); |
d8408e76 | 88 | virtual void SetField(AliMagF* magField); |
94de3818 | 89 | virtual TDatabasePDG* PDGDB() const {return fPDGDB;} |
b9d0a01d | 90 | |
b9d0a01d | 91 | virtual void Field(const Double_t* x, Double_t* b) const; |
5d12ce38 | 92 | |
93 | // Delegations | |
94 | virtual void ResetHits(); | |
95 | virtual AliGenerator* Generator() const; | |
3d45e923 | 96 | |
4d81e5e7 | 97 | Bool_t IsFileAccessible(Char_t* name, EAccessMode mode = kFileExists); |
98 | static Bool_t IsFileAccessible(const char* fnam, EAccessMode mode = kFileExists); | |
3d45e923 | 99 | |
b9d0a01d | 100 | // |
101 | // End of MC Application | |
fe4da5cc | 102 | |
88cb7938 | 103 | void SetRunLoader(AliRunLoader* rloader); |
d3b3a3b2 | 104 | |
88cb7938 | 105 | virtual void Announce() const; |
106 | ||
107 | virtual void InitLoaders(); //prepares run (i.e. creates getters) | |
2057aecb | 108 | |
aee8290b | 109 | protected: |
3d45e923 | 110 | void SetRunNumber(Int_t run) {fRun=run;} |
9e1a0ddb | 111 | virtual void Tree2Tree(Option_t *option, const char *detector=0); |
2ab0c725 | 112 | Int_t fRun; //! Current run number |
113 | Int_t fEvent; //! Current event number (from 1) | |
eef4b160 | 114 | Int_t fEventNrInRun; //! Current unique event number in run |
6df200c3 | 115 | Int_t fEventsPerRun; // Number of events per run |
2ab0c725 | 116 | TObjArray *fModules; // List of Detectors |
5d12ce38 | 117 | AliMC *fMCApp; // Pointer to virtual MC Application |
2ab0c725 | 118 | AliMagF *fField; // Magnetic Field Map |
2ab0c725 | 119 | Int_t fNdets; // Number of detectors |
2ab0c725 | 120 | Bool_t fInitDone; //! True when initialisation done |
121 | AliLego *fLego; //! Pointer to aliLego object if it exists | |
122 | TDatabasePDG *fPDGDB; // Particle factory object | |
2ab0c725 | 123 | TString fConfigFunction; // Configuration file to be executed |
124 | TRandom *fRandom; // Pointer to the random number generator | |
2ab0c725 | 125 | TString fBaseFileName; // Name of the base root file |
4a9de4af | 126 | Bool_t fIsRootGeometry; //! Flag telling if the geometry is loaded from file |
3d45e923 | 127 | Bool_t fGeometryFromCDB; //! Flag telling if the geometry is to be loaded from OCDB |
4a9de4af | 128 | TString fGeometryFileName; //! Name of the geometry file |
4539539b | 129 | TString fTriggerDescriptor; // Trigger descriptor identifier |
88cb7938 | 130 | AliRunLoader *fRunLoader; //!run getter - written as a separate object |
ef42d733 | 131 | private: |
7dd2cbe4 | 132 | AliRun(const AliRun&); // Not implemented |
133 | AliRun& operator = (const AliRun&); // Not implemented | |
ef42d733 | 134 | |
7dd2cbe4 | 135 | ClassDef(AliRun,12) //Supervisor class for all Alice detectors |
fe4da5cc | 136 | }; |
137 | ||
75a25b1b | 138 | R__EXTERN AliRun *gAlice; |
4d81e5e7 | 139 | |
fe4da5cc | 140 | #endif |