]>
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 | ||
94de3818 | 8 | class TBrowser; |
9 | class TList; | |
10 | class TTree; | |
11 | class TGeometry; | |
12 | class TDatabasePDG; | |
13 | #include <TArrayI.h> | |
14 | #include <TArrayF.h> | |
fe4da5cc | 15 | #include <TStopwatch.h> |
1578254f | 16 | |
94de3818 | 17 | class AliDetector; |
18 | class AliModule; | |
19 | class AliMagF; | |
20 | class AliMC; | |
21 | class AliLego; | |
22 | class AliDisplay; | |
0a520a66 | 23 | class AliLegoGenerator; |
fe4da5cc | 24 | #include "AliHeader.h" |
fe4da5cc | 25 | #include "AliGenerator.h" |
0a520a66 | 26 | #include "AliLegoGenerator.h" |
fe4da5cc | 27 | |
aee8290b | 28 | enum {kKeepBit=1, kDaughtersBit=2, kDoneBit=4}; |
1578254f | 29 | |
fe4da5cc | 30 | |
31 | class AliRun : public TNamed { | |
fe4da5cc | 32 | public: |
33 | // Creators - distructors | |
34 | AliRun(); | |
35 | AliRun(const char *name, const char *title); | |
36 | virtual ~AliRun(); | |
37 | ||
38 | virtual void AddHit(Int_t id, Int_t track, Int_t *vol, Float_t *hits) const; | |
39 | virtual void AddDigit(Int_t id, Int_t *tracks, Int_t *digits) const; | |
1cedd08a | 40 | virtual void AddHitList(TCollection *hitList) {fHitLists->Add(hitList);} |
fe4da5cc | 41 | virtual void Browse(TBrowser *b); |
42 | virtual void Build(); | |
43 | virtual void BuildSimpleGeometry(); | |
44 | virtual void CleanDetectors(); | |
45 | virtual void CleanParents(); | |
8494b010 | 46 | TObjArray *Detectors() const {return fModules;} |
47 | TObjArray *Modules() const {return fModules;} | |
fe4da5cc | 48 | Int_t CurrentTrack() const {return fCurrent;} |
49 | AliDisplay *Display() { return fDisplay;} | |
50 | virtual Int_t DistancetoPrimitive(Int_t px, Int_t py); | |
94de3818 | 51 | virtual void DumpPart (Int_t i) const; |
52 | virtual void DumpPStack () const; | |
fe4da5cc | 53 | virtual AliMagF *Field() const {return fField;} |
54 | virtual void FillTree(); | |
55 | virtual void FinishPrimary(); | |
56 | virtual void FinishEvent(); | |
57 | virtual void FinishRun(); | |
58 | virtual void FlagTrack(Int_t track); | |
875c717b | 59 | void AddEnergyDeposit(Int_t id, Float_t edep) |
60 | {fEventEnergy[id]+=edep;} | |
fe4da5cc | 61 | Int_t GetEvNumber() const {return fEvent;} |
62 | Int_t GetRunNumber() const {return fRun;} | |
8494b010 | 63 | void SetRunNumber(Int_t run) {fRun=run;} |
fe4da5cc | 64 | Int_t GetDebug() const {return fDebug;} |
94de3818 | 65 | AliModule *GetModule(const char *name) const; |
66 | AliDetector *GetDetector(const char *name) const; | |
67 | Int_t GetModuleID(const char *name) const; | |
fe4da5cc | 68 | virtual Int_t GetEvent(Int_t event); |
45189757 | 69 | virtual void SetEvent(Int_t event) {fEvent=event;} |
94de3818 | 70 | virtual void SetConfigFunction(const char * config="Config();"); |
45189757 | 71 | virtual const char *GetConfigFunction() const |
72 | {return fConfigFunction.Data();} | |
fe4da5cc | 73 | TGeometry *GetGeometry(); |
74 | AliHeader *GetHeader() {return &fHeader;} | |
45189757 | 75 | virtual void GetNextTrack(Int_t &mtrack, Int_t &ipart, Float_t *pmom, |
76 | Float_t &e, Float_t *vpos, Float_t *polar, | |
77 | Float_t &tof); | |
94de3818 | 78 | Int_t GetNtrack() const {return fNtrack;} |
79 | virtual Int_t GetPrimary(Int_t track) const; | |
875c717b | 80 | virtual void InitMC(const char *setup="Config.C"); |
81 | virtual void Init(const char *setup="Config.C") {InitMC(setup);} | |
b21a3d1a | 82 | Bool_t IsFolder() const {return kTRUE;} |
838edcaf | 83 | virtual AliLego* Lego() const {return fLego;} |
fe4da5cc | 84 | virtual void MakeTree(Option_t *option="KH"); |
85 | TClonesArray *Particles() {return fParticles;}; | |
86 | virtual void PurifyKine(); | |
87 | virtual Int_t PurifyKine(Int_t lastSavedTrack, Int_t nofTracks); | |
dffd31ef | 88 | virtual void BeginEvent(); |
fe4da5cc | 89 | virtual void ResetDigits(); |
90 | virtual void ResetHits(); | |
91 | virtual void ResetPoints(); | |
92 | virtual void SetTransPar(char *filename="$(ALICE_ROOT)/data/galice.cuts"); | |
93 | virtual void ResetStack() {fCurrent=-1;fHgwmk=0;fNtrack=0;fParticles->Clear();} | |
875c717b | 94 | virtual void RunMC(Int_t nevent=1, const char *setup="Config.C"); |
95 | virtual void Run(Int_t nevent=1, const char *setup="Config.C") | |
96 | {RunMC(nevent,setup);} | |
fe4da5cc | 97 | virtual void RunLego(const char *setup="Config.C",Int_t ntheta=60,Float_t themin=2,Float_t themax=178, |
98 | Int_t nphi=60,Float_t phimin=0,Float_t phimax=360,Float_t rmin=0, | |
0a520a66 | 99 | Float_t rmax=430,Float_t zmax=10000, AliLegoGenerator* gener=NULL); |
dffd31ef | 100 | virtual Bool_t IsLegoRun() const {return (fLego!=0);} |
fe4da5cc | 101 | virtual void SetCurrentTrack(Int_t track); |
102 | virtual void SetDebug(const Int_t level=1) {fDebug = level;} | |
103 | virtual void SetDisplay(AliDisplay *display) {fDisplay = display;} | |
875c717b | 104 | virtual void StepManager(Int_t id); |
fe4da5cc | 105 | virtual void SetField(Int_t type=2, Int_t version=1, Float_t scale=1, Float_t maxField=10, char*filename="$(ALICE_ROOT)/data/field01.dat"); |
1578254f | 106 | virtual void SetTrack(Int_t done, Int_t parent, Int_t pdg, |
fe4da5cc | 107 | Float_t *pmom, Float_t *vpos, Float_t *polar, |
108 | Float_t tof, const char *mecha, Int_t &ntr, | |
109 | Float_t weight=1); | |
aee8290b | 110 | virtual void KeepTrack(const Int_t itra); |
fe4da5cc | 111 | virtual void MediaTable(); |
112 | virtual Float_t TrackingZmax() const {return fTrZmax;} | |
113 | virtual Float_t TrackingRmax() const {return fTrRmax;} | |
114 | virtual void TrackingLimits( Float_t rmax=1.e10, Float_t zmax=1.e10) {fTrRmax=rmax; fTrZmax=zmax;} | |
94de3818 | 115 | virtual Int_t DetFromMate(Int_t i) const { return (*fImedia)[i];} |
116 | virtual AliGenerator* Generator() const {return fGenerator;} | |
fe4da5cc | 117 | virtual void SetGenerator(AliGenerator *generator); |
ee1dd322 | 118 | virtual void ResetGenerator(AliGenerator *generator); |
fe4da5cc | 119 | virtual void EnergySummary(); |
94de3818 | 120 | virtual TDatabasePDG* PDGDB() const {return fPDGDB;} |
fe4da5cc | 121 | |
875c717b | 122 | |
fe4da5cc | 123 | TTree *TreeD() {return fTreeD;} |
124 | TTree *TreeE() {return fTreeE;} | |
125 | TTree *TreeH() {return fTreeH;} | |
126 | TTree *TreeK() {return fTreeK;} | |
127 | TTree *TreeR() {return fTreeR;} | |
128 | ||
aee8290b | 129 | protected: |
130 | Int_t fRun; //Current run number | |
131 | Int_t fEvent; //Current event number (from 1) | |
132 | Int_t fNtrack; //Number of tracks | |
133 | Int_t fHgwmk; //Last track purified | |
134 | Int_t fCurrent; //Last track returned from the stack | |
135 | Int_t fDebug; //Debug flag | |
136 | AliHeader fHeader; //Header information | |
137 | TTree *fTreeD; //Pointer to Tree for Digits | |
138 | TTree *fTreeK; //Pointer to Tree for Kinematics | |
139 | TTree *fTreeH; //Pointer to Tree for Hits | |
140 | TTree *fTreeE; //Pointer to Tree for Header | |
141 | TTree *fTreeR; //Pointer to Tree for Reconstructed Objects | |
142 | TObjArray *fModules; //List of Detectors | |
143 | TClonesArray *fParticles; //Pointer to list of particles | |
144 | TGeometry *fGeometry; //Pointer to geometry | |
145 | AliDisplay *fDisplay; //Pointer to event display | |
146 | TStopwatch fTimer; //Timer object | |
147 | AliMagF *fField; //Magnetic Field Map | |
148 | AliMC *fMC; //pointer to MonteCarlo object | |
149 | TArrayI *fImedia; //Array of correspondence between media and detectors | |
150 | Int_t fNdets; //Number of detectors | |
151 | Float_t fTrRmax; //Maximum radius for tracking | |
152 | Float_t fTrZmax; //Maximu z for tracking | |
153 | AliGenerator *fGenerator; //Generator used in the MC | |
154 | Bool_t fInitDone; //true when initialisation done | |
155 | AliLego *fLego; //pointer to aliLego object if it exists | |
156 | TDatabasePDG *fPDGDB; //Particle factory object! | |
157 | TList *fHitLists; //Lists of hits to be remapped by PurifyKine | |
158 | TArrayF fEventEnergy; //Energy deposit for current event | |
159 | TArrayF fSummEnergy; //Energy per event in each volume | |
160 | TArrayF fSum2Energy; //Energy squared per event in each volume | |
161 | TString fConfigFunction; //Configuration file to be executed | |
fe4da5cc | 162 | |
ef42d733 | 163 | private: |
164 | ||
165 | AliRun(const AliRun &) {} | |
166 | AliRun& operator = (const AliRun &) {return *this;} | |
167 | ||
45189757 | 168 | ClassDef(AliRun,3) //Supervisor class for all Alice detectors |
fe4da5cc | 169 | }; |
170 | ||
75a25b1b | 171 | R__EXTERN AliRun *gAlice; |
fe4da5cc | 172 | |
173 | #endif |