]>
Commit | Line | Data |
---|---|---|
81190958 | 1 | #ifndef ALIMUONGRIDSUBMITTER_H |
2 | #define ALIMUONGRIDSUBMITTER_H | |
3 | ||
4 | // | |
5 | // AliMuonGridSubmitter : a base class to help submit some | |
6 | // mini-productions for muon studies (e.g. Acc x Eff, qa merging, etc...) | |
7 | // | |
8 | // author: Laurent Aphecetche (Subatech) | |
9 | // | |
10 | ||
11 | #include "TObject.h" | |
12 | #include "TString.h" | |
13 | #include "Riostream.h" | |
14 | #include <vector> | |
15 | ||
16 | class TMap; | |
17 | ||
18 | class AliMuonGridSubmitter : public TObject | |
19 | { | |
20 | public: | |
21 | ||
22 | enum EJobType | |
23 | { | |
24 | kAccEff=0, | |
25 | kQAMerge=1 | |
26 | }; | |
27 | ||
eb5de7ee | 28 | AliMuonGridSubmitter(AliMuonGridSubmitter::EJobType jobType, Bool_t localOnly=kFALSE); |
81190958 | 29 | virtual ~AliMuonGridSubmitter(); |
30 | ||
31 | virtual Bool_t Generate(const char* jdlname) const = 0; | |
32 | virtual Bool_t Run(const char* mode) = 0; | |
33 | ||
34 | TString JobTypeName(AliMuonGridSubmitter::EJobType jobType) const; | |
35 | ||
36 | Bool_t SetLocalDir(const char* localdir) { return SetLocalDirectory("Local",localdir); } | |
37 | Bool_t SetMergedDir(const char* dir) { return SetRemoteDirectory("Merged",dir); } | |
38 | Bool_t SetRemoteDir(const char* dir) { return SetRemoteDirectory("Remote",dir); } | |
39 | Bool_t SetTemplateDir(const char* templatedir) { return SetLocalDirectory("Template",templatedir); } | |
40 | ||
41 | Bool_t CheckLocal() const; | |
42 | Bool_t CheckRemote() const; | |
43 | ||
44 | void CleanLocal(const char* excludeList="") const; | |
45 | ||
46 | void Invalidate() { fIsValid = kFALSE; } | |
47 | ||
48 | void Validate() { fIsValid = kTRUE; } | |
49 | ||
50 | TString MergedDir() const { return GetMapValue("Merged"); } | |
51 | TString RemoteDir() const { return GetMapValue("Remote"); } | |
52 | TString LocalDir() const { return GetMapValue("Local"); } | |
53 | TString TemplateDir() const { return GetMapValue("Template"); } | |
54 | ||
339d4b81 | 55 | // TString FilePath(const char* what) const; // Not implemented |
81190958 | 56 | |
57 | UInt_t NofRuns() const; | |
58 | ||
59 | const std::vector<Int_t>& RunList() const; | |
60 | ||
61 | void SetRunList(const char* runlist); | |
62 | void SetRunList(int runNumber); | |
63 | ||
64 | virtual void Print(Option_t* opt="") const; | |
65 | ||
66 | Bool_t CopyLocalFilesToRemote(); | |
67 | ||
68 | Bool_t CopyTemplateFilesToLocal(); | |
69 | ||
3e7b6e7b | 70 | void SetPackages(const char* aliroot, const char* root="", const char* geant3="", |
81190958 | 71 | const char* api="VO_ALICE@APISCONFIG::V1.1x"); |
72 | ||
73 | Bool_t ShouldOverwriteFiles() const { return fShouldOverwriteFiles; } | |
74 | ||
75 | void ShouldOverwriteFiles(Bool_t flag) { fShouldOverwriteFiles = flag; } | |
76 | ||
77 | Bool_t IsValid() const { return fIsValid; } | |
78 | ||
79 | void OutputToJDL(std::ostream& out, const char* key, const char* v1, | |
80 | const char* v2="", const char* v3="", const char* v4="", const char* v5="", | |
81 | const char* v6="", const char* v7="", const char* v8="", const char* v9="") const; | |
82 | ||
83 | void OutputToJDL(std::ostream& out, const char* key, const TObjArray& values) const; | |
84 | ||
85 | TString GetRemoteDir(const char* dir, Bool_t create=kTRUE); | |
86 | ||
87 | Bool_t RemoteDirectoryExists(const char *dirname) const; | |
88 | Bool_t RemoteFileExists(const char *lfn); | |
89 | ||
339d4b81 | 90 | // Bool_t CopyLocalFilesToRemote(const TObjArray& localFiles); // Not implemented |
81190958 | 91 | |
92 | Bool_t CopyFile(const char* localFile); | |
93 | ||
94 | Int_t GetLastStage(const char* remoteDir); | |
95 | ||
96 | std::ostream* CreateJDLFile(const char* name) const; | |
97 | ||
98 | Bool_t CheckRemoteDir() const; | |
99 | ||
100 | Bool_t ReplaceVars(const char* file) const; | |
101 | ||
102 | Bool_t HasVars(const char* localFile) const; | |
103 | ||
104 | Bool_t SetVar(const char* varname, const char* value); | |
105 | ||
106 | TObjArray* GetVariables(const char* file) const; | |
107 | ||
108 | Bool_t CheckCompilation(const char* file) const; | |
109 | ||
110 | TObjArray* LocalFileList() const; | |
111 | ||
112 | TObjArray* TemplateFileList() const; | |
113 | ||
eb5de7ee | 114 | void AddToTemplateFileList(const char* filename); |
115 | ||
116 | void AddToLocalFileList(const char* filename); | |
117 | ||
30138a88 | 118 | void AddIncludePath(const char* pathList) const; |
119 | ||
120 | TString GetVar(const char* key) const; | |
121 | ||
81190958 | 122 | protected: |
123 | ||
30138a88 | 124 | TObjArray* OrderKeys(const TMap& map) const; |
125 | ||
81190958 | 126 | std::ostream* CreateJDLFile(const char* name); |
127 | ||
128 | TString GetMapValue(const char* key) const; | |
129 | ||
130 | TMap* InternalMap() const; | |
131 | TMap* Vars() const; | |
132 | ||
133 | void SetMapKeyValue(const char* key, const char* value); | |
134 | ||
135 | Bool_t SetLocalDirectory(const char* type, const char* path); | |
136 | ||
137 | Bool_t SetRemoteDirectory(const char* type, const char* path); | |
138 | ||
139 | void UpdateLocalFileList(); | |
140 | ||
81190958 | 141 | private: |
142 | AliMuonGridSubmitter(const AliMuonGridSubmitter& rhs); | |
143 | AliMuonGridSubmitter& operator=(const AliMuonGridSubmitter& rhs); | |
144 | ||
145 | private: | |
146 | mutable TMap* fInternalMap; // map of directory paths and packages versions | |
147 | mutable TMap* fVars; // map of the variables we can replace in template files | |
148 | Bool_t fIsValid; // whether this object is valid (i.e. properly configured) | |
149 | Bool_t fShouldOverwriteFiles; // whether or not to overwrite the local files each time we run | |
150 | mutable TObjArray* fTemplateFileList; // list of template files | |
151 | mutable TObjArray* fLocalFileList; // list of local files | |
152 | std::vector<Int_t> fRunList; // run list to process | |
153 | ||
154 | ClassDef(AliMuonGridSubmitter,0) // Helper class to submit some muon jobs | |
155 | }; | |
156 | ||
157 | #endif | |
158 |