1 // from CreateESDChain.C - instead of #include "CreateESDChain.C"
2 TChain* CreateESDChain(const char* aDataDir = "ESDfiles.txt", Int_t aRuns = 20, Int_t offset = 0) ;
3 void LookupWrite(TChain* chain, const char* target) ;
7 void runAliAnalysisTaskScalarProduct(Int_t nRuns = 50, TString type = "ESD", const Char_t* dataDir="/Users/snelling/alice_data/TherminatorFIX", Int_t offset = 0)
13 // include path (to find the .h files when compiling)
14 gSystem->AddIncludePath("-I$ALICE_ROOT/include") ;
15 gSystem->AddIncludePath("-I$ROOTSYS/include") ;
17 // load needed libraries
18 gSystem->Load("libTree.so");
19 gSystem->Load("libESD.so");
20 cerr<<"libESD loaded..."<<endl;
21 gSystem->Load("libANALYSIS.so");
22 cerr<<"libANALYSIS.so loaded..."<<endl;
23 gSystem->Load("libPWG2flow.so");
24 cerr<<"libPWG2flow.so loaded..."<<endl;
26 // create the TChain. CreateESDChain() is defined in CreateESDChain.C
27 TChain* chain = CreateESDChain(dataDir, nRuns, offset);
28 cout<<"chain ("<<chain<<")"<<endl;
30 //____________________________________________//
31 // Make the analysis manager
32 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
35 AliVEventHandler* esdH = new AliESDInputHandler;
36 mgr->SetInputEventHandler(esdH); }
39 AliVEventHandler* aodH = new AliAODInputHandler;
40 mgr->SetInputEventHandler(aodH); }
43 AliMCEventHandler *mc = new AliMCEventHandler();
44 mgr->SetMCtruthEventHandler(mc); }
45 //____________________________________________//
47 AliAnalysisTaskScalarProduct *task1 = new AliAnalysisTaskScalarProduct("TaskScalarProduct");
48 task1->SetAnalysisType(type);
51 // Create containers for input/output
52 AliAnalysisDataContainer *cinput1 =
53 mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
54 AliAnalysisDataContainer *coutput1 =
55 // mgr->CreateContainer("cobj1", TList::Class(),AliAnalysisManager::kOutputContainer);
56 mgr->CreateContainer("cobj1", TList::Class(),AliAnalysisManager::kOutputContainer,"outputFromScalarProductAnalysisESD.root");
58 //____________________________________________//
59 mgr->ConnectInput(task1,0,cinput1);
60 mgr->ConnectOutput(task1,0,coutput1);
62 if (!mgr->InitAnalysis()) return;
64 mgr->StartAnalysis("local",chain);
71 // Helper macros for creating chains
72 // from: CreateESDChain.C,v 1.10 jgrosseo Exp
74 TChain* CreateESDChain(const char* aDataDir, Int_t aRuns, Int_t offset)
76 // creates chain of files in a given directory or file containing a list.
77 // In case of directory the structure is expected as:
78 // <aDataDir>/<dir0>/AliESDs.root
79 // <aDataDir>/<dir1>/AliESDs.root
85 Long_t id, size, flags, modtime;
86 if (gSystem->GetPathInfo(aDataDir, &id, &size, &flags, &modtime))
88 printf("%s not found.\n", aDataDir);
92 TChain* chain = new TChain("esdTree");
93 TChain* chaingAlice = 0;
97 TString execDir(gSystem->pwd());
98 TSystemDirectory* baseDir = new TSystemDirectory(".", aDataDir);
99 TList* dirList = baseDir->GetListOfFiles();
100 Int_t nDirs = dirList->GetEntries();
101 gSystem->cd(execDir);
105 for (Int_t iDir=0; iDir<nDirs; ++iDir)
107 TSystemFile* presentDir = (TSystemFile*) dirList->At(iDir);
108 if (!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 || strcmp(presentDir->GetName(), "..") == 0)
117 if (count++ == aRuns)
120 TString presentDirName(aDataDir);
121 presentDirName += "/";
122 presentDirName += presentDir->GetName();
123 chain->Add(presentDirName + "/AliESDs.root/esdTree");
124 cerr<<presentDirName<<endl;
130 // Open the input stream
136 // Read the input list of files and add them to the chain
140 if (!esdfile.Contains("root")) continue; // protection
148 if (count++ == aRuns)
161 void LookupWrite(TChain* chain, const char* target)
163 // looks up the chain and writes the remaining files to the text file target
167 TObjArray* list = chain->GetListOfFiles();
168 TIterator* iter = list->MakeIterator();
172 outfile.open(target);
174 while ((obj = iter->Next()))
175 outfile << obj->GetTitle() << "#AliESDs.root" << endl;