]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muondep/AliMuonGridSubmitter.h
added runs for jason
[u/mrichter/AliRoot.git] / PWG / muondep / AliMuonGridSubmitter.h
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   
28   AliMuonGridSubmitter(AliMuonGridSubmitter::EJobType jobType, Bool_t localOnly=kFALSE);
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   
55   TString FilePath(const char* what) const;
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
70   void SetPackages(const char* aliroot, const char* root="", const char* geant3="",
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   
90   Bool_t CopyLocalFilesToRemote(const TObjArray& localFiles);
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   
114   void AddToTemplateFileList(const char* filename);
115
116   void AddToLocalFileList(const char* filename);
117
118   void AddIncludePath(const char* pathList) const;
119
120   TString GetVar(const char* key) const;
121
122 protected:
123   
124   TObjArray* OrderKeys(const TMap& map) const;
125
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   
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