3 Check that AliRoot and ROOT versions are OK!
6 export X509_CERT_DIR=$ALIEN_ROOT/globus/share/certificates
10 runAAF(10, "proof", "/alice/data/LHC10h_000137366_p2", 2)
12 runAAF(1, "local aod MC", "test_aod_mc.txt", 3)
14 runAAF(1, "grid aod off", "lhc10d", 3)
17 runAAF(5, "grid off MC1", "lhc10d", 3)
19 runAAF(1, "local esd PbPb", "test_esd.txt", 2) //ESDs local
22 runAAF(20, "grid esd term PbPb", "lhc10h", 2)
31 //UInt_t kTriggerInt=AliVEvent::kMB;
32 //UInt_t *kTriggerInt=new UInt_t[2];
33 //kTriggerInt[0]=AliVEvent::kMB;
34 //kTriggerInt[1]=AliVEvent::kINT7;
36 UInt_t kTriggerInt[2] = { AliVEvent::kMB, AliVEvent::kINT7 };
37 Float_t minCent[6] = { 0.0, 5.0, 10.0, 20.0, 40.0, 60.0 };
38 Float_t maxCent[6] = { 5.0, 10.0, 20.0, 40.0, 60.0, 80.0 };
39 void runAAF(Int_t nFilesMax, char* type = "local", char* textFileName = "esd.txt", Int_t task = 2);
40 TChain* CreateChainCAF(Int_t nFilesMax, TFileCollection* coll, char* treeName);
41 //TChain* CreateChainCAF(Int_t nFilesMax, const char* label, const char* treeName, Bool_t AnalysisMC);
42 TChain* CreateChainLocal(Int_t nFilesMax, char* filename, char* treeName);
43 const Char_t* GetTreeName(Bool_t esdAna);
45 //________________________________________________________________
46 const Char_t* GetTreeName(Bool_t esdAna)
54 //________________________________________________________________
55 void runAAF(Int_t nFilesMax, char* type, char* textFileName, Int_t task)
59 Bool_t readTR = kFALSE;
60 Bool_t esdAna = kTRUE; // run ESD analysis (kTRUE) or AOD analysis (kFALSE)
66 if(strstr(type,"aod") != NULL) esdAna = kFALSE;; // AOD analysis
68 const Char_t* treeName = GetTreeName(esdAna);
70 if(strstr(type,"PbPb") != NULL) runtype = 2; // PbPb
71 if(strstr(type,"pp") != NULL) runtype = 3; // pp
72 if(strstr(type,"900") != NULL){ // 900GeV pp
74 printf("conflicting run types\n");
79 if(runtype == -1) runtype = 0; // 7TeV pp
82 test = strstr(type,"MC");
85 cout << "Test: " << test << endl;
86 if(sscanf(test,"MC%d",&analysisMC)){
87 // cout << "**************" << analysisMC << endl;
88 if(!analysisMC) analysisMC = 1;
91 cout << "MonteCarlo " << analysisMC << endl;
93 const char* alirootver = "v5-02-17-AN";
94 Int_t mode = -1; // mode 1: PROOF, 2: GRID, 0: LOCAL
95 printf("===================================================================\n");
96 if(strstr(type,"proof") != NULL){
98 printf("===== CONFLICTING TYPES =====\n");
102 printf("=============== RUNNING ANALYSIS IN CAF MODE ================\n");
104 if(strstr(type,"grid") != NULL){
106 printf("===== CONFLICTING TYPES =====\n");
109 printf("=============== RUNNING ANALYSIS IN GRID MODE ================\n");
112 if(strstr(type,"local") != NULL || mode<0){
114 printf("===== CONFLICTING TYPES =====\n");
117 printf("=============== RUNNING ANALYSIS IN LOCAL MODE ================\n");
121 printf("===================================================================\n");
122 printf("===================================================================\n");
123 if (analysisMC) printf(":: use MC TRUE\n");
124 else printf(":: use MC FALSE\n");
125 if (readTR) printf(":: read TR TRUE\n");
126 else printf(":: read TR FALSE\n");
127 if (debug) printf(":: debugging TRUE\n");
128 else printf(":: debugging FALSE\n");
130 Char_t taskname[128];
131 Char_t taskname1[128];
132 Char_t taskname2[128];
136 sprintf(taskname,"ChFluct");
139 sprintf(taskname,"HighPtDeDx");
142 sprintf(taskname,"HighPtDeDxV0");
145 sprintf(taskname1,"HighPtDeDx");
146 sprintf(taskname2,"HighPtDeDxV0");
150 printf("Unknown task\n");
156 Char_t nameouputfiles[1280]={0};
158 for(Int_t i=0;i<6;++i){
159 //Char_t tmpname[128]={0};
160 sprintf(nameouputfiles,"%s %s_Tree_%1.0f_%1.0f.root",nameouputfiles,taskname,minCent[i],maxCent[i]);
165 sprintf(nameouputfiles,"%s %s_Tree.root",taskname);
170 sprintf(nameouputfiles,"%s_Tree.root %s_Tree.root",taskname1,taskname2);
177 cout<<"Files to be stored:"<<nameouputfiles<<endl;
180 // Load common libraries
181 gSystem->Load("libTree.so");
182 gSystem->Load("libPhysics.so");
183 gSystem->Load("libGeom.so");
184 gSystem->Load("libVMC.so");
185 gSystem->Load("libSTEERBase.so");
186 gSystem->Load("libESD.so");
187 gSystem->Load("libAOD.so");
188 gSystem->Load("libCDB.so");
189 gSystem->Load("libANALYSIS.so");
190 gSystem->Load("libANALYSISalice.so");
192 Bool_t v0tender = kTRUE;
194 gSystem->Load("libTender.so");
195 gSystem->Load("libTenderSupplies.so");
198 gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));
201 cout << "mode " << mode << ", type " << type << endl;
204 cout << "Connecting to CAF..." << endl;
205 gEnv->SetValue("XSec.GSI.DelegProxy","2");
207 //const char* AAF = "pchristi@skaf.saske.sk";
208 const char* AAF = "aortizve@alice-caf.cern.ch";
210 if(strstr(type,"reset") != NULL)
211 TProof::Reset(AAF,kFALSE);
212 // TProof::Reset("pchristi@alice-caf.cern.ch",kTRUE);
213 // TProof::Open(AAF);
214 TProof::Open(AAF, "workers=10");
216 TList *list = new TList();
217 list->Add(new TNamed("ALIROOT_EXTRA_LIBS", "CDB"));
219 gProof->EnablePackage(Form("VO_ALICE@AliRoot::%s",alirootver), list);
221 cout << "Connected to " << AAF << endl;
225 // Load the analysis macro (old version); should be removed when the library will be decided
226 Char_t loadtask1[128];
227 Char_t loadtask2[128];
228 Char_t loadtask[128];
231 sprintf(loadtask1,"AliAnalysisTask%s.cxx+", taskname1);
232 sprintf(loadtask2,"AliAnalysisTask%s.cxx+", taskname2);
234 sprintf(loadtask,"AliAnalysisTask%s.cxx+", taskname);
237 if(mode == 1){ // PROOF
240 // case 1: // ch fluct
242 // case 2: // high pt dedx
243 //gProof->Load("DebugClasses.C++g");
245 // case 3: // high pt v0s
246 // gProof->Load("DebugClasses.C++g");
249 // printf("Unknown task\n");
253 gProof->Load(loadtask);
259 case 2: // high pt dedx
260 gROOT->LoadMacro("DebugClasses.C++g");
262 case 3: // high pt v0s
263 gROOT->LoadMacro("DebugClasses.C++g");
265 case 4: // high pt v0s
266 gROOT->LoadMacro("DebugClasses.C++g");
269 printf("Unknown task\n");
274 gROOT->LoadMacro(loadtask1);
275 gROOT->LoadMacro(loadtask2);
277 gROOT->LoadMacro(loadtask);
281 // Make the analysis manager
282 AliAnalysisManager* mgr = new AliAnalysisManager("PID histos", "testing analysis");
288 TFileCollection* proofColl = gProof->GetDataSet(textFileName);
289 TFileCollection* stagedColl = proofColl->GetStagedSubset();
290 TChain* chain = CreateChainCAF(nFilesMax, stagedColl, treeName);
291 // TChain* chain = CreateChainCAF(nFilesMax, textFileName, treeName, analysisMC);
294 //gSystem->Setenv("alien_CLOSE_SE", "ALICE::GSI::SE2");
295 // gSystem->Setenv("alien_CLOSE_SE", "ALICE::NIHAM::FILE");
296 TGrid::Connect("alien://");
297 //gSystem->Setenv("alien_CLOSE_SE", "ALICE::GSI::SE2");
298 // gSystem->Setenv("alien_CLOSE_SE", "ALICE::NIHAM::FILE");
301 sprintf(gridmode, "full");
302 if(strstr(type,"term") != NULL)
303 sprintf(gridmode, "terminate");
304 if(strstr(type,"off") != NULL)
305 sprintf(gridmode, "offline");
306 if(strstr(type,"sub") != NULL)
307 sprintf(gridmode, "submit");
308 if(strstr(type,"test") != NULL)
309 sprintf(gridmode, "test");
312 gROOT->LoadMacro("CreateAlienHandler.C");
313 // AliAnalysisGrid *alienHandler = CreateAlienHandler(nFilesMax, analysisMC, runtype, taskname, gridmode);
314 AliAnalysisGrid *alienHandler = CreateAlienHandler(nFilesMax, analysisMC, esdAna, taskname1, nameouputfiles, gridmode, textFileName, alirootver, task);
315 if (!alienHandler) return;
317 // DOES NOT WORK BECAUSE THERE ARE NO GETTERS?
318 // // Here we can add extra files to the plugin
320 // case 1: // ch fluct
322 // case 2: // high pt dedx
323 // alienHandler->SetAnalysisSource(Form("DebugClasses.C %s", alienHandler->GetAnalysisSource()));
324 // alienHandler->SetAdditionalLibs(Form("DebugClasses.C %s", alienHandler->GetAdditionalLibs()));
326 // case 3: // high pt v0s
327 // alienHandler->SetAnalysisSource(Form("DebugClasses.C %s", alienHandler->GetAnalysisSource()));
328 // alienHandler->SetAdditionalLibs(Form("DebugClasses.C %s", alienHandler->GetAdditionalLibs()));
331 // printf("Unknown task\n");
335 // Connect plugin to the analysis manager
336 mgr->SetGridHandler(alienHandler);
339 // Process data - chain
340 AliXRDPROOFtoolkit tool;
341 TChain* chain = tool.MakeChain(textFileName,treeName, 0, 100);
345 printf("Unknown mode");
352 AliESDInputHandler *esdHandler = new AliESDInputHandler();
353 mgr->SetInputEventHandler(esdHandler);
356 AliAODInputHandler* aodHandler = new AliAODInputHandler();
357 mgr->SetInputEventHandler(aodHandler);
360 // Monte Carlo handler
362 AliMCEventHandler* mcHandler = new AliMCEventHandler();
364 mgr->SetMCtruthEventHandler(mcHandler);
365 mcHandler->SetReadTR(readTR);
370 mgr->SetDebugLevel(3);
373 // V0 tender for LHC10c pass 3
374 //========= Add tender to the ANALYSIS manager and set default storage =====
375 AliTender *tender=new AliTender("AnalysisTender");
376 tender->SetCheckEventSelection(kTRUE);
377 tender->SetDefaultCDBStorage("raw://");
378 mgr->AddTask(tender);
379 if (mgr->GetTasks()->First() != (TObject*)tender) {
380 ::Error("When setting the tender to check the event selection, it has to be the first wagon ! Aborting.");
384 //========= Attach VZERO supply ======
385 AliVZEROTenderSupply *vzeroSupply=new AliVZEROTenderSupply("VZEROtender");
386 vzeroSupply->SetDebug(kFALSE);
387 tender->AddSupply(vzeroSupply);
389 //================================================
391 //================================================
393 // define output containers, please use 'username'_'somename'
394 AliAnalysisDataContainer *coutputtender =
395 mgr->CreateContainer("tender_event", AliESDEvent::Class(),
396 AliAnalysisManager::kExchangeContainer,"default_tender");
398 // connect containers
399 mgr->ConnectInput (tender, 0, mgr->GetCommonInputContainer() );
400 mgr->ConnectOutput (tender, 1, coutputtender);
403 // ######### Centrality task ###############
405 cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"<<endl;
406 cout<<"esdAna="<<esdAna<<" runtype="<<runtype<<endl;
408 // ######### PHYSICS SELECTION ###############
409 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
410 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
412 AliPhysicsSelection* physSel = physSelTask->GetPhysicsSelection();
413 physSel->SetAnalyzeMC();
416 if(esdAna && runtype==2) { // only for ESD and PbPb
418 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
419 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
420 //taskCentrality->SetPass(2);
422 taskCentrality->SetMCInput();
425 // ######### PID task ###############
428 gROOT->LoadMacro(Form("AddTask%s.C", taskname));
429 AliAnalysisTask* taskPid = AddTask(analysisMC, taskname, runtype, kTriggerInt, minCent, maxCent);
431 cout<<"%%%%%%%%%%%% flag"<<endl;
432 gROOT->LoadMacro(Form("AddTask%s.C", taskname1));
433 AliAnalysisTask* taskPid = AddTask(analysisMC, taskname1, runtype, kTriggerInt, minCent, maxCent);
435 gROOT->LoadMacro(Form("AddTask%s.C", taskname2));
436 AliAnalysisTask* taskPid = AddTask(analysisMC, taskname2, runtype, kTriggerInt, minCent, maxCent);
443 if (mgr->InitAnalysis()){
447 mgr->StartAnalysis("proof",chain);
450 mgr->StartAnalysis("grid");
453 mgr->StartAnalysis("local",chain);
456 printf("Unknown mode\n");
463 //__________________________________________________________
464 TChain* CreateChainCAF(Int_t nFilesMax, TFileCollection* coll, char* treeName)
466 TIter iter(coll->GetList());
468 TChain* target = new TChain(treeName);
472 TFileInfo* fileInfo = 0;
473 while ((fileInfo = dynamic_cast<TFileInfo*> (iter())) && (nFiles<nFilesMax || nFilesMax == 0)){
474 if (fileInfo->GetFirstUrl()) {
475 target->Add(fileInfo->GetFirstUrl()->GetUrl());
480 Printf("Added %d files to chain", target->GetListOfFiles()->GetEntries());
486 // //__________________________________________________________
487 // TChain* CreateChainCAF(Int_t nFilesMax, const char* label, const char* treeName, Bool_t AnalysisMC)
490 // cout << "CreateChainCAF2" << endl;
492 // TChain* target = new TChain(treeName);
495 // Char_t fileName[256];
496 // sprintf(fileName,"%s.conf", label);
498 // FILE* file = fopen(fileName,"r");
500 // cout << "File " << fileName << " not found!" << endl;
504 // Char_t dummy[128];
505 // Char_t runperiodpattern[128];
507 // sprintf(runperiodpattern,"Run period MC%d: %s", AnalysisMC,"%s %s");
509 // sprintf(runperiodpattern,"Run period: %s","%s %s");
511 // cout << "Pattern: " << runperiodpattern << endl;
513 // char runperiod[128], pass[64];
514 // while (fgets(dummy,128,file) != NULL) {
515 // Printf("line: %s", dummy);
517 // if(sscanf(dummy, runperiodpattern, &runperiod, &pass)){
519 // sscanf(pass,"pass%s",tmp);
520 // sprintf(pass,"p%s",tmp);
523 // if(sscanf(dummy,"Run: %d", &run)){
524 // Char_t textFileName[256];
526 // sprintf(textFileName,"/alice/sim/%s_%d",runperiod, run, pass);
528 // sprintf(textFileName,"/alice/data/%s_000%d_%s",runperiod, run, pass);
530 // cout << "Collection: " << textFileName << endl;
531 // TFileCollection* proofColl = gProof->GetDataSet(textFileName);
532 // TFileCollection* stagedColl = proofColl->GetStagedSubset();
533 // TIter iter(proofColl->GetList());
535 // TFileInfo* fileInfo = 0;
536 // while ((fileInfo = dynamic_cast<TFileInfo*> (iter())) && (nFiles<nFilesMax || nFilesMax <= 0)){
537 // if (fileInfo->GetFirstUrl()) {
538 // Printf("Adding %s", fileInfo->GetFirstUrl()->GetUrl());
539 // target->Add(fileInfo->GetFirstUrl()->GetUrl());
551 // Printf("Added %d files to chain", target->GetListOfFiles()->GetEntries());
556 //__________________________________________________________
557 TChain* CreateChainLocal(Int_t nFilesMax, char* filename, char* treeName)
559 // If file name ends in .root the chain will be created directly from that
560 // fileName, otherwise it will assume that it is a text file and create it
563 // nFilesMax is only used for the text files
564 // nFilesMax=0 means add all files
566 TChain* chain = new TChain(treeName);
568 // Open the input stream
574 // Read the input list of files and add them to the chain
576 while(in.good() && (nFiles<nFilesMax || nFilesMax<=0)) {
578 if (!file.Contains("root"))
579 continue; // protection
582 chain->Add(file.Data());
595 gEnv->SetValue("XSec.GSI.DelegProxy","2");
596 const char* AAF = "pchristi@alice-caf.cern.ch";
597 TProof::Open(AAF, "workers=10");
598 TList *list = new TList();
599 list->Add(new TNamed("ALIROOT_EXTRA_LIBS", "CDB"));
600 gProof->EnablePackage(Form("VO_ALICE@AliRoot::%s",alirootver), list);
601 const char* alirootver = "v4-21-20-AN";
602 gProof->EnablePackage(Form("VO_ALICE@AliRoot::%s",alirootver), list);
603 gProof->Load("AliAnalysisTaskHighPtDeDx.cxx++g")
604 AliAnalysisManager* mgr = new AliAnalysisManager("PID histos", "testing analysis");
605 TFileCollection* proofColl = gProof->GetDataSet("/alice/data/LHC10h_000137366_p2")
606 TFileCollection* stagedColl = proofColl->GetStagedSubset();
608 TChain* chain = CreateChainCAF(10, stagedColl, "esdTree")
609 gSystem->Load("libTree.so");
610 gSystem->Load("libPhysics.so");
611 gSystem->Load("libGeom.so");
612 gSystem->Load("libVMC.so");
613 gSystem->Load("libSTEERBase.so");
614 gSystem->Load("libESD.so");
615 gSystem->Load("libAOD.so");
616 gSystem->Load("libCDB.so");
617 gSystem->Load("libANALYSIS.so");
618 gSystem->Load("libANALYSISalice.so");
619 gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));
620 AliAnalysisManager* mgr = new AliAnalysisManager("PID histos", "testing analysis");
621 AliESDInputHandler *esdHandler = new AliESDInputHandler();
622 mgr->SetInputEventHandler(esdHandler);
623 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
624 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
626 // ######### PID task ###############
627 gROOT->LoadMacro("AddTaskHighPtDeDx.C");
628 AliAnalysisTask* taskPid = AddTask(kFALSE, "testTask");
631 // ######### PHYSICS SELECTION ###############
632 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
633 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
636 mgr->StartAnalysis("proof",chain);