]>
Commit | Line | Data |
---|---|---|
d255c404 | 1 | void runPWG2AODUpdate(const char *esdsource="ESD1503X_v1.txt", int nfiles=1) |
2 | { | |
3 | producePWG2AOD(esdsource, nfiles); | |
4 | } | |
5 | ||
6 | void producePWG2AOD(const char *esdsource, int nfiles) | |
7 | { | |
8 | gSystem->Load("libTree.so"); | |
9 | gSystem->Load("libGeom.so"); | |
10 | gSystem->Load("libVMC.so"); | |
11 | gSystem->Load("libXMLIO.so"); | |
12 | SetupPar("STEERBase"); | |
13 | SetupPar("ESD"); | |
14 | SetupPar("AOD"); | |
15 | SetupPar("ANALYSIS"); | |
16 | SetupPar("ANALYSISalice"); | |
17 | SetupPar("PWG0base"); | |
18 | SetupPar("PWG2AOD"); | |
19 | // Make the analysis manager | |
20 | // | |
21 | // Chain from CAF | |
22 | gROOT->LoadMacro("CreateESDChain.C"); | |
23 | TChain* chain = CreateESDChain(esdsource, nfiles); | |
24 | ||
25 | AliAODHandler* aodHandler = new AliAODHandler(); | |
26 | aodHandler->SetOutputFileName("aod.root"); | |
27 | AliESDInputHandler *esdHandler = new AliESDInputHandler(); | |
28 | esdHandler->SetInactiveBranches("FMD CaloCluster"); | |
29 | ||
30 | AliMCEventHandler* mcHandler = new AliMCEventHandler(); | |
31 | ||
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); | |
39 | ||
40 | ||
41 | // Set of cuts | |
42 | // | |
43 | // standard | |
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); | |
52 | // | |
53 | // hard | |
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); | |
66 | // | |
67 | AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter"); | |
68 | trackFilter->AddCuts(esdTrackCutsL); | |
69 | trackFilter->AddCuts(esdTrackCutsH); | |
70 | // | |
71 | AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter"); | |
72 | esdfilter->SetTrackFilter(trackFilter); | |
73 | esdfilter->SetDebugLevel(10); | |
74 | mgr->AddTask(esdfilter); | |
75 | ||
76 | AliAnalysisTaskPWG2AODUpdate *pwg2aodupdate = new AliAnalysisTaskPWG2AODUpdate("PWG2 AOD Update"); | |
77 | mgr->AddTask(pwg2aodupdate); | |
78 | ||
79 | // Create containers for input/output | |
80 | // Top ESD container | |
8a546c82 | 81 | AliAnalysisDataContainer *cin_esd = mgr->GetCommonInputContainer(); |
d255c404 | 82 | |
83 | // Output AOD container | |
8a546c82 | 84 | AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer(); |
d255c404 | 85 | |
86 | mgr->ConnectInput (esdfilter, 0, cin_esd ); | |
87 | mgr->ConnectOutput (esdfilter, 0, cout_aod ); | |
88 | ||
89 | mgr->ConnectInput (pwg2aodupdate, 0, cin_esd ); | |
90 | mgr->ConnectOutput (pwg2aodupdate, 0, cout_aod ); | |
91 | // | |
92 | // Run the analysis | |
93 | // | |
94 | mgr->InitAnalysis(); | |
95 | mgr->PrintStatus(); | |
96 | mgr->StartAnalysis("local",chain); | |
97 | delete mgr; | |
98 | } | |
99 | ||
100 | void SetupPar(char* pararchivename) | |
101 | { | |
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); | |
108 | ||
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"); | |
114 | ||
115 | if (gSystem->Exec("PROOF-INF/BUILD.sh")) { | |
116 | Error("runProcess","Cannot Build the PAR Archive! - Abort!"); | |
117 | return -1; | |
118 | } | |
119 | } | |
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"); | |
126 | } | |
127 | ||
128 | gSystem->ChangeDirectory(ocwd.Data()); | |
129 | printf("Current dir: %s\n", ocwd.Data()); | |
130 | } | |
131 | } |