]>
Commit | Line | Data |
---|---|---|
f70a1b5d | 1 | void AnalysisTrainMuonCAF(char* fileout = "AliAOD.root", char *datasetname = "myDataSet", Int_t nev=1234567890) |
2 | { | |
3 | // Macro to produce a generic AOD starting from an ESD file. | |
4 | // The AOD is filled with two tasks: | |
5 | // 1- with the first one (AliAnalysisTaskESDfilter), | |
6 | // all the branches of the AOD are filled apart from the muons. | |
7 | // 2- with the second task (AliAnalysisTaskESDMuonFilter) | |
8 | // muons tracks are added to the tracks branch | |
9 | // This macro works on the CAF | |
10 | // R. Arnaldi 4/5/08 | |
11 | ||
12 | gSystem->Load("libTree.so"); | |
13 | gSystem->Load("libGeom.so"); | |
14 | gSystem->Load("libVMC.so"); | |
15 | gSystem->Load("libPhysics.so"); | |
16 | ||
17 | // Reset user processes if CAF if not responding anymore | |
18 | // TProof::Reset("lxb6046"); | |
19 | ||
20 | // Connect to proof | |
21 | TProof::Open("lxb6046"); // may be username@lxb6046 if user not the same as on local | |
22 | ||
23 | // Clear packages if changing ROOT version on CAF or local | |
24 | // gProof->ClearPackages(); | |
25 | // Enable proof debugging if needed | |
26 | // gProof->SetLogLevel(5); | |
27 | ||
28 | // Common packages | |
29 | gProof->UploadPackage("STEERBase.par"); | |
30 | gProof->EnablePackage("STEERBase"); | |
31 | gProof->UploadPackage("ESD.par"); | |
32 | gProof->EnablePackage("ESD"); | |
33 | gProof->UploadPackage("AOD.par"); | |
34 | gProof->EnablePackage("AOD"); | |
35 | gProof->UploadPackage("ANALYSIS.par"); | |
36 | gProof->EnablePackage("ANALYSIS"); | |
37 | gProof->UploadPackage("ANALYSISalice.par"); | |
38 | gProof->EnablePackage("ANALYSISalice"); | |
39 | // Analysis-specific | |
40 | // --- Enable the PWG3base Package | |
41 | gProof->UploadPackage("PWG3muon.par"); | |
42 | gProof->EnablePackage("PWG3muon"); | |
43 | ||
44 | // Chain from files staged on CAF | |
45 | // gROOT->LoadMacro("CreateESDChain.C"); | |
46 | // TChain* chain = CreateESDChain("ESD1503X_v1.txt",3); | |
47 | // TChain* chain = CreateESDChain("ESD82XX_30Kshort.txt", 10); | |
48 | ||
49 | // Chain from datasets | |
50 | gROOT->LoadMacro("CreateChainFromDataSet.C"); | |
51 | ds = gProof->GetDataSet(datasetname)->GetStagedSubset(); | |
52 | chain = CreateChainFromDataSet(ds, "esdTree"); | |
53 | ||
54 | // Make the analysis manager | |
55 | AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "Analysis train"); | |
56 | ||
57 | // ESD input handler | |
58 | AliESDInputHandler *esdHandler = new AliESDInputHandler(); | |
59 | esdHandler->SetInactiveBranches("FMD CaloCluster"); | |
60 | ||
61 | // AOD output handler | |
62 | AliAODHandler* aodHandler = new AliAODHandler(); | |
63 | aodHandler->SetOutputFileName(fileout); | |
64 | //aodHandler->SetOutputFileName("AOD.root"); | |
65 | ||
66 | mgr->SetInputEventHandler(esdHandler); | |
67 | mgr->SetOutputEventHandler(aodHandler); | |
68 | ||
69 | // Set of cuts plugged into the ESD filter | |
70 | // | |
71 | // standard | |
72 | AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose"); | |
73 | esdTrackCutsL->SetMinNClustersTPC(50); | |
74 | esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5); | |
75 | esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2); | |
76 | esdTrackCutsL->SetRequireTPCRefit(kTRUE); | |
77 | esdTrackCutsL->SetMinNsigmaToVertex(3); | |
78 | esdTrackCutsL->SetRequireSigmaToVertex(kTRUE); | |
79 | esdTrackCutsL->SetAcceptKingDaughters(kFALSE); | |
80 | // | |
81 | // hard cuts | |
82 | AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard"); | |
83 | esdTrackCutsH->SetMinNClustersTPC(100); | |
84 | esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0); | |
85 | esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2); | |
86 | esdTrackCutsH->SetRequireTPCRefit(kTRUE); | |
87 | esdTrackCutsH->SetMinNsigmaToVertex(2); | |
88 | esdTrackCutsH->SetRequireSigmaToVertex(kTRUE); | |
89 | esdTrackCutsH->SetAcceptKingDaughters(kFALSE); | |
90 | esdTrackCutsH->SetPRange(0.,2.); | |
91 | // | |
92 | // muon cuts | |
93 | AliESDMuonTrackCuts* esdMuonTrackCuts = new AliESDMuonTrackCuts("AliESDMuonTrackCuts", "test"); | |
94 | esdMuonTrackCuts->SetPRange(0.,20.); | |
95 | //esdMuonTrackCuts->SetPtRange(0.,0.5); // example of kinematic cuts that can be applied | |
96 | ||
97 | // track filter (to reject tracks not surviving the cuts - refers to all particles apart from muons) | |
98 | AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter"); | |
99 | trackFilter->AddCuts(esdTrackCutsH); | |
100 | ||
101 | // muon track filter (to reject muon tracks not surviving the cuts) | |
102 | AliAnalysisFilter* trackMuonFilter = new AliAnalysisFilter("trackMuonFilter"); | |
103 | trackMuonFilter->AddCuts(esdMuonTrackCuts); | |
104 | ||
105 | // ESD filter task putting standard info to output generic AOD | |
106 | AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter"); | |
107 | //esdfilter->SetTrackFilter(trackFilter); | |
108 | esdfilter->SetDebugLevel(10); | |
109 | mgr->AddTask(esdfilter); | |
110 | ||
111 | // ESD filter task putting muon info to output generic AOD | |
112 | AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter"); | |
113 | esdmuonfilter->SetTrackFilter(trackMuonFilter); | |
114 | mgr->AddTask(esdmuonfilter); | |
115 | ||
116 | // Containers for input/output | |
117 | AliAnalysisDataContainer *cin_esd = mgr->CreateContainer("cESD",TChain::Class(), AliAnalysisManager::kInputContainer); | |
118 | // Output AOD container. | |
119 | AliAnalysisDataContainer *cout_aod = mgr->CreateContainer("cAOD", TTree::Class(), AliAnalysisManager::kOutputContainer, "default"); | |
120 | ||
121 | // Connect containers to tasks slots | |
122 | mgr->ConnectInput (esdfilter, 0, cin_esd ); | |
123 | mgr->ConnectOutput (esdfilter, 0, cout_aod ); | |
124 | ||
125 | mgr->ConnectInput (esdmuonfilter, 0, cin_esd); | |
126 | mgr->ConnectOutput (esdmuonfilter, 0, cout_aod ); | |
127 | ||
128 | // | |
129 | // Run the analysis | |
130 | // | |
131 | if (mgr->InitAnalysis()) { | |
132 | mgr->PrintStatus(); | |
133 | mgr->StartAnalysis("proof",chain,nev); | |
134 | } | |
135 | } | |
136 |