X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FCreateAODfromESD.C;h=9c4148736af48f4fd8a97f0a358240eee99f9c28;hb=634696f50f40ec648c348129ab369ad84e43432d;hp=6f5d4464a3ec42e4f5f889ca44c994f5e1f21212;hpb=75bcd466d597ce471485cf81aec769014a6b6e54;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/CreateAODfromESD.C b/STEER/CreateAODfromESD.C index 6f5d4464a3e..9c4148736af 100644 --- a/STEER/CreateAODfromESD.C +++ b/STEER/CreateAODfromESD.C @@ -9,7 +9,9 @@ #endif void CreateAODfromESD(const char *inFileName = "AliESDs.root", - const char *outFileName = "AliAODs.root") { + const char *outFileName = "AliAODs.root", + Bool_t bKineFilter = kTRUE) +{ gSystem->Load("libTree"); gSystem->Load("libGeom"); @@ -21,6 +23,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root", gSystem->Load("libANALYSIS"); gSystem->Load("libANALYSISalice"); + gSystem->Load("libCORRFW"); gSystem->Load("libPWG3muon"); TChain *chain = new TChain("esdTree"); @@ -32,13 +35,26 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root", AliESDInputHandler* inpHandler = new AliESDInputHandler(); inpHandler->SetReadTags(); mgr->SetInputEventHandler (inpHandler); - // Output AliAODHandler* aodHandler = new AliAODHandler(); aodHandler->SetOutputFileName(outFileName); mgr->SetOutputEventHandler(aodHandler); - // Task + // 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 + AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter"); + if (bKineFilter) mgr->AddTask(kinefilter); + // Barrel Tracks AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter"); mgr->AddTask(filter); @@ -56,18 +72,22 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root", esdTrackCutsL->SetMaxDCAToVertexZ(3.0); esdTrackCutsL->SetDCAToVertex2D(kTRUE); esdTrackCutsL->SetRequireSigmaToVertex(kFALSE); - esdTrackCutsL->SetAcceptKingDaughters(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(100); + esdV0Cuts->SetMaxRadius(200); esdV0Cuts->SetMinDcaPosToVertex(0.05); esdV0Cuts->SetMinDcaNegToVertex(0.05); - esdV0Cuts->SetMaxDcaV0Daughters(0.5); + esdV0Cuts->SetMaxDcaV0Daughters(1.0); esdV0Cuts->SetMinCosinePointingAngle(0.99); AliAnalysisFilter* v0Filter = new AliAnalysisFilter("v0Filter"); v0Filter->AddCuts(esdV0Cuts); @@ -83,11 +103,21 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root", mgr->AddTask(tagTask); // Pipelining - AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); + 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); @@ -104,3 +134,4 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root", mgr->PrintStatus(); mgr->StartAnalysis("local", chain); } +