]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIRUN_H | |
2 | #define ALIRUN_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 | // General configuration class for Simulation and Reconstruction | |
10 | // Basic driver for AliRoot runs | |
11 | // Containing pointers to data elements for AliRoot | |
12 | // | |
13 | ||
14 | #include <TError.h> | |
15 | #include <TSystem.h> | |
16 | ||
17 | class TGeometry; | |
18 | class TParticle; | |
19 | class TRandom; | |
20 | class TTree; | |
21 | ||
22 | #include "AliRunLoader.h" | |
23 | class AliDisplay; | |
24 | class AliGenEventHeader; | |
25 | class AliGenerator; | |
26 | class AliHeader; | |
27 | class AliLego; | |
28 | class AliLegoGenerator; | |
29 | class AliMC; | |
30 | class AliMagF; | |
31 | class AliStack; | |
32 | ||
33 | enum {kKeepBit=1, kDaughtersBit=2, kDoneBit=4}; | |
34 | ||
35 | class AliRun : public TNamed { | |
36 | public: | |
37 | // Creators - distructors | |
38 | AliRun(); | |
39 | AliRun(const char *name, const char *title); | |
40 | AliRun(const AliRun &arun); | |
41 | virtual ~AliRun(); | |
42 | ||
43 | AliRun& operator = (const AliRun &arun) | |
44 | {arun.Copy(*this); return (*this);} | |
45 | virtual void Build(); | |
46 | virtual void BuildSimpleGeometry(); | |
47 | virtual void CleanDetectors(); | |
48 | TObjArray *Detectors() const {return fModules;} | |
49 | TObjArray *Modules() const {return fModules;} | |
50 | AliDisplay *Display() const { return fDisplay;} | |
51 | virtual AliMagF *Field() const {return fField;} | |
52 | virtual void FinishRun(); | |
53 | void AddModule(AliModule* mod); | |
54 | Int_t GetEvNumber() const; | |
55 | Int_t GetRunNumber() const {return fRun;} | |
56 | void SetRunNumber(Int_t run) {fRun=run;} | |
57 | void SetEventNrInRun(Int_t event) {fEventNrInRun=event;} | |
58 | Int_t GetEventNrInRun() const {return fEventNrInRun;} | |
59 | Int_t GetEventsPerRun() const {return fEventsPerRun;} | |
60 | Int_t GetNdets() const {return fNdets;} | |
61 | AliModule *GetModule(const char *name) const; | |
62 | AliDetector *GetDetector(const char *name) const; | |
63 | Int_t GetModuleID(const char *name) const; | |
64 | virtual const char *GetBaseFile() const | |
65 | {return fBaseFileName.Data();} | |
66 | virtual Int_t GetEvent(Int_t event); | |
67 | virtual void SetEvent(Int_t event) {fEvent=event;} | |
68 | virtual void SetConfigFunction(const char * config="Config();"); | |
69 | virtual const char *GetConfigFunction() const | |
70 | {return fConfigFunction.Data();} | |
71 | TGeometry *GetGeometry(); | |
72 | virtual void SetGenEventHeader(AliGenEventHeader* header); | |
73 | AliMC* GetMCApp() const {return fMCApp;} | |
74 | virtual void Hits2Digits(const char *detector=0); | |
75 | virtual void Hits2SDigits(const char *detector=0) {Tree2Tree("S",detector);} | |
76 | virtual void SDigits2Digits(const char *detector=0) {Tree2Tree("D",detector);} | |
77 | virtual void Digits2Reco(const char *detector=0) {Tree2Tree("R",detector);} | |
78 | virtual void InitMC(const char *setup="Config.C"); | |
79 | virtual void Init(const char *setup="Config.C") {InitMC(setup);} | |
80 | Bool_t IsFolder() const {return kTRUE;} | |
81 | virtual AliLego* Lego() const {return fLego;} | |
82 | Bool_t IsRootGeometry() const {return fIsRootGeometry;} | |
83 | void SetRootGeometry(Bool_t flag=kTRUE); | |
84 | const char* GetGeometryFileName() const {return fGeometryFileName.Data();} | |
85 | void SetGeometryFileName(const char *name) {fGeometryFileName = name;} | |
86 | const char* GetTriggerDescriptor() const {return fTriggerDescriptor.Data();} | |
87 | void SetTriggerDescriptor(const char *name) {fTriggerDescriptor = name;} | |
88 | virtual void ResetDigits(); | |
89 | virtual void ResetSDigits(); | |
90 | virtual void ResetPoints(); | |
91 | virtual void SetBaseFile(const char *filename="galice.root"); | |
92 | virtual void RunMC(Int_t nevent=1, const char *setup="Config.C"); | |
93 | virtual void Run(Int_t nevent=1, const char *setup="Config.C") {RunMC(nevent,setup);} | |
94 | virtual void RunLego(const char *setup="Config.C",Int_t nc1=60,Float_t c1min=2,Float_t c1max=178, | |
95 | Int_t nc2=60,Float_t c2min=0,Float_t c2max=360,Float_t rmin=0, | |
96 | Float_t rmax=430,Float_t zmax=10000, AliLegoGenerator* gener=NULL); | |
97 | virtual Bool_t IsLegoRun() const {return (fLego!=0);} | |
98 | virtual void RunReco(const char *detector=0, Int_t first = 0, Int_t last = 0); | |
99 | virtual void SetDisplay(AliDisplay *display) {fDisplay = display;} | |
100 | 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"); | |
101 | virtual void SetField(AliMagF* magField); | |
102 | virtual TDatabasePDG* PDGDB() const {return fPDGDB;} | |
103 | ||
104 | virtual void Field(const Double_t* x, Double_t* b) const; | |
105 | ||
106 | // Delegations | |
107 | virtual void ResetHits(); | |
108 | virtual AliGenerator* Generator() const; | |
109 | ||
110 | ||
111 | ||
112 | // Added by Alberto Colla | |
113 | ||
114 | Bool_t IsFileAccessible(Char_t* name, EAccessMode mode = kFileExists); | |
115 | static Bool_t IsFileAccessible(const char* fnam, EAccessMode mode = kFileExists); | |
116 | // Added by Alberto Colla | |
117 | ||
118 | // | |
119 | // End of MC Application | |
120 | ||
121 | TTree *TreeE() {return (fRunLoader)?fRunLoader->TreeE():0x0;} | |
122 | TTree *TreeK() {return (fRunLoader)?fRunLoader->TreeK():0x0;} | |
123 | AliStack *Stack() {return (fRunLoader)?fRunLoader->Stack():0x0;} | |
124 | AliHeader* GetHeader() {return (fRunLoader)?fRunLoader->GetHeader():0x0;} | |
125 | ||
126 | TTree *TreeD() const {MayNotUse("TreeD"); return 0x0;} | |
127 | TTree *TreeS() const {MayNotUse("TreeS"); return 0x0;} | |
128 | TTree *TreeR() const {MayNotUse("TreeR"); return 0x0;} | |
129 | ||
130 | ||
131 | void SetRunLoader(AliRunLoader* rloader); | |
132 | AliRunLoader* GetRunLoader() const {return fRunLoader;} | |
133 | // void SetEventFolderName(const char* eventfoldername); | |
134 | virtual void Announce() const; | |
135 | ||
136 | virtual void InitLoaders(); //prepares run (i.e. creates getters) | |
137 | static void Deprecated(TObject *obj, const char *method, const char *replace) | |
138 | {// Indicates deprecated method | |
139 | if (obj) ::Warning(Form("%s::%s", obj->ClassName(), method), | |
140 | "method is depricated\nPlease use: %s", replace); | |
141 | else ::Warning(method, "method is depricated\nPlease use: %s", replace); | |
142 | } | |
143 | ||
144 | protected: | |
145 | virtual void Tree2Tree(Option_t *option, const char *detector=0); | |
146 | Int_t fRun; //! Current run number | |
147 | Int_t fEvent; //! Current event number (from 1) | |
148 | Int_t fEventNrInRun; //! Current unique event number in run | |
149 | Int_t fEventsPerRun; // Number of events per run | |
150 | TObjArray *fModules; // List of Detectors | |
151 | TGeometry *fGeometry; // Pointer to geometry | |
152 | AliMC *fMCApp; // Pointer to virtual MC Application | |
153 | AliDisplay *fDisplay; //! Pointer to event display | |
154 | AliMagF *fField; // Magnetic Field Map | |
155 | Int_t fNdets; // Number of detectors | |
156 | Bool_t fInitDone; //! True when initialisation done | |
157 | AliLego *fLego; //! Pointer to aliLego object if it exists | |
158 | TDatabasePDG *fPDGDB; // Particle factory object | |
159 | TString fConfigFunction; // Configuration file to be executed | |
160 | TRandom *fRandom; // Pointer to the random number generator | |
161 | TString fBaseFileName; // Name of the base root file | |
162 | Bool_t fIsRootGeometry; //! Flag telling if the geometry is loaded from file | |
163 | TString fGeometryFileName; //! Name of the geometry file | |
164 | TString fTriggerDescriptor; // Trigger descriptor identifier | |
165 | AliRunLoader *fRunLoader; //!run getter - written as a separate object | |
166 | private: | |
167 | void Copy(TObject &arun) const; | |
168 | ||
169 | ClassDef(AliRun,11) //Supervisor class for all Alice detectors | |
170 | }; | |
171 | ||
172 | R__EXTERN AliRun *gAlice; | |
173 | ||
174 | #endif |