ROOT logo
#ifndef ALIANALYSISGRID_H
#define ALIANALYSISGRID_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// Author: Mihaela Gheata, 01/09/2008

//==============================================================================
//   AliAnalysisGrid - Base grid utility class. Provides interface for creating
// a personalized JDL, finding and creating a dataset.
//==============================================================================

#ifndef ROOT_TNamed
#include <TNamed.h>
#endif

class TChain;

class AliAnalysisGrid : public TNamed {

public:

enum EPluginRunMode {
   kFull     = 0,
   kTest     = BIT(14),
   kOffline  = BIT(15),
   kSubmit   = BIT(16),
   kMerge    = BIT(17),
   kUseTags  = BIT(18),
   kUseESD   = BIT(19),
   kUseAOD   = BIT(20),
   kUseMC    = BIT(21),
   kUsePars  = BIT(22),
   kDefaultOutputs = BIT(23)
};   
enum EPluginBits {
   kBitMask32  = 0xffffffff,
   kUseCopy    = BIT(0),
   kCheckCopy  = BIT(1),
   kKeepLogs   = BIT(2),
   kClearPackages = BIT(3),
   kUseSubmitPolicy = BIT(4),
   kProofConnectGrid = BIT(5),
   kOneStageMerging = BIT(6),
   kUseMCchain = BIT(7),
   kLocalTest  = BIT(8),
   kMergeAOD   = BIT(9)
};

   AliAnalysisGrid() : TNamed(), fSpecialBits(0) {}
   AliAnalysisGrid(const char *name) : TNamed(name,""), fSpecialBits(0) {}
   virtual ~AliAnalysisGrid() {}
   AliAnalysisGrid(const AliAnalysisGrid& other); 
   AliAnalysisGrid& operator=(const AliAnalysisGrid& other);
// Getters
   virtual EPluginRunMode GetRunMode() const;
// Setters   
   virtual void        AddAdditionalLibrary(const char *name)            = 0;
   virtual void        AddIncludePath(const char *path)                  = 0;
   virtual void        AddRunNumber(Int_t run)                           = 0;
   virtual void        AddRunNumber(const char *run)                     = 0;
   virtual void        AddDataFile(const char *lfn)                      = 0;
   virtual Bool_t      IsSingleOutput() const                            = 0;
   virtual void        SetExecutable(const char *name="analysis.sh")     = 0;
   virtual void        SetArguments(const char *name="")                 = 0;
   virtual void        SetAnalysisMacro(const char *name="myAnalysis.C") = 0;
   virtual void        SetAnalysisSource(const char *name="myAnalysisClass.cxx") = 0;
   virtual void        SetValidationScript(const char *name="validation.sh")     = 0;
   virtual void        SetAdditionalLibs(const char *list)               = 0;
   virtual void        SetPrice(Int_t price=1)                           = 0;
   virtual void        SetJobTag(const char *tag="")                     = 0;
   virtual void        SetSplitMode(const char *type="se")               = 0;
   virtual void        SetSplitMaxInputFileNumber(Int_t nfiles=100)      = 0;
   virtual void        SetAPIVersion(const char *version)                = 0;
   virtual void        SetROOTVersion(const char *version)               = 0;
   virtual void        SetAliROOTVersion(const char *version)            = 0;
   virtual void        SetUser(const char *user)                         = 0;
   virtual void        SetTTL(Int_t ttl=30000)                           = 0;
   virtual void        SetGridWorkingDir(const char *name="workdir")     = 0;
   virtual void        SetGridDataDir(const char *name)                  = 0;
   virtual void        SetDataPattern(const char *pattern)               = 0;
   virtual void        SetDefaultOutputs(Bool_t flag=kTRUE)              = 0;
   virtual void        SetGridOutputDir(const char *name="output")       = 0;
   virtual void        SetOutputArchive(const char *list="log_archive.zip:std*@disk=1 root_archive.zip:*.root@disk=2") = 0;
   virtual void        SetOutputFiles(const char *list)                  = 0;
   virtual void        SetInputFormat(const char *format="xml-single")   = 0;
   virtual void        SetMaxInitFailed(Int_t nfail=5)                   = 0;
   virtual void        SetTerminateFiles(const char *list)               = 0;
   virtual void        SetMergeExcludes(const char *list)                = 0;
   virtual void        SetMergeViaJDL(Bool_t on=kTRUE)                   = 0;
   virtual void        SetMasterResubmitThreshold(Int_t percentage)      = 0;
   virtual void        SetNtestFiles(Int_t nfiles)                       = 0;
   virtual void        SetJDLName(const char *name="analysis.jdl")       = 0;
   virtual void        SetProductionMode(Int_t mode=1)                   = 0;
   virtual void        SetRegisterExcludes(const char *list)             = 0;
   virtual void        SetRunPrefix(const char *prefix)                  = 0;
   virtual void        SetOutputSingleFolder(const char *folder)         = 0;
   virtual void        SetFastReadOption(Bool_t on=kTRUE)                = 0;
   virtual void        SetOverwriteMode(Bool_t on=kTRUE)                 = 0;
   
