]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muondep/AliMuonGridSubmitter.h
Non-implemented method are commented out or moved to the private part of the class
[u/mrichter/AliRoot.git] / PWG / muondep / AliMuonGridSubmitter.h
CommitLineData
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
16class TMap;
17
18class AliMuonGridSubmitter : public TObject
19{
20public:
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 122protected:
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 141private:
142 AliMuonGridSubmitter(const AliMuonGridSubmitter& rhs);
143 AliMuonGridSubmitter& operator=(const AliMuonGridSubmitter& rhs);
144
145private:
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