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->GetCommonInputContainer();
83 // Output AOD container
84 AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer();
86 mgr->ConnectInput (esdfilter, 0, cin_esd );
87 mgr->ConnectOutput (esdfilter, 0, cout_aod );
89 mgr->ConnectInput (pwg2aodupdate, 0, cin_esd );
90 mgr->ConnectOutput (pwg2aodupdate, 0, cout_aod );
96 mgr->StartAnalysis("local",chain);
100 void SetupPar(char* pararchivename)
102 if (pararchivename) {
103 char processline[1024];
104 sprintf(processline,".! tar xvzf %s.par",pararchivename);
105 gROOT->ProcessLine(processline);
106 TString ocwd = gSystem->WorkingDirectory();
107 gSystem->ChangeDirectory(pararchivename);
109 // check for BUILD.sh and execute
110 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
111 printf("*******************************\n");
112 printf("*** Building PAR archive ***\n");
113 printf("*******************************\n");
115 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
116 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
120 // check for SETUP.C and execute
121 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
122 printf("*******************************\n");
123 printf("*** Setup PAR archive ***\n");
124 printf("*******************************\n");
125 gROOT->Macro("PROOF-INF/SETUP.C");
128 gSystem->ChangeDirectory(ocwd.Data());
129 printf("Current dir: %s\n", ocwd.Data());