]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPYAOD/runPWG2AODUpdate.C
have macros here
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPYAOD / 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->GetCommonInputContainer();
82   
83   // Output AOD container
84   AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer();
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 }