X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliAnalysisGoodies.cxx;h=f2ce7d0b75d849b051584f6ebaae9ad66baab83d;hb=2d0a3a454d08b5d368a4cfdf9d0c47a9c39870c3;hp=5349243f437d3675707acd6eb892f00efdaaab3e;hpb=b86ddfbba08bd26fafe74f9bee4c2c468953ab5b;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliAnalysisGoodies.cxx b/ANALYSIS/AliAnalysisGoodies.cxx index 5349243f437..f2ce7d0b75d 100644 --- a/ANALYSIS/AliAnalysisGoodies.cxx +++ b/ANALYSIS/AliAnalysisGoodies.cxx @@ -25,26 +25,28 @@ #include "AliXMLCollection.h" #include "AliAnalysisGoodies.h" #include "AliAnalysisManager.h" +#include "AliAODHandler.h" #include "AliAnalysisTask.h" - //#include "AliPhotonAnalysisTask.h" #include "AliLog.h" #include -#include -#include +#ifdef WITHALIEN +#include #include +#include +#endif +#include #include #include #include - +#include //______________________________________________________________________________ AliAnalysisGoodies::AliAnalysisGoodies() : + TObject(), + fTimer(), fESDTreeName("esdTree"), - fnumberOfTasks(0), - fTaskList(0), - fTaskInType(0), - fTaskOuType(0) + fAmgr(0) { fTimer.Reset() ; @@ -54,14 +56,46 @@ AliAnalysisGoodies::AliAnalysisGoodies() : TGrid::Connect("alien://"); else AliInfo("You are not connected to the GRID") ; + // Make the analysis manager + fAmgr = new AliAnalysisManager("Goodies Manager", "Analysis manager created by AliAnalysisGoodies") ; +} + +//______________________________________________________________________________ +AliAnalysisGoodies::AliAnalysisGoodies(const AliAnalysisGoodies& ag) : + TObject(), + fTimer(), + fESDTreeName(""), + fAmgr(0x0) +{ + + fESDTreeName = ag.fESDTreeName ; + TString token = gSystem->Getenv("GRID_TOKEN") ; + + if ( token == "OK" ) + TGrid::Connect("alien://"); + else + AliInfo("You are not connected to the GRID") ; + + // Make the analysis manager + fAmgr = new AliAnalysisManager("Goodies Manager", "Analysis manager created by AliAnalysisGoodies") ; +} + +//______________________________________________________________________________ +AliAnalysisGoodies& AliAnalysisGoodies::operator=(const AliAnalysisGoodies& ag) +{ + // Assignment operator + if(this!=&ag) { + } + + return *this; } //______________________________________________________________________________ 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") ; @@ -88,13 +122,14 @@ void AliAnalysisGoodies::Help() const } //______________________________________________________________________ -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() ; @@ -108,11 +143,9 @@ const Bool_t AliAnalysisGoodies::Alien2Local(const TString collectionNameIn, con collectionOu->SetCollectionName(collectionNameOu) ; collectionOu->WriteHeader() ; - TFileMerger merger ; - const char* ocwd = gSystem->WorkingDirectory(); - Int_t counter = 0 ; + Int_t counter = 1 ; while ( collectionIn->Next() ) { gSystem->ChangeDirectory(localDir) ; TString fileTURL = collectionIn->GetTURL("") ; @@ -123,18 +156,21 @@ const Bool_t AliAnalysisGoodies::Alien2Local(const TString collectionNameIn, con 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()) ; - merger.Cp(fileTURL, dir) ; + 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++ ; + TFile::Cp(fileTURL, dir) ; } collectionOu->Export() ; gSystem->ChangeDirectory(ocwd) ; @@ -142,11 +178,86 @@ const Bool_t AliAnalysisGoodies::Alien2Local(const TString collectionNameIn, con 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 +AliAnalysisDataContainer * AliAnalysisGoodies::ConnectInput(AliAnalysisTask * task, TClass * classin, UShort_t index) +{ + // connect a task to the input + + if ( ! fAmgr->GetTask(task->GetName()) ) + fAmgr->AddTask(task) ; + else + AliFatal(Form("Task %s already exists", task->GetName())) ; + + AliAnalysisDataContainer * taskInput = 0x0 ; + if ( fAmgr->GetInputs() ) + taskInput = dynamic_cast(fAmgr->GetInputs()->FindObject(Form("InputContainer_%s_%d", task->GetName(), index))) ; + if ( ! taskInput ) { + taskInput = fAmgr->CreateContainer(Form("InputContainer_%s_%d", task->GetName(), index), classin, AliAnalysisManager::kInputContainer) ; + fAmgr->ConnectInput (task, index, taskInput); + } + else + AliFatal(Form("Input %s already exists", taskInput->GetName())) ; + + return taskInput ; +} + +//______________________________________________________________________ +void AliAnalysisGoodies::ConnectInput(AliAnalysisTask * task, AliAnalysisDataContainer * taskInput, UShort_t index) +{ + // connect a task to the input + + if ( ! fAmgr->GetTask(task->GetName()) ) + fAmgr->AddTask(task) ; + else + AliFatal(Form("Task %s already exists", task->GetName())) ; + + fAmgr->ConnectInput (task, index, taskInput); +} + +//______________________________________________________________________ +AliAnalysisDataContainer * AliAnalysisGoodies::ConnectOuput(AliAnalysisTask * task, TClass * classou, UShort_t index, TString opt ) +{ + // connect a task to the output + + char filename[20] ; + + if (opt == "AOD" ) { + if ( fAmgr->GetOutputEventHandler() == 0x0) { + AliAODHandler * aodHandler = new AliAODHandler() ; + aodHandler->SetOutputFileName(Form("%s_0.root",task->GetName())) ; + fAmgr->SetOutputEventHandler(aodHandler) ; + } + sprintf(filename, "default") ; + } + else + sprintf(filename, "%s_%d.root",task->GetName(), index) ; + + AliAnalysisDataContainer * taskOuput = 0x0 ; + if ( fAmgr->GetOutputs() ) + taskOuput = dynamic_cast(fAmgr->GetOutputs()->FindObject(Form("OutputContainer_%s_%d", task->GetName(), index))) ; + if ( ! taskOuput ) + taskOuput = fAmgr->CreateContainer(Form("OutputContainer_%s_%d", task->GetName(), index), classou, AliAnalysisManager::kOutputContainer, filename) ; + fAmgr->ConnectOutput(task, index, taskOuput); + + return taskOuput ; +} + +//______________________________________________________________________ +void AliAnalysisGoodies::ConnectOuput(AliAnalysisTask * task, AliAnalysisDataContainer * taskOuput, UShort_t index) +{ + // connect a task to the output + + fAmgr->ConnectInput (task, index, taskOuput); +} + +//______________________________________________________________________ +Bool_t AliAnalysisGoodies::Make(AliRunTagCuts *runCuts, AliLHCTagCuts *lhcCuts, AliDetectorTagCuts *detCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const { // makes esd collection from tags // usage Make(tags, esds) @@ -162,9 +273,9 @@ const Bool_t AliAnalysisGoodies::Make(AliRunTagCuts *runCuts, AliEventTagCuts *e TString file(in) ; if ( file.Contains(".root") ) - rv = MakeEsdCollectionFromTagFile(runCuts, evtCuts, file.Data(), out) ; + rv = MakeEsdCollectionFromTagFile(runCuts, lhcCuts, detCuts, evtCuts, file.Data(), out) ; else if ( file.Contains(".xml") ) - rv = MakeEsdCollectionFromTagCollection(runCuts, evtCuts, file.Data(), out) ; + rv = MakeEsdCollectionFromTagCollection(runCuts, lhcCuts, detCuts, evtCuts, file.Data(), out) ; else { AliError(Form("%s is not a valid file format", in)) ; rv = kFALSE ; @@ -174,7 +285,7 @@ const Bool_t AliAnalysisGoodies::Make(AliRunTagCuts *runCuts, AliEventTagCuts *e } //______________________________________________________________________ -const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagFile(AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const +Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagFile(AliRunTagCuts *runCuts, AliLHCTagCuts *lhcCuts, AliDetectorTagCuts *detCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const { // Makes an esd collection from a root tag file Bool_t rv = kTRUE ; @@ -188,14 +299,14 @@ const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagFile(AliRunTagCuts *run if ( ! rv ) return rv ; - tagAna->CreateXMLCollection(out, runCuts, evtCuts) ; + tagAna->CreateXMLCollection(out, runCuts, lhcCuts, detCuts, evtCuts) ; return rv ; } //______________________________________________________________________ -const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(AliRunTagCuts * runCuts, AliEventTagCuts * evtCuts, const char * in, const char * out) const +Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(AliRunTagCuts *runCuts, AliLHCTagCuts *lhcCuts, AliDetectorTagCuts *detCuts, AliEventTagCuts *evtCuts, const char * in, const char * out) const { // Makes an esd collection from a xml tag collection Bool_t rv = kTRUE ; @@ -203,19 +314,24 @@ const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(AliRunTagCut printf("*** Create Collection ***\n"); printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); printf("*** Coll = |%s| \n",in); + +#ifdef WITHALIEN - TAlienCollection * collection = TAlienCollection::Open(in); - TGridResult* result = collection->GetGridResult(""); + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)",in)); + TGridResult* result = collection->GetGridResult("", 0, 0); AliTagAnalysis * tagAna = new AliTagAnalysis(); tagAna->ChainGridTags(result); - tagAna->CreateXMLCollection(out, runCuts, evtCuts) ; + tagAna->CreateXMLCollection(out, runCuts, lhcCuts, detCuts, evtCuts) ; +#else + 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 *lhcCuts, const char *detCuts, const char * evtCuts, const char * in, const char * out) const { // Makes an esd collection from a xml tag collection @@ -226,18 +342,23 @@ const Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(const char * printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); printf("*** Coll = |%s| \n",in); - TAlienCollection * collection = TAlienCollection::Open(in); - TGridResult* result = collection->GetGridResult(""); +#ifdef WITHALIEN + + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)",in)); + TGridResult* result = collection->GetGridResult("", 0, 0); AliTagAnalysis * tagAna = new AliTagAnalysis(); tagAna->ChainGridTags(result); - tagAna->CreateXMLCollection(out, runCuts, evtCuts) ; + tagAna->CreateXMLCollection(out, runCuts, lhcCuts, detCuts, evtCuts) ; - return rv ; +#else + rv = kFALSE; +#endif + return rv ; } //______________________________________________________________________ -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)) @@ -257,8 +378,10 @@ const Bool_t AliAnalysisGoodies::Merge(const char * collectionFile, const char * printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); printf("*** Coll = |%s| \n",collectionFile); - TAlienCollection * collection = TAlienCollection::Open(collectionFile); - TGridResult* result = collection->GetGridResult(""); +#ifdef WITHALIEN + + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)",collectionFile)); + TGridResult* result = collection->GetGridResult("", 0, 0); Int_t index = 0 ; const char * turl ; @@ -293,15 +416,17 @@ const Bool_t AliAnalysisGoodies::Merge(const char * collectionFile, const char * fTimer.Stop(); fTimer.Print(); - return rv ; +#else + rv = kFALSE; +#endif + return rv ; } //______________________________________________________________________ -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) ; @@ -313,22 +438,24 @@ const Bool_t AliAnalysisGoodies::Process(TChain * 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) // esdFile: is of the form opt?file_lfn Bool_t rv = kFALSE ; - AliRunTagCuts * runCuts = 0x0 ; - AliEventTagCuts * evtCuts = 0x0 ; + AliRunTagCuts * runCuts = 0x0 ; + AliLHCTagCuts * lhcCuts = 0x0 ; + AliDetectorTagCuts * detCuts = 0x0 ; + AliEventTagCuts * evtCuts = 0x0 ; - rv = Process(inFile, runCuts, evtCuts) ; + rv = Process(inFile, runCuts, lhcCuts, detCuts, evtCuts) ; return rv ; } //______________________________________________________________________ -const Bool_t AliAnalysisGoodies::Process(const char * inFile, AliRunTagCuts *runCuts, AliEventTagCuts * evtCuts ) +Bool_t AliAnalysisGoodies::Process(const char * inFile, AliRunTagCuts *runCuts, AliLHCTagCuts *lhcCuts, AliDetectorTagCuts *detCuts, AliEventTagCuts * evtCuts ) { // process the events with an Analysis Task // usage Process(esdFile, runtagCuts, evtTagCuts) @@ -349,11 +476,11 @@ const Bool_t AliAnalysisGoodies::Process(const char * inFile, AliRunTagCuts *run } else if (file.Contains("tag?") && file.Contains(".root") ) { file.ReplaceAll("tag?", "") ; - rv = ProcessTagFile(file.Data(), runCuts, evtCuts) ; + rv = ProcessTagFile(file.Data(), runCuts, lhcCuts, detCuts, evtCuts) ; } else if (file.Contains("tag?") && file.Contains(".xml") ) { file.ReplaceAll("tag?", "") ; - rv = ProcessTagXmlCollection(file.Data(), runCuts, evtCuts) ; + rv = ProcessTagXmlCollection(file.Data(), runCuts, lhcCuts, detCuts, evtCuts) ; } else { AliError(Form("%s is not a valid file format", inFile)) ; @@ -367,7 +494,7 @@ const Bool_t AliAnalysisGoodies::Process(const char * inFile, AliRunTagCuts *run } //______________________________________________________________________ -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 * lhcCuts, const char * detCuts, const char * evtCuts) { // process the events with an Analysis Task // usage Process(esdFile, runtagCuts, evtTagCuts) @@ -388,11 +515,11 @@ const Bool_t AliAnalysisGoodies::Process(const char * inFile, const char * runCu } else if (file.Contains("tag?") && file.Contains(".root") ) { file.ReplaceAll("tag?", "") ; - rv = ProcessTagFile(file.Data(), runCuts, evtCuts) ; + rv = ProcessTagFile(file.Data(), runCuts, lhcCuts, detCuts, evtCuts) ; } else if (file.Contains("tag?") && file.Contains(".xml") ) { file.ReplaceAll("tag?", "") ; - rv = ProcessTagXmlCollection(file.Data(), runCuts, evtCuts) ; + rv = ProcessTagXmlCollection(file.Data(), runCuts, lhcCuts, detCuts, evtCuts) ; } else { AliError(Form("%s is not a valid file format", inFile)) ; @@ -406,42 +533,16 @@ const Bool_t AliAnalysisGoodies::Process(const char * inFile, const char * runCu } //______________________________________________________________________ -const Bool_t AliAnalysisGoodies::ProcessChain(TChain * chain) const +Bool_t AliAnalysisGoodies::ProcessChain(TChain * chain) const { // Procees a TChain. Bool_t rv = kTRUE ; - if (! fTaskList ) { - AliError("No tasks defined") ; - return kFALSE ; - } - - // Make the analysis manager - AliAnalysisManager * mgr = new AliAnalysisManager() ; - - // 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) ; - Int_t index ; - for (index = 0; index < fnumberOfTasks; index++) { - AliAnalysisTask * task = fTaskList[index] ; - mgr->AddTask(task) ; - - // Create containers for input/output - TClass * classOu = fTaskOuType[index] ; - AliAnalysisDataContainer * taskOutput = mgr->CreateContainer("Output Container", classOu, AliAnalysisManager::kOutputContainer) ; - mgr->ConnectInput (task, 0, taskInput); - mgr->ConnectOutput(task, 0, taskOutput); - } - - // Open data - taskInput->SetData(chain); - - if (mgr->InitAnalysis()) { - mgr->PrintStatus(); - chain->Process(mgr); + // start processing + if (fAmgr->InitAnalysis()) { + fAmgr->PrintStatus(); + fAmgr->StartAnalysis("local",chain); } else rv = kFALSE ; @@ -449,7 +550,7 @@ const Bool_t AliAnalysisGoodies::ProcessChain(TChain * chain) const } //______________________________________________________________________ -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) @@ -473,7 +574,7 @@ const Bool_t AliAnalysisGoodies::ProcessEsdFile(const char * esdFile) const } //______________________________________________________________________ -const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, AliRunTagCuts *runCuts, AliEventTagCuts *evtCuts) const +Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, AliRunTagCuts *runCuts, AliLHCTagCuts *lhcCuts, AliDetectorTagCuts *detCuts, AliEventTagCuts *evtCuts) const { // process the events in a single Tag file with an Analysis Task // usage ProcessLocalEsdFile(tagFile) @@ -497,7 +598,7 @@ const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, AliRunTagC // Query the tag file and make the analysis chain TChain * analysisChain = new TChain(fESDTreeName) ; - analysisChain = tagAna->QueryTags(runCuts, evtCuts); + analysisChain = tagAna->QueryTags(runCuts, lhcCuts, detCuts, evtCuts); // Process the events rv = ProcessChain(analysisChain) ; @@ -506,7 +607,7 @@ const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, AliRunTagC } //______________________________________________________________________ -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 * lhcCuts, const char * detCuts, const char * evtCuts) const { // process the events in a single Tag file with an Analysis Task // usage ProcessLocalEsdFile(tagFile) @@ -531,7 +632,7 @@ const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, const char // Query the tag file and make the analysis chain TChain * analysisChain = new TChain(fESDTreeName) ; - analysisChain = tagAna->QueryTags(runCuts, evtCuts); + analysisChain = tagAna->QueryTags(runCuts, lhcCuts, detCuts, evtCuts); // Process the events rv = ProcessChain(analysisChain) ; @@ -540,7 +641,7 @@ const Bool_t AliAnalysisGoodies::ProcessTagFile(const char * tagFile, const char } //______________________________________________________________________ -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) @@ -552,28 +653,35 @@ const Bool_t AliAnalysisGoodies::ProcessEsdXmlCollection(const char * xmlFile) c printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); printf("*** Coll = |%s| \n",xmlFile); - TAlienCollection * collection = TAlienCollection::Open(xmlFile) ; +#ifdef WITHALIEN + //AliXMLCollection * collection = AliXMLCollection::Open(xmlFile,0) ; + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)", xmlFile)); if (! collection) { AliError(Form("%s not found", xmlFile)) ; return kFALSE ; } - TGridResult* result = collection->GetGridResult(""); + TGridResult* result = collection->GetGridResult("",0 ,0); TList* analysisfilelist = result->GetFileInfoList(); // Makes the ESD chain printf("*** Getting the Chain ***\n"); TChain* analysisChain = new TChain(fESDTreeName); analysisChain->AddFileInfoList(analysisfilelist); - + // Process the events rv = ProcessChain(analysisChain) ; +#else + rv = kFALSE; + +#endif + return rv ; } //______________________________________________________________________ -const Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, AliRunTagCuts *runCuts, AliEventTagCuts * evtCuts) const +Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, AliRunTagCuts *runCuts, AliLHCTagCuts *lhcCuts, AliDetectorTagCuts *detCuts, AliEventTagCuts * evtCuts) const { // process the events in a xml ESD collection with an Analysis Task // usage ProcessLocalEsdFile(xmlFile) @@ -588,34 +696,39 @@ const Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, A printf("*** Process ***\n"); printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); - printf("*** Coll = |%s| \n",xmlFile); + printf("*** Coll = |%s| \n",xmlFile); // check if file is local or alien if ( gSystem->AccessPathName(xmlFile) ) TGrid::Connect("alien://"); - TAlienCollection * collection = TAlienCollection::Open(xmlFile) ; +#ifdef WITHALIEN + + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)",xmlFile)); if (! collection) { AliError(Form("%s not found", xmlFile)) ; return kFALSE ; } - TGridResult* result = collection->GetGridResult(""); + TGridResult* result = collection->GetGridResult("", 0, 0); AliTagAnalysis * tagAna = new AliTagAnalysis(); tagAna->ChainGridTags(result); // Query the tag file and make the analysis chain TChain * analysisChain = new TChain(fESDTreeName) ; - analysisChain = tagAna->QueryTags(runCuts, evtCuts); + analysisChain = tagAna->QueryTags(runCuts, lhcCuts, detCuts, evtCuts); // Process the events rv = ProcessChain(analysisChain) ; +#else + rv = kFALSE; +#endif return rv ; } //______________________________________________________________________ -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 * lhcCuts, const char * detCuts, const char * evtCuts) const { // process the events in a xml ESD collection with an Analysis Task // usage ProcessLocalEsdFile(xmlFile) @@ -632,32 +745,37 @@ const Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, c printf("*** Wk-Dir = |%s| \n",gSystem->WorkingDirectory()); printf("*** Coll = |%s| \n",xmlFile); +#ifdef WITHALIEN + // check if file is local or alien if ( gSystem->AccessPathName(xmlFile) ) TGrid::Connect("alien://"); - TAlienCollection * collection = TAlienCollection::Open(xmlFile) ; + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)",xmlFile)); if (! collection) { AliError(Form("%s not found", xmlFile)) ; return kFALSE ; } - TGridResult* result = collection->GetGridResult(""); + TGridResult* result = collection->GetGridResult("", 0, 0); AliTagAnalysis * tagAna = new AliTagAnalysis(); tagAna->ChainGridTags(result); // Query the tag file and make the analysis chain TChain * analysisChain = new TChain(fESDTreeName) ; - analysisChain = tagAna->QueryTags(runCuts, evtCuts); + analysisChain = tagAna->QueryTags(runCuts, lhcCuts, detCuts, evtCuts); // Process the events rv = ProcessChain(analysisChain) ; +#else + rv = kFALSE; +#endif return rv ; } //______________________________________________________________________ -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) @@ -702,14 +820,3 @@ const Bool_t AliAnalysisGoodies::Register( const char * lfndir, const char * pfn return rv; } -//______________________________________________________________________ -void AliAnalysisGoodies::SetTasks(Int_t nb, AliAnalysisTask ** taskList, TClass ** inputType, TClass ** outputType) -{ - // define a task with its output and input type - - - fnumberOfTasks= nb; - fTaskList = taskList ; - fTaskInType = inputType ; - fTaskOuType = outputType ; -}