]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AnalysisTrainMuonLocal.C
Replacing surface pressure alias with new one, and removing cr5 pressure alias.
[u/mrichter/AliRoot.git] / PWG3 / muon / AnalysisTrainMuonLocal.C
CommitLineData
8acd5e60 1void 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
107void 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