]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
fix in CopyLocalDataSet
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 26 Oct 2011 12:12:14 +0000 (12:12 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 26 Oct 2011 12:12:14 +0000 (12:12 +0000)
ANALYSIS/AliAnalysisAlien.cxx
ANALYSIS/AliAnalysisAlien.h

index 782af0d09d6961963e01377f81a1fb8d3a7fb65d..3f075c27c6ccef7c3036c526350b6174b8a22b07 100644 (file)
@@ -1018,7 +1018,7 @@ Bool_t AliAnalysisAlien::CheckInputData()
 }   
 
 //______________________________________________________________________________
-Bool_t AliAnalysisAlien::CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output, const char *anchorfile, const char *outputdir)
+Bool_t AliAnalysisAlien::CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output, const char *archivefile, const char *outputdir)
 {
 // Copy data from the given grid directory according a pattern and make a local
 // dataset.
@@ -1054,9 +1054,20 @@ Bool_t AliAnalysisAlien::CopyLocalDataset(const char *griddir, const char *patte
       dirname = gSystem->DirName(turl.Data());
       dirname = gSystem->BaseName(dirname.Data());
       gSystem->MakeDirectory(dirname);
-      if (TFile::Cp(turl, Form("file:./%s/%s", dirname.Data(), filename.Data()))) {
-         if (strlen(anchorfile)) filename = Form("%s#%s", filename.Data(), anchorfile);
-         out << cdir << Form("/%s/%s/%s", outputdir, dirname.Data(), filename.Data()) << endl;
+      
+      TString source(turl);
+      TString targetFileName(filename);
+      
+      if (strlen(archivefile) > 0) {
+       // TODO here the archive in which the file resides should be determined
+       // however whereis returns only a guid, and guid2lfn does not work
+       // Therefore we use the one provided as argument for now
+       source = Form("%s/%s", gSystem->DirName(source.Data()), archivefile);
+       targetFileName = archivefile;
+      }
+      if (TFile::Cp(source, Form("file:./%s/%s", dirname.Data(), targetFileName.Data()))) {
+         if (strlen(archivefile) > 0) targetFileName = Form("%s#%s", targetFileName.Data(), gSystem->BaseName(turl.Data()));
+         out << cdir << Form("/%s/%s/%s", outputdir, dirname.Data(), targetFileName.Data()) << endl;
       }
    }
    gSystem->ChangeDirectory(cdir);
index 06d9dbee68ecd6cf6c5b63132ce240fdfd2392f7..2e339ecf2244057418d66e459fe59c35c40073c5 100644 (file)
@@ -110,7 +110,7 @@ public:
    Bool_t              GenerateTrain(const char *name);
    Bool_t              CheckFileCopy(const char *alienpath);
    virtual Bool_t      CreateDataset(const char *pattern);
-   Bool_t              CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output="data.txt", const char *anchorfile="", const char *outputdir="data");
+   Bool_t              CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output="data.txt", const char *archivefile="", const char *outputdir="data");
    virtual Bool_t      CreateJDL();
    virtual void        EnablePackage(const char *package);
    static Bool_t       DirectoryExists(const char *lfn);