ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

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

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

#include "TSystem.h"
#include "TError.h"
#include "AliAnalysisGrid.h"

ClassImp(AliAnalysisGrid)

//______________________________________________________________________________
AliAnalysisGrid::AliAnalysisGrid(const AliAnalysisGrid& other)
                :TNamed(other), fSpecialBits(0)
{
// Copy ctor.
}

//______________________________________________________________________________
AliAnalysisGrid &AliAnalysisGrid::operator=(const AliAnalysisGrid& other)
{
// Assignment.
   if (this != &other) {
      TNamed::operator=(other);
      fSpecialBits = other.fSpecialBits;
   }
   return *this;
}

//______________________________________________________________________________
Bool_t AliAnalysisGrid::CreateToken(const char *)
{
// Check if a valid token exists - if not create one
   ::Warning("AliAnalysisGrid::CreateToken()", "**** !!!! Obsolete method. Please remove the line calling this in your plugin configuration !!!! ****\n");
   return kTRUE;
}

//______________________________________________________________________________
AliAnalysisGrid::EPluginRunMode AliAnalysisGrid::GetRunMode() const
{
// Get the current run mode.
   if (TObject::TestBit(kTest)) return AliAnalysisGrid::kTest;
   if (TObject::TestBit(kOffline)) return AliAnalysisGrid::kOffline;
   if (TObject::TestBit(kSubmit)) return AliAnalysisGrid::kSubmit;
   if (TObject::TestBit(kMerge)) return AliAnalysisGrid::kMerge;
   return AliAnalysisGrid::kFull;
}
   
