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("AliAnalysisTaskHFE.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 AliHFEcuts *hfecuts = new AliHFEcuts;
46 hfecuts->CreateStandardCuts();
47 AliAnalysisTaskHFE *task = new AliAnalysisTaskHFE;
48 task->SetHFECuts(hfecuts);
49 task->SetPIDStrategy("Strategy4");
50 task->SetQAOn(AliAnalysisTaskHFE::kPIDqa);
51 task->SetQAOn(AliAnalysisTaskHFE::kMCqa);
53 pidEffManager->AddTask(task);
54 task->ConnectInput(0, pidEffManager->GetCommonInputContainer());
55 task->ConnectOutput(0, pidEffManager->CreateContainer("nEvents", TH1I::Class(), AliAnalysisManager::kOutputContainer, "HFEtask.root"));
56 task->ConnectOutput(1, pidEffManager->CreateContainer("Results", TList::Class(), AliAnalysisManager::kOutputContainer, "HFEtask.root"));
57 task->ConnectOutput(2, pidEffManager->CreateContainer("QA", TList::Class(), AliAnalysisManager::kOutputContainer, "HFEtask.root"));
60 if(pidEffManager->InitAnalysis()){
63 pidEffManager->StartAnalysis("local", esdchain);
69 //____________________________________________
70 TChain * CreateXMLChain(char* xmlfile)
73 //TChain *chain = 0x0;
74 const char *chainname="esdTree";
75 TChain* chain = new TChain(chainname);
77 TString input =xmlfile;
78 cout<<" the input is::"<< xmlfile<<endl;
81 if(gSystem->Getenv("XML") )
82 kXML = gSystem->Getenv("XML");
84 sprintf(kXML, xmlfile) ;
86 // sprintf(kXML, "collection.xml") ;
88 cout<<"XML file "<<kXML<<endl;
90 if (!TFile::Open(kXML)) {
91 printf("No collection file with name -- %s -- was found\n",kXML);
94 gSystem->Load("libNetx.so") ;
95 gSystem->Load("libRAliEn.so");
96 TGrid::Connect("alien://") ;
100 // TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\", 0)", kXML));
101 TGridCollection * collection = (TGridCollection*) TAlienCollection::Open(kXML);
103 AliError(Form("%s not found", kXML)) ;
106 //collection->CheckIfOnline();
108 TGridResult* result = collection->GetGridResult("",0 ,0);
110 // TList* analysisfilelist = result->GetFileInfoList();
112 // Makes the ESD chain
113 printf("*** Getting the Chain ***\n");
115 for (Int_t index = 0; index < result->GetEntries(); index++) {
116 TString alienURL = result->GetKey(index, "turl") ;
117 cout << "================== " << alienURL << endl ;
118 chain->Add(alienURL) ;
119 //alienURL.ReplaceAll("AliESDs.root",kXSFileName);
120 // chainxs->Add(alienURL) ;
124 // chain->AddFileInfoList(analysisfilelist);
125 if (chain) chain->ls();
126 chain->SetBranchStatus("*Calo*",0);
127 chain->SetBranchStatus("*FMD*",0);
131 //______________________________________________________________________________
132 void SetupPar(char* pararchivename)
134 if (pararchivename) {
135 char processline[1024];
136 sprintf(processline,".! tar xvzf %s.par",pararchivename);
137 gROOT->ProcessLine(processline);
138 TString ocwd = gSystem->WorkingDirectory();
139 gSystem->ChangeDirectory(pararchivename);
141 // check for BUILD.sh and execute
142 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
143 printf("*******************************\n");
144 printf("*** Building PAR archive ***\n");
145 printf("*******************************\n");
147 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
148 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
152 // check for SETUP.C and execute
153 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
154 printf("*******************************\n");
155 printf("*** Setup PAR archive ***\n");
156 printf("*******************************\n");
157 gROOT->Macro("PROOF-INF/SETUP.C");
160 gSystem->ChangeDirectory(ocwd.Data());
161 printf("Current dir: %s\n", ocwd.Data());