#include <Riostream.h>
#ifdef WITHALIEN
#include <TAlienCollection.h>
+#include <TGridResult.h>
+#include <TFileMerger.h>
#endif
#include <TChain.h>
-#include <TFileMerger.h>
#include <TGrid.h>
#include <TROOT.h>
#include <TSystem.h>
-
+#include <TEntryList.h>
//______________________________________________________________________________
AliAnalysisGoodies::AliAnalysisGoodies() :
void AliAnalysisGoodies::Help() const
{
AliInfo("Analysis utilities:\n") ;
- printf(" *** Copy : copy files ESD files listed in an xml collection from AliEn catalog to local storage and creates a local xml collection \n") ;
- printf(" usage: Copy(in, out)\n") ;
+ printf(" *** Alien2Local : copy files ESD files listed in an xml collection from AliEn catalog to local storage and creates a local xml collection \n") ;
+ printf(" usage: Alien2Local(in, out)\n") ;
printf(" in: a xml esd collection file name \n") ;
printf(" ou: the local directory where to save the esd root files \n") ;
printf(" *** Make : makes esd collection from tags \n") ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Alien2Local(const TString collectionNameIn, const TString localDir)
+Bool_t AliAnalysisGoodies::Alien2Local(const TString collectionNameIn, const TString localDir)
{
// copy files ESD files listed in an xml collection from AliEn catalog to local storage and creates a local xml collection
// usage: Alien2Local(in, out)
// in: a xml esd collection file name
// ou: the local directory where to save the esd root files
+#ifdef WITHALIEN
Bool_t rv = kTRUE ;
fTimer.Start() ;
const char* ocwd = gSystem->WorkingDirectory();
- Int_t counter = 0 ;
+ Int_t counter = 1 ;
while ( collectionIn->Next() ) {
gSystem->ChangeDirectory(localDir) ;
TString fileTURL = collectionIn->GetTURL("") ;
tempo.Remove(tempo.Last('/'), tempo.Length()) ;
TString runNumber = tempo(tempo.Last('/')+1, tempo.Length())+"/" ;
TString dir = localDir + runNumber ;
- gSystem->MakeDirectory(dir) ;
- gSystem->ChangeDirectory(dir) ;
- dir += evtsNumber + "/";
- gSystem->MakeDirectory(dir) ;
- gSystem->ChangeDirectory(dir) ;
- dir += collectionIn->GetCollectionName() ;
+ dir += evtsNumber ;
+ char line[1024] ;
+ sprintf(line, ".! mkdir -p %s", dir.Data()) ;
+ gROOT->ProcessLine(line) ;
+ printf("***************************%s\n", line) ;
TEntryList * list = collectionIn->GetEventList("") ;
-
- collectionOu->WriteBody(counter, collectionIn->GetGUID(""), collectionIn->GetLFN(""), collectionIn->GetTURL(""), list) ;
- counter++ ;
- printf("Copying %s to %s\n", fileTURL.Data(), dir.Data()) ;
+ if (!list)
+ list = new TEntryList() ;
+ tempo = fileTURL ;
+ TString filename = tempo(tempo.Last('/')+1, tempo.Length()) ;
+ dir += filename ;
+ AliInfo(Form("Copying %s to %s\n", fileTURL.Data(), dir.Data())) ;
+ collectionOu->WriteBody(counter, collectionIn->GetGUID(""), collectionIn->GetLFN(""), dir, list) ;
+ counter++ ;
merger.Cp(fileTURL, dir) ;
}
collectionOu->Export() ;
fTimer.Stop();
fTimer.Print();
- return rv ;
+ return rv ;
+#else
+ return kFALSE;
+#endif
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Make(AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const
+Bool_t AliAnalysisGoodies::Make(AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const
{
// makes esd collection from tags
// usage Make(tags, esds)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagFile(AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const
+Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagFile(AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const
{
// Makes an esd collection from a root tag file
Bool_t rv = kTRUE ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(AliRunTagCuts * runCuts, AliEventTagCuts * evtCuts, const char * in, const char * out) const
+Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(AliRunTagCuts * runCuts, AliEventTagCuts * evtCuts, const char * in, const char * out) const
{
// Makes an esd collection from a xml tag collection
Bool_t rv = kTRUE ;
#ifdef WITHALIEN
- TAlienCollection * collection = TAlienCollection::Open(in);
+ TGridCollection * collection = TAlienCollection::Open(in);
TGridResult* result = collection->GetGridResult("");
AliTagAnalysis * tagAna = new AliTagAnalysis();
tagAna->ChainGridTags(result);
tagAna->CreateXMLCollection(out, runCuts, evtCuts) ;
- return rv ;
#else
- return kFALSE;
+ rv = kFALSE;
#endif
+ return rv ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(const char * runCuts, const char * evtCuts, const char * in, const char * out) const
+Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(const char * runCuts, const char * evtCuts, const char * in, const char * out) const
{
// Makes an esd collection from a xml tag collection
#ifdef WITHALIEN
- TAlienCollection * collection = TAlienCollection::Open(in);
+ TGridCollection * collection = TAlienCollection::Open(in);
TGridResult* result = collection->GetGridResult("");
AliTagAnalysis * tagAna = new AliTagAnalysis();
tagAna->ChainGridTags(result);
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Merge(const char * collectionFile, const char * subFile, const char * outFile)
+Bool_t AliAnalysisGoodies::Merge(const char * collectionFile, const char * subFile, const char * outFile)
{
// merges files listed in a xml collection
// usage Merge(collection, outputFile))
#ifdef WITHALIEN
- TAlienCollection * collection = TAlienCollection::Open(collectionFile);
+ TGridCollection * collection = TAlienCollection::Open(collectionFile);
TGridResult* result = collection->GetGridResult("");
Int_t index = 0 ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Process(TChain * chain)
+Bool_t AliAnalysisGoodies::Process(TChain * chain)
{
// process events starting from a chain of esd Trees
Bool_t rv = kFALSE ;
-
fTimer.Start() ;
rv = ProcessChain(chain) ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Process(const char * inFile)
+Bool_t AliAnalysisGoodies::Process(const char * inFile)
{
// process the events with an Analysis Task
// usage Process(esdFile)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Process(const char * inFile, AliRunTagCuts *runCuts, AliEventTagCuts * evtCuts )
+Bool_t AliAnalysisGoodies::Process(const char * inFile, AliRunTagCuts *runCuts, AliEventTagCuts * evtCuts )
{
// process the events with an Analysis Task
// usage Process(esdFile, runtagCuts, evtTagCuts)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Process(const char * inFile, const char * runCuts, const char * evtCuts)
+Bool_t AliAnalysisGoodies::Process(const char * inFile, const char * runCuts, const char * evtCuts)
{
// process the events with an Analysis Task
// usage Process(esdFile, runtagCuts, evtTagCuts)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessChain(TChain * chain) const
+Bool_t AliAnalysisGoodies::ProcessChain(TChain * chain) const
{
// Procees a TChain.
AliError("No tasks defined") ;
return kFALSE ;
}
-
+
// Make the analysis manager
- AliAnalysisManager * mgr = new AliAnalysisManager() ;
+ AliAnalysisManager * mgr = new AliAnalysisManager("Goodies Manager", "Analysis manager created by AliAnalysisGoodies") ;
// Make tasks
// The top input must be common to all top tasks
TClass * classIn = fTaskInType[0] ;
- AliAnalysisDataContainer * taskInput = mgr->CreateContainer("Input Container", classIn, AliAnalysisManager::kInputContainer) ;
+ AliAnalysisDataContainer * taskInput = mgr->CreateContainer("InputContainer", classIn, AliAnalysisManager::kInputContainer) ;
Int_t index ;
for (index = 0; index < fnumberOfTasks; index++) {
AliAnalysisTask * task = fTaskList[index] ;
// Create containers for input/output
TClass * classOu = fTaskOuType[index] ;
- AliAnalysisDataContainer * taskOutput = mgr->CreateContainer("Output Container", classOu, AliAnalysisManager::kOutputContainer) ;
+ AliAnalysisDataContainer * taskOutput = mgr->CreateContainer(Form("OutputContainer%d",index), classOu, AliAnalysisManager::kOutputContainer,
+ Form("%s.root",task->GetName())) ;
mgr->ConnectInput (task, 0, taskInput);
mgr->ConnectOutput(task, 0, taskOutput);
}
// Open data
- taskInput->SetData(chain);
+// taskInput->SetData(chain);
if (mgr->InitAnalysis()) {
mgr->PrintStatus();
- chain->Process(mgr);
+// chain->Process(mgr);
+ mgr->StartAnalysis("local",chain);
} else
rv = kFALSE ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessEsdFile(const char * esdFile) const
+Bool_t AliAnalysisGoodies::ProcessEsdFile(const char * esdFile) const
{
// process the events in a single ESD file with an Analysis Task
// usage ProcessLocalEsdFile(esdFile)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts) const
+Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts) const
{
// process the events in a single Tag file with an Analysis Task
// usage ProcessLocalEsdFile(tagFile)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, const char * runCuts, const char * evtCuts) const
+Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, const char * runCuts, const char * evtCuts) const
{
// process the events in a single Tag file with an Analysis Task
// usage ProcessLocalEsdFile(tagFile)
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessEsdXmlCollection(const char * xmlFile) const
+Bool_t AliAnalysisGoodies::ProcessEsdXmlCollection(const char * xmlFile) const
{
// process the events in a xml ESD collection with an Analysis Task
// usage ProcessLocalEsdFile(xmlFile)
#ifdef WITHALIEN
- TAlienCollection * collection = TAlienCollection::Open(xmlFile) ;
+ TGridCollection * collection = TAlienCollection::Open(xmlFile) ;
if (! collection) {
AliError(Form("%s not found", xmlFile)) ;
return kFALSE ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, AliRunTagCuts *runCuts, AliEventTagCuts * evtCuts) const
+Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, AliRunTagCuts *runCuts, AliEventTagCuts * evtCuts) const
{
// process the events in a xml ESD collection with an Analysis Task
// usage ProcessLocalEsdFile(xmlFile)
#ifdef WITHALIEN
- TAlienCollection * collection = TAlienCollection::Open(xmlFile) ;
+ TGridCollection * collection = TAlienCollection::Open(xmlFile) ;
if (! collection) {
AliError(Form("%s not found", xmlFile)) ;
return kFALSE ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, const char * runCuts, const char * evtCuts) const
+Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, const char * runCuts, const char * evtCuts) const
{
// process the events in a xml ESD collection with an Analysis Task
// usage ProcessLocalEsdFile(xmlFile)
if ( gSystem->AccessPathName(xmlFile) )
TGrid::Connect("alien://");
- TAlienCollection * collection = TAlienCollection::Open(xmlFile) ;
+ TGridCollection * collection = TAlienCollection::Open(xmlFile) ;
if (! collection) {
AliError(Form("%s not found", xmlFile)) ;
return kFALSE ;
}
//______________________________________________________________________
-const Bool_t AliAnalysisGoodies::Register( const char * lfndir, const char * pfndir, const char * file)
+Bool_t AliAnalysisGoodies::Register( const char * lfndir, const char * pfndir, const char * file)
{
// register files already stored in a MSS into the AliEn catalog
// usage: Register(lfndir, pfndir, pfnFileName)