]>
Commit | Line | Data |
---|---|---|
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 | ||
8 | // | |
9 | // class for running generation, simulation and digitization | |
10 | // Hits, sdigits and digits are created for all detectors by typing: | |
11 | // AliSimulation sim; | |
12 | // sim.Run(); | |
13 | // | |
14 | ||
15 | #include <TNamed.h> | |
16 | #include <TString.h> | |
17 | #include <TObjArray.h> | |
18 | ||
19 | class AliCDBId; | |
20 | class AliCDBParam; | |
21 | class AliRunLoader; | |
22 | ||
23 | ||
24 | class AliSimulation: public TNamed { | |
25 | public: | |
26 | AliSimulation(const char* configFileName = "Config.C", | |
27 | const char* cdbUri = "local://$ALICE_ROOT", | |
28 | const char* name = "AliSimulation", | |
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); | |
36 | void SetGAliceFile(const char* fileName); | |
37 | void SetEventsPerFile(const char* detector, const char* type, | |
38 | Int_t nEvents); | |
39 | ||
40 | void SetRunGeneration(Bool_t run) {fRunGeneration = run;}; | |
41 | void SetRunSimulation(Bool_t run) {fRunSimulation = run;}; | |
42 | void SetLoadAlignFromCDB(Bool_t load) {fLoadAlignFromCDB = load;}; | |
43 | void SetLoadAlignData(const char* detectors) | |
44 | {fLoadAlignData = detectors;}; | |
45 | void SetMakeSDigits(const char* detectors) | |
46 | {fMakeSDigits = detectors;}; | |
47 | void MergeWith(const char* fileName, Int_t nSignalPerBkgrd = 0); | |
48 | void EmbedInto(const char* fileName, Int_t nSignalPerBkgrd = 0); | |
49 | void SetUseBkgrdVertex(Bool_t useBkgrdVertex) | |
50 | {fUseBkgrdVertex = useBkgrdVertex;}; | |
51 | void SetRegionOfInterest(Bool_t flag) {fRegionOfInterest = flag;}; | |
52 | void SetMakeDigits(const char* detectors) | |
53 | {fMakeDigits = detectors;}; | |
54 | void SetMakeTrigger(const char* descriptors) | |
55 | {fMakeTrigger = descriptors;}; | |
56 | void SetMakeDigitsFromHits(const char* detectors) | |
57 | {fMakeDigitsFromHits = detectors;}; | |
58 | void SetWriteRawData(const char* detectors, | |
59 | const char* fileName = NULL, | |
60 | Bool_t deleteIntermediateFiles = kFALSE) | |
61 | {fWriteRawData = detectors; fRawDataFileName = fileName; | |
62 | fDeleteIntermediateFiles = deleteIntermediateFiles;}; | |
63 | ||
64 | Bool_t ApplyAlignObjsToGeom(TObjArray* alObjArray); | |
65 | ||
66 | Bool_t ApplyAlignObjsToGeom(const char* fileName, | |
67 | const char* clArrayName); | |
68 | Bool_t ApplyAlignObjsToGeom(AliCDBParam* param, | |
69 | AliCDBId& Id); | |
70 | Bool_t ApplyAlignObjsToGeom(const char* uri, const char* path, | |
71 | Int_t runnum, Int_t version, | |
72 | Int_t sversion); | |
73 | Bool_t ApplyAlignObjsToGeom(const char* detName, Int_t runnum, Int_t version, | |
74 | Int_t sversion); | |
75 | void SetAlignObjArray(TObjArray *array) | |
76 | {fAlignObjArray = array; | |
77 | fLoadAlignFromCDB = kFALSE;} | |
78 | ||
79 | Bool_t SetAlignObjArraySingleDet(const char* detName); | |
80 | ||
81 | Bool_t MisalignGeometry(AliRunLoader *runLoader = NULL); | |
82 | ||
83 | Bool_t SetRunNumber(); | |
84 | ||
85 | // CDB storage activation | |
86 | void InitCDBStorage(); | |
87 | void SetDefaultStorage(const char* uri); | |
88 | void SetSpecificStorage(const char* calibType, const char* uri); | |
89 | ||
90 | virtual Bool_t Run(Int_t nEvents = 0); | |
91 | ||
92 | virtual Bool_t RunSimulation(Int_t nEvents = 0); | |
93 | virtual Bool_t RunSDigitization(const char* detectors = "ALL"); | |
94 | virtual Bool_t RunTrigger(const char* descriptors ="" ); | |
95 | virtual Bool_t WriteTriggerRawData(); | |
96 | virtual Bool_t RunDigitization(const char* detectors = "ALL", | |
97 | const char* excludeDetectors = ""); | |
98 | virtual Bool_t RunHitsDigitization(const char* detectors = "ALL"); | |
99 | virtual Bool_t WriteRawData(const char* detectors = "ALL", | |
100 | const char* fileName = NULL, | |
101 | Bool_t deleteIntermediateFiles = kFALSE); | |
102 | virtual Bool_t WriteRawFiles(const char* detectors = "ALL"); | |
103 | virtual Bool_t ConvertRawFilesToDate(const char* dateFileName = "raw.date"); | |
104 | virtual Bool_t ConvertDateToRoot(const char* dateFileName = "raw.date", | |
105 | const char* rootFileName = "raw.root"); | |
106 | virtual Bool_t ConvertRaw2SDigits(const char* rawDirectory, const char* esdFile = ""); | |
107 | ||
108 | private: | |
109 | AliRunLoader* LoadRun(const char* mode = "UPDATE") const; | |
110 | Int_t GetNSignalPerBkgrd(Int_t nEvents = 0) const; | |
111 | Bool_t IsSelected(TString detName, TString& detectors) const; | |
112 | ||
113 | Bool_t fRunGeneration; // generate prim. particles or not | |
114 | Bool_t fRunSimulation; // simulate detectors (hits) or not | |
115 | Bool_t fLoadAlignFromCDB; // Load alignment data from CDB and apply it to geometry or not | |
116 | TString fLoadAlignData; // Load alignment data from CDB for these detectors | |
117 | TString fMakeSDigits; // create sdigits for these detectors | |
118 | TString fMakeDigits; // create digits for these detectors | |
119 | TString fMakeTrigger; // run trigger for these descriptors | |
120 | TString fMakeDigitsFromHits; // create digits from hits for these detectors | |
121 | TString fWriteRawData; // write raw data for these detectors | |
122 | TString fRawDataFileName; // file name for the raw data file | |
123 | Bool_t fDeleteIntermediateFiles; // delete intermediate raw data files | |
124 | Bool_t fStopOnError; // stop or continue on errors | |
125 | ||
126 | Int_t fNEvents; // number of events | |
127 | TString fConfigFileName; // name of the config file | |
128 | TString fGAliceFileName; // name of the galice file | |
129 | TObjArray fEventsPerFile; // number of events per file for given detectors and data types | |
130 | ||
131 | TObjArray* fBkgrdFileNames; // names of background files for merging | |
132 | TObjArray* fAlignObjArray; // array with the alignment objects to be applied to the geometry | |
133 | Bool_t fUseBkgrdVertex; // use vertex from background in case of merging | |
134 | Bool_t fRegionOfInterest; // digitization in region of interest | |
135 | ||
136 | TString fCDBUri; // Uri of the default CDB storage | |
137 | TObjArray fSpecCDBUri; // Array with detector specific CDB storages | |
138 | Bool_t fEmbeddingFlag; // Flag for embedding | |
139 | ClassDef(AliSimulation, 3) // class for running generation, simulation and digitization | |
140 | }; | |
141 | ||
142 | #endif |