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