26 #include <TClonesArray.h>
28 #include "AliAnalysisManager.h"
29 #include "AliAODHandler.h"
30 #include "AliAODEvent.h"
31 #include "AliAODVertex.h"
32 #include "AliAODTrack.h"
35 #include "AliAnalysisTaskSE.h"
79 if(fDebug > 1) printf(
"AnalysisTaskSESelectHF::Init() \n");
81 gROOT->LoadMacro(
"ConfigVertexingHF.C");
94 if(fDebug > 1) printf(
"AnalysisTaskSESelectHF::UserCreateOutputObjects() \n");
115 TClonesArray *inputArrayD0toKpi = 0;
117 if(!aodIn && AODEvent() && IsStandardAOD()) {
123 AliAODHandler* aodHandler = (AliAODHandler*)
124 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
125 if(aodHandler->GetExtensions()) {
126 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
129 inputArrayD0toKpi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
133 inputArrayD0toKpi=(TClonesArray*)aodIn->GetList()->FindObject(
"D0toKpi");
136 if(!inputArrayD0toKpi || !aodIn) {
137 printf(
"AliAnalysisTaskSESelectHF::UserExec: D0toKpi branch not found!\n");
145 AliAODVertex *vtx1 = (AliAODVertex*)aodIn->GetPrimaryVertex();
149 Int_t trkIDtoEntry[100000];
150 for(
Int_t it=0;it<aodIn->GetNumberOfTracks();it++) {
151 AliAODTrack *track =
dynamic_cast<AliAODTrack*
>(aodIn->GetTrack(it));
152 if(!track) AliFatal(
"Not a standard AOD");
153 trkIDtoEntry[track->GetID()]=it;
156 Int_t iOutVerticesHF=0,iOutD0toKpi=0;
166 Int_t nInD0toKpi = inputArrayD0toKpi->GetEntriesFast();
167 printf(
"Number of D0->Kpi: %d\n",nInD0toKpi);
169 for (
Int_t iD0toKpi = 0; iD0toKpi < nInD0toKpi; iD0toKpi++) {
180 AliAODTrack *trk0 = (AliAODTrack*)dIn->GetDaughter(0);
181 AliAODTrack *trk1 = (AliAODTrack*)dIn->GetDaughter(1);
183 trk0=
dynamic_cast<AliAODTrack*
>(aodIn->GetTrack(trkIDtoEntry[dIn->
GetProngID(0)]));
184 trk1=
dynamic_cast<AliAODTrack*
>(aodIn->GetTrack(trkIDtoEntry[dIn->
GetProngID(1)]));
185 if(!trk0 || !trk1) AliFatal(
"Not a standard AOD");
187 printf(
"pt of positive track: %f\n",trk0->Pt());
188 printf(
"pt of negative track: %f\n",trk1->Pt());
192 AliAODVertex *v =
new(verticesHFRef[iOutVerticesHF++])
193 AliAODVertex(*(dIn->GetSecondaryVtx()));
196 dOut->SetSecondaryVtx(v);
204 printf(
"Number of selected D0->Kpi: %d\n",iOutD0toKpi);
215 if(fDebug > 1) printf(
"AnalysisTaskSESelectHF: Terminate() \n");
TClonesArray * fD0toKpiTClArr
! Array of D0->Kpi
virtual void UserCreateOutputObjects()
void UnsetOwnPrimaryVtx()
AliAnalysisTaskSESelectHF()
AliAODVertex * GetOwnPrimaryVtx() const
virtual void UserExec(Option_t *option)
UShort_t GetProngID(Int_t ip) const
AliAnalysisVertexingHF * fVHF
virtual void Terminate(Option_t *option)
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
TClonesArray * fVerticesHFTClArr
! Array of heavy-flavour vertices
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
virtual ~AliAnalysisTaskSESelectHF()