1 void runPWG2AODUpdate(const char *esdsource="ESD1503X_v1.txt", int nfiles=1)
3 producePWG2AOD(esdsource, nfiles);
6 void producePWG2AOD(const char *esdsource, int nfiles)
8 gSystem->Load("libTree.so");
9 gSystem->Load("libGeom.so");
10 gSystem->Load("libVMC.so");
11 gSystem->Load("libXMLIO.so");
12 SetupPar("STEERBase");
16 SetupPar("ANALYSISalice");
19 // Make the analysis manager
22 gROOT->LoadMacro("CreateESDChain.C");
23 TChain* chain = CreateESDChain(esdsource, nfiles);
25 AliAODHandler* aodHandler = new AliAODHandler();
26 aodHandler->SetOutputFileName("aod.root");
27 AliESDInputHandler *esdHandler = new AliESDInputHandler();
28 esdHandler->SetInactiveBranches("FMD CaloCluster");
30 AliMCEventHandler* mcHandler = new AliMCEventHandler();
32 AliAnalysisManager *mgr = new AliAnalysisManager("esd to pwg2 aod", "testing aod analysis");
33 mgr->SetInputEventHandler(esdHandler);
34 mgr->SetOutputEventHandler(aodHandler);
35 mgr->SetMCtruthEventHandler(mcHandler);
36 mgr->SetDebugLevel(10);
37 AliLog::EnableDebug(kTRUE);
38 AliLog::SetGlobalLogLevel(2);
44 AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");
45 esdTrackCutsL->SetMinNClustersTPC(50);
46 esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
47 esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
48 esdTrackCutsL->SetRequireTPCRefit(kTRUE);
49 esdTrackCutsL->SetMinNsigmaToVertex(3);
50 esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);
51 esdTrackCutsL->SetAcceptKingDaughters(kFALSE);
54 AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");
55 esdTrackCutsH->SetMinNClustersTPC(95);
56 esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);
57 esdTrackCutsH->SetMaxChi2PerClusterITS(3.0);
58 esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
59 esdTrackCutsH->SetRequireTPCRefit(kTRUE);
60 esdTrackCutsH->SetRequireITSRefit(kTRUE);
61 esdTrackCutsH->SetMinNsigmaToVertex(2);
62 esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);
63 esdTrackCutsH->SetAcceptKingDaughters(kFALSE);
64 esdTrackCutsH->SetPtRange(0.1,1.5);
65 esdTrackCutsH->SetEtaRange(-1.0,1.0);
67 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
68 trackFilter->AddCuts(esdTrackCutsL);
69 trackFilter->AddCuts(esdTrackCutsH);
71 AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
72 esdfilter->SetTrackFilter(trackFilter);
73 esdfilter->SetDebugLevel(10);
74 mgr->AddTask(esdfilter);
76 AliAnalysisTaskPWG2AODUpdate *pwg2aodupdate = new AliAnalysisTaskPWG2AODUpdate("PWG2 AOD Update");
77 mgr->AddTask(pwg2aodupdate);
79 // Create containers for input/output
81 AliAnalysisDataContainer *cin_esd = mgr->CreateContainer("cchain",TChain::Class(),
82 AliAnalysisManager::kInputContainer);
84 // Output AOD container
85 AliAnalysisDataContainer *cout_aod = mgr->CreateContainer("tree", TTree::Class(),
86 AliAnalysisManager::kOutputContainer, "default");
88 mgr->ConnectInput (esdfilter, 0, cin_esd );
89 mgr->ConnectOutput (esdfilter, 0, cout_aod );
91 mgr->ConnectInput (pwg2aodupdate, 0, cin_esd );
92 mgr->ConnectOutput (pwg2aodupdate, 0, cout_aod );
98 mgr->StartAnalysis("local",chain);
102 void SetupPar(char* pararchivename)
104 if (pararchivename) {
105 char processline[1024];
106 sprintf(processline,".! tar xvzf %s.par",pararchivename);
107 gROOT->ProcessLine(processline);
108 TString ocwd = gSystem->WorkingDirectory();
109 gSystem->ChangeDirectory(pararchivename);
111 // check for BUILD.sh and execute
112 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
113 printf("*******************************\n");
114 printf("*** Building PAR archive ***\n");
115 printf("*******************************\n");
117 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
118 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
122 // check for SETUP.C and execute
123 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
124 printf("*******************************\n");
125 printf("*** Setup PAR archive ***\n");
126 printf("*******************************\n");
127 gROOT->Macro("PROOF-INF/SETUP.C");
130 gSystem->ChangeDirectory(ocwd.Data());
131 printf("Current dir: %s\n", ocwd.Data());