X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FCreateAODfromESD.C;h=a13ad2129eca856329d78cc17db8d5e65d08d3a5;hb=496abd8c7ff6f74dc41d22b124293c3e7af9c6b9;hp=80e4386842186e8a3bba95ae59c364b0f5ad12d3;hpb=3fde83ea8d2addc218b4e813fe8972e1772635ef;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/CreateAODfromESD.C b/STEER/CreateAODfromESD.C index 80e43868421..a13ad2129ec 100644 --- a/STEER/CreateAODfromESD.C +++ b/STEER/CreateAODfromESD.C @@ -1,23 +1,139 @@ #if !defined(__CINT__) || defined(__MAKECINT__) - -#include "TFile.h" -#include "AliReconstruction.h" - +#include +#include +#include "AliAnalysisManager.h" +#include "AliESDInputHandler.h" +#include "AliAODHandler.h" +#include "AliAnalysisTaskESDfilter.h" +#include "AliAnalysisDataContainer.h" #endif -// THIS MACRO IS NOT SUPPORTED ANYMORE. Goodbye. MDO 26/03/2008 void CreateAODfromESD(const char *inFileName = "AliESDs.root", - const char *outFileName = "AliAOD.root") { - - // open input and output files - TFile *esdFile = TFile::Open(inFileName, "READ"); - TFile *aodFile = TFile::Open(outFileName, "RECREATE"); + const char *outFileName = "AliAOD.root", + Bool_t bKineFilter = kTRUE) +{ - // call conversion method - AliReconstruction reco; - reco.ESDFile2AODFile(esdFile, aodFile); + gSystem->Load("libTree"); + gSystem->Load("libGeom"); + gSystem->Load("libPhysics"); + gSystem->Load("libVMC"); + gSystem->Load("libSTEERBase"); + gSystem->Load("libESD"); + gSystem->Load("libAOD"); + + gSystem->Load("libANALYSIS"); + gSystem->Load("libANALYSISalice"); + gSystem->Load("libCORRFW"); + gSystem->Load("libPWGHFbase"); + gSystem->Load("libPWGmuon"); + + TChain *chain = new TChain("esdTree"); + // Steering input chain + chain->Add(inFileName); + AliAnalysisManager *mgr = new AliAnalysisManager("ESD to AOD", "Analysis Manager"); + + // Input + AliESDInputHandler* inpHandler = new AliESDInputHandler(); + inpHandler->SetReadFriends(kFALSE); + inpHandler->SetReadTags(); + mgr->SetInputEventHandler (inpHandler); + // Output + AliAODHandler* aodHandler = new AliAODHandler(); + aodHandler->SetOutputFileName(outFileName); + mgr->SetOutputEventHandler(aodHandler); + + // MC Truth + if(bKineFilter){ + AliMCEventHandler* mcHandler = new AliMCEventHandler(); + mgr->SetMCtruthEventHandler(mcHandler); + } + + + // Tasks + // Filtering of MC particles (decays conversions etc) + // this task is also needed to set the MCEventHandler + // to the AODHandler, this will not be needed when + // AODHandler goes to ANALYSISalice + + // Barrel Tracks + AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter"); + mgr->AddTask(filter); + AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter"); + if (bKineFilter) mgr->AddTask(kinefilter); + // Muons + AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter"); + mgr->AddTask(esdmuonfilter); + + // Cuts on primary tracks + AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Standard"); + esdTrackCutsL->SetMinNClustersTPC(50); + esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5); + esdTrackCutsL->SetMaxCovDiagonalElements(2, 2, 0.5, 0.5, 2); + esdTrackCutsL->SetRequireTPCRefit(kTRUE); + esdTrackCutsL->SetMaxDCAToVertexXY(3.0); + esdTrackCutsL->SetMaxDCAToVertexZ(3.0); + esdTrackCutsL->SetDCAToVertex2D(kTRUE); + esdTrackCutsL->SetRequireSigmaToVertex(kFALSE); + esdTrackCutsL->SetAcceptKinkDaughters(kFALSE); + // ITS stand-alone tracks + AliESDtrackCuts* esdTrackCutsITSsa = new AliESDtrackCuts("AliESDtrackCuts", "ITS stand-alone"); + esdTrackCutsITSsa->SetRequireITSStandAlone(kTRUE); + + AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter"); + trackFilter->AddCuts(esdTrackCutsL); + trackFilter->AddCuts(esdTrackCutsITSsa); + + // Cuts on V0s + AliESDv0Cuts* esdV0Cuts = new AliESDv0Cuts("AliESDv0Cuts", "Standard pp"); + esdV0Cuts->SetMinRadius(0.2); + esdV0Cuts->SetMaxRadius(200); + esdV0Cuts->SetMinDcaPosToVertex(0.05); + esdV0Cuts->SetMinDcaNegToVertex(0.05); + esdV0Cuts->SetMaxDcaV0Daughters(1.0); + esdV0Cuts->SetMinCosinePointingAngle(0.99); + AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter"); + v0Filter->AddCuts(esdV0Cuts); - // close files - esdFile->Close(); - aodFile->Close(); + +// + filter->SetTrackFilter(trackFilter); + filter->SetV0Filter(v0Filter); + + +// Create AOD Tags + AliAnalysisTaskTagCreator* tagTask = new AliAnalysisTaskTagCreator("AOD Tag Creator"); + mgr->AddTask(tagTask); + + // Pipelining + AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); + AliAnalysisDataContainer *coutput1 = mgr->GetCommonOutputContainer(); + + + AliAnalysisDataContainer *coutputT + = mgr->CreateContainer("cTag", TTree::Class(), AliAnalysisManager::kOutputContainer, "AOD.tag.root"); + + coutput1->SetSpecialOutput(); + coutputT->SetSpecialOutput(); + + if(bKineFilter) { + mgr->ConnectInput (kinefilter, 0, cinput1 ); + mgr->ConnectOutput (kinefilter, 0, coutput1 ); + } + + mgr->ConnectInput (filter, 0, cinput1 ); + mgr->ConnectOutput(filter, 0, coutput1); + + mgr->ConnectInput (esdmuonfilter, 0, cinput1 ); +// mgr->ConnectOutput(esdmuonfilter, 0, coutput1); + + mgr->ConnectInput (tagTask, 0, cinput1); + mgr->ConnectOutput(tagTask, 1, coutputT); + + // + // Run the analysis + // + mgr->InitAnalysis(); + mgr->PrintStatus(); + mgr->StartAnalysis("local", chain); } +