1 void AnalysisTrainMuonLocal(char* filein = "AliESDs.root", char* fileout = "AliAOD.root")
\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
13 gSystem->Load("libTree.so");
\r
14 gSystem->Load("libGeom.so");
\r
15 gSystem->Load("libVMC.so");
\r
16 gSystem->Load("libPhysics.so");
\r
18 // If analysis is .par based:
\r
21 SetupPar("STEERBase");
\r
24 SetupPar("ANALYSIS");
\r
25 SetupPar("ANALYSISalice");
\r
26 // Analysis-specific packages
\r
27 SetupPar("PWG3muon");
\r
30 TChain* chain = new TChain("esdTree");
\r
33 // Define the analysis manager
\r
34 AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "Analysis train");
\r
36 // ESD input handler
\r
37 AliESDInputHandler *esdHandler = new AliESDInputHandler();
\r
38 esdHandler->SetInactiveBranches("FMD CaloCluster");
\r
40 // AOD output handler
\r
41 AliAODHandler* aodHandler = new AliAODHandler();
\r
42 aodHandler->SetOutputFileName(fileout);
\r
44 mgr->SetInputEventHandler(esdHandler);
\r
45 mgr->SetOutputEventHandler(aodHandler);
\r
47 // Set of cuts for the ESD filter
\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
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
69 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
\r
70 trackFilter->AddCuts(esdTrackCutsL);
\r
71 trackFilter->AddCuts(esdTrackCutsH);
\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
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
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
90 // Connect containers to tasks slots
\r
91 mgr->ConnectInput (esdfilter, 0, cin_esd );
\r
92 mgr->ConnectOutput (esdfilter, 0, cout_aod );
\r
94 mgr->ConnectInput (esdmuonfilter, 0, cin_esd);
\r
95 mgr->ConnectOutput (esdmuonfilter, 0, cout_aod );
\r
100 if (mgr->InitAnalysis()) {
\r
101 mgr->PrintStatus();
\r
102 mgr->StartAnalysis("local",chain);
\r
106 //______________________________________________________________________________
\r
107 void SetupPar(char* pararchivename)
\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
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
122 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
\r
123 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
\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
135 gSystem->ChangeDirectory(ocwd.Data());
\r
136 printf("Current dir: %s\n", ocwd.Data());
\r