ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

//
// AliMuonGridSubmitter : a class to help submit jobs for several runs
//
// This class is dealing with 3 different directories :
//
// - template directory ($ALICE_ROOT/PWG/muondep/XXXTemplates) containing the
//   basic template files to be used for a particular job type (XXX). A template can contain
//   some variables that will be replaced during during the copy from template
//   to local dir
//
// - local directory, where the files from the template directory, are copied
//   once the class has been configured properly (i.e. using the various Set, Use,
//   etc... methods). Some other files (e.g. JDL ones) are generated from
//   scratch and also copied into this directory.
//   At this point one could(should) check the files, as they are the ones
//   to be copied to the remote directory for the production
//
// - remote directory, the alien directory where the files will be copied
//   (from the local directory) before the actual submission
//
// author: Laurent Aphecetche (Subatech
//

#include "AliMuonGridSubmitter.h"

#include "AliLog.h"
#include "TFile.h"
#include "TGrid.h"
#include "TGridResult.h"
#include "TMap.h"
#include "TMath.h"
#include "TObjString.h"
#include "TROOT.h"
#include "TString.h"
#include "TSystem.h"
#include <vector>
#include "AliAnalysisTriggerScalers.h"
#include "Riostream.h"

//______________________________________________________________________________
AliMuonGridSubmitter::AliMuonGridSubmitter(AliMuonGridSubmitter::EJobType jobType, Bool_t localOnly)
: TObject(),
fInternalMap(0x0),
fVars(0x0),
fIsValid(kFALSE),
fShouldOverwriteFiles(kFALSE),
fTemplateFileList(0x0),
fLocalFileList(0x0),
fRunList()
{
  // ctor
  
  if (!gGrid && !localOnly)
  {
    TGrid::Connect("alien://");
    if ( !gGrid )
    {
      AliError("cannot connect to grid");
    }
  }
  
  SetPackages("VO_ALICE@AliRoot::v5-04-Rev-20");
  
  TString basedir = gSystem->ExpandPathName("$ALICE_ROOT/PWG/muondep");
  
  TString dir;
  dir.Form("%s/%sTemplates",basedir.Data(),JobTypeName(jobType).Data());
  
  if (!SetTemplateDir(dir.Data()))
  {
    AliError(Form("Could not find %s directory. Please check.",dir.Data()));
  }
  
  SetLocalDir(gSystem->pwd());
}

//______________________________________________________________________________
AliMuonGridSubmitter::~AliMuonGridSubmitter()
{
  // dtor
  delete fTemplateFileList;
  delete fLocalFileList;
  delete fInternalMap;
  delete fVars;
}

///______________________________________________________________________________
void AliMuonGridSubmitter::AddIncludePath(const char* pathList) const
{
  TObjArray* paths = TString(pathList).Tokenize(" ");
  TIter next(paths);
  TObjString* p;
  TString includePath = gSystem->GetIncludePath();
  
  while ( ( p = static_cast<TObjString*>(next()) ) )
  {
    if ( !includePath.Contains(p->String()) )
    {
      gSystem->AddIncludePath(p->String().Data());
    }
  }
  
  delete paths;
}


//______________________________________________________________________________
void AliMuonGridSubmitter::AddToTemplateFileList(const char* filename)
{
  // add a file to the list of templates
  // and update the local file list if needed
  
  TObjArray* a = TemplateFileList();
  
  if ( !a->FindObject(filename) )
  {
    a->Add(new TObjString(filename));
    UpdateLocalFileList();
  }
}

