20 #include <Riostream.h>
21 #include <TClonesArray.h>
26 #include <TDatabasePDG.h>
28 #include <AliAnalysisDataSlot.h>
29 #include <AliAnalysisDataContainer.h>
30 #include "AliAnalysisManager.h"
31 #include "AliAODHandler.h"
32 #include "AliAODEvent.h"
33 #include "AliAODVertex.h"
34 #include "AliAODTrack.h"
35 #include "AliAODMCHeader.h"
36 #include "AliAODMCParticle.h"
42 #include "AliAnalysisTaskSE.h"
94 TClonesArray *array3Prong = 0;
96 TClonesArray *inputArrayD0=0;
98 TClonesArray *arrayDStartoD0pi=0;
100 TClonesArray *arrayCascade=0;
103 if(!aod && AODEvent() && IsStandardAOD()) {
109 AliAODHandler* aodHandler = (AliAODHandler*)
110 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
111 if(aodHandler->GetExtensions()) {
112 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
114 array3Prong=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
115 inputArrayD0=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
116 arrayDStartoD0pi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
117 arrayCascade=(TClonesArray*)aodFromExt->GetList()->FindObject(
"CascadesHF");
120 array3Prong=(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
121 inputArrayD0=(TClonesArray*)aod->GetList()->FindObject(
"D0toKpi");
122 arrayDStartoD0pi=(TClonesArray*)aod->GetList()->FindObject(
"Dstar");
123 arrayCascade=(TClonesArray*)aod->GetList()->FindObject(
"CascadesHF");
126 printf(
"AliAnalysisTaskSECleanupVertexingHF::UserExec: aod not found!\n");
129 if(!array3Prong || !inputArrayD0 || !arrayDStartoD0pi) {
130 printf(
"AliAnalysisTaskSECleanupVertexingHF::UserExec: an input branch not found!\n");
133 if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001)
return;
136 for(
Int_t iDStartoD0pi = 0; iDStartoD0pi<arrayDStartoD0pi->GetEntriesFast(); iDStartoD0pi++) {
138 if(!recdstarD0pi)
continue;
140 AliAODVertex *vtxDS = (AliAODVertex*)recdstarD0pi->GetSecondaryVtx();
141 if(vtxDS) {
delete vtxDS; vtxDS=0;}
146 for (
Int_t iD0toKpi = 0; iD0toKpi < inputArrayD0->GetEntriesFast(); iD0toKpi++) {
150 AliAODVertex *vtx2 = (AliAODVertex*)recd->GetSecondaryVtx();
151 if(vtx2){
delete vtx2;vtx2=0;}
155 for (
Int_t i3prong = 0; i3prong < array3Prong->GetEntriesFast(); i3prong++) {
159 AliAODVertex *vtx3 = (AliAODVertex*)recd3->GetSecondaryVtx();
160 if(vtx3){
delete vtx3;vtx3=0;}
165 for(
Int_t iCasc=0; iCasc<arrayCascade->GetEntriesFast(); iCasc++){
167 if(!recCasc)
continue;
169 AliAODVertex *vtxCasc = (AliAODVertex*)recCasc->GetSecondaryVtx();
170 if(vtxCasc){
delete vtxCasc; vtxCasc=0;}
virtual ~AliAnalysisTaskSECleanupVertexingHF()
AliAnalysisTaskSECleanupVertexingHF()
virtual void UserCreateOutputObjects()
Int_t GetIsFilled() const
virtual void UserExec(Option_t *option)
virtual void Terminate(Option_t *option)