1 #if !defined(__CINT__) || defined(__MAKECINT__)
4 #include "AliAnalysisManager.h"
5 #include "AliESDInputHandler.h"
6 #include "AliAODHandler.h"
7 #include "AliAnalysisTaskESDfilter.h"
8 #include "AliAnalysisDataContainer.h"
11 void CreateStandardAODfromESD()
14 const char *inFileName = "AliESDs.root";
15 const char *outFileName = "AliAOD.root";
16 Bool_t writeKineToAOD = kTRUE;
17 TString mode="local"; // "grid"
19 gSystem->Load("libTree");
20 gSystem->Load("libGeom");
21 gSystem->Load("libPhysics");
22 gSystem->Load("libVMC");
23 gSystem->Load("libSTEERBase");
24 gSystem->Load("libESD");
25 gSystem->Load("libAOD");
27 gSystem->Load("libANALYSIS");
28 gSystem->Load("libANALYSISalice");
29 gSystem->Load("libPWG3muon");
32 if(mode=="local") { // local
33 chain = new TChain("esdTree");
34 // Steering input chain
35 chain->Add(inFileName);
36 } else if(mode=="grid") { // grid
37 const char *collectionfile = "esd_coll1.xml";
38 TGrid::Connect("alien:",0,0,"t") ;
39 //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria
40 AliRunTagCuts *runCuts = new AliRunTagCuts();
41 AliEventTagCuts *eventCuts = new AliEventTagCuts();
42 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
43 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
44 // eventCuts->SetMultiplicityRange(0,20000);
45 //Create an AliTagAnalysis Object and chain the tags
46 AliTagAnalysis *tagAna = new AliTagAnalysis();
47 tagAna->SetType("ESD");
48 TAlienCollection *coll = TAlienCollection::Open(collectionfile);
49 TGridResult *tagResult = coll->GetGridResult("",0,0);
51 tagAna->ChainGridTags(tagResult);
52 //Create a new esd chain and assign the chain that is returned by querying the tags
53 chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);
55 printf("ERROR: mode has to be \"local\" or \"grid\"\n");
59 AliAnalysisManager *mgr = new AliAnalysisManager("ESD to AOD", "Analysis Manager");
62 AliESDInputHandler* inpHandler = new AliESDInputHandler();
63 mgr->SetInputEventHandler (inpHandler);
66 AliAODHandler* aodHandler = new AliAODHandler();
67 aodHandler->SetOutputFileName(outFileName);
68 mgr->SetOutputEventHandler(aodHandler);
71 AliMCEventHandler* mcHandler = new AliMCEventHandler();
72 if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);
76 // Filtering of MC particles (decays conversions etc)
77 // this task is also needed to set the MCEventHandler
78 // to the AODHandler, this will not be needed when
79 // AODHandler goes to ANALYSISalice
80 AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");
81 if(writeKineToAOD) mgr->AddTask(kinefilter);
84 AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter");
88 AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
89 mgr->AddTask(esdmuonfilter);
91 AliESDtrackCuts* esdTrackCutsHF = new AliESDtrackCuts("AliESDtrackCuts", "Heavy flavour");
92 esdTrackCutsHF->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
94 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
95 trackFilter->AddCuts(esdTrackCutsHF);
97 filter->SetTrackFilter(trackFilter);
100 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain", TChain::Class(),
101 AliAnalysisManager::kInputContainer);
103 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(),
104 AliAnalysisManager::kOutputContainer,
108 mgr->ConnectInput(filter,0,cinput1);
109 mgr->ConnectOutput(filter,0,coutput1);
111 mgr->ConnectInput(esdmuonfilter,0,cinput1);
112 mgr->ConnectOutput(esdmuonfilter,0,coutput1);
115 mgr->ConnectInput(kinefilter,0,cinput1);
116 mgr->ConnectOutput(kinefilter,0,coutput1);
123 mgr->StartAnalysis(mode.Data(),chain);