]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/AOD/runPWG2AODUpdate.C
7f3e73c1160c5704304239c4294572cda521a0dc
[u/mrichter/AliRoot.git] / PWG2 / AOD / runPWG2AODUpdate.C
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
81   AliAnalysisDataContainer *cin_esd = mgr->CreateContainer("cchain",TChain::Class(), 
82                                                            AliAnalysisManager::kInputContainer);
83   
84   // Output AOD container
85   AliAnalysisDataContainer *cout_aod = mgr->CreateContainer("tree", TTree::Class(),
86                                                             AliAnalysisManager::kOutputContainer, "default");
87   
88   mgr->ConnectInput  (esdfilter,  0, cin_esd  );
89   mgr->ConnectOutput (esdfilter,  0, cout_aod );
90
91   mgr->ConnectInput  (pwg2aodupdate,  0, cin_esd  );
92   mgr->ConnectOutput (pwg2aodupdate,  0, cout_aod );
93   //
94   // Run the analysis
95   //    
96   mgr->InitAnalysis();
97   mgr->PrintStatus();
98   mgr->StartAnalysis("local",chain);
99   delete mgr;
100 }
101
102 void SetupPar(char* pararchivename)
103 {
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);
110         
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");
116             
117             if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
118                 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
119                 return -1;
120             }
121         }
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");
128         }
129         
130         gSystem->ChangeDirectory(ocwd.Data());
131    printf("Current dir: %s\n", ocwd.Data());
132     } 
133 }