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