//______________________________________________________________________________
void AliAnalysisGrid::SetRunMode(const char *mode)
{
// Set the alien plugin run mode. All modes require presence of a valid token
// and sourcing the AliEn environment. Supported modes are:
// - full (default): Generates requested datasets, locally generates the JDL,
//                   saves existing analysis manager to the file analysis.root,
//                   generates analysis macro, execution and validation scripts,
//                   copies all these files to AliEn working space and submits 
//                   the job leaving user in an AliEn shell.
// - test          : Generates only 10 entries of the first requested dataset and
//                   copies this locally as wn.xml, generates all files from the
//                   full run mode except the JDL and executes the analysis locally.
//                   This mode can be used to test if the analysis may run in grid.
// - offline       : No dataset is produced, but all other files are locally generated.
//                   No file is copied in AliEn workspace. This mode can be used to
//                   customize the automatic JDL/analysis macro.
// - submit        : Datasets are generated in AliEn but the JDL and all the other
//                   files are supposed to exist in the local directory. The files
//                   are copied to AliEn and the job is submitted. This mode should
//                   be used in correlation with "offline mode" to submit customized
//                   analysis macro/jdl.
// - merge         : Only MergeOutputs() method called to merge the registered
//                   outputs of a job that finished.
   TString smode(mode);
   smode.ToLower();
   TObject::SetBit(kTest, kFALSE);
   TObject::SetBit(kOffline, kFALSE);
   TObject::SetBit(kSubmit, kFALSE);
   TObject::SetBit(kMerge, kFALSE);
   if (smode.Contains("test")) {
      TObject::SetBit(kTest, kTRUE);
      return;
   }
   if (smode.Contains("offline")) {
      TObject::SetBit(kOffline, kTRUE);
      SetUseCopy(kFALSE);
      SetCheckCopy(kFALSE);
      return;
   }
   if (smode.Contains("submit")) {
      TObject::SetBit(kSubmit, kTRUE);
      return;
   }
   if (smode.Contains("merge") || smode.Contains("terminate")) {
      TObject::SetBit(kMerge, kTRUE);
      return;
   }
   if (!smode.Contains("full")) {
      Warning("SetRunMode","Run mode \"%s\" not known. Supported modes: \"full\", \"test\", \"offline\", \"submit\" and \"merge\"", mode);
      Warning("SetRunMode","Run mode set to FULL");
   }   
}
 AliAnalysisGrid.cxx:1
 AliAnalysisGrid.cxx:2
 AliAnalysisGrid.cxx:3
 AliAnalysisGrid.cxx:4
 AliAnalysisGrid.cxx:5
 AliAnalysisGrid.cxx:6
 AliAnalysisGrid.cxx:7
 AliAnalysisGrid.cxx:8
 AliAnalysisGrid.cxx:9
 AliAnalysisGrid.cxx:10
 AliAnalysisGrid.cxx:11
 AliAnalysisGrid.cxx:12
 AliAnalysisGrid.cxx:13
 AliAnalysisGrid.cxx:14
 AliAnalysisGrid.cxx:15
 AliAnalysisGrid.cxx:16
 AliAnalysisGrid.cxx:17
 AliAnalysisGrid.cxx:18
 AliAnalysisGrid.cxx:19
 AliAnalysisGrid.cxx:20
 AliAnalysisGrid.cxx:21
 AliAnalysisGrid.cxx:22
 AliAnalysisGrid.cxx:23
 AliAnalysisGrid.cxx:24
 AliAnalysisGrid.cxx:25
 AliAnalysisGrid.cxx:26
 AliAnalysisGrid.cxx:27
 AliAnalysisGrid.cxx:28
 AliAnalysisGrid.cxx:29
 AliAnalysisGrid.cxx:30
 AliAnalysisGrid.cxx:31
 AliAnalysisGrid.cxx:32
 AliAnalysisGrid.cxx:33
 AliAnalysisGrid.cxx:34
 AliAnalysisGrid.cxx:35
 AliAnalysisGrid.cxx:36
 AliAnalysisGrid.cxx:37
 AliAnalysisGrid.cxx:38
 AliAnalysisGrid.cxx:39
 AliAnalysisGrid.cxx:40
 AliAnalysisGrid.cxx:41
 AliAnalysisGrid.cxx:42
 AliAnalysisGrid.cxx:43
 AliAnalysisGrid.cxx:44
 AliAnalysisGrid.cxx:45
 AliAnalysisGrid.cxx:46
 AliAnalysisGrid.cxx:47
 AliAnalysisGrid.cxx:48
 AliAnalysisGrid.cxx:49
 AliAnalysisGrid.cxx:50
 AliAnalysisGrid.cxx:51
 AliAnalysisGrid.cxx:52
 AliAnalysisGrid.cxx:53
 AliAnalysisGrid.cxx:54
 AliAnalysisGrid.cxx:55
 AliAnalysisGrid.cxx:56
 AliAnalysisGrid.cxx:57
 AliAnalysisGrid.cxx:58
 AliAnalysisGrid.cxx:59
 AliAnalysisGrid.cxx:60
 AliAnalysisGrid.cxx:61
 AliAnalysisGrid.cxx:62
 AliAnalysisGrid.cxx:63
 AliAnalysisGrid.cxx:64
 AliAnalysisGrid.cxx:65
 AliAnalysisGrid.cxx:66
 AliAnalysisGrid.cxx:67
 AliAnalysisGrid.cxx:68
 AliAnalysisGrid.cxx:69
 AliAnalysisGrid.cxx:70
 AliAnalysisGrid.cxx:71
 AliAnalysisGrid.cxx:72
 AliAnalysisGrid.cxx:73
 AliAnalysisGrid.cxx:74
 AliAnalysisGrid.cxx:75
 AliAnalysisGrid.cxx:76
 AliAnalysisGrid.cxx:77
 AliAnalysisGrid.cxx:78
 AliAnalysisGrid.cxx:79
 AliAnalysisGrid.cxx:80
 AliAnalysisGrid.cxx:81
 AliAnalysisGrid.cxx:82
 AliAnalysisGrid.cxx:83
 AliAnalysisGrid.cxx:84
 AliAnalysisGrid.cxx:85
 AliAnalysisGrid.cxx:86
 AliAnalysisGrid.cxx:87
 AliAnalysisGrid.cxx:88
 AliAnalysisGrid.cxx:89
 AliAnalysisGrid.cxx:90
 AliAnalysisGrid.cxx:91
 AliAnalysisGrid.cxx:92
 AliAnalysisGrid.cxx:93
 AliAnalysisGrid.cxx:94
 AliAnalysisGrid.cxx:95
 AliAnalysisGrid.cxx:96
 AliAnalysisGrid.cxx:97
 AliAnalysisGrid.cxx:98
 AliAnalysisGrid.cxx:99
 AliAnalysisGrid.cxx:100
 AliAnalysisGrid.cxx:101
 AliAnalysisGrid.cxx:102
 AliAnalysisGrid.cxx:103
 AliAnalysisGrid.cxx:104
 AliAnalysisGrid.cxx:105
 AliAnalysisGrid.cxx:106
 AliAnalysisGrid.cxx:107
 AliAnalysisGrid.cxx:108
 AliAnalysisGrid.cxx:109
 AliAnalysisGrid.cxx:110
 AliAnalysisGrid.cxx:111
 AliAnalysisGrid.cxx:112
 AliAnalysisGrid.cxx:113
 AliAnalysisGrid.cxx:114
 AliAnalysisGrid.cxx:115
 AliAnalysisGrid.cxx:116
 AliAnalysisGrid.cxx:117
 AliAnalysisGrid.cxx:118