X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliAnalysisGoodies.cxx;h=16ec7a3a9fa042fcb1de4d5562c2625aa0990a29;hb=f162af6205f51774212a6007e8ac93a12f011978;hp=a53eeab6cf37f7414f5076419d84008f8932d00c;hpb=6797e4bcd0a4009a739e7d529862513808eef868;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliAnalysisGoodies.cxx b/ANALYSIS/AliAnalysisGoodies.cxx index a53eeab6cf3..16ec7a3a9fa 100644 --- a/ANALYSIS/AliAnalysisGoodies.cxx +++ b/ANALYSIS/AliAnalysisGoodies.cxx @@ -25,13 +25,13 @@ #include "AliXMLCollection.h" #include "AliAnalysisGoodies.h" #include "AliAnalysisManager.h" +#include "AliAODHandler.h" #include "AliAnalysisTask.h" #include "AliLog.h" #include #ifdef WITHALIEN #include -#include #include #endif #include @@ -45,10 +45,7 @@ AliAnalysisGoodies::AliAnalysisGoodies() : TObject(), fTimer(), fESDTreeName("esdTree"), - fnumberOfTasks(0), - fTaskList(0), - fTaskInType(0), - fTaskOuType(0) + fAmgr(0) { fTimer.Reset() ; @@ -58,6 +55,8 @@ 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") ; } //______________________________________________________________________________ @@ -65,10 +64,7 @@ AliAnalysisGoodies::AliAnalysisGoodies(const AliAnalysisGoodies& ag) : TObject(), fTimer(), fESDTreeName(""), - fnumberOfTasks(0), - fTaskList(0), - fTaskInType(0), - fTaskOuType(0) + fAmgr(0x0) { fESDTreeName = ag.fESDTreeName ; @@ -78,6 +74,19 @@ AliAnalysisGoodies::AliAnalysisGoodies(const AliAnalysisGoodies& ag) : 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; } //______________________________________________________________________________ @@ -176,6 +185,78 @@ Bool_t AliAnalysisGoodies::Alien2Local(const TString collectionNameIn, const TSt #endif } +//______________________________________________________________________ +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->GetEventHandler() == 0x0) { + AliAODHandler * aodHandler = new AliAODHandler() ; + aodHandler->SetOutputFileName(Form("%s_0.root",task->GetName())) ; + fAmgr->SetEventHandler(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 { @@ -237,8 +318,8 @@ Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(AliRunTagCuts *run #ifdef WITHALIEN - TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(%s)",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); @@ -264,8 +345,8 @@ Bool_t AliAnalysisGoodies::MakeEsdCollectionFromTagCollection(const char * runCu #ifdef WITHALIEN - TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(%s)",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); @@ -300,8 +381,8 @@ Bool_t AliAnalysisGoodies::Merge(const char * collectionFile, const char * subFi #ifdef WITHALIEN - TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(%s)",collectionFile)); - TGridResult* result = collection->GetGridResult(""); + TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)",collectionFile)); + TGridResult* result = collection->GetGridResult("", 0, 0); Int_t index = 0 ; const char * turl ; @@ -459,38 +540,10 @@ Bool_t AliAnalysisGoodies::ProcessChain(TChain * chain) const Bool_t rv = kTRUE ; - if (! fTaskList ) { - AliError("No tasks defined") ; - return kFALSE ; - } - - // Make the analysis manager - 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("InputContainer", classIn, AliAnalysisManager::kInputContainer) ; - Int_t index ; - for (index = 0; index < fnumberOfTasks; index++) { - - TClass * classOu = fTaskOuType[index] ; - AliAnalysisTask * task = fTaskList[index] ; - - AliAnalysisDataContainer * taskOutput = mgr->CreateContainer(Form("OutputContainer%d",index), classOu, AliAnalysisManager::kOutputContainer, Form("%s.root",task->GetName())) ; - mgr->AddTask(task) ; - - // Create containers for input/output - - mgr->ConnectInput (task, 0, taskInput); - mgr->ConnectOutput(task, 0, taskOutput); - } - // start processing - - if (mgr->InitAnalysis()) { - mgr->PrintStatus(); - mgr->StartAnalysis("local",chain); + if (fAmgr->InitAnalysis()) { + fAmgr->PrintStatus(); + fAmgr->StartAnalysis("local",chain); } else rv = kFALSE ; @@ -603,13 +656,13 @@ Bool_t AliAnalysisGoodies::ProcessEsdXmlCollection(const char * xmlFile) const #ifdef WITHALIEN //AliXMLCollection * collection = AliXMLCollection::Open(xmlFile,0) ; - TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(xmlFile, 0);//(TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(%s)"); + 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 @@ -644,7 +697,7 @@ Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, AliRunT 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) ) @@ -652,13 +705,13 @@ Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, AliRunT #ifdef WITHALIEN - TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(%s)",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); @@ -699,13 +752,13 @@ Bool_t AliAnalysisGoodies::ProcessTagXmlCollection(const char * xmlFile, const c if ( gSystem->AccessPathName(xmlFile) ) TGrid::Connect("alien://"); - TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(%s)",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); @@ -768,14 +821,3 @@ Bool_t AliAnalysisGoodies::Register( const char * lfndir, const char * pfndir, c 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 ; -}