 // Set run mode.  Can be "full", "test", "offline", "submit" or "merge"
   virtual void        SetRunMode(const char *mode="full");
//Utilities
   static  Bool_t      CreateToken(const char *username=0);
   virtual Bool_t      CreateDataset(const char *pattern)                = 0;
   virtual Bool_t      CreateJDL()                                       = 0;
   virtual void        EnablePackage(const char *package)                = 0;
   virtual Bool_t      MergeOutputs()                                    = 0;
   virtual Bool_t      StartAnalysis(Long64_t nentries=123456789, Long64_t firstentry=0) = 0;
   virtual void        WriteAnalysisFile()                               = 0;
   virtual void        WriteAnalysisMacro()                              = 0;
   virtual void        WriteExecutable()                                 = 0;
   virtual void        WriteValidationScript(Bool_t merge=kFALSE)        = 0;

// Flags
   Bool_t              IsUseCopy() const {return TestSpecialBit(kUseCopy);}
   void                SetUseCopy(Bool_t flag=kTRUE) {SetSpecialBit(kUseCopy,flag);}
   Bool_t              IsCheckCopy() const {return TestSpecialBit(kCheckCopy);}
   void                SetCheckCopy(Bool_t flag=kTRUE) {SetSpecialBit(kCheckCopy,flag);}
   Bool_t              IsKeepLogs() const {return TestSpecialBit(kKeepLogs);}
   void                SetKeepLogs(Bool_t flag=kTRUE) {SetSpecialBit(kKeepLogs,flag);}   
   Bool_t              IsUseSubmitPolicy() const {return TestSpecialBit(kUseSubmitPolicy);}
   void                SetUseSubmitPolicy(Bool_t flag=kTRUE) {SetSpecialBit(kUseSubmitPolicy,flag);}   
   Bool_t              IsOneStageMerging() const {return TestSpecialBit(kOneStageMerging);}
   void                SetOneStageMerging(Bool_t flag) {SetSpecialBit(kOneStageMerging,flag);}
   Bool_t              IsUseMCchain() const {return TestSpecialBit(kUseMCchain);}
   void                SetUseMCchain(Bool_t flag=kTRUE) {SetSpecialBit(kUseMCchain,flag);}
   Bool_t              IsLocalTest() const {return TestSpecialBit(kLocalTest);}
   void                SetLocalTest(Bool_t flag=kTRUE) {SetSpecialBit(kLocalTest,flag);}
   Bool_t              IsMergeAOD() const {return TestSpecialBit(kMergeAOD);}
   virtual void        SetMergeAOD(Bool_t flag=kTRUE) {SetSpecialBit(kMergeAOD,flag);}

// PROOF mode
   virtual void        SetProofCluster(const char *cluster)              = 0;
   virtual void        SetProofDataSet(const char *dataset)              = 0;
   virtual const char *GetProofDataSet() const                           = 0;
   virtual void        SetProofReset(Int_t mode)                         = 0;
   virtual void        SetClearPackages(Bool_t flag=kTRUE) {SetSpecialBit(kClearPackages,flag);}
   virtual void        SetProofConnectGrid(Bool_t flag=kTRUE) {SetSpecialBit(kProofConnectGrid,flag);}
   virtual void        SetNproofWorkers(Int_t nworkers)                  = 0;
   virtual void        SetNproofWorkersPerSlave(Int_t nworkers)          = 0;
   virtual void        SetRootVersionForProof(const char *version)       = 0;
   virtual void        SetAliRootMode(const char *mode)                  = 0;
   virtual void        SetProofProcessOpt(const char *proofOpt="")       = 0;
   virtual TString     GetProofProcessOpt()                              = 0;
   // .txt file containing the list of files to be chained in test mode
   virtual void        SetFileForTestMode(const char *filename)          = 0;
   virtual TChain     *GetChainForTestMode(const char *treeName) const   = 0;

protected:
// Methods
   virtual Bool_t      Connect()                                         = 0;
   virtual void        SetDefaults()                                     = 0;
   void     SetSpecialBit(UInt_t f) { fSpecialBits |= f & kBitMask32; }
   void     ResetSpecialBit(UInt_t f) { fSpecialBits &= ~(f & kBitMask32); }
   void     SetSpecialBit(UInt_t f, Bool_t set) {(set)?SetSpecialBit(f):ResetSpecialBit(f);}
   Bool_t   TestSpecialBit(UInt_t f) const { return (Bool_t) ((fSpecialBits & f) != 0); }
   Int_t    TestSpecialBits(UInt_t f) const { return (Int_t) (fSpecialBits & f); }
   void     InvertSpecialBit(UInt_t f) { fSpecialBits ^= f & kBitMask32; }

protected:
   UInt_t              fSpecialBits; // special bits
  

