85a5290f |
1 | #ifndef ALISIMULATION_H |
2 | #define ALISIMULATION_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 | |
af7ba10c |
8 | // |
9 | // class for running generation, simulation and digitization |
10 | // Hits, sdigits and digits are created for all detectors by typing: |
af7ba10c |
11 | // AliSimulation sim; |
12 | // sim.Run(); |
13 | // |
14 | |
85a5290f |
15 | #include <TNamed.h> |
16 | #include <TString.h> |
3c166bf6 |
17 | #include <TObjArray.h> |
cae17938 |
18 | #include "AliQA.h" |
b03591ab |
19 | #include "AliQAManager.h" |
85a5290f |
20 | |
e8d02863 |
21 | class AliCDBId; |
22 | class AliCDBParam; |
85a5290f |
23 | class AliRunLoader; |
3e2e3ece |
24 | class AliLegoGenerator; |
25 | class AliLego; |
f7a1cc68 |
26 | class AliMagF; |
85a5290f |
27 | |
28 | class AliSimulation: public TNamed { |
29 | public: |
95601147 |
30 | AliSimulation(const char* configFileName = "Config.C", |
31 | const char* name = "AliSimulation", |
85a5290f |
32 | const char* title = "generation, simulation and digitization"); |
85a5290f |
33 | virtual ~AliSimulation(); |
34 | |
3e2e3ece |
35 | static AliSimulation *Instance() {return fgInstance;} |
b856a511 |
36 | |
85a5290f |
37 | void SetNumberOfEvents(Int_t nEvents); |
38 | void SetConfigFile(const char* fileName); |
0421c3d1 |
39 | void SetGAliceFile(const char* fileName); |
18b43626 |
40 | void SetEventsPerFile(const char* detector, const char* type, |
41 | Int_t nEvents); |
85a5290f |
42 | |
43 | void SetRunGeneration(Bool_t run) {fRunGeneration = run;}; |
44 | void SetRunSimulation(Bool_t run) {fRunSimulation = run;}; |
024cf675 |
45 | void SetLoadAlignFromCDB(Bool_t load) {fLoadAlignFromCDB = load;}; |
46 | void SetLoadAlignData(const char* detectors) |
25be1e5c |
47 | {fLoadAlObjsListOfDets = detectors;}; |
85a5290f |
48 | void SetMakeSDigits(const char* detectors) |
49 | {fMakeSDigits = detectors;}; |
05526d44 |
50 | void MergeWith(const char* fileName, Int_t nSignalPerBkgrd = 0); |
ca30848f |
51 | void EmbedInto(const char* fileName, Int_t nSignalPerBkgrd = 0); |
04bae0a0 |
52 | void SetUseBkgrdVertex(Bool_t useBkgrdVertex) |
53 | {fUseBkgrdVertex = useBkgrdVertex;}; |
4df28b43 |
54 | void SetRegionOfInterest(Bool_t flag) {fRegionOfInterest = flag;}; |
85a5290f |
55 | void SetMakeDigits(const char* detectors) |
56 | {fMakeDigits = detectors;}; |
a5a091ce |
57 | void SetMakeTrigger(const char* descriptors) |
58 | {fMakeTrigger = descriptors;}; |
85a5290f |
59 | void SetMakeDigitsFromHits(const char* detectors) |
60 | {fMakeDigitsFromHits = detectors;}; |
06c7e392 |
61 | void SetWriteRawData(const char* detectors, |
62 | const char* fileName = NULL, |
63 | Bool_t deleteIntermediateFiles = kFALSE) |
64 | {fWriteRawData = detectors; fRawDataFileName = fileName; |
65 | fDeleteIntermediateFiles = deleteIntermediateFiles;}; |
67327b72 |
66 | void SetWriteSelRawData(Bool_t sel = kTRUE) |
67 | {fWriteSelRawData = sel;} |
024cf675 |
68 | void SetAlignObjArray(TObjArray *array) |
6bae477a |
69 | {fAlignObjArray = array; |
70 | fLoadAlignFromCDB = kFALSE;} |
024cf675 |
71 | |
6bae477a |
72 | Bool_t MisalignGeometry(AliRunLoader *runLoader = NULL); |
73 | |
795e4a22 |
74 | void SetRunNumber(Int_t run); |
75 | void SetSeed(Int_t seed); |
76 | |
77 | void ProcessEnvironmentVars(); |
024cf675 |
78 | |
79 | // CDB storage activation |
ec92bee0 |
80 | void SetDefaultStorage(const char* uri); |
00aa02d5 |
81 | void SetSpecificStorage(const char* calibType, const char* uri); |
85a5290f |
82 | |
83 | virtual Bool_t Run(Int_t nEvents = 0); |
3e2e3ece |
84 | virtual Bool_t RunLego(const char *setup="Config.C",Int_t nc1=60,Float_t c1min=2,Float_t c1max=178, |
85 | Int_t nc2=60,Float_t c2min=0,Float_t c2max=360,Float_t rmin=0, |
86 | Float_t rmax=430,Float_t zmax=10000, AliLegoGenerator* gener=NULL, Int_t nev = -1); |
85a5290f |
87 | |
95601147 |
88 | virtual Bool_t RunSimulation(Int_t nEvents = 0); |
89 | virtual Bool_t RunSDigitization(const char* detectors = "ALL"); |
8480396b |
90 | virtual Bool_t RunTrigger(const char* descriptors ="", const char* detectors = "ALL"); |
007155cc |
91 | virtual Bool_t WriteTriggerRawData(); |
95601147 |
92 | virtual Bool_t RunDigitization(const char* detectors = "ALL", |
93 | const char* excludeDetectors = ""); |
94 | virtual Bool_t RunHitsDigitization(const char* detectors = "ALL"); |
06c7e392 |
95 | virtual Bool_t WriteRawData(const char* detectors = "ALL", |
96 | const char* fileName = NULL, |
67327b72 |
97 | Bool_t deleteIntermediateFiles = kFALSE, |
98 | Bool_t selrawdata = kFALSE); |
06c7e392 |
99 | virtual Bool_t WriteRawFiles(const char* detectors = "ALL"); |
67327b72 |
100 | virtual Bool_t ConvertRawFilesToDate(const char* dateFileName = "raw.date", |
1b8db7f0 |
101 | const char* rootFileName = ""); |
06c7e392 |
102 | virtual Bool_t ConvertDateToRoot(const char* dateFileName = "raw.date", |
103 | const char* rootFileName = "raw.root"); |
ca30848f |
104 | virtual Bool_t ConvertRaw2SDigits(const char* rawDirectory, const char* esdFile = ""); |
5b188f2f |
105 | |
cae21299 |
106 | // HLT |
107 | void SetRunHLT(const char* options) {fRunHLT=options;} |
108 | virtual Bool_t RunHLT(); |
3e2e3ece |
109 | virtual Bool_t IsLegoRun() const {return (fLego!=0);} |
110 | AliLego* Lego() const {return fLego;} |
111 | virtual void FinishRun(); |
cae21299 |
112 | |
5b188f2f |
113 | //Quality Assurance |
114 | Int_t GetDetIndex(const char * detector); |
b03591ab |
115 | void SetQACycles(AliQA::DETECTORINDEX_t det, const Int_t cycles) { fQAManager->SetCycleLength(det, cycles) ; } |
a1b90a73 |
116 | Bool_t RunQA() ; |
e3b20d9a |
117 | Bool_t SetRunQA(TString detAndAction="ALL:ALL") ; |
f1c1204d |
118 | void SetQAWriteExpert(AliQA::DETECTORINDEX_t det) { fQAManager->SetWriteExpert(det) ; } |
119 | void SetQARefDefaultStorage(const char* uri); |
120 | void InitQA(); |
121 | |
122 | |
123 | |
fc7e1b1c |
124 | |
125 | void SetWriteGRPEntry(Bool_t flag = kTRUE) { fWriteGRPEntry = flag; } |
126 | void WriteGRPEntry(); |
127 | |
95601147 |
128 | private: |
7dd2cbe4 |
129 | |
130 | AliSimulation(const AliSimulation&); // Not implemented |
131 | AliSimulation& operator = (const AliSimulation&); // Not implemented |
132 | |
795e4a22 |
133 | void InitCDB(); |
134 | void InitRunNumber(); |
135 | void SetCDBLock(); |
136 | Bool_t SetRunNumberFromData(); |
06c7e392 |
137 | AliRunLoader* LoadRun(const char* mode = "UPDATE") const; |
05526d44 |
138 | Int_t GetNSignalPerBkgrd(Int_t nEvents = 0) const; |
85a5290f |
139 | Bool_t IsSelected(TString detName, TString& detectors) const; |
140 | |
b856a511 |
141 | static AliSimulation *fgInstance; // Static pointer to object |
142 | |
85a5290f |
143 | Bool_t fRunGeneration; // generate prim. particles or not |
144 | Bool_t fRunSimulation; // simulate detectors (hits) or not |
024cf675 |
145 | Bool_t fLoadAlignFromCDB; // Load alignment data from CDB and apply it to geometry or not |
25be1e5c |
146 | TString fLoadAlObjsListOfDets; // Load alignment data from CDB for these detectors |
85a5290f |
147 | TString fMakeSDigits; // create sdigits for these detectors |
148 | TString fMakeDigits; // create digits for these detectors |
a5a091ce |
149 | TString fMakeTrigger; // run trigger for these descriptors |
85a5290f |
150 | TString fMakeDigitsFromHits; // create digits from hits for these detectors |
0421c3d1 |
151 | TString fWriteRawData; // write raw data for these detectors |
06c7e392 |
152 | TString fRawDataFileName; // file name for the raw data file |
153 | Bool_t fDeleteIntermediateFiles; // delete intermediate raw data files |
67327b72 |
154 | Bool_t fWriteSelRawData; // write detectors raw data in a separate file accoring to the trigger cluster |
85a5290f |
155 | Bool_t fStopOnError; // stop or continue on errors |
156 | |
157 | Int_t fNEvents; // number of events |
158 | TString fConfigFileName; // name of the config file |
159 | TString fGAliceFileName; // name of the galice file |
18b43626 |
160 | TObjArray fEventsPerFile; // number of events per file for given detectors and data types |
161 | |
85a5290f |
162 | TObjArray* fBkgrdFileNames; // names of background files for merging |
57acd2d2 |
163 | TObjArray* fAlignObjArray; // array with the alignment objects to be applied to the geometry |
04bae0a0 |
164 | Bool_t fUseBkgrdVertex; // use vertex from background in case of merging |
4df28b43 |
165 | Bool_t fRegionOfInterest; // digitization in region of interest |
85a5290f |
166 | |
57acd2d2 |
167 | TString fCDBUri; //! Uri of the default CDB storage |
f1c1204d |
168 | TString fQARefUri; //! Uri of the default QA reference storage |
57acd2d2 |
169 | TObjArray fSpecCDBUri; //! Array with detector specific CDB storages |
170 | Int_t fRun; //! Run number, will be passed to CDB and gAlice!! |
171 | Int_t fSeed; //! Seed for random number generator |
172 | Bool_t fInitCDBCalled; //! flag to check if CDB storages are already initialized |
173 | Bool_t fInitRunNumberCalled; //! flag to check if run number is already initialized |
174 | Bool_t fSetRunNumberFromDataCalled; //! flag to check if run number is already loaded from run loader |
795e4a22 |
175 | |
57acd2d2 |
176 | Bool_t fEmbeddingFlag; // Flag for embedding |
3e2e3ece |
177 | AliLego *fLego; //! Pointer to aliLego object if it exists |
5b188f2f |
178 | |
179 | //QA stuff |
a1b90a73 |
180 | static const Int_t fgkNDetectors = 15 ; // number of detectors |
181 | static const char * fgkDetectorName[fgkNDetectors] ; // names of detectors |
e3b20d9a |
182 | TString fQADetectors ; // list of detectors to be QA'ed |
183 | TString fQATasks ; // list of QA tasks to be performed |
b03591ab |
184 | AliQAManager * fQAManager ; // steering object to run QA |
04236e67 |
185 | Bool_t fRunQA ; // Runs the QA at the end of simulation |
57acd2d2 |
186 | AliRecoParam::EventSpecie_t fEventSpecie ; // type of event (see AliRecoParam::EventSpecie_t) |
5b188f2f |
187 | |
cae21299 |
188 | //HLT |
189 | TString fRunHLT; // HLT options, HLT is disabled if empty, default='default' |
190 | |
fc7e1b1c |
191 | Bool_t fWriteGRPEntry; // Write or not GRP entry corresponding to the settings in Config.C |
192 | |
3099f3a8 |
193 | ClassDef(AliSimulation, 9) // class for running generation, simulation and digitization |
85a5290f |
194 | }; |
195 | |
196 | #endif |