1 void SetupPar(char* pararchivename);
2 TChain * CreateXMLChain(char* xmlfile);
4 void runElectronTask(const char *treelist = 0x0){
6 printf("Error: No ESD list specified\n");
9 if(gSystem->Getenv("ALICE_ROOT")){
10 gSystem->Load("libANALYSIS");
11 gSystem->Load("libANALYSISalice");
12 gSystem->Load("libCORRFW");
15 SetupPar("STEERBase");
19 SetupPar("ANALYSISalice");
24 gROOT->LoadMacro("AliAnalysisElectronTask.cxx++");
25 AliLog::SetGlobalLogLevel(AliLog::kError);
28 TString treename = treelist;
29 TChain *esdchain = 0x0;
30 if(treename.EndsWith(".xml"))
31 esdchain = CreateXMLChain(treelist);
33 gROOT->LoadMacro("CreateESDChain.C");
34 esdchain = CreateESDChain(treelist, -1);
36 //esdchain->SetBranchStatus("*", 0);
37 esdchain->SetBranchStatus("Calo*", 0);
38 esdchain->SetBranchStatus("*FMD*", 1);
39 esdchain->SetBranchStatus("Tracks", 1);
41 // Start the Analysis Manager and Create Handlers
42 AliAnalysisManager *pidEffManager = new AliAnalysisManager("Single Electron Analysis");
43 pidEffManager->SetInputEventHandler(new AliESDInputHandler);
44 pidEffManager->SetMCtruthEventHandler(new AliMCEventHandler);
45 AliAnalysisElectronTask *task = new AliAnalysisElectronTask;
46 pidEffManager->AddTask(task);
47 task->ConnectInput(0, pidEffManager->CreateContainer("esdTree", TChain::Class(), AliAnalysisManager::kInputContainer));
48 task->ConnectOutput(0, pidEffManager->CreateContainer("nEvents", TH1I::Class(), AliAnalysisManager::kOutputContainer, "HFEtask.root"));
49 task->ConnectOutput(1, pidEffManager->CreateContainer("Results", TList::Class(), AliAnalysisManager::kOutputContainer, "HFEtask.root"));
50 task->ConnectOutput(2, pidEffManager->CreateContainer("QA", TList::Class(), AliAnalysisManager::kOutputContainer, "HFEtask.root"));
53 if(pidEffManager->InitAnalysis()){
56 pidEffManager->StartAnalysis("local", esdchain);
62 //____________________________________________
63 TChain * CreateXMLChain(char* xmlfile)
66 //TChain *chain = 0x0;
67 const char *chainname="esdTree";
68 TChain* chain = new TChain(chainname);
70 TString input =xmlfile;
71 cout<<" the input is::"<< xmlfile<<endl;
74 if(gSystem->Getenv("XML") )
75 kXML = gSystem->Getenv("XML");
77 sprintf(kXML, xmlfile) ;
79 // sprintf(kXML, "collection.xml") ;
81 cout<<"XML file "<<kXML<<endl;
83 if (!TFile::Open(kXML)) {
84 printf("No collection file with name -- %s -- was found\n",kXML);
87 gSystem->Load("libNetx.so") ;
88 gSystem->Load("libRAliEn.so");
89 TGrid::Connect("alien://") ;
93 // TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)", kXML));
94 TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(kXML);
96 AliError(Form("%s not found", kXML)) ;
99 //collection->CheckIfOnline();
101 TGridResult* result = collection->GetGridResult("",0 ,0);
103 // TList* analysisfilelist = result->GetFileInfoList();
105 // Makes the ESD chain
106 printf("*** Getting the Chain ***\n");
108 for (Int_t index = 0; index < result->GetEntries(); index++) {
109 TString alienURL = result->GetKey(index, "turl") ;
110 cout << "================== " << alienURL << endl ;
111 chain->Add(alienURL) ;
112 //alienURL.ReplaceAll("AliESDs.root",kXSFileName);
113 // chainxs->Add(alienURL) ;
117 // chain->AddFileInfoList(analysisfilelist);
118 if (chain) chain->ls();
119 chain->SetBranchStatus("*Calo*",0);
120 chain->SetBranchStatus("*FMD*",0);
124 //______________________________________________________________________________
125 void SetupPar(char* pararchivename)
127 if (pararchivename) {
128 char processline[1024];
129 sprintf(processline,".! tar xvzf %s.par",pararchivename);
130 gROOT->ProcessLine(processline);
131 TString ocwd = gSystem->WorkingDirectory();
132 gSystem->ChangeDirectory(pararchivename);
134 // check for BUILD.sh and execute
135 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
136 printf("*******************************\n");
137 printf("*** Building PAR archive ***\n");
138 printf("*******************************\n");
140 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
141 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
145 // check for SETUP.C and execute
146 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
147 printf("*******************************\n");
148 printf("*** Setup PAR archive ***\n");
149 printf("*******************************\n");
150 gROOT->Macro("PROOF-INF/SETUP.C");
153 gSystem->ChangeDirectory(ocwd.Data());
154 printf("Current dir: %s\n", ocwd.Data());