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> |
85a5290f |
18 | |
e8d02863 |
19 | class AliCDBId; |
20 | class AliCDBParam; |
85a5290f |
21 | class AliRunLoader; |
22 | |
23 | |
24 | class AliSimulation: public TNamed { |
25 | public: |
95601147 |
26 | AliSimulation(const char* configFileName = "Config.C", |
024cf675 |
27 | const char* cdbUri = "local://$ALICE_ROOT", |
95601147 |
28 | const char* name = "AliSimulation", |
85a5290f |
29 | const char* title = "generation, simulation and digitization"); |
30 | AliSimulation(const AliSimulation& sim); |
31 | AliSimulation& operator = (const AliSimulation& sim); |
32 | virtual ~AliSimulation(); |
33 | |
34 | void SetNumberOfEvents(Int_t nEvents); |
35 | void SetConfigFile(const char* fileName); |
0421c3d1 |
36 | void SetGAliceFile(const char* fileName); |
18b43626 |
37 | void SetEventsPerFile(const char* detector, const char* type, |
38 | Int_t nEvents); |
85a5290f |
39 | |
40 | void SetRunGeneration(Bool_t run) {fRunGeneration = run;}; |
41 | void SetRunSimulation(Bool_t run) {fRunSimulation = run;}; |
024cf675 |
42 | void SetLoadAlignFromCDB(Bool_t load) {fLoadAlignFromCDB = load;}; |
43 | void SetLoadAlignData(const char* detectors) |
44 | {fLoadAlignData = detectors;}; |
85a5290f |
45 | void SetMakeSDigits(const char* detectors) |
46 | {fMakeSDigits = detectors;}; |
05526d44 |
47 | void MergeWith(const char* fileName, Int_t nSignalPerBkgrd = 0); |
04bae0a0 |
48 | void SetUseBkgrdVertex(Bool_t useBkgrdVertex) |
49 | {fUseBkgrdVertex = useBkgrdVertex;}; |
4df28b43 |
50 | void SetRegionOfInterest(Bool_t flag) {fRegionOfInterest = flag;}; |
85a5290f |
51 | void SetMakeDigits(const char* detectors) |
52 | {fMakeDigits = detectors;}; |
a5a091ce |
53 | void SetMakeTrigger(const char* descriptors) |
54 | {fMakeTrigger = descriptors;}; |
85a5290f |
55 | void SetMakeDigitsFromHits(const char* detectors) |
56 | {fMakeDigitsFromHits = detectors;}; |
06c7e392 |
57 | void SetWriteRawData(const char* detectors, |
58 | const char* fileName = NULL, |
59 | Bool_t deleteIntermediateFiles = kFALSE) |
60 | {fWriteRawData = detectors; fRawDataFileName = fileName; |
61 | fDeleteIntermediateFiles = deleteIntermediateFiles;}; |
e8d02863 |
62 | |
178a256c |
63 | static Bool_t ApplyAlignObjsToGeom(const char* fileName, |
995ad051 |
64 | const char* clArrayName); |
178a256c |
65 | static Bool_t ApplyAlignObjsToGeom(AliCDBParam* param, |
b9bc0f82 |
66 | AliCDBId& Id); |
178a256c |
67 | static Bool_t ApplyAlignObjsToGeom(const char* uri, const char* path, |
b9bc0f82 |
68 | Int_t runnum, Int_t version, |
69 | Int_t sversion); |
024cf675 |
70 | static Bool_t ApplyAlignObjsToGeom(const char* detName, Int_t runnum, Int_t version, |
71 | Int_t sversion); |
72 | void SetAlignObjArray(TObjArray *array) |
73 | {fAlignObjArray = array; |
74 | fLoadAlignFromCDB = kFALSE;} |
75 | |
76 | void SetAlignObjArray(const char* detectors="ALL"); |
77 | Bool_t SetAlignObjArraySingleDet(const char* detName); |
78 | |
79 | // CDB storage activation |
80 | static void InitCDBStorage(const char *uri); |
81 | static void SetDefaultStorage(const char* uri); |
82 | static void SetSpecificStorage(const char* detName, const char* uri); |
85a5290f |
83 | |
84 | virtual Bool_t Run(Int_t nEvents = 0); |
85 | |
95601147 |
86 | virtual Bool_t RunSimulation(Int_t nEvents = 0); |
87 | virtual Bool_t RunSDigitization(const char* detectors = "ALL"); |
a5a091ce |
88 | virtual Bool_t RunTrigger(const char* descriptors ="" ); |
95601147 |
89 | virtual Bool_t RunDigitization(const char* detectors = "ALL", |
90 | const char* excludeDetectors = ""); |
91 | virtual Bool_t RunHitsDigitization(const char* detectors = "ALL"); |
06c7e392 |
92 | virtual Bool_t WriteRawData(const char* detectors = "ALL", |
93 | const char* fileName = NULL, |
94 | Bool_t deleteIntermediateFiles = kFALSE); |
95 | virtual Bool_t WriteRawFiles(const char* detectors = "ALL"); |
96 | virtual Bool_t ConvertRawFilesToDate(const char* dateFileName = "raw.date"); |
97 | virtual Bool_t ConvertDateToRoot(const char* dateFileName = "raw.date", |
98 | const char* rootFileName = "raw.root"); |
8e4a4643 |
99 | |
95601147 |
100 | private: |
06c7e392 |
101 | AliRunLoader* LoadRun(const char* mode = "UPDATE") const; |
05526d44 |
102 | Int_t GetNSignalPerBkgrd(Int_t nEvents = 0) const; |
85a5290f |
103 | Bool_t IsSelected(TString detName, TString& detectors) const; |
104 | |
85a5290f |
105 | Bool_t fRunGeneration; // generate prim. particles or not |
106 | Bool_t fRunSimulation; // simulate detectors (hits) or not |
024cf675 |
107 | Bool_t fLoadAlignFromCDB; // Load alignment data from CDB and apply it to geometry or not |
108 | TString fLoadAlignData; // Load alignment data from CDB for these detectors |
85a5290f |
109 | TString fMakeSDigits; // create sdigits for these detectors |
110 | TString fMakeDigits; // create digits for these detectors |
a5a091ce |
111 | TString fMakeTrigger; // run trigger for these descriptors |
85a5290f |
112 | TString fMakeDigitsFromHits; // create digits from hits for these detectors |
0421c3d1 |
113 | TString fWriteRawData; // write raw data for these detectors |
06c7e392 |
114 | TString fRawDataFileName; // file name for the raw data file |
115 | Bool_t fDeleteIntermediateFiles; // delete intermediate raw data files |
85a5290f |
116 | Bool_t fStopOnError; // stop or continue on errors |
117 | |
118 | Int_t fNEvents; // number of events |
119 | TString fConfigFileName; // name of the config file |
120 | TString fGAliceFileName; // name of the galice file |
18b43626 |
121 | TObjArray fEventsPerFile; // number of events per file for given detectors and data types |
122 | |
85a5290f |
123 | TObjArray* fBkgrdFileNames; // names of background files for merging |
024cf675 |
124 | TObjArray* fAlignObjArray; // array with the alignment objects to be applied to the geometry |
04bae0a0 |
125 | Bool_t fUseBkgrdVertex; // use vertex from background in case of merging |
4df28b43 |
126 | Bool_t fRegionOfInterest; // digitization in region of interest |
85a5290f |
127 | |
024cf675 |
128 | TString fCDBUri; // Uri of the default CDB storage |
129 | |
06c7e392 |
130 | ClassDef(AliSimulation, 2) // class for running generation, simulation and digitization |
85a5290f |
131 | }; |
132 | |
133 | #endif |