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