]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - STEER/CreateAODfromESD.C
Fixing problems dscovered by test/gun
[u/mrichter/AliRoot.git] / STEER / CreateAODfromESD.C
... / ...
CommitLineData
1#if !defined(__CINT__) || defined(__MAKECINT__)
2#include <TChain.h>
3#include <TSystem.h>
4#include "AliAnalysisManager.h"
5#include "AliESDInputHandler.h"
6#include "AliAODHandler.h"
7#include "AliAnalysisTaskESDfilter.h"
8#include "AliAnalysisDataContainer.h"
9#endif
10
11void CreateAODfromESD(const char *inFileName = "AliESDs.root",
12 const char *outFileName = "AliAOD.root",
13 Bool_t bKineFilter = kTRUE)
14{
15
16 gSystem->Load("libTree");
17 gSystem->Load("libGeom");
18 gSystem->Load("libPhysics");
19 gSystem->Load("libVMC");
20 gSystem->Load("libSTEERBase");
21 gSystem->Load("libESD");
22 gSystem->Load("libAOD");
23
24 gSystem->Load("libANALYSIS");
25 gSystem->Load("libANALYSISalice");
26 gSystem->Load("libCORRFW");
27 gSystem->Load("libPWG3base");
28 gSystem->Load("libPWG3muon");
29
30 TChain *chain = new TChain("esdTree");
31 // Steering input chain
32 chain->Add(inFileName);
33 AliAnalysisManager *mgr = new AliAnalysisManager("ESD to AOD", "Analysis Manager");
34
35 // Input
36 AliESDInputHandler* inpHandler = new AliESDInputHandler();
37 inpHandler->SetReadFriends(kFALSE);
38 inpHandler->SetReadTags();
39 mgr->SetInputEventHandler (inpHandler);
40 // Output
41 AliAODHandler* aodHandler = new AliAODHandler();
42 aodHandler->SetOutputFileName(outFileName);
43 mgr->SetOutputEventHandler(aodHandler);
44
45 // MC Truth
46 if(bKineFilter){
47 AliMCEventHandler* mcHandler = new AliMCEventHandler();
48 mgr->SetMCtruthEventHandler(mcHandler);
49 }
50
51
52 // Tasks
53 // Filtering of MC particles (decays conversions etc)
54 // this task is also needed to set the MCEventHandler
55 // to the AODHandler, this will not be needed when
56 // AODHandler goes to ANALYSISalice
57 AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");
58 if (bKineFilter) mgr->AddTask(kinefilter);
59
60 // Barrel Tracks
61 AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter");
62 mgr->AddTask(filter);
63 // Muons
64 AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
65 mgr->AddTask(esdmuonfilter);
66
67 // Cuts on primary tracks
68 AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Standard");
69 esdTrackCutsL->SetMinNClustersTPC(50);
70 esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
71 esdTrackCutsL->SetMaxCovDiagonalElements(2, 2, 0.5, 0.5, 2);
72 esdTrackCutsL->SetRequireTPCRefit(kTRUE);
73 esdTrackCutsL->SetMaxDCAToVertexXY(3.0);
74 esdTrackCutsL->SetMaxDCAToVertexZ(3.0);
75 esdTrackCutsL->SetDCAToVertex2D(kTRUE);
76 esdTrackCutsL->SetRequireSigmaToVertex(kFALSE);
77 esdTrackCutsL->SetAcceptKinkDaughters(kFALSE);
78 // ITS stand-alone tracks
79 AliESDtrackCuts* esdTrackCutsITSsa = new AliESDtrackCuts("AliESDtrackCuts", "ITS stand-alone");
80 esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE);
81
82 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
83 trackFilter->AddCuts(esdTrackCutsL);
84 trackFilter->AddCuts(esdTrackCutsITSsa);
85
86 // Cuts on V0s
87 AliESDv0Cuts* esdV0Cuts = new AliESDv0Cuts("AliESDv0Cuts", "Standard pp");
88 esdV0Cuts->SetMinRadius(0.2);
89 esdV0Cuts->SetMaxRadius(200);
90 esdV0Cuts->SetMinDcaPosToVertex(0.05);
91 esdV0Cuts->SetMinDcaNegToVertex(0.05);
92 esdV0Cuts->SetMaxDcaV0Daughters(1.0);
93 esdV0Cuts->SetMinCosinePointingAngle(0.99);
94 AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter");
95 v0Filter->AddCuts(esdV0Cuts);
96
97
98//
99 filter->SetTrackFilter(trackFilter);
100 filter->SetV0Filter(v0Filter);
101
102
103// Create AOD Tags
104 AliAnalysisTaskTagCreator* tagTask = new AliAnalysisTaskTagCreator("AOD Tag Creator");
105 mgr->AddTask(tagTask);
106
107 // Pipelining
108 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
109 AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer();
110
111
112 AliAnalysisDataContainer *coutputT
113 = mgr->CreateContainer("cTag", TTree::Class(), AliAnalysisManager::kOutputContainer, "AOD.tag.root");
114
115 coutput1->SetSpecialOutput();
116 coutputT->SetSpecialOutput();
117
118 if(bKineFilter) {
119 mgr->ConnectInput (kinefilter, 0, cinput1 );
120 mgr->ConnectOutput (kinefilter, 0, coutput1 );
121 }
122
123 mgr->ConnectInput (filter, 0, cinput1 );
124 mgr->ConnectOutput(filter, 0, coutput1);
125
126 mgr->ConnectInput (esdmuonfilter, 0, cinput1 );
127// mgr->ConnectOutput(esdmuonfilter, 0, coutput1);
128
129 mgr->ConnectInput (tagTask, 0, cinput1);
130 mgr->ConnectOutput(tagTask, 1, coutputT);
131
132 //
133 // Run the analysis
134 //
135 mgr->InitAnalysis();
136 mgr->PrintStatus();
137 mgr->StartAnalysis("local", chain);
138}
139