   ClassDef(AliAnalysisGrid, 2)   // Base class for GRID utilities
};
#endif
 AliAnalysisGrid.h:1
 AliAnalysisGrid.h:2
 AliAnalysisGrid.h:3
 AliAnalysisGrid.h:4
 AliAnalysisGrid.h:5
 AliAnalysisGrid.h:6
 AliAnalysisGrid.h:7
 AliAnalysisGrid.h:8
 AliAnalysisGrid.h:9
 AliAnalysisGrid.h:10
 AliAnalysisGrid.h:11
 AliAnalysisGrid.h:12
 AliAnalysisGrid.h:13
 AliAnalysisGrid.h:14
 AliAnalysisGrid.h:15
 AliAnalysisGrid.h:16
 AliAnalysisGrid.h:17
 AliAnalysisGrid.h:18
 AliAnalysisGrid.h:19
 AliAnalysisGrid.h:20
 AliAnalysisGrid.h:21
 AliAnalysisGrid.h:22
 AliAnalysisGrid.h:23
 AliAnalysisGrid.h:24
 AliAnalysisGrid.h:25
 AliAnalysisGrid.h:26
 AliAnalysisGrid.h:27
 AliAnalysisGrid.h:28
 AliAnalysisGrid.h:29
 AliAnalysisGrid.h:30
 AliAnalysisGrid.h:31
 AliAnalysisGrid.h:32
 AliAnalysisGrid.h:33
 AliAnalysisGrid.h:34
 AliAnalysisGrid.h:35
 AliAnalysisGrid.h:36
 AliAnalysisGrid.h:37
 AliAnalysisGrid.h:38
 AliAnalysisGrid.h:39
 AliAnalysisGrid.h:40
 AliAnalysisGrid.h:41
 AliAnalysisGrid.h:42
 AliAnalysisGrid.h:43
 AliAnalysisGrid.h:44
 AliAnalysisGrid.h:45
 AliAnalysisGrid.h:46
 AliAnalysisGrid.h:47
 AliAnalysisGrid.h:48
 AliAnalysisGrid.h:49
 AliAnalysisGrid.h:50
 AliAnalysisGrid.h:51
 AliAnalysisGrid.h:52
 AliAnalysisGrid.h:53
 AliAnalysisGrid.h:54
 AliAnalysisGrid.h:55
 AliAnalysisGrid.h:56
 AliAnalysisGrid.h:57
 AliAnalysisGrid.h:58
 AliAnalysisGrid.h:59
 AliAnalysisGrid.h:60
 AliAnalysisGrid.h:61
 AliAnalysisGrid.h:62
 AliAnalysisGrid.h:63
 AliAnalysisGrid.h:64
 AliAnalysisGrid.h:65
 AliAnalysisGrid.h:66
 AliAnalysisGrid.h:67
 AliAnalysisGrid.h:68
 AliAnalysisGrid.h:69
 AliAnalysisGrid.h:70
 AliAnalysisGrid.h:71
 AliAnalysisGrid.h:72
 AliAnalysisGrid.h:73
 AliAnalysisGrid.h:74
 AliAnalysisGrid.h:75
 AliAnalysisGrid.h:76
 AliAnalysisGrid.h:77
 AliAnalysisGrid.h:78
 AliAnalysisGrid.h:79
 AliAnalysisGrid.h:80
 AliAnalysisGrid.h:81
 AliAnalysisGrid.h:82
 AliAnalysisGrid.h:83
 AliAnalysisGrid.h:84
 AliAnalysisGrid.h:85
 AliAnalysisGrid.h:86
 AliAnalysisGrid.h:87
 AliAnalysisGrid.h:88
 AliAnalysisGrid.h:89
 AliAnalysisGrid.h:90
 AliAnalysisGrid.h:91
 AliAnalysisGrid.h:92
 AliAnalysisGrid.h:93
 AliAnalysisGrid.h:94
 AliAnalysisGrid.h:95
 AliAnalysisGrid.h:96
 AliAnalysisGrid.h:97
 AliAnalysisGrid.h:98
 AliAnalysisGrid.h:99
 AliAnalysisGrid.h:100
 AliAnalysisGrid.h:101
 AliAnalysisGrid.h:102
 AliAnalysisGrid.h:103
 AliAnalysisGrid.h:104
 AliAnalysisGrid.h:105
 AliAnalysisGrid.h:106
 AliAnalysisGrid.h:107
 AliAnalysisGrid.h:108
 AliAnalysisGrid.h:109
 AliAnalysisGrid.h:110
 AliAnalysisGrid.h:111
 AliAnalysisGrid.h:112
 AliAnalysisGrid.h:113
 AliAnalysisGrid.h:114
 AliAnalysisGrid.h:115
 AliAnalysisGrid.h:116
 AliAnalysisGrid.h:117
 AliAnalysisGrid.h:118
 AliAnalysisGrid.h:119
 AliAnalysisGrid.h:120
 AliAnalysisGrid.h:121
 AliAnalysisGrid.h:122
 AliAnalysisGrid.h:123
 AliAnalysisGrid.h:124
 AliAnalysisGrid.h:125
 AliAnalysisGrid.h:126
 AliAnalysisGrid.h:127
 AliAnalysisGrid.h:128
 AliAnalysisGrid.h:129
 AliAnalysisGrid.h:130
 AliAnalysisGrid.h:131
 AliAnalysisGrid.h:132
 AliAnalysisGrid.h:133
 AliAnalysisGrid.h:134
 AliAnalysisGrid.h:135
 AliAnalysisGrid.h:136
 AliAnalysisGrid.h:137
 AliAnalysisGrid.h:138
 AliAnalysisGrid.h:139
 AliAnalysisGrid.h:140
 AliAnalysisGrid.h:141
 AliAnalysisGrid.h:142
 AliAnalysisGrid.h:143
 AliAnalysisGrid.h:144
 AliAnalysisGrid.h:145
 AliAnalysisGrid.h:146
 AliAnalysisGrid.h:147
 AliAnalysisGrid.h:148
 AliAnalysisGrid.h:149
 AliAnalysisGrid.h:150
 AliAnalysisGrid.h:151
 AliAnalysisGrid.h:152
 AliAnalysisGrid.h:153
 AliAnalysisGrid.h:154
 AliAnalysisGrid.h:155
 AliAnalysisGrid.h:156
 AliAnalysisGrid.h:157
 AliAnalysisGrid.h:158
 AliAnalysisGrid.h:159
 AliAnalysisGrid.h:160
 AliAnalysisGrid.h:161
 AliAnalysisGrid.h:162
 AliAnalysisGrid.h:163
 AliAnalysisGrid.h:164
 AliAnalysisGrid.h:165
 AliAnalysisGrid.h:166
 AliAnalysisGrid.h:167