ROOT logo
/**
 * @file   GridDownload.C
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Wed Jan 23 21:51:40 2013
 * 
 * @brief  Helper script to download results from the Grid 
 * 
 * 
 * @ingroup pwglf_forward_trains_helper
 */
#ifndef __CINT__
# include <TString.h>
# include <TSystem.h>
# include <TGrid.h>
# include <TFile.h>
# include <TObjArray.h>
# include <TObjString.h>
# include <TError.h>
# include <TEnv.h>
#else
class TString;
#endif

/** 
 * Get one file 
 * 
 * @param base   Base name 
 * @param dir    Directory 
 * @param unpack If true, also unzip the retrieved archive 
 * 
 * @return true on success 
 */
Bool_t GetOne(const TString& base, const TString& dir, Bool_t unpack)
{
  TString src(gSystem->ConcatFileName(base,dir));
  src = gSystem->ConcatFileName(src,"root_archive.zip");
  TString name;
  name.Form("root_archive_%s",dir.Data());
  TString dest;
  dest.Form("%s.zip",name.Data());

  if (!TFile::Cp(src, dest)) {
    Error("GetOne","Failed to download %s -> %s",
          src.Data(), dest.Data());
    return false;
  }
  if (!unpack) return true;
  gSystem->Exec(Form("mkdir -p %s && (cd %s && unzip ../%s)", 
		     name.Data(), name.Data(), dest.Data()));
  return true;
}

void GridDownload(const TString& base, const TString& runs, Bool_t unpack)
{
  gEnv->SetValue("XSec.GSI.DelegProxy", "2");
  if (!TGrid::Connect("alien://")) {
    Error("Download","Failed to connect to AliEn");
    return;
  }

  TObjArray*  runArray = runs.Tokenize(" ");
  TObjString* run      = 0;
  TIter       next(runArray);
  while ((run = static_cast<TObjString*>(next()))) {
    GetOne(base, run->String(), unpack);
  }
}
// EOF

 GridDownload.C:1
 GridDownload.C:2
 GridDownload.C:3
 GridDownload.C:4
 GridDownload.C:5
 GridDownload.C:6
 GridDownload.C:7
 GridDownload.C:8
 GridDownload.C:9
 GridDownload.C:10
 GridDownload.C:11
 GridDownload.C:12
 GridDownload.C:13
 GridDownload.C:14
 GridDownload.C:15
 GridDownload.C:16
 GridDownload.C:17
 GridDownload.C:18
 GridDownload.C:19
 GridDownload.C:20
 GridDownload.C:21
 GridDownload.C:22
 GridDownload.C:23
 GridDownload.C:24
 GridDownload.C:25
 GridDownload.C:26
 GridDownload.C:27
 GridDownload.C:28
 GridDownload.C:29
 GridDownload.C:30
 GridDownload.C:31
 GridDownload.C:32
 GridDownload.C:33
 GridDownload.C:34
 GridDownload.C:35
 GridDownload.C:36
 GridDownload.C:37
 GridDownload.C:38
 GridDownload.C:39
 GridDownload.C:40
 GridDownload.C:41
 GridDownload.C:42
 GridDownload.C:43
 GridDownload.C:44
 GridDownload.C:45
 GridDownload.C:46
 GridDownload.C:47
 GridDownload.C:48
 GridDownload.C:49
 GridDownload.C:50
 GridDownload.C:51
 GridDownload.C:52
 GridDownload.C:53
 GridDownload.C:54
 GridDownload.C:55
 GridDownload.C:56
 GridDownload.C:57
 GridDownload.C:58
 GridDownload.C:59
 GridDownload.C:60
 GridDownload.C:61
 GridDownload.C:62
 GridDownload.C:63
 GridDownload.C:64
 GridDownload.C:65
 GridDownload.C:66
 GridDownload.C:67
 GridDownload.C:68
 GridDownload.C:69
 GridDownload.C:70