return kTRUE;
}
+//______________________________________________________________________________
+Bool_t AliAnalysisAlien::GenerateTrain(const char *name)
+{
+// Generate the full train.
+ fAdditionalLibs = "";
+ if (!LoadModules()) return kFALSE;
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr->InitAnalysis()) return kFALSE;
+ mgr->PrintStatus();
+ Int_t productionMode = fProductionMode;
+ SetProductionMode();
+ TString macro = fAnalysisMacro;
+ TString executable = fExecutable;
+ TString validation = fValidationScript;
+ TString execCommand = fExecutableCommand;
+ SetAnalysisMacro(Form("%s.C", name));
+ SetExecutable(Form("%s.sh", name));
+ SetExecutableCommand("aliroot -b -q ");
+ SetValidationScript(Form("%s_validation.sh", name));
+ StartAnalysis();
+ SetProductionMode(productionMode);
+ fAnalysisMacro = macro;
+ fExecutable = executable;
+ fExecutableCommand = execCommand;
+ fValidationScript = validation;
+ return kTRUE;
+}
+
//______________________________________________________________________________
Bool_t AliAnalysisAlien::GenerateTest(const char *name, const char *modname)
{
}
//______________________________________________________________________________
-Bool_t AliAnalysisAlien::CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output, const char *anchorfile)
+Bool_t AliAnalysisAlien::CopyLocalDataset(const char *griddir, const char *pattern, Int_t nfiles, const char *output, const char *anchorfile, const char *outputdir)
{
// Copy data from the given grid directory according a pattern and make a local
// dataset.
TMap *map;
TString turl, dirname, filename, temp;
TString cdir = gSystem->WorkingDirectory();
- gSystem->MakeDirectory("data");
- gSystem->ChangeDirectory("data");
+ gSystem->MakeDirectory(outputdir);
+ gSystem->ChangeDirectory(outputdir);
for (Int_t i=0; i<nfound; i++) {
map = (TMap*)res->At(i);
turl = map->GetValue("turl")->GetName();
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 << "/data/" << Form("%s/%s", dirname.Data(), filename.Data()) << endl;
+ out << cdir << Form("/%s/%s/%s", outputdir, dirname.Data(), filename.Data()) << endl;
}
}
gSystem->ChangeDirectory(cdir);
}
// Copy the file in the output directory
printf("===> Copying collection %s in the output directory %s\n", Form("Stage_%d.xml",stage), aliendir);
- TFile::Cp(Form("Stage_%d.xml",stage), Form("alien://%s/Stage_%d.xml",aliendir,stage));
+// TFile::Cp(Form("Stage_%d.xml",stage), Form("alien://%s/Stage_%d.xml",aliendir,stage));
if (!copyLocal2Alien("CheckMergedFiles", Form("Stage_%d.xml",stage),
Form("%s/Stage_%d.xml",aliendir,stage))) Fatal("","Terminating");
// Check if this is the last stage to be done.
// Loop 'find' results and get next LFN
if (countZero == nmaxmerge) {
// First file in chunk - create file merger and add previous chunk if any.
- fm = new TFileMerger(kFALSE);
+ fm = new TFileMerger(kTRUE);
fm->SetFastMethod(kTRUE);
if (previousChunk.Length()) fm->AddFile(previousChunk.Data());
outputChunk = outputFile;
}
// Merging stage different than 0.
// Move to the begining of the requested chunk.
- fm = new TFileMerger(kFALSE);
+ fm = new TFileMerger(kTRUE);
fm->SetFastMethod(kTRUE);
while ((nextfile=next())) fm->AddFile(nextfile->GetName());
delete listoffiles;
workdir += fGridWorkingDir;
Info("WriteAnalysisFile", "\n##### Copying file <%s> containing your initialized analysis manager to your alien workspace", analysisFile.Data());
if (FileExists(analysisFile)) gGrid->Rm(analysisFile);
- TFile::Cp(Form("file:%s",analysisFile.Data()), Form("alien://%s/%s", workdir.Data(),analysisFile.Data()));
if (!copyLocal2Alien("WriteAnalysisFile",analysisFile.Data(),
Form("%s/%s", workdir.Data(),analysisFile.Data()))) Fatal("","Terminating");
}
if (IsLocalTest()) {
out << " AliAnalysisAlien *plugin = new AliAnalysisAlien();" << endl;
out << " plugin->SetRunMode(\"test\");" << endl;
- out << " plugin->SetFileForTestMode(\"data.txt\");" << endl;
+ if (fFileForTestMode.IsNull())
+ out << " plugin->SetFileForTestMode(\"data.txt\");" << endl;
+ else
+ out << " plugin->SetFileForTestMode(\"" << fFileForTestMode << "\");" << endl;
+ out << " plugin->SetNtestFiles(" << fNtestFiles << ");" << endl;
out << " mgr->SetGridHandler(plugin);" << endl;
- out << " mgr->SetDebugLevel(10);" << endl;
- out << " mgr->SetNSysInfo(100);" << endl;
+ if (AliAnalysisManager::GetAnalysisManager()) {
+ out << " mgr->SetDebugLevel(" << AliAnalysisManager::GetAnalysisManager()->GetDebugLevel() << ");" << endl;
+ out << " mgr->SetNSysInfo(" << AliAnalysisManager::GetAnalysisManager()->GetNsysInfo() << ");" << endl;
+ } else {
+ out << " mgr->SetDebugLevel(10);" << endl;
+ out << " mgr->SetNSysInfo(100);" << endl;
+ }
}
out << " mgr->PrintStatus();" << endl;
if (AliAnalysisManager::GetAnalysisManager()) {
}
TString mergingMacro = fExecutable;
mergingMacro.ReplaceAll(".sh","_merge.C");
- if (!fGridOutputDir.Contains("/")) fGridOutputDir = Form("%s/%s/%s", gGrid->GetHomeDirectory(), fGridWorkingDir.Data(), fGridOutputDir.Data());
+ if (gGrid && !fGridOutputDir.Contains("/")) fGridOutputDir = Form("%s/%s/%s", gGrid->GetHomeDirectory(), fGridWorkingDir.Data(), fGridOutputDir.Data());
if (!TestBit(AliAnalysisGrid::kSubmit)) {
ofstream out;
out.open(mergingMacro.Data(), ios::out);