1 void AliHMPIDAnalysisTask()
6 // Macro to run the AliHMPIDAnalysisTask
8 //______ Input settings
9 Int_t nEvents = 10000000; //on Proof
10 Int_t nOffset = 0; //on Proof
11 Int_t nFile2Xml = 10; //on Grid - how many ESD files to chain in xml
12 TString xmlName="run104157.xml";//new.xml"; //name of the xml collection created
13 // char *indataset = "/home/lmolnar/CERN/alice/Dec01_rv5-25-04_gcc/test/cosmic/100923/09000100923018.10";
14 // char *indataset = "/COMMON/COMMON/LHC09a4_run8101X";
15 // char *indataset = "/PWG4/kleinb/LHC09a3_90023_checked";///HMPID/lmolnar/run100923";///PWG4/kleinb/LHC09a3_90023_checked";
16 char *indataset = "/home/lmolnar/CERN/alice/Dec01_rv5-25-04_gcc/test/cosmic/100923/09000100923018.10/AliESDs.root";
17 // char *indataset = "/media/data/Data/09000100923018.10/AliESDs.root";
18 // char *indataset = "/media/data/Data/alice/sim/LHC09a1/70213/001/AliESDs.root";
20 //______ Select Local, Proof or Intercative Grid Analysis (but just only one :-))
21 Bool_t bLOCAL = kFALSE;
22 Bool_t bPROOF = kFALSE;
23 Bool_t bGRIDINT = kTRUE;
25 AliLog::SetGlobalDebugLevel(2);
28 //______ Init data set chain
29 TString dataset(indataset);
30 TChain *chain = new TChain("esdTree");
32 //______ Define settings for PROOF
33 const char* proofNode = "lmolnar@alicecaf";
34 gEnv->SetValue("XSec.GSI.DelegProxy","2");
35 gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
36 gSystem->Load("libSTEERBase");
37 gSystem->Load("libESD");
38 gSystem->Load("libAOD");
39 gSystem->Load("libANALYSIS");
40 gSystem->Load("libANALYSISalice");
41 //______ Create analysis manager
42 AliAnalysisManager *mgr = new AliAnalysisManager("HMPID Analysis Train", "HMPID Analysis Train");
43 //______ Create input handler, default ESD
44 AliESDInputHandler *esdHandler = new AliESDInputHandler();
45 mgr->SetInputEventHandler(esdHandler);
46 mgr->SetDebugLevel(0);
47 AliLog::SetGlobalLogLevel(0);
48 //______ Create default input container
49 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
50 AliAnalysisDataContainer *hmpoutput= mgr->CreateContainer("hmpoutput", TList::Class(),AliAnalysisManager::kOutputContainer,"HmpidOutput.root");
55 Printf("========> Running LOCAL HMPID Analysis <=========");
56 gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
57 gSystem->Load("libSTEERBase");
58 gSystem->Load("libESD");
59 gSystem->Load("libAOD");
60 gSystem->Load("libANALYSIS");
61 gSystem->Load("libANALYSISalice");
62 //chain = CreateESDChain(dataset.Data());//,1,0,kFALSE,kFALSE,0);
63 chain->Add(indataset);
64 gSystem->SetIncludePath("-I. -I$HOME/HMPID -I$ALICE_ROOT/include -I$ROOTSYS/include");
65 gROOT->LoadMacro(Form("%s/HMPID/AliHMPIDAnalysisTask.cxx++g",gSystem->Getenv("ALICE_ROOT")));//"AliHMPIDAnalysisTask.cxx++");
66 AliHMPIDAnalysisTask *hmpTask = new AliHMPIDAnalysisTask("HMPIDAnalysisTask");
67 mgr->AddTask(hmpTask);
71 Printf("========> Running PROOF HMPID Analysis <=========");
72 TProof::Open(proofNode);
74 gProof->UploadPackage("STEERBase.par");
75 gProof->EnablePackage("STEERBase");
76 gProof->UploadPackage("ESD.par");
77 gProof->EnablePackage("ESD");
78 gProof->UploadPackage("ANALYSIS.par");
79 gProof->EnablePackage("ANALYSIS");
80 gProof->UploadPackage("ANALYSISalice.par");
81 gProof->EnablePackage("ANALYSISalice");
83 gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-17-Release/AF-v4-17");
84 gProof->EnablePackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-17-Release/AF-v4-17");
85 gProof->Load(Form("%s/HMPID/AliHMPIDAnalysisTask.cxx++g",gSystem->Getenv("ALICE_ROOT")));
86 AliHMPIDAnalysisTask *hmpTask = new AliHMPIDAnalysisTask("HMPIDAnalysisTask");
87 mgr->AddTask(hmpTask);
91 Printf("========> Running INTERCATIVE GRID HMPID Analysis <=========");
92 gSystem->Load("libSTEERBase");
93 gSystem->Load("libESD");
94 gSystem->Load("libANALYSIS");
95 gSystem->Load("libANALYSISalice");
96 //______ Add HMPID task
97 gSystem->SetIncludePath("-I. -I$HOME/HMPID -I$ALICE_ROOT/include -I$ROOTSYS/include");
98 gROOT->LoadMacro("$ALICE_ROOT/HMPID/AliHMPIDAnalysisTask.cxx++");
101 TGrid::Connect("alien://");
102 chain = CreateChainFromCollection(xmlName.Data(),"esdTree",nFile2Xml);
103 //gROOT->LoadMacro(Form("%s/HMPID/AliHMPIDAnalysisTask.cxx++g",gSystem->Getenv("ALICE_ROOT")));//"AliHMPIDAnalysisTask.cxx++");
104 //gROOT->LoadMacro("$ALICE_ROOT/HMPID/AliHMPIDAnalysisTask.cxx++");
105 AliHMPIDAnalysisTask *hmpTask = new AliHMPIDAnalysisTask("HMPIDAnalysisTask");
106 mgr->AddTask(hmpTask);
113 //______ Add HMPID task
114 gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
115 gSystem->Load("libSTEERBase");
116 gSystem->Load("libESD");
117 gSystem->Load("libAOD");
118 gSystem->Load("libANALYSIS");
119 gSystem->Load("libANALYSISalice");
128 mgr->ConnectInput(hmpTask,0,cinput);
129 mgr->ConnectOutput(hmpTask,0,hmpoutput);
133 if (mgr->InitAnalysis()) {
135 if(bLOCAL || bGRIDINT) mgr->StartAnalysis("local",chain);
136 else if(bPROOF) mgr->StartAnalysis("proof",dataset.Data(), nEvents,nOffset);
140 //__________________________________________________________________________________
141 TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName="esdTree",Int_t nFiles = 0)
143 // Create a chain from an alien collection.
144 TAlienCollection * myCollection = TAlienCollection::Open(xmlfile);
147 ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
151 TChain* chain = new TChain(treeName);
152 myCollection->Reset() ;
154 while ( myCollection->Next() ){
155 if(nFiles!=0)iCount++;
156 if(iCount > nFiles)break;
157 chain->Add(myCollection->GetTURL("")) ;
158 Printf("Adding %s",myCollection->GetTURL(""));
163 //__________________________________________________________________________________
164 void SetupPar(char* pararchivename)
166 //Load par files, create analysis libraries
167 //For testing, if par file already decompressed and modified
168 //classes then do not decompress.
170 TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
171 TString parpar(Form("%s.par", pararchivename)) ;
173 if (!gSystem->AccessPathName(pararchivename) ) {
174 TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
175 gROOT->ProcessLine(processline.Data());
178 TString ocwd = gSystem->WorkingDirectory();
179 gSystem->ChangeDirectory(pararchivename);
181 // check for BUILD.sh and execute
182 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
183 printf("*******************************\n");
184 printf("*** Building PAR archive ***\n");
185 cout<<pararchivename<<endl;
186 printf("*******************************\n");
188 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
189 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
193 // check for SETUP.C and execute
194 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
195 printf("*******************************\n");
196 printf("*** Setup PAR archive ***\n");
197 cout<<pararchivename<<endl;
198 printf("*******************************\n");
199 gROOT->Macro("PROOF-INF/SETUP.C");
202 gSystem->ChangeDirectory(ocwd.Data());
203 printf("Current dir: %s\n", ocwd.Data());