]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AnalysisTrainMuonLocal.C
Update of the class ESDMuonFilter. New marcros for creating AOD with muon information...
[u/mrichter/AliRoot.git] / PWG3 / muon / AnalysisTrainMuonLocal.C
1 void AnalysisTrainMuonLocal(char* filein = "AliESDs.root", char* fileout = "AliAOD.root")\r
2 \r
3 // Macro to produce a generic AOD starting from an ESD file. \r
4 // The AOD is filled with two tasks: \r
5 // 1- with the first one (AliAnalysisTaskESDfilter), \r
6 //    all the branches of the AOD are filled apart from the muons. \r
7 // 2- with the second task (AliAnalysisTaskESDMuonFilter) \r
8 //    muons tracks are added to the tracks branch \r
9 // This macro works locally\r
10 // R. Arnaldi 5/5/08\r
11 \r
12 {\r
13     gSystem->Load("libTree.so");\r
14     gSystem->Load("libGeom.so");\r
15     gSystem->Load("libVMC.so");\r
16     gSystem->Load("libPhysics.so");\r
17 \r
18     // If analysis is .par based:\r
19 \r
20     // Common packages\r
21     SetupPar("STEERBase");\r
22     SetupPar("ESD");\r
23     SetupPar("AOD");\r
24     SetupPar("ANALYSIS");\r
25     SetupPar("ANALYSISalice");\r
26     // Analysis-specific packages\r
27     SetupPar("PWG3muon");      \r
28   \r
29     // Input ESD file\r
30     TChain* chain = new TChain("esdTree");  \r
31     chain->Add(filein);\r
32    \r
33     // Define the analysis manager\r
34     AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "Analysis train");\r
35     \r
36     // ESD input handler\r
37     AliESDInputHandler *esdHandler = new AliESDInputHandler();\r
38     esdHandler->SetInactiveBranches("FMD CaloCluster");\r
39     \r
40     // AOD output handler\r
41     AliAODHandler* aodHandler   = new AliAODHandler();\r
42     aodHandler->SetOutputFileName(fileout);\r
43 \r
44     mgr->SetInputEventHandler(esdHandler);\r
45     mgr->SetOutputEventHandler(aodHandler);\r
46     \r
47     // Set of cuts for the ESD filter\r
48     // \r
49     // standard cuts\r
50     AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");\r
51     esdTrackCutsL->SetMinNClustersTPC(50);\r
52     esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);\r
53     esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
54     esdTrackCutsL->SetRequireTPCRefit(kTRUE);\r
55     esdTrackCutsL->SetMinNsigmaToVertex(3);\r
56     esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);\r
57     esdTrackCutsL->SetAcceptKingDaughters(kFALSE);\r
58     //\r
59     // hard cuts\r
60     AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");\r
61     esdTrackCutsH->SetMinNClustersTPC(100);\r
62     esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);\r
63     esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);\r
64     esdTrackCutsH->SetRequireTPCRefit(kTRUE);\r
65     esdTrackCutsH->SetMinNsigmaToVertex(2);\r
66     esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);\r
67     esdTrackCutsH->SetAcceptKingDaughters(kFALSE);\r
68     //\r
69     AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
70     trackFilter->AddCuts(esdTrackCutsL);\r
71     trackFilter->AddCuts(esdTrackCutsH);\r
72 \r
73     // ESD filter task putting standard info in the output generic AOD \r
74     AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");\r
75     //esdfilter->SetTrackFilter(trackFilter);\r
76     esdfilter->SetDebugLevel(10);\r
77     mgr->AddTask(esdfilter);\r
78     \r
79     // ESD filter task putting muon info in the output generic AOD \r
80     AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");\r
81     mgr->AddTask(esdmuonfilter);\r
82 \r
83     // Containers for input/output\r
84     AliAnalysisDataContainer *cin_esd = mgr->CreateContainer("cESD",TChain::Class(), \r
85                                                              AliAnalysisManager::kInputContainer);\r
86     // Output AOD container. \r
87     AliAnalysisDataContainer *cout_aod = mgr->CreateContainer("cAOD", TTree::Class(),\r
88                                                               AliAnalysisManager::kOutputContainer, "default");\r
89                                                               \r
90     // Connect containers to tasks slots\r
91     mgr->ConnectInput  (esdfilter,  0, cin_esd  );\r
92     mgr->ConnectOutput (esdfilter,  0, cout_aod );\r
93 \r
94     mgr->ConnectInput  (esdmuonfilter,  0, cin_esd);\r
95     mgr->ConnectOutput (esdmuonfilter,  0, cout_aod );\r
96  \r
97     //\r
98     // Run the analysis\r
99     //    \r
100     if (mgr->InitAnalysis()) {\r
101         mgr->PrintStatus();\r
102         mgr->StartAnalysis("local",chain);\r
103     }   \r
104 }\r
105 \r
106 //______________________________________________________________________________\r
107 void SetupPar(char* pararchivename)\r
108 {\r
109     if (pararchivename) {\r
110         char processline[1024];\r
111         sprintf(processline,".! tar xvzf %s.par",pararchivename);\r
112         gROOT->ProcessLine(processline);\r
113         TString ocwd = gSystem->WorkingDirectory();\r
114         gSystem->ChangeDirectory(pararchivename);\r
115         \r
116         // check for BUILD.sh and execute\r
117         if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {\r
118             printf("*******************************\n");\r
119             printf("*** Building PAR archive    ***\n");\r
120             printf("*******************************\n");\r
121             \r
122             if (gSystem->Exec("PROOF-INF/BUILD.sh")) {\r
123                 Error("runProcess","Cannot Build the PAR Archive! - Abort!");\r
124                 return -1;\r
125             }\r
126         }\r
127         // check for SETUP.C and execute\r
128         if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {\r
129             printf("*******************************\n");\r
130             printf("*** Setup PAR archive       ***\n");\r
131             printf("*******************************\n");\r
132             gROOT->Macro("PROOF-INF/SETUP.C");\r
133         }\r
134         \r
135         gSystem->ChangeDirectory(ocwd.Data());\r
136    printf("Current dir: %s\n", ocwd.Data());\r
137     } \r
138 }\r