//______________________________________________________________________________
void AliMuonGridSubmitter::AddToLocalFileList(const char* filename)
{
  // add a file to the list of local files
  
  TObjArray* a = LocalFileList();
  
  if ( !a->FindObject(filename) )
  {
    a->Add(new TObjString(filename));
  }
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CheckCompilation(const char* file) const
{
  /// Check whether file can be compiled or not
  /// FIXME: use gSystem->TempFileName for tmpfile !
  
  Bool_t rv(kTRUE);
  
  TString sfile(gSystem->BaseName(file));
  TString tmpfile(Form("tmpfile_%s",sfile.Data()));
  
  gSystem->Exec(Form("cp %s %s",file,tmpfile.Data()));
  
  ReplaceVars(tmpfile.Data());
  
  gSystem->AddIncludePath("-I$ALICE_ROOT/include");
  gSystem->AddIncludePath("-I$ALICE_ROOT/EVGEN");

  if (gROOT->LoadMacro(Form("%s++",tmpfile.Data())))
  {
    AliError(Form("macro %s can not be compiled. Please check.",file));
    rv = kFALSE;
  }
  
  gSystem->Exec(Form("rm %s",tmpfile.Data()));
  
  return rv;
}


//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CheckLocal() const
{
  /// Check whether all required local files are there
  TIter next(LocalFileList());
  TObjString* file;
  
  while ( ( file = static_cast<TObjString*>(next())) )
  {
      if ( gSystem->AccessPathName(file->String().Data()) )
      {
        return kFALSE;
      }
  }
  
  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CheckRemote() const
{
  /// Check whether all required remote files are there
  AliWarning("implement me");
  return kFALSE;
}

//______________________________________________________________________________
void AliMuonGridSubmitter::CleanLocal(const char* excludeList) const
{
  /// Clean (remove) local generated files
  /// exclude contains a list of comma separated pattern of files
  /// to be avoided
  
  TIter next(LocalFileList());
  TObjString* file;
  TObjArray* excludeArray = TString(excludeList).Tokenize(",");
  
  while ( ( file = static_cast<TObjString*>(next())) )
  {
    Bool_t shouldExclude(kFALSE);
    
    TIter nextExclude(excludeArray);
    TObjString* s;
    
    while ( ( s = static_cast<TObjString*>(nextExclude()))  && !shouldExclude )
    {
      if ( file->String().Contains(s->String()) ) shouldExclude=kTRUE;
    }
    
    if (!shouldExclude)
    {
      gSystem->Unlink(file->String().Data());
    }
  }
  
  delete excludeArray;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CopyFile(const char* localFile)
{
  /// copy a local file to remote destination
  TString local;
  
  if ( gSystem->IsAbsoluteFileName(localFile) )
  {
    local = localFile;
  }
  else
  {
    local = Form("%s/%s",LocalDir().Data(),gSystem->ExpandPathName(localFile));
  }
  
  if (gSystem->AccessPathName(local.Data()))
  {
    AliErrorClass(Form("Local file %s does not exist",local.Data()));
    return kFALSE;
  }
  
  TString remote;
  
  remote += RemoteDir().Data();
  remote += "/";
  
  if ( gSystem->IsAbsoluteFileName(localFile) )
  {
    TString tmp(localFile);
    tmp.ReplaceAll(GetMapValue("Snapshot"),"");
    tmp.ReplaceAll(GetMapValue("Local"),"");
    remote += tmp;
  }
  else
  {
    remote += localFile;
  }
  
  TString dirName = gSystem->DirName(remote.Data());
  
  Bool_t ok(kTRUE);
  
  if (!RemoteDirectoryExists(dirName.Data()))
  {
    ok = gGrid->Mkdir(dirName.Data(),"-p");
  }
  
  if ( ok )
  {
    AliDebugClass(1,Form("cp %s alien://%s",local.Data(),remote.Data()));
    return TFile::Cp(local.Data(),Form("alien://%s",remote.Data()));
  }
  else
  {
    return kFALSE;
  }
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CheckRemoteDir() const
{
  /// Check we have a grid connection and that the remote dir exists
  
  if (RemoteDir().IsNull())
  {
    AliError("you must provide the grid location where to copy the files");
    return kFALSE;
  }
  
  if (!RemoteDirectoryExists(RemoteDir()))
  {
    AliError(Form("directory %s does not exist", RemoteDir().Data()));
    return kFALSE;
  }

  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CopyLocalFilesToRemote()
{
  /// copy all files necessary to run the simulation into remote directory
  
  TIter next(LocalFileList());
  TObjString* ftc;
    
  Bool_t allok(kTRUE);
    
  while ( ( ftc = static_cast<TObjString*>(next())) )
  {
    allok = allok && CopyFile(ftc->String());
  }
  return allok;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::CopyTemplateFilesToLocal()
{
  // copy (or generate) local files from the template ones
  
  if (!IsValid()) return kFALSE;

  AliDebug(1,"");

  TIter next(TemplateFileList());
  TObjString* file;
  
  Int_t err(0);
  Bool_t potentialProblem(kFALSE);
  
  while ( ( file = static_cast<TObjString*>(next())) )
  {
    if ( file->String().Contains("OCDB") )
    {
      /// OCDB snapshots are not in template
      continue;
    }

    if ( !ShouldOverwriteFiles() && !gSystem->AccessPathName(file->String().Data()) )
    {
      AliError(Form("Local file %s already exists. Remove it first if you want to update overwrite it",file->String().Data()));
      potentialProblem = kTRUE;
    }
    else
    {
      TString stemplate(Form("%s/%s",TemplateDir().Data(),file->String().Data()));
      TString slocal(Form("%s/%s",LocalDir().Data(),file->String().Data()));
      
      AliDebug(1,Form("Copying %s to %s",stemplate.Data(),slocal.Data()));
      
      Int_t c =  gSystem->CopyFile(stemplate.Data(),slocal.Data(),ShouldOverwriteFiles());
      if ( c )
      {
        Bool_t ok(kFALSE);
        if ( stemplate.Contains(".jdl",TString::kIgnoreCase) )
        {
          ok = Generate(file->String().Data());
        }
        if (!ok)
        {
          AliError(Form("Error %d copying file %s",c,stemplate.Data()));
        }
        else
        {
          c=0;
        }
      }
      else
      {
        if ( HasVars(slocal.Data()) )
        {
          if (!ReplaceVars(slocal.Data()))
          {
            AliError("pb in ReplaceVars");
            c=1;
          }
        }
      }
      err += c;
    }
  }
  
  if ( potentialProblem )
  {
    AliWarning("At least one local file could not be overwritten. Cross-check that the local files are OK before we try to upload them to the Grid !");
    return kFALSE;
  }
  return (err==0);
}

//______________________________________________________________________________
std::ostream* AliMuonGridSubmitter::CreateJDLFile(const char* name) const
{
  /// Create a (local and empty) JDL file
  
  AliDebugClass(1,"");
  
  TString jdl(Form("%s/%s",LocalDir().Data(),name));
  
  if ( !ShouldOverwriteFiles() && !gSystem->AccessPathName(jdl.Data()) )
  {
    AliErrorClass(Form("File %s already exists. Remove it if you want to overwrite it",jdl.Data()));
    return 0x0;
  }
  
  std::ofstream* os = new std::ofstream(gSystem->ExpandPathName(jdl.Data()));
  
  if (os->bad())
  {
    AliErrorClass(Form("Cannot create file %s",jdl.Data()));
    delete os;
    os=0x0;
  }
  
  return os;
}

//______________________________________________________________________________
Int_t AliMuonGridSubmitter::GetLastStage(const char* remoteDir)
{
  /// Get the last staging phase already performed
  
  TGridResult* r = gGrid->Ls(remoteDir);
  Int_t i(0);
  Int_t lastStage(0);
  Int_t offset = TString("Stage_").Length();
  
  while ( r->GetFileName(i) )
  {
    TString file(r->GetFileName(i));
    if  (file.BeginsWith("Stage_") && !file.Contains("xml") )
    {
      Int_t n = TString(file(offset,file.Length()-offset)).Atoi();
      lastStage = TMath::Max(lastStage,n);
    }
    ++i;
  }
  delete r;
  return lastStage;
}

//______________________________________________________________________________
TString AliMuonGridSubmitter::GetMapValue(const char* key) const
{
  // convenience method to access internal map of TObjStrings
  if (!fInternalMap) return "";
  
  TObject* o = fInternalMap->GetValue(key);
  
  if (o)
  {
    return static_cast<TObjString*>(o)->String();
  }
  
  return "";
}

//______________________________________________________________________________
TObjArray* AliMuonGridSubmitter::GetVariables(const char* file) const
{
  /// Find the variables in the file
  
  std::ifstream in(file);
  char line[1024];
  TObjArray* variables(0x0);
  
  while ( in.getline(line,1023,'\n') )
  {
    TString sline(line);
    while (sline.Contains("VAR_") && !sline.BeginsWith("//") )
    {
      Int_t i1 = sline.Index("VAR_");
      Int_t i2(i1);
      
      while ( ( i2 < sline.Length() ) && ( isalnum(sline[i2]) || sline[i2]=='_' ) ) ++i2;
      
      if (!variables)
      {
        variables = new TObjArray;
        variables->SetOwner(kTRUE);
      }
      
      TString var = sline(i1,i2-i1);
      if ( !variables->FindObject(var) )
      {
        variables->Add(new TObjString(var));
      }
      sline.ReplaceAll(var,"");
    }
  }
  
  in.close();
  
  return variables;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::HasVars(const char* file) const
{
  /// Whether or not the file contains variables that have to
  /// be substituted
  
  std::ifstream in(file);
  char line[1024];
  while ( in.getline(line,1023,'\n') )
  {
    TString sline(line);
    if (sline.Contains("VAR_") && !sline.BeginsWith("//") )
    {
      return kTRUE;
    }
  }
  return kFALSE;
}

//______________________________________________________________________________
TMap* AliMuonGridSubmitter::InternalMap() const
{
  if (!fInternalMap)
  {
    fInternalMap = new TMap;
    fInternalMap->SetOwnerKeyValue(kTRUE,kTRUE);
  }
  return fInternalMap;
}

//______________________________________________________________________________
TString AliMuonGridSubmitter::JobTypeName(AliMuonGridSubmitter::EJobType jobType) const
{
  if ( jobType == kAccEff )
  {
    return "AccEff";
  }
  else if ( jobType == kQAMerge)
  {
    return "QAMerge";
  }
  return "unknown";
}

//______________________________________________________________________________
TObjArray* AliMuonGridSubmitter::LocalFileList() const
{
  /// Return (after createing and filling it if needed)
  /// the internal file list with paths from the local directory
  
  if (!fLocalFileList)
  {
    fLocalFileList = static_cast<TObjArray*>(TemplateFileList()->Clone());
  }
  
  return fLocalFileList;
}

//______________________________________________________________________________
UInt_t AliMuonGridSubmitter::NofRuns() const
{
    // number of runs we're dealing with
  return fRunList.size();
}

//______________________________________________________________________________
TObjArray* AliMuonGridSubmitter::OrderKeys(const TMap& map) const
{
  /// return an array where the map's keys are sorted alphabetically
  /// the returned array should be deleted by the client
  
  TObjArray* keyArray = new TObjArray;
  keyArray->SetOwner(kTRUE);
  TObjString* key;
  
  TIter next(&map);
  while ( ( key = static_cast<TObjString*>(next())) )
  {
    keyArray->Add(new TObjString(key->String()));
  }
  
  keyArray->Sort();
  return keyArray;
}


//______________________________________________________________________________
void AliMuonGridSubmitter::OutputToJDL(std::ostream& out, const char* key,
                                    const TObjArray& values) const
{
  /// output to ostream of key,{values} pair
  
  out << key << " = ";
  
  Int_t n = values.GetEntries();
  
  if ( n > 1 )
  {
    out << "{" << std::endl;
    TIter next(&values);
    TObjString* v;
    
    while ( ( v = static_cast<TObjString*>(next())) )
    {
      if ( v->String().Length() == 0 ) continue;
      
      --n;
      out << "\t\"" << v->String().Data() << "\"";
      if  ( n ) out << ",";
      out << std::endl;
    }
    out << "}";
  }
  else
  {
    TString& v1 = static_cast<TObjString*>(values.At(0))->String();
    
    if ( v1.IsDigit() && !(TString(key).Contains("SplitMax")) && !(TString(key).Contains("TTL")) )
    {
      out << v1.Atoi();
    }
    else
    {
      out << "\"" << v1.Data() << "\"";
    }
  }
  out << ";" << std::endl;
}

//______________________________________________________________________________
void AliMuonGridSubmitter::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
{
  /// output to ostream
  
  TObjArray values;
  values.SetOwner(kTRUE);
  
  values.Add(new TObjString(v1));
  if ( strlen(v2) > 0 ) values.Add(new TObjString(v2));
  if ( strlen(v3) > 0 ) values.Add(new TObjString(v3));
  if ( strlen(v4) > 0 ) values.Add(new TObjString(v4));
  if ( strlen(v5) > 0 ) values.Add(new TObjString(v5));
  if ( strlen(v6) > 0 ) values.Add(new TObjString(v6));
  if ( strlen(v7) > 0 ) values.Add(new TObjString(v7));
  if ( strlen(v8) > 0 ) values.Add(new TObjString(v8));
  if ( strlen(v9) > 0 ) values.Add(new TObjString(v9));
  
  OutputToJDL(out,key,values);
}


//______________________________________________________________________________
void AliMuonGridSubmitter::Print(Option_t* /*opt*/) const
{
  /// Printout
  
  if (!IsValid())
  {
    std::cout << std::string(80,'*') << std::endl;
    std::cout << "INVALID OBJECT. CHECK BELOW THE CONFIGURATION." << std::endl;
    std::cout << std::string(80,'*') << std::endl;
  }

  std::cout << "-- Internals : " << std::endl;
  
  TObjArray* im = OrderKeys(*fInternalMap);
  
  TIter next(im);
  TObjString* key;
  
  while ( ( key = static_cast<TObjString*>(next()) ) )
  {
    TString value = static_cast<TObjString*>(fInternalMap->GetValue(key->String()))->String();
    
    std::cout << key->String() << " : " << value.Data() << std::endl;
  }
  
  delete im;
  
  if ( NofRuns() )
  {
    std::cout << NofRuns() << " run";
    if ( NofRuns() > 1 ) std::cout << "s";
    std::cout << " = ";
    for ( std::vector<int>::size_type i = 0; i < fRunList.size(); ++i )
    {
      std::cout << fRunList[i] << " ";
    }
    std::cout << std::endl;
  }
  
  std::cout << std::endl << "-- Variables : " << std::endl;

  TObjArray* iv = OrderKeys(*fVars);
  
  TIter nextVar(iv);
  while ( ( key = static_cast<TObjString*>(nextVar())) )
  {
    TObjString* value = static_cast<TObjString*>(fVars->GetValue(key->String()));
    std::cout << "Variable " << key->String() << " will be replaced by " << value->String() << std::endl;
  }
  
  delete iv;
  
  std::cout << std::endl << "-- Files to be uploaded:" << std::endl;
  TIter nextFile(LocalFileList());
  TObjString* sfile;
  while ( ( sfile = static_cast<TObjString*>(nextFile())) )
  {
    std::cout << sfile->String().Data() << std::endl;
  }
}


//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::RemoteDirectoryExists(const char *dirname) const
{
  // Returns true if directory exists. Can be also a path.
  if (!gGrid) return kFALSE;
  // Check if dirname is a path
  TString dirstripped = dirname;
  dirstripped = dirstripped.Strip();
  dirstripped = dirstripped.Strip(TString::kTrailing, '/');
  TString dir = gSystem->BaseName(dirstripped);
  dir += "/";
  TString path = gSystem->DirName(dirstripped);
  TGridResult *res = gGrid->Ls(path, "-F");
  if (!res) return kFALSE;
  TIter next(res);
  TMap *map;
  TObject *obj;
  while ((map=dynamic_cast<TMap*>(next()))) {
    obj = map->GetValue("name");
    if (!obj) break;
    if (dir == obj->GetName()) {
      delete res;
      return kTRUE;
    }
  }
  delete res;
  return kFALSE;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::RemoteFileExists(const char *lfn)
{
  // Returns true if file exists.
  if (!gGrid) return kFALSE;
  TGridResult *res = gGrid->Ls(lfn);
  if (!res) return kFALSE;
  TMap *map = dynamic_cast<TMap*>(res->At(0));
  if (!map) {
    delete res;
    return kFALSE;
  }
  TObjString *objs = dynamic_cast<TObjString*>(map->GetValue("name"));
  if (!objs || !objs->GetString().Length()) {
    delete res;
    return kFALSE;
  }
  delete res;
  return kTRUE;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::ReplaceVars(const char* file) const
{
  /// Replace the variables (i.e. things starting by VAR_) found in file
  
  AliDebug(1,file);
  
  std::ifstream in(file);
  char line[1024];
  TObjArray lines;
  lines.SetOwner(kTRUE);
  Int_t nvars(0);
  Int_t nreplaced(0);

  TIter next(fVars);

  while ( in.getline(line,1023,'\n') )
  {
    TString sline(line);
    while (sline.Contains("VAR_") && !sline.BeginsWith("//") )
    {
      ++nvars;
      TObjString* key;
      next.Reset();
      
      int n(0);
      
      while ( ( key = static_cast<TObjString*>(next())) )
      {
        AliDebug(1,Form("Does %s contains %s ?",sline.Data(),key->String().Data()));
        
        if ( sline.Contains(key->String()) )
        {
          ++nreplaced;
          ++n;
          TObjString* value = static_cast<TObjString*>(fVars->GetValue(key->String()));
          AliDebug(1,Form("Replacing %s by %s in %s",key->String().Data(),value->String().Data(),sline.Data()));
          sline.ReplaceAll(key->String(),value->String());
          AliDebug(1,"Done");
          break;
        }
      }
      
      if (n==0)
      {
        AliError(Form("Could not find a replacement for variable %s",sline.Data()));
        break;
      }
    }

    lines.Add(new TObjString(sline));
  }
  
  in.close();
  
  if ( nvars > 0 )
  {
    if ( nreplaced != nvars )
    {
      AliError(Form("nvars=%d nreplaced=%d",nvars,nreplaced));
      return kFALSE;
    }
    std::ofstream out(file);
    TIter nextLine(&lines);
    TObjString* s;
    while ( ( s = static_cast<TObjString*>(nextLine()) ) )
    {
      out << s->String().Data() << std::endl;
    }
    out.close();
  }
  
  AliDebug(1,Form("replaced %d vars",nvars));
  
  return kTRUE;
}

//______________________________________________________________________________
const std::vector<int>& AliMuonGridSubmitter::RunList() const
{
  /// Return a reference to our runlist
  return fRunList;
}

//______________________________________________________________________________
void AliMuonGridSubmitter::SetPackages(const char* aliroot,
                                         const char* root,
                                         const char* geant3,
                                         const char* api)
{
  /// Set the packages to be used by the jobs
  /// If root and geant3 are given (default is to let alien get the correct
  /// values for the requested aliroot version), then they must
  /// correspond to a valid combination, see http://alimonitor.cern.ch/packages/
  
  SetMapKeyValue("AliRoot",aliroot);
  SetMapKeyValue("Root",root);
  SetMapKeyValue("Geant3",geant3);
  SetMapKeyValue("API",api);
}

//______________________________________________________________________________
TString AliMuonGridSubmitter::GetRemoteDir(const char* dir, Bool_t create)
{
  /// Set the target remote directory (on the grid)
  
  if (!RemoteDirectoryExists(dir))
  {
    if (!create)
    {
      AliErrorClass(Form("Remote directory %s does not exist", dir));
      return "";
    }
    else
    {
      AliInfoClass(Form("Remote directory %s does not exist. Trying to create it...",dir));
      if (!gGrid)
      {
          AliErrorClass("cannot connect to grid");
          return "";
      }
      if ( !gGrid->Mkdir(dir,"-p") )
      {
        AliErrorClass(Form("Could not create remote dir. Sorry."));
        return "";
      }
    }
  }
  return dir;
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::SetLocalDirectory(const char* type, const char* path)
{
  if (gSystem->AccessPathName(path)==kFALSE)
  {
    SetMapKeyValue(type,path);
    return kTRUE;
  }
  return kFALSE;
}

//______________________________________________________________________________
void AliMuonGridSubmitter::SetMapKeyValue(const char* key, const char* value)
{
  TObjString skey(key);
  InternalMap()->Remove(&skey);
  InternalMap()->Add(new TObjString(key),new TObjString(value));
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::SetRemoteDirectory(const char* type, const char* path)
{
  // Set the merged directory to be used
  TString v = GetRemoteDir(path,kTRUE);
  SetMapKeyValue(type,v);
  return (v.Length()>0);
}

//______________________________________________________________________________
void AliMuonGridSubmitter::SetRunList(const char* runlist)
{
    // set the runlist from a text file
  AliAnalysisTriggerScalers ts(runlist);
  fRunList = ts.GetRunList();
}

//______________________________________________________________________________
void AliMuonGridSubmitter::SetRunList(int runNumber)
{
  // set the runlist from a text file
  fRunList.clear();
  fRunList.push_back(runNumber);
}

//______________________________________________________________________________
TString AliMuonGridSubmitter::GetVar(const char* key) const
{
  TObjString* o = static_cast<TObjString*>(Vars()->GetValue(key));
  if (o)
  {
    return o->String();
  }
  return "";
}

//______________________________________________________________________________
Bool_t AliMuonGridSubmitter::SetVar(const char* varname, const char* value)
{
  /// Set a variable
  ///
  /// Pay attention to how string variables should be given here : you have
  /// to espace the quotation marks :
  ///
  /// SetVar("VAR_PYTHIA8_SETUP_STRINGS","\"SoftQCD:doubleDiffractive=off\"");
  
  TString s(varname);
  s.ToUpper();
  if (!s.BeginsWith("VAR_"))
  {
    AliError("Variable name should start with VAR_");
    return kFALSE;
  }
  if (!fVars)
  {
    fVars = new TMap;
    fVars->SetOwnerKeyValue(kTRUE,kTRUE);
  }
  
  TObject* o = new TObjString(s);
  fVars->Remove(o);
  
  fVars->Add(o,new TObjString(value));
  
  return kTRUE;
}

//______________________________________________________________________________
TObjArray* AliMuonGridSubmitter::TemplateFileList() const
{
  /// Return (after createing if needed)
  
  if (!fTemplateFileList)
  {
    fTemplateFileList = new TObjArray;
    fTemplateFileList->SetOwner(kTRUE);
  }
  return fTemplateFileList;
}

//______________________________________________________________________________
void AliMuonGridSubmitter::UpdateLocalFileList()
{
  // insure that local file list contains at least all of the template files
  TIter next(TemplateFileList());
  TObjString* s;
  
  while ( ( s = static_cast<TObjString*>(next())) )
  {
    AddToLocalFileList(s->String().Data());
  }
}

//______________________________________________________________________________
TMap* AliMuonGridSubmitter::Vars() const
{
  if (!fVars)
  {
    fVars = new TMap;
    fVars->SetOwnerKeyValue(kTRUE,kTRUE);
  }
  return fVars;
}

 AliMuonGridSubmitter.cxx:1
 AliMuonGridSubmitter.cxx:2
 AliMuonGridSubmitter.cxx:3
 AliMuonGridSubmitter.cxx:4
 AliMuonGridSubmitter.cxx:5
 AliMuonGridSubmitter.cxx:6
 AliMuonGridSubmitter.cxx:7
 AliMuonGridSubmitter.cxx:8
 AliMuonGridSubmitter.cxx:9
 AliMuonGridSubmitter.cxx:10
 AliMuonGridSubmitter.cxx:11
 AliMuonGridSubmitter.cxx:12
 AliMuonGridSubmitter.cxx:13
 AliMuonGridSubmitter.cxx:14
 AliMuonGridSubmitter.cxx:15
 AliMuonGridSubmitter.cxx:16
 AliMuonGridSubmitter.cxx:17
 AliMuonGridSubmitter.cxx:18
 AliMuonGridSubmitter.cxx:19
 AliMuonGridSubmitter.cxx:20
 AliMuonGridSubmitter.cxx:21
 AliMuonGridSubmitter.cxx:22
 AliMuonGridSubmitter.cxx:23
 AliMuonGridSubmitter.cxx:24
 AliMuonGridSubmitter.cxx:25
 AliMuonGridSubmitter.cxx:26
 AliMuonGridSubmitter.cxx:27
 AliMuonGridSubmitter.cxx:28
 AliMuonGridSubmitter.cxx:29
 AliMuonGridSubmitter.cxx:30
 AliMuonGridSubmitter.cxx:31
 AliMuonGridSubmitter.cxx:32
 AliMuonGridSubmitter.cxx:33
 AliMuonGridSubmitter.cxx:34
 AliMuonGridSubmitter.cxx:35
 AliMuonGridSubmitter.cxx:36
 AliMuonGridSubmitter.cxx:37
 AliMuonGridSubmitter.cxx:38
 AliMuonGridSubmitter.cxx:39
 AliMuonGridSubmitter.cxx:40
 AliMuonGridSubmitter.cxx:41
 AliMuonGridSubmitter.cxx:42
 AliMuonGridSubmitter.cxx:43
 AliMuonGridSubmitter.cxx:44
 AliMuonGridSubmitter.cxx:45
 AliMuonGridSubmitter.cxx:46
 AliMuonGridSubmitter.cxx:47
 AliMuonGridSubmitter.cxx:48
 AliMuonGridSubmitter.cxx:49
 AliMuonGridSubmitter.cxx:50
 AliMuonGridSubmitter.cxx:51
 AliMuonGridSubmitter.cxx:52
 AliMuonGridSubmitter.cxx:53
 AliMuonGridSubmitter.cxx:54
 AliMuonGridSubmitter.cxx:55
 AliMuonGridSubmitter.cxx:56
 AliMuonGridSubmitter.cxx:57
 AliMuonGridSubmitter.cxx:58
 AliMuonGridSubmitter.cxx:59
 AliMuonGridSubmitter.cxx:60
 AliMuonGridSubmitter.cxx:61
 AliMuonGridSubmitter.cxx:62
 AliMuonGridSubmitter.cxx:63
 AliMuonGridSubmitter.cxx:64
 AliMuonGridSubmitter.cxx:65
 AliMuonGridSubmitter.cxx:66
 AliMuonGridSubmitter.cxx:67
 AliMuonGridSubmitter.cxx:68
 AliMuonGridSubmitter.cxx:69
 AliMuonGridSubmitter.cxx:70
 AliMuonGridSubmitter.cxx:71
 AliMuonGridSubmitter.cxx:72
 AliMuonGridSubmitter.cxx:73
 AliMuonGridSubmitter.cxx:74
 AliMuonGridSubmitter.cxx:75
 AliMuonGridSubmitter.cxx:76
 AliMuonGridSubmitter.cxx:77
 AliMuonGridSubmitter.cxx:78
 AliMuonGridSubmitter.cxx:79
 AliMuonGridSubmitter.cxx:80
 AliMuonGridSubmitter.cxx:81
 AliMuonGridSubmitter.cxx:82
 AliMuonGridSubmitter.cxx:83
 AliMuonGridSubmitter.cxx:84
 AliMuonGridSubmitter.cxx:85
 AliMuonGridSubmitter.cxx:86
 AliMuonGridSubmitter.cxx:87
 AliMuonGridSubmitter.cxx:88
 AliMuonGridSubmitter.cxx:89
 AliMuonGridSubmitter.cxx:90
 AliMuonGridSubmitter.cxx:91
 AliMuonGridSubmitter.cxx:92
 AliMuonGridSubmitter.cxx:93
 AliMuonGridSubmitter.cxx:94
 AliMuonGridSubmitter.cxx:95
 AliMuonGridSubmitter.cxx:96
 AliMuonGridSubmitter.cxx:97
 AliMuonGridSubmitter.cxx:98
 AliMuonGridSubmitter.cxx:99
 AliMuonGridSubmitter.cxx:100
 AliMuonGridSubmitter.cxx:101
 AliMuonGridSubmitter.cxx:102
 AliMuonGridSubmitter.cxx:103
 AliMuonGridSubmitter.cxx:104
 AliMuonGridSubmitter.cxx:105
 AliMuonGridSubmitter.cxx:106
 AliMuonGridSubmitter.cxx:107
 AliMuonGridSubmitter.cxx:108
 AliMuonGridSubmitter.cxx:109
 AliMuonGridSubmitter.cxx:110
 AliMuonGridSubmitter.cxx:111
 AliMuonGridSubmitter.cxx:112
 AliMuonGridSubmitter.cxx:113
 AliMuonGridSubmitter.cxx:114
 AliMuonGridSubmitter.cxx:115
 AliMuonGridSubmitter.cxx:116
 AliMuonGridSubmitter.cxx:117
 AliMuonGridSubmitter.cxx:118
 AliMuonGridSubmitter.cxx:119
 AliMuonGridSubmitter.cxx:120
 AliMuonGridSubmitter.cxx:121
 AliMuonGridSubmitter.cxx:122
 AliMuonGridSubmitter.cxx:123
 AliMuonGridSubmitter.cxx:124
 AliMuonGridSubmitter.cxx:125
 AliMuonGridSubmitter.cxx:126
 AliMuonGridSubmitter.cxx:127
 AliMuonGridSubmitter.cxx:128
 AliMuonGridSubmitter.cxx:129
 AliMuonGridSubmitter.cxx:130
 AliMuonGridSubmitter.cxx:131
 AliMuonGridSubmitter.cxx:132
 AliMuonGridSubmitter.cxx:133
 AliMuonGridSubmitter.cxx:134
 AliMuonGridSubmitter.cxx:135
 AliMuonGridSubmitter.cxx:136
 AliMuonGridSubmitter.cxx:137
 AliMuonGridSubmitter.cxx:138
 AliMuonGridSubmitter.cxx:139
 AliMuonGridSubmitter.cxx:140
 AliMuonGridSubmitter.cxx:141
 AliMuonGridSubmitter.cxx:142
 AliMuonGridSubmitter.cxx:143
 AliMuonGridSubmitter.cxx:144
 AliMuonGridSubmitter.cxx:145
 AliMuonGridSubmitter.cxx:146
 AliMuonGridSubmitter.cxx:147
 AliMuonGridSubmitter.cxx:148
 AliMuonGridSubmitter.cxx:149
 AliMuonGridSubmitter.cxx:150
 AliMuonGridSubmitter.cxx:151
 AliMuonGridSubmitter.cxx:152
 AliMuonGridSubmitter.cxx:153
 AliMuonGridSubmitter.cxx:154
 AliMuonGridSubmitter.cxx:155
 AliMuonGridSubmitter.cxx:156
 AliMuonGridSubmitter.cxx:157
 AliMuonGridSubmitter.cxx:158
 AliMuonGridSubmitter.cxx:159
 AliMuonGridSubmitter.cxx:160
 AliMuonGridSubmitter.cxx:161
 AliMuonGridSubmitter.cxx:162
 AliMuonGridSubmitter.cxx:163
 AliMuonGridSubmitter.cxx:164
 AliMuonGridSubmitter.cxx:165
 AliMuonGridSubmitter.cxx:166
 AliMuonGridSubmitter.cxx:167
 AliMuonGridSubmitter.cxx:168
 AliMuonGridSubmitter.cxx:169
 AliMuonGridSubmitter.cxx:170
 AliMuonGridSubmitter.cxx:171
 AliMuonGridSubmitter.cxx:172
 AliMuonGridSubmitter.cxx:173
 AliMuonGridSubmitter.cxx:174
 AliMuonGridSubmitter.cxx:175
 AliMuonGridSubmitter.cxx:176
 AliMuonGridSubmitter.cxx:177
 AliMuonGridSubmitter.cxx:178
 AliMuonGridSubmitter.cxx:179
 AliMuonGridSubmitter.cxx:180
 AliMuonGridSubmitter.cxx:181
 AliMuonGridSubmitter.cxx:182
 AliMuonGridSubmitter.cxx:183
 AliMuonGridSubmitter.cxx:184
 AliMuonGridSubmitter.cxx:185
 AliMuonGridSubmitter.cxx:186
 AliMuonGridSubmitter.cxx:187
 AliMuonGridSubmitter.cxx:188
 AliMuonGridSubmitter.cxx:189
 AliMuonGridSubmitter.cxx:190
 AliMuonGridSubmitter.cxx:191
 AliMuonGridSubmitter.cxx:192
 AliMuonGridSubmitter.cxx:193
 AliMuonGridSubmitter.cxx:194
 AliMuonGridSubmitter.cxx:195
 AliMuonGridSubmitter.cxx:196
 AliMuonGridSubmitter.cxx:197
 AliMuonGridSubmitter.cxx:198
 AliMuonGridSubmitter.cxx:199
 AliMuonGridSubmitter.cxx:200
 AliMuonGridSubmitter.cxx:201
 AliMuonGridSubmitter.cxx:202
 AliMuonGridSubmitter.cxx:203
 AliMuonGridSubmitter.cxx:204
 AliMuonGridSubmitter.cxx:205
 AliMuonGridSubmitter.cxx:206
 AliMuonGridSubmitter.cxx:207
 AliMuonGridSubmitter.cxx:208
 AliMuonGridSubmitter.cxx:209
 AliMuonGridSubmitter.cxx:210
 AliMuonGridSubmitter.cxx:211
 AliMuonGridSubmitter.cxx:212
 AliMuonGridSubmitter.cxx:213
 AliMuonGridSubmitter.cxx:214
 AliMuonGridSubmitter.cxx:215
 AliMuonGridSubmitter.cxx:216
 AliMuonGridSubmitter.cxx:217
 AliMuonGridSubmitter.cxx:218
 AliMuonGridSubmitter.cxx:219
 AliMuonGridSubmitter.cxx:220
 AliMuonGridSubmitter.cxx:221
 AliMuonGridSubmitter.cxx:222
 AliMuonGridSubmitter.cxx:223
 AliMuonGridSubmitter.cxx:224
 AliMuonGridSubmitter.cxx:225
 AliMuonGridSubmitter.cxx:226
 AliMuonGridSubmitter.cxx:227
 AliMuonGridSubmitter.cxx:228
 AliMuonGridSubmitter.cxx:229
 AliMuonGridSubmitter.cxx:230
 AliMuonGridSubmitter.cxx:231
 AliMuonGridSubmitter.cxx:232
 AliMuonGridSubmitter.cxx:233
 AliMuonGridSubmitter.cxx:234
 AliMuonGridSubmitter.cxx:235
 AliMuonGridSubmitter.cxx:236
 AliMuonGridSubmitter.cxx:237
 AliMuonGridSubmitter.cxx:238
 AliMuonGridSubmitter.cxx:239
 AliMuonGridSubmitter.cxx:240
 AliMuonGridSubmitter.cxx:241
 AliMuonGridSubmitter.cxx:242
 AliMuonGridSubmitter.cxx:243
 AliMuonGridSubmitter.cxx:244
 AliMuonGridSubmitter.cxx:245
 AliMuonGridSubmitter.cxx:246
 AliMuonGridSubmitter.cxx:247
 AliMuonGridSubmitter.cxx:248
 AliMuonGridSubmitter.cxx:249
 AliMuonGridSubmitter.cxx:250
 AliMuonGridSubmitter.cxx:251
 AliMuonGridSubmitter.cxx:252
 AliMuonGridSubmitter.cxx:253
 AliMuonGridSubmitter.cxx:254
 AliMuonGridSubmitter.cxx:255
 AliMuonGridSubmitter.cxx:256
 AliMuonGridSubmitter.cxx:257
 AliMuonGridSubmitter.cxx:258
 AliMuonGridSubmitter.cxx:259
 AliMuonGridSubmitter.cxx:260
 AliMuonGridSubmitter.cxx:261
 AliMuonGridSubmitter.cxx:262
 AliMuonGridSubmitter.cxx:263
 AliMuonGridSubmitter.cxx:264
 AliMuonGridSubmitter.cxx:265
 AliMuonGridSubmitter.cxx:266
 AliMuonGridSubmitter.cxx:267
 AliMuonGridSubmitter.cxx:268
 AliMuonGridSubmitter.cxx:269
 AliMuonGridSubmitter.cxx:270
 AliMuonGridSubmitter.cxx:271
 AliMuonGridSubmitter.cxx:272
 AliMuonGridSubmitter.cxx:273
 AliMuonGridSubmitter.cxx:274
 AliMuonGridSubmitter.cxx:275
 AliMuonGridSubmitter.cxx:276
 AliMuonGridSubmitter.cxx:277
 AliMuonGridSubmitter.cxx:278
 AliMuonGridSubmitter.cxx:279
 AliMuonGridSubmitter.cxx:280
 AliMuonGridSubmitter.cxx:281
 AliMuonGridSubmitter.cxx:282
 AliMuonGridSubmitter.cxx:283
 AliMuonGridSubmitter.cxx:284
 AliMuonGridSubmitter.cxx:285
 AliMuonGridSubmitter.cxx:286
 AliMuonGridSubmitter.cxx:287
 AliMuonGridSubmitter.cxx:288
 AliMuonGridSubmitter.cxx:289
 AliMuonGridSubmitter.cxx:290
 AliMuonGridSubmitter.cxx:291
 AliMuonGridSubmitter.cxx:292
 AliMuonGridSubmitter.cxx:293
 AliMuonGridSubmitter.cxx:294
 AliMuonGridSubmitter.cxx:295
 AliMuonGridSubmitter.cxx:296
 AliMuonGridSubmitter.cxx:297
 AliMuonGridSubmitter.cxx:298
 AliMuonGridSubmitter.cxx:299
 AliMuonGridSubmitter.cxx:300
 AliMuonGridSubmitter.cxx:301
 AliMuonGridSubmitter.cxx:302
 AliMuonGridSubmitter.cxx:303
 AliMuonGridSubmitter.cxx:304
 AliMuonGridSubmitter.cxx:305
 AliMuonGridSubmitter.cxx:306
 AliMuonGridSubmitter.cxx:307
 AliMuonGridSubmitter.cxx:308
 AliMuonGridSubmitter.cxx:309
 AliMuonGridSubmitter.cxx:310
 AliMuonGridSubmitter.cxx:311
 AliMuonGridSubmitter.cxx:312
 AliMuonGridSubmitter.cxx:313
 AliMuonGridSubmitter.cxx:314
 AliMuonGridSubmitter.cxx:315
 AliMuonGridSubmitter.cxx:316
 AliMuonGridSubmitter.cxx:317
 AliMuonGridSubmitter.cxx:318
 AliMuonGridSubmitter.cxx:319
 AliMuonGridSubmitter.cxx:320
 AliMuonGridSubmitter.cxx:321
 AliMuonGridSubmitter.cxx:322
 AliMuonGridSubmitter.cxx:323
 AliMuonGridSubmitter.cxx:324
 AliMuonGridSubmitter.cxx:325
 AliMuonGridSubmitter.cxx:326
 AliMuonGridSubmitter.cxx:327
 AliMuonGridSubmitter.cxx:328
 AliMuonGridSubmitter.cxx:329
 AliMuonGridSubmitter.cxx:330
 AliMuonGridSubmitter.cxx:331
 AliMuonGridSubmitter.cxx:332
 AliMuonGridSubmitter.cxx:333
 AliMuonGridSubmitter.cxx:334
 AliMuonGridSubmitter.cxx:335
 AliMuonGridSubmitter.cxx:336
 AliMuonGridSubmitter.cxx:337
 AliMuonGridSubmitter.cxx:338
 AliMuonGridSubmitter.cxx:339
 AliMuonGridSubmitter.cxx:340
 AliMuonGridSubmitter.cxx:341
 AliMuonGridSubmitter.cxx:342
 AliMuonGridSubmitter.cxx:343
 AliMuonGridSubmitter.cxx:344
 AliMuonGridSubmitter.cxx:345
 AliMuonGridSubmitter.cxx:346
 AliMuonGridSubmitter.cxx:347
 AliMuonGridSubmitter.cxx:348
 AliMuonGridSubmitter.cxx:349
 AliMuonGridSubmitter.cxx:350
 AliMuonGridSubmitter.cxx:351
 AliMuonGridSubmitter.cxx:352
 AliMuonGridSubmitter.cxx:353
 AliMuonGridSubmitter.cxx:354
 AliMuonGridSubmitter.cxx:355
 AliMuonGridSubmitter.cxx:356
 AliMuonGridSubmitter.cxx:357
 AliMuonGridSubmitter.cxx:358
 AliMuonGridSubmitter.cxx:359
 AliMuonGridSubmitter.cxx:360
 AliMuonGridSubmitter.cxx:361
 AliMuonGridSubmitter.cxx:362
 AliMuonGridSubmitter.cxx:363
 AliMuonGridSubmitter.cxx:364
 AliMuonGridSubmitter.cxx:365
 AliMuonGridSubmitter.cxx:366
 AliMuonGridSubmitter.cxx:367
 AliMuonGridSubmitter.cxx:368
 AliMuonGridSubmitter.cxx:369
 AliMuonGridSubmitter.cxx:370
 AliMuonGridSubmitter.cxx:371
 AliMuonGridSubmitter.cxx:372
 AliMuonGridSubmitter.cxx:373
 AliMuonGridSubmitter.cxx:374
 AliMuonGridSubmitter.cxx:375
 AliMuonGridSubmitter.cxx:376
 AliMuonGridSubmitter.cxx:377
 AliMuonGridSubmitter.cxx:378
 AliMuonGridSubmitter.cxx:379
 AliMuonGridSubmitter.cxx:380
 AliMuonGridSubmitter.cxx:381
 AliMuonGridSubmitter.cxx:382
 AliMuonGridSubmitter.cxx:383
 AliMuonGridSubmitter.cxx:384
 AliMuonGridSubmitter.cxx:385
 AliMuonGridSubmitter.cxx:386
 AliMuonGridSubmitter.cxx:387
 AliMuonGridSubmitter.cxx:388
 AliMuonGridSubmitter.cxx:389
 AliMuonGridSubmitter.cxx:390
 AliMuonGridSubmitter.cxx:391
 AliMuonGridSubmitter.cxx:392
 AliMuonGridSubmitter.cxx:393
 AliMuonGridSubmitter.cxx:394
 AliMuonGridSubmitter.cxx:395
 AliMuonGridSubmitter.cxx:396
 AliMuonGridSubmitter.cxx:397
 AliMuonGridSubmitter.cxx:398
 AliMuonGridSubmitter.cxx:399
 AliMuonGridSubmitter.cxx:400
 AliMuonGridSubmitter.cxx:401
 AliMuonGridSubmitter.cxx:402
 AliMuonGridSubmitter.cxx:403
 AliMuonGridSubmitter.cxx:404
 AliMuonGridSubmitter.cxx:405
 AliMuonGridSubmitter.cxx:406
 AliMuonGridSubmitter.cxx:407
 AliMuonGridSubmitter.cxx:408
 AliMuonGridSubmitter.cxx:409
 AliMuonGridSubmitter.cxx:410
 AliMuonGridSubmitter.cxx:411
 AliMuonGridSubmitter.cxx:412
 AliMuonGridSubmitter.cxx:413
 AliMuonGridSubmitter.cxx:414
 AliMuonGridSubmitter.cxx:415
 AliMuonGridSubmitter.cxx:416
 AliMuonGridSubmitter.cxx:417
 AliMuonGridSubmitter.cxx:418
 AliMuonGridSubmitter.cxx:419
 AliMuonGridSubmitter.cxx:420
 AliMuonGridSubmitter.cxx:421
 AliMuonGridSubmitter.cxx:422
 AliMuonGridSubmitter.cxx:423
 AliMuonGridSubmitter.cxx:424
 AliMuonGridSubmitter.cxx:425
 AliMuonGridSubmitter.cxx:426
 AliMuonGridSubmitter.cxx:427
 AliMuonGridSubmitter.cxx:428
 AliMuonGridSubmitter.cxx:429
 AliMuonGridSubmitter.cxx:430
 AliMuonGridSubmitter.cxx:431
 AliMuonGridSubmitter.cxx:432
 AliMuonGridSubmitter.cxx:433
 AliMuonGridSubmitter.cxx:434
 AliMuonGridSubmitter.cxx:435
 AliMuonGridSubmitter.cxx:436
 AliMuonGridSubmitter.cxx:437
 AliMuonGridSubmitter.cxx:438
 AliMuonGridSubmitter.cxx:439
 AliMuonGridSubmitter.cxx:440
 AliMuonGridSubmitter.cxx:441
 AliMuonGridSubmitter.cxx:442
 AliMuonGridSubmitter.cxx:443
 AliMuonGridSubmitter.cxx:444
 AliMuonGridSubmitter.cxx:445
 AliMuonGridSubmitter.cxx:446
 AliMuonGridSubmitter.cxx:447
 AliMuonGridSubmitter.cxx:448
 AliMuonGridSubmitter.cxx:449
 AliMuonGridSubmitter.cxx:450
 AliMuonGridSubmitter.cxx:451
 AliMuonGridSubmitter.cxx:452
 AliMuonGridSubmitter.cxx:453
 AliMuonGridSubmitter.cxx:454
 AliMuonGridSubmitter.cxx:455
 AliMuonGridSubmitter.cxx:456
 AliMuonGridSubmitter.cxx:457
 AliMuonGridSubmitter.cxx:458
 AliMuonGridSubmitter.cxx:459
 AliMuonGridSubmitter.cxx:460
 AliMuonGridSubmitter.cxx:461
 AliMuonGridSubmitter.cxx:462
 AliMuonGridSubmitter.cxx:463
 AliMuonGridSubmitter.cxx:464
 AliMuonGridSubmitter.cxx:465
 AliMuonGridSubmitter.cxx:466
 AliMuonGridSubmitter.cxx:467
 AliMuonGridSubmitter.cxx:468
 AliMuonGridSubmitter.cxx:469
 AliMuonGridSubmitter.cxx:470
 AliMuonGridSubmitter.cxx:471
 AliMuonGridSubmitter.cxx:472
 AliMuonGridSubmitter.cxx:473
 AliMuonGridSubmitter.cxx:474
 AliMuonGridSubmitter.cxx:475
 AliMuonGridSubmitter.cxx:476
 AliMuonGridSubmitter.cxx:477
 AliMuonGridSubmitter.cxx:478
 AliMuonGridSubmitter.cxx:479
 AliMuonGridSubmitter.cxx:480
 AliMuonGridSubmitter.cxx:481
 AliMuonGridSubmitter.cxx:482
 AliMuonGridSubmitter.cxx:483
 AliMuonGridSubmitter.cxx:484
 AliMuonGridSubmitter.cxx:485
 AliMuonGridSubmitter.cxx:486
 AliMuonGridSubmitter.cxx:487
 AliMuonGridSubmitter.cxx:488
 AliMuonGridSubmitter.cxx:489
 AliMuonGridSubmitter.cxx:490
 AliMuonGridSubmitter.cxx:491
 AliMuonGridSubmitter.cxx:492
 AliMuonGridSubmitter.cxx:493
 AliMuonGridSubmitter.cxx:494
 AliMuonGridSubmitter.cxx:495
 AliMuonGridSubmitter.cxx:496
 AliMuonGridSubmitter.cxx:497
 AliMuonGridSubmitter.cxx:498
 AliMuonGridSubmitter.cxx:499
 AliMuonGridSubmitter.cxx:500
 AliMuonGridSubmitter.cxx:501
 AliMuonGridSubmitter.cxx:502
 AliMuonGridSubmitter.cxx:503
 AliMuonGridSubmitter.cxx:504
 AliMuonGridSubmitter.cxx:505
 AliMuonGridSubmitter.cxx:506
 AliMuonGridSubmitter.cxx:507
 AliMuonGridSubmitter.cxx:508
 AliMuonGridSubmitter.cxx:509
 AliMuonGridSubmitter.cxx:510
 AliMuonGridSubmitter.cxx:511
 AliMuonGridSubmitter.cxx:512
 AliMuonGridSubmitter.cxx:513
 AliMuonGridSubmitter.cxx:514
 AliMuonGridSubmitter.cxx:515
 AliMuonGridSubmitter.cxx:516
 AliMuonGridSubmitter.cxx:517
 AliMuonGridSubmitter.cxx:518
 AliMuonGridSubmitter.cxx:519
 AliMuonGridSubmitter.cxx:520
 AliMuonGridSubmitter.cxx:521
 AliMuonGridSubmitter.cxx:522
 AliMuonGridSubmitter.cxx:523
 AliMuonGridSubmitter.cxx:524
 AliMuonGridSubmitter.cxx:525
 AliMuonGridSubmitter.cxx:526
 AliMuonGridSubmitter.cxx:527
 AliMuonGridSubmitter.cxx:528
 AliMuonGridSubmitter.cxx:529
 AliMuonGridSubmitter.cxx:530
 AliMuonGridSubmitter.cxx:531
 AliMuonGridSubmitter.cxx:532
 AliMuonGridSubmitter.cxx:533
 AliMuonGridSubmitter.cxx:534
 AliMuonGridSubmitter.cxx:535
 AliMuonGridSubmitter.cxx:536
 AliMuonGridSubmitter.cxx:537
 AliMuonGridSubmitter.cxx:538
 AliMuonGridSubmitter.cxx:539
 AliMuonGridSubmitter.cxx:540
 AliMuonGridSubmitter.cxx:541
 AliMuonGridSubmitter.cxx:542
 AliMuonGridSubmitter.cxx:543
 AliMuonGridSubmitter.cxx:544
 AliMuonGridSubmitter.cxx:545
 AliMuonGridSubmitter.cxx:546
 AliMuonGridSubmitter.cxx:547
 AliMuonGridSubmitter.cxx:548
 AliMuonGridSubmitter.cxx:549
 AliMuonGridSubmitter.cxx:550
 AliMuonGridSubmitter.cxx:551
 AliMuonGridSubmitter.cxx:552
 AliMuonGridSubmitter.cxx:553
 AliMuonGridSubmitter.cxx:554
 AliMuonGridSubmitter.cxx:555
 AliMuonGridSubmitter.cxx:556
 AliMuonGridSubmitter.cxx:557
 AliMuonGridSubmitter.cxx:558
 AliMuonGridSubmitter.cxx:559
 AliMuonGridSubmitter.cxx:560
 AliMuonGridSubmitter.cxx:561
 AliMuonGridSubmitter.cxx:562
 AliMuonGridSubmitter.cxx:563
 AliMuonGridSubmitter.cxx:564
 AliMuonGridSubmitter.cxx:565
 AliMuonGridSubmitter.cxx:566
 AliMuonGridSubmitter.cxx:567
 AliMuonGridSubmitter.cxx:568
 AliMuonGridSubmitter.cxx:569
 AliMuonGridSubmitter.cxx:570
 AliMuonGridSubmitter.cxx:571
 AliMuonGridSubmitter.cxx:572
 AliMuonGridSubmitter.cxx:573
 AliMuonGridSubmitter.cxx:574
 AliMuonGridSubmitter.cxx:575
 AliMuonGridSubmitter.cxx:576
 AliMuonGridSubmitter.cxx:577
 AliMuonGridSubmitter.cxx:578
 AliMuonGridSubmitter.cxx:579
 AliMuonGridSubmitter.cxx:580
 AliMuonGridSubmitter.cxx:581
 AliMuonGridSubmitter.cxx:582
 AliMuonGridSubmitter.cxx:583
 AliMuonGridSubmitter.cxx:584
 AliMuonGridSubmitter.cxx:585
 AliMuonGridSubmitter.cxx:586
 AliMuonGridSubmitter.cxx:587
 AliMuonGridSubmitter.cxx:588
 AliMuonGridSubmitter.cxx:589
 AliMuonGridSubmitter.cxx:590
 AliMuonGridSubmitter.cxx:591
 AliMuonGridSubmitter.cxx:592
 AliMuonGridSubmitter.cxx:593
 AliMuonGridSubmitter.cxx:594
 AliMuonGridSubmitter.cxx:595
 AliMuonGridSubmitter.cxx:596
 AliMuonGridSubmitter.cxx:597
 AliMuonGridSubmitter.cxx:598
 AliMuonGridSubmitter.cxx:599
 AliMuonGridSubmitter.cxx:600
 AliMuonGridSubmitter.cxx:601
 AliMuonGridSubmitter.cxx:602
 AliMuonGridSubmitter.cxx:603
 AliMuonGridSubmitter.cxx:604
 AliMuonGridSubmitter.cxx:605
 AliMuonGridSubmitter.cxx:606
 AliMuonGridSubmitter.cxx:607
 AliMuonGridSubmitter.cxx:608
 AliMuonGridSubmitter.cxx:609
 AliMuonGridSubmitter.cxx:610
 AliMuonGridSubmitter.cxx:611
 AliMuonGridSubmitter.cxx:612
 AliMuonGridSubmitter.cxx:613
 AliMuonGridSubmitter.cxx:614
 AliMuonGridSubmitter.cxx:615
 AliMuonGridSubmitter.cxx:616
 AliMuonGridSubmitter.cxx:617
 AliMuonGridSubmitter.cxx:618
 AliMuonGridSubmitter.cxx:619
 AliMuonGridSubmitter.cxx:620
 AliMuonGridSubmitter.cxx:621
 AliMuonGridSubmitter.cxx:622
 AliMuonGridSubmitter.cxx:623
 AliMuonGridSubmitter.cxx:624
 AliMuonGridSubmitter.cxx:625
 AliMuonGridSubmitter.cxx:626
 AliMuonGridSubmitter.cxx:627
 AliMuonGridSubmitter.cxx:628
 AliMuonGridSubmitter.cxx:629
 AliMuonGridSubmitter.cxx:630
 AliMuonGridSubmitter.cxx:631
 AliMuonGridSubmitter.cxx:632
 AliMuonGridSubmitter.cxx:633
 AliMuonGridSubmitter.cxx:634
 AliMuonGridSubmitter.cxx:635
 AliMuonGridSubmitter.cxx:636
 AliMuonGridSubmitter.cxx:637
 AliMuonGridSubmitter.cxx:638
 AliMuonGridSubmitter.cxx:639
 AliMuonGridSubmitter.cxx:640
 AliMuonGridSubmitter.cxx:641
 AliMuonGridSubmitter.cxx:642
 AliMuonGridSubmitter.cxx:643
 AliMuonGridSubmitter.cxx:644
 AliMuonGridSubmitter.cxx:645
 AliMuonGridSubmitter.cxx:646
 AliMuonGridSubmitter.cxx:647
 AliMuonGridSubmitter.cxx:648
 AliMuonGridSubmitter.cxx:649
 AliMuonGridSubmitter.cxx:650
 AliMuonGridSubmitter.cxx:651
 AliMuonGridSubmitter.cxx:652
 AliMuonGridSubmitter.cxx:653
 AliMuonGridSubmitter.cxx:654
 AliMuonGridSubmitter.cxx:655
 AliMuonGridSubmitter.cxx:656
 AliMuonGridSubmitter.cxx:657
 AliMuonGridSubmitter.cxx:658
 AliMuonGridSubmitter.cxx:659
 AliMuonGridSubmitter.cxx:660
 AliMuonGridSubmitter.cxx:661
 AliMuonGridSubmitter.cxx:662
 AliMuonGridSubmitter.cxx:663
 AliMuonGridSubmitter.cxx:664
 AliMuonGridSubmitter.cxx:665
 AliMuonGridSubmitter.cxx:666
 AliMuonGridSubmitter.cxx:667
 AliMuonGridSubmitter.cxx:668
 AliMuonGridSubmitter.cxx:669
 AliMuonGridSubmitter.cxx:670
 AliMuonGridSubmitter.cxx:671
 AliMuonGridSubmitter.cxx:672
 AliMuonGridSubmitter.cxx:673
 AliMuonGridSubmitter.cxx:674
 AliMuonGridSubmitter.cxx:675
 AliMuonGridSubmitter.cxx:676
 AliMuonGridSubmitter.cxx:677
 AliMuonGridSubmitter.cxx:678
 AliMuonGridSubmitter.cxx:679
 AliMuonGridSubmitter.cxx:680
 AliMuonGridSubmitter.cxx:681
 AliMuonGridSubmitter.cxx:682
 AliMuonGridSubmitter.cxx:683
 AliMuonGridSubmitter.cxx:684
 AliMuonGridSubmitter.cxx:685
 AliMuonGridSubmitter.cxx:686
 AliMuonGridSubmitter.cxx:687
 AliMuonGridSubmitter.cxx:688
 AliMuonGridSubmitter.cxx:689
 AliMuonGridSubmitter.cxx:690
 AliMuonGridSubmitter.cxx:691
 AliMuonGridSubmitter.cxx:692
 AliMuonGridSubmitter.cxx:693
 AliMuonGridSubmitter.cxx:694
 AliMuonGridSubmitter.cxx:695
 AliMuonGridSubmitter.cxx:696
 AliMuonGridSubmitter.cxx:697
 AliMuonGridSubmitter.cxx:698
 AliMuonGridSubmitter.cxx:699
 AliMuonGridSubmitter.cxx:700
 AliMuonGridSubmitter.cxx:701
 AliMuonGridSubmitter.cxx:702
 AliMuonGridSubmitter.cxx:703
 AliMuonGridSubmitter.cxx:704
 AliMuonGridSubmitter.cxx:705
 AliMuonGridSubmitter.cxx:706
 AliMuonGridSubmitter.cxx:707
 AliMuonGridSubmitter.cxx:708
 AliMuonGridSubmitter.cxx:709
 AliMuonGridSubmitter.cxx:710
 AliMuonGridSubmitter.cxx:711
 AliMuonGridSubmitter.cxx:712
 AliMuonGridSubmitter.cxx:713
 AliMuonGridSubmitter.cxx:714
 AliMuonGridSubmitter.cxx:715
 AliMuonGridSubmitter.cxx:716
 AliMuonGridSubmitter.cxx:717
 AliMuonGridSubmitter.cxx:718
 AliMuonGridSubmitter.cxx:719
 AliMuonGridSubmitter.cxx:720
 AliMuonGridSubmitter.cxx:721
 AliMuonGridSubmitter.cxx:722
 AliMuonGridSubmitter.cxx:723
 AliMuonGridSubmitter.cxx:724
 AliMuonGridSubmitter.cxx:725
 AliMuonGridSubmitter.cxx:726
 AliMuonGridSubmitter.cxx:727
 AliMuonGridSubmitter.cxx:728
 AliMuonGridSubmitter.cxx:729
 AliMuonGridSubmitter.cxx:730
 AliMuonGridSubmitter.cxx:731
 AliMuonGridSubmitter.cxx:732
 AliMuonGridSubmitter.cxx:733
 AliMuonGridSubmitter.cxx:734
 AliMuonGridSubmitter.cxx:735
 AliMuonGridSubmitter.cxx:736
 AliMuonGridSubmitter.cxx:737
 AliMuonGridSubmitter.cxx:738
 AliMuonGridSubmitter.cxx:739
 AliMuonGridSubmitter.cxx:740
 AliMuonGridSubmitter.cxx:741
 AliMuonGridSubmitter.cxx:742
 AliMuonGridSubmitter.cxx:743
 AliMuonGridSubmitter.cxx:744
 AliMuonGridSubmitter.cxx:745
 AliMuonGridSubmitter.cxx:746
 AliMuonGridSubmitter.cxx:747
 AliMuonGridSubmitter.cxx:748
 AliMuonGridSubmitter.cxx:749
 AliMuonGridSubmitter.cxx:750
 AliMuonGridSubmitter.cxx:751
 AliMuonGridSubmitter.cxx:752
 AliMuonGridSubmitter.cxx:753
 AliMuonGridSubmitter.cxx:754
 AliMuonGridSubmitter.cxx:755
 AliMuonGridSubmitter.cxx:756
 AliMuonGridSubmitter.cxx:757
 AliMuonGridSubmitter.cxx:758
 AliMuonGridSubmitter.cxx:759
 AliMuonGridSubmitter.cxx:760
 AliMuonGridSubmitter.cxx:761
 AliMuonGridSubmitter.cxx:762
 AliMuonGridSubmitter.cxx:763
 AliMuonGridSubmitter.cxx:764
 AliMuonGridSubmitter.cxx:765
 AliMuonGridSubmitter.cxx:766
 AliMuonGridSubmitter.cxx:767
 AliMuonGridSubmitter.cxx:768
 AliMuonGridSubmitter.cxx:769
 AliMuonGridSubmitter.cxx:770
 AliMuonGridSubmitter.cxx:771
 AliMuonGridSubmitter.cxx:772
 AliMuonGridSubmitter.cxx:773
 AliMuonGridSubmitter.cxx:774
 AliMuonGridSubmitter.cxx:775
 AliMuonGridSubmitter.cxx:776
 AliMuonGridSubmitter.cxx:777
 AliMuonGridSubmitter.cxx:778
 AliMuonGridSubmitter.cxx:779
 AliMuonGridSubmitter.cxx:780
 AliMuonGridSubmitter.cxx:781
 AliMuonGridSubmitter.cxx:782
 AliMuonGridSubmitter.cxx:783
 AliMuonGridSubmitter.cxx:784
 AliMuonGridSubmitter.cxx:785
 AliMuonGridSubmitter.cxx:786
 AliMuonGridSubmitter.cxx:787
 AliMuonGridSubmitter.cxx:788
 AliMuonGridSubmitter.cxx:789
 AliMuonGridSubmitter.cxx:790
 AliMuonGridSubmitter.cxx:791
 AliMuonGridSubmitter.cxx:792
 AliMuonGridSubmitter.cxx:793
 AliMuonGridSubmitter.cxx:794
 AliMuonGridSubmitter.cxx:795
 AliMuonGridSubmitter.cxx:796
 AliMuonGridSubmitter.cxx:797
 AliMuonGridSubmitter.cxx:798
 AliMuonGridSubmitter.cxx:799
 AliMuonGridSubmitter.cxx:800
 AliMuonGridSubmitter.cxx:801
 AliMuonGridSubmitter.cxx:802
 AliMuonGridSubmitter.cxx:803
 AliMuonGridSubmitter.cxx:804
 AliMuonGridSubmitter.cxx:805
 AliMuonGridSubmitter.cxx:806
 AliMuonGridSubmitter.cxx:807
 AliMuonGridSubmitter.cxx:808
 AliMuonGridSubmitter.cxx:809
 AliMuonGridSubmitter.cxx:810
 AliMuonGridSubmitter.cxx:811
 AliMuonGridSubmitter.cxx:812
 AliMuonGridSubmitter.cxx:813
 AliMuonGridSubmitter.cxx:814
 AliMuonGridSubmitter.cxx:815
 AliMuonGridSubmitter.cxx:816
 AliMuonGridSubmitter.cxx:817
 AliMuonGridSubmitter.cxx:818
 AliMuonGridSubmitter.cxx:819
 AliMuonGridSubmitter.cxx:820
 AliMuonGridSubmitter.cxx:821
 AliMuonGridSubmitter.cxx:822
 AliMuonGridSubmitter.cxx:823
 AliMuonGridSubmitter.cxx:824
 AliMuonGridSubmitter.cxx:825
 AliMuonGridSubmitter.cxx:826
 AliMuonGridSubmitter.cxx:827
 AliMuonGridSubmitter.cxx:828
 AliMuonGridSubmitter.cxx:829
 AliMuonGridSubmitter.cxx:830
 AliMuonGridSubmitter.cxx:831
 AliMuonGridSubmitter.cxx:832
 AliMuonGridSubmitter.cxx:833
 AliMuonGridSubmitter.cxx:834
 AliMuonGridSubmitter.cxx:835
 AliMuonGridSubmitter.cxx:836
 AliMuonGridSubmitter.cxx:837
 AliMuonGridSubmitter.cxx:838
 AliMuonGridSubmitter.cxx:839
 AliMuonGridSubmitter.cxx:840
 AliMuonGridSubmitter.cxx:841
 AliMuonGridSubmitter.cxx:842
 AliMuonGridSubmitter.cxx:843
 AliMuonGridSubmitter.cxx:844
 AliMuonGridSubmitter.cxx:845
 AliMuonGridSubmitter.cxx:846
 AliMuonGridSubmitter.cxx:847
 AliMuonGridSubmitter.cxx:848
 AliMuonGridSubmitter.cxx:849
 AliMuonGridSubmitter.cxx:850
 AliMuonGridSubmitter.cxx:851
 AliMuonGridSubmitter.cxx:852
 AliMuonGridSubmitter.cxx:853
 AliMuonGridSubmitter.cxx:854
 AliMuonGridSubmitter.cxx:855
 AliMuonGridSubmitter.cxx:856
 AliMuonGridSubmitter.cxx:857
 AliMuonGridSubmitter.cxx:858
 AliMuonGridSubmitter.cxx:859
 AliMuonGridSubmitter.cxx:860
 AliMuonGridSubmitter.cxx:861
 AliMuonGridSubmitter.cxx:862
 AliMuonGridSubmitter.cxx:863
 AliMuonGridSubmitter.cxx:864
 AliMuonGridSubmitter.cxx:865
 AliMuonGridSubmitter.cxx:866
 AliMuonGridSubmitter.cxx:867
 AliMuonGridSubmitter.cxx:868
 AliMuonGridSubmitter.cxx:869
 AliMuonGridSubmitter.cxx:870
 AliMuonGridSubmitter.cxx:871
 AliMuonGridSubmitter.cxx:872
 AliMuonGridSubmitter.cxx:873
 AliMuonGridSubmitter.cxx:874
 AliMuonGridSubmitter.cxx:875
 AliMuonGridSubmitter.cxx:876
 AliMuonGridSubmitter.cxx:877
 AliMuonGridSubmitter.cxx:878
 AliMuonGridSubmitter.cxx:879
 AliMuonGridSubmitter.cxx:880
 AliMuonGridSubmitter.cxx:881
 AliMuonGridSubmitter.cxx:882
 AliMuonGridSubmitter.cxx:883
 AliMuonGridSubmitter.cxx:884
 AliMuonGridSubmitter.cxx:885
 AliMuonGridSubmitter.cxx:886
 AliMuonGridSubmitter.cxx:887
 AliMuonGridSubmitter.cxx:888
 AliMuonGridSubmitter.cxx:889
 AliMuonGridSubmitter.cxx:890
 AliMuonGridSubmitter.cxx:891
 AliMuonGridSubmitter.cxx:892
 AliMuonGridSubmitter.cxx:893
 AliMuonGridSubmitter.cxx:894
 AliMuonGridSubmitter.cxx:895
 AliMuonGridSubmitter.cxx:896
 AliMuonGridSubmitter.cxx:897
 AliMuonGridSubmitter.cxx:898
 AliMuonGridSubmitter.cxx:899
 AliMuonGridSubmitter.cxx:900
 AliMuonGridSubmitter.cxx:901
 AliMuonGridSubmitter.cxx:902
 AliMuonGridSubmitter.cxx:903
 AliMuonGridSubmitter.cxx:904
 AliMuonGridSubmitter.cxx:905
 AliMuonGridSubmitter.cxx:906
 AliMuonGridSubmitter.cxx:907
 AliMuonGridSubmitter.cxx:908
 AliMuonGridSubmitter.cxx:909
 AliMuonGridSubmitter.cxx:910
 AliMuonGridSubmitter.cxx:911
 AliMuonGridSubmitter.cxx:912
 AliMuonGridSubmitter.cxx:913
 AliMuonGridSubmitter.cxx:914
 AliMuonGridSubmitter.cxx:915
 AliMuonGridSubmitter.cxx:916
 AliMuonGridSubmitter.cxx:917
 AliMuonGridSubmitter.cxx:918
 AliMuonGridSubmitter.cxx:919
 AliMuonGridSubmitter.cxx:920
 AliMuonGridSubmitter.cxx:921
 AliMuonGridSubmitter.cxx:922
 AliMuonGridSubmitter.cxx:923
 AliMuonGridSubmitter.cxx:924
 AliMuonGridSubmitter.cxx:925
 AliMuonGridSubmitter.cxx:926
 AliMuonGridSubmitter.cxx:927
 AliMuonGridSubmitter.cxx:928
 AliMuonGridSubmitter.cxx:929
 AliMuonGridSubmitter.cxx:930
 AliMuonGridSubmitter.cxx:931
 AliMuonGridSubmitter.cxx:932
 AliMuonGridSubmitter.cxx:933
 AliMuonGridSubmitter.cxx:934
 AliMuonGridSubmitter.cxx:935
 AliMuonGridSubmitter.cxx:936
 AliMuonGridSubmitter.cxx:937
 AliMuonGridSubmitter.cxx:938
 AliMuonGridSubmitter.cxx:939
 AliMuonGridSubmitter.cxx:940
 AliMuonGridSubmitter.cxx:941
 AliMuonGridSubmitter.cxx:942
 AliMuonGridSubmitter.cxx:943
 AliMuonGridSubmitter.cxx:944
 AliMuonGridSubmitter.cxx:945
 AliMuonGridSubmitter.cxx:946
 AliMuonGridSubmitter.cxx:947
 AliMuonGridSubmitter.cxx:948
 AliMuonGridSubmitter.cxx:949
 AliMuonGridSubmitter.cxx:950
 AliMuonGridSubmitter.cxx:951
 AliMuonGridSubmitter.cxx:952
 AliMuonGridSubmitter.cxx:953
 AliMuonGridSubmitter.cxx:954
 AliMuonGridSubmitter.cxx:955
 AliMuonGridSubmitter.cxx:956
 AliMuonGridSubmitter.cxx:957
 AliMuonGridSubmitter.cxx:958
 AliMuonGridSubmitter.cxx:959
 AliMuonGridSubmitter.cxx:960
 AliMuonGridSubmitter.cxx:961
 AliMuonGridSubmitter.cxx:962
 AliMuonGridSubmitter.cxx:963
 AliMuonGridSubmitter.cxx:964
 AliMuonGridSubmitter.cxx:965
 AliMuonGridSubmitter.cxx:966
 AliMuonGridSubmitter.cxx:967
 AliMuonGridSubmitter.cxx:968
 AliMuonGridSubmitter.cxx:969
 AliMuonGridSubmitter.cxx:970
 AliMuonGridSubmitter.cxx:971
 AliMuonGridSubmitter.cxx:972
 AliMuonGridSubmitter.cxx:973
 AliMuonGridSubmitter.cxx:974
 AliMuonGridSubmitter.cxx:975
 AliMuonGridSubmitter.cxx:976
 AliMuonGridSubmitter.cxx:977
 AliMuonGridSubmitter.cxx:978
 AliMuonGridSubmitter.cxx:979
 AliMuonGridSubmitter.cxx:980
 AliMuonGridSubmitter.cxx:981
 AliMuonGridSubmitter.cxx:982
 AliMuonGridSubmitter.cxx:983
 AliMuonGridSubmitter.cxx:984
 AliMuonGridSubmitter.cxx:985
 AliMuonGridSubmitter.cxx:986
 AliMuonGridSubmitter.cxx:987
 AliMuonGridSubmitter.cxx:988
 AliMuonGridSubmitter.cxx:989
 AliMuonGridSubmitter.cxx:990
 AliMuonGridSubmitter.cxx:991
 AliMuonGridSubmitter.cxx:992
 AliMuonGridSubmitter.cxx:993
 AliMuonGridSubmitter.cxx:994
 AliMuonGridSubmitter.cxx:995
 AliMuonGridSubmitter.cxx:996
 AliMuonGridSubmitter.cxx:997
 AliMuonGridSubmitter.cxx:998
 AliMuonGridSubmitter.cxx:999
 AliMuonGridSubmitter.cxx:1000
 AliMuonGridSubmitter.cxx:1001
 AliMuonGridSubmitter.cxx:1002
 AliMuonGridSubmitter.cxx:1003
 AliMuonGridSubmitter.cxx:1004
 AliMuonGridSubmitter.cxx:1005
 AliMuonGridSubmitter.cxx:1006
 AliMuonGridSubmitter.cxx:1007
 AliMuonGridSubmitter.cxx:1008
 AliMuonGridSubmitter.cxx:1009
 AliMuonGridSubmitter.cxx:1010
 AliMuonGridSubmitter.cxx:1011
 AliMuonGridSubmitter.cxx:1012
 AliMuonGridSubmitter.cxx:1013
 AliMuonGridSubmitter.cxx:1014
 AliMuonGridSubmitter.cxx:1015
 AliMuonGridSubmitter.cxx:1016
 AliMuonGridSubmitter.cxx:1017
 AliMuonGridSubmitter.cxx:1018
 AliMuonGridSubmitter.cxx:1019
 AliMuonGridSubmitter.cxx:1020
 AliMuonGridSubmitter.cxx:1021
 AliMuonGridSubmitter.cxx:1022
 AliMuonGridSubmitter.cxx:1023
 AliMuonGridSubmitter.cxx:1024
 AliMuonGridSubmitter.cxx:1025
 AliMuonGridSubmitter.cxx:1026
 AliMuonGridSubmitter.cxx:1027
 AliMuonGridSubmitter.cxx:1028
 AliMuonGridSubmitter.cxx:1029
 AliMuonGridSubmitter.cxx:1030
 AliMuonGridSubmitter.cxx:1031
 AliMuonGridSubmitter.cxx:1032
 AliMuonGridSubmitter.cxx:1033
 AliMuonGridSubmitter.cxx:1034