]>
Commit | Line | Data |
---|---|---|
fe9005e3 | 1 | void AnalysisTrainMuonCompLocal() |
2 | { | |
3 | gSystem->Load("libTree.so"); | |
4 | gSystem->Load("libGeom.so"); | |
5 | gSystem->Load("libVMC.so"); | |
6 | gSystem->Load("libPhysics.so"); | |
7 | ||
8 | // Common packages | |
9 | SetupPar("STEERBase"); | |
10 | SetupPar("ESD"); | |
11 | SetupPar("AOD"); | |
12 | SetupPar("ANALYSIS"); | |
13 | SetupPar("ANALYSISalice"); | |
14 | // Analysis-specific packages | |
15 | SetupPar("PWG3muon"); | |
16 | ||
17 | gROOT->LoadMacro("AliAnalysisTaskAODvsESD.cxx+"); | |
18 | ||
19 | AliTagAnalysis *TagAna = new AliTagAnalysis("ESD"); | |
20 | TagAna->ChainLocalTags("./"); | |
21 | ||
22 | AliRunTagCuts *runCuts = new AliRunTagCuts(); | |
23 | AliLHCTagCuts *lhcCuts = new AliLHCTagCuts(); | |
24 | AliDetectorTagCuts *detCuts = new AliDetectorTagCuts(); | |
25 | AliEventTagCuts *evCuts = new AliEventTagCuts(); | |
26 | ||
27 | TChain* chain = 0x0; | |
28 | chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts); | |
29 | chain->SetBranchStatus("*Calo*",0); | |
30 | ||
31 | // Define the analysis manager | |
32 | AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "Analysis train"); | |
33 | ||
34 | // ESD input handler | |
35 | AliESDInputHandler *esdHandler = new AliESDInputHandler(); | |
36 | esdHandler->SetInactiveBranches("FMD CaloCluster"); | |
37 | mgr->SetInputEventHandler(esdHandler); | |
38 | ||
39 | // AOD output handler | |
40 | AliAODHandler* aodHandler = new AliAODHandler(); | |
41 | aodHandler->SetOutputFileName("AOD.root"); | |
42 | mgr->SetOutputEventHandler(aodHandler); | |
43 | ||
44 | // Set of cuts for the ESD filter | |
45 | // standard cuts | |
46 | AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose"); | |
47 | esdTrackCutsL->SetMinNClustersTPC(50); | |
48 | esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5); | |
49 | esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2); | |
50 | esdTrackCutsL->SetRequireTPCRefit(kTRUE); | |
51 | esdTrackCutsL->SetMinNsigmaToVertex(3); | |
52 | esdTrackCutsL->SetRequireSigmaToVertex(kTRUE); | |
53 | esdTrackCutsL->SetAcceptKingDaughters(kFALSE); | |
54 | // hard cuts | |
55 | AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard"); | |
56 | esdTrackCutsH->SetMinNClustersTPC(100); | |
57 | esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0); | |
58 | esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2); | |
59 | esdTrackCutsH->SetRequireTPCRefit(kTRUE); | |
60 | esdTrackCutsH->SetMinNsigmaToVertex(2); | |
61 | esdTrackCutsH->SetRequireSigmaToVertex(kTRUE); | |
62 | esdTrackCutsH->SetAcceptKingDaughters(kFALSE); | |
63 | ||
64 | AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter"); | |
65 | trackFilter->AddCuts(esdTrackCutsL); | |
66 | trackFilter->AddCuts(esdTrackCutsH); | |
67 | ||
68 | // first task - ESD filter task putting standard info in the output generic AOD | |
69 | AliAnalysisTaskESDfilter *esdFilter = new AliAnalysisTaskESDfilter("ESD Filter"); | |
70 | //esdFilter->SetTrackFilter(trackFilter); | |
71 | mgr->AddTask(esdFilter); | |
72 | ||
73 | // second task - ESD filter task putting muon info in the output generic AOD | |
74 | AliAnalysisTaskESDMuonFilter *esdMuonFilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter"); | |
75 | mgr->AddTask(esdMuonFilter); | |
76 | ||
77 | // third task - compare created AOD and exixting ESDs | |
78 | AliAnalysisTaskAODvsESD *AODvsESD = new AliAnalysisTaskAODvsESD("aodVsEsd"); | |
79 | mgr->AddTask(AODvsESD); | |
80 | ||
81 | // Input ESD container | |
8a546c82 | 82 | AliAnalysisDataContainer *esdIn = mgr->GetCommonInputContainer(); |
fe9005e3 | 83 | // Output AOD container. |
8a546c82 | 84 | AliAnalysisDataContainer *aodOut = mgr->GetCommonOutputContainer(); |
fe9005e3 | 85 | // Output comparison |
86 | AliAnalysisDataContainer *listOut = mgr->CreateContainer("output2", TList::Class(), AliAnalysisManager::kOutputContainer, "AODvsESDoutput.root"); | |
87 | ||
88 | // Connect containers to tasks slots | |
89 | mgr->ConnectInput(esdFilter,0,esdIn); | |
90 | mgr->ConnectOutput(esdFilter,0,aodOut); | |
91 | ||
92 | mgr->ConnectInput(esdMuonFilter,0,esdIn); | |
93 | mgr->ConnectOutput(esdMuonFilter,0,aodOut); | |
94 | ||
95 | mgr->ConnectInput(AODvsESD,0,esdIn); | |
96 | mgr->ConnectOutput(AODvsESD,0,listOut); | |
97 | ||
98 | // Run the analysis | |
99 | if (mgr->InitAnalysis()){ | |
100 | mgr->PrintStatus(); | |
101 | mgr->StartAnalysis("local",chain); | |
102 | } | |
103 | } | |
104 | ||
105 | //______________________________________________________________________________ | |
106 | void SetupPar(char* pararchivename) | |
107 | { | |
108 | if (pararchivename) { | |
109 | char processline[1024]; | |
110 | sprintf(processline,".! tar xvzf %s.par",pararchivename); | |
111 | gROOT->ProcessLine(processline); | |
112 | TString ocwd = gSystem->WorkingDirectory(); | |
113 | gSystem->ChangeDirectory(pararchivename); | |
114 | ||
115 | // check for BUILD.sh and execute | |
116 | if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) { | |
117 | printf("*** Building PAR archive ***\n"); | |
118 | ||
119 | if (gSystem->Exec("PROOF-INF/BUILD.sh")) { | |
120 | Error("runProcess","Cannot Build the PAR Archive! - Abort!"); | |
121 | return -1; | |
122 | } | |
123 | } | |
124 | // check for SETUP.C and execute | |
125 | if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) { | |
126 | printf("*** Setup PAR archive ***\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 | } |