#include <TClonesArray.h>
#include "AliAnalysisManager.h"
#include "AliAODHandler.h"
#include "AliAODEvent.h"
#include "AliAODVertex.h"
#include "AliAODTrack.h"
#include "AliAODRecoDecayHF2Prong.h"
#include "AliAnalysisVertexingHF.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisTaskSESelectHF.h"
ClassImp(AliAnalysisTaskSESelectHF)
AliAnalysisTaskSESelectHF::AliAnalysisTaskSESelectHF():
AliAnalysisTaskSE(),
fVerticesHFTClArr(0),
fD0toKpiTClArr(0),
fVHF(0)
{
}
AliAnalysisTaskSESelectHF::AliAnalysisTaskSESelectHF(const char *name):
AliAnalysisTaskSE(name),
fVerticesHFTClArr(0),
fD0toKpiTClArr(0),
fVHF(0)
{
}
AliAnalysisTaskSESelectHF::~AliAnalysisTaskSESelectHF()
{
if (fVHF) {
delete fVHF;
fVHF = 0;
}
}
void AliAnalysisTaskSESelectHF::Init()
{
if(fDebug > 1) printf("AnalysisTaskSESelectHF::Init() \n");
gROOT->LoadMacro("ConfigVertexingHF.C");
fVHF = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()");
fVHF->PrintStatus();
return;
}
void AliAnalysisTaskSESelectHF::UserCreateOutputObjects()
{
if(fDebug > 1) printf("AnalysisTaskSESelectHF::UserCreateOutputObjects() \n");
fVerticesHFTClArr = new TClonesArray("AliAODVertex", 0);
fVerticesHFTClArr->SetName("VerticesHF");
AddAODBranch("TClonesArray", &fVerticesHFTClArr);
fD0toKpiTClArr = new TClonesArray("AliAODRecoDecayHF2Prong", 0);
fD0toKpiTClArr->SetName("D0toKpi");
AddAODBranch("TClonesArray", &fD0toKpiTClArr);
return;
}
void AliAnalysisTaskSESelectHF::UserExec(Option_t *)
{
AliAODEvent *aodIn = dynamic_cast<AliAODEvent*> (InputEvent());
TClonesArray *inputArrayD0toKpi = 0;
if(!aodIn && AODEvent() && IsStandardAOD()) {
aodIn = dynamic_cast<AliAODEvent*> (AODEvent());
AliAODHandler* aodHandler = (AliAODHandler*)
((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if(aodHandler->GetExtensions()) {
AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root");
AliAODEvent *aodFromExt = ext->GetAOD();
inputArrayD0toKpi=(TClonesArray*)aodFromExt->GetList()->FindObject("D0toKpi");
}
} else if(aodIn) {
inputArrayD0toKpi=(TClonesArray*)aodIn->GetList()->FindObject("D0toKpi");
}
if(!inputArrayD0toKpi || !aodIn) {
printf("AliAnalysisTaskSESelectHF::UserExec: D0toKpi branch not found!\n");
return;
}
AliAODVertex *vtx1 = (AliAODVertex*)aodIn->GetPrimaryVertex();
Int_t trkIDtoEntry[100000];
for(Int_t it=0;it<aodIn->GetNumberOfTracks();it++) {
AliAODTrack *track = dynamic_cast<AliAODTrack*>(aodIn->GetTrack(it));
if(!track) AliFatal("Not a standard AOD");
trkIDtoEntry[track->GetID()]=it;
}
Int_t iOutVerticesHF=0,iOutD0toKpi=0;
fVerticesHFTClArr->Delete();
iOutVerticesHF = fVerticesHFTClArr->GetEntriesFast();
TClonesArray &verticesHFRef = *fVerticesHFTClArr;
fD0toKpiTClArr->Delete();
iOutD0toKpi = fD0toKpiTClArr->GetEntriesFast();
TClonesArray &aodD0toKpiRef = *fD0toKpiTClArr;
Int_t nInD0toKpi = inputArrayD0toKpi->GetEntriesFast();
printf("Number of D0->Kpi: %d\n",nInD0toKpi);
for (Int_t iD0toKpi = 0; iD0toKpi < nInD0toKpi; iD0toKpi++) {
AliAODRecoDecayHF2Prong *dIn = (AliAODRecoDecayHF2Prong*)inputArrayD0toKpi->UncheckedAt(iD0toKpi);
Bool_t unsetvtx=kFALSE;
if(!dIn->GetOwnPrimaryVtx()) {
dIn->SetOwnPrimaryVtx(vtx1);
unsetvtx=kTRUE;
}
AliAODTrack *trk0 = (AliAODTrack*)dIn->GetDaughter(0);
AliAODTrack *trk1 = (AliAODTrack*)dIn->GetDaughter(1);
if(!trk0 || !trk1) {
trk0=dynamic_cast<AliAODTrack*>(aodIn->GetTrack(trkIDtoEntry[dIn->GetProngID(0)]));
trk1=dynamic_cast<AliAODTrack*>(aodIn->GetTrack(trkIDtoEntry[dIn->GetProngID(1)]));
if(!trk0 || !trk1) AliFatal("Not a standard AOD");
}
printf("pt of positive track: %f\n",trk0->Pt());
printf("pt of negative track: %f\n",trk1->Pt());
AliAODVertex *v = new(verticesHFRef[iOutVerticesHF++])
AliAODVertex(*(dIn->GetSecondaryVtx()));
AliAODRecoDecayHF2Prong *dOut=new(aodD0toKpiRef[iOutD0toKpi++])
AliAODRecoDecayHF2Prong(*dIn);
dOut->SetSecondaryVtx(v);
dOut->SetOwnPrimaryVtx((AliAODVertex*)((dIn->GetOwnPrimaryVtx())->Clone()));
v->SetParent(dOut);
if(unsetvtx) dIn->UnsetOwnPrimaryVtx();
}
printf("Number of selected D0->Kpi: %d\n",iOutD0toKpi);
return;
}
void AliAnalysisTaskSESelectHF::Terminate(Option_t *)
{
if(fDebug > 1) printf("AnalysisTaskSESelectHF: Terminate() \n");
}
AliAnalysisTaskSESelectHF.cxx:1 AliAnalysisTaskSESelectHF.cxx:2 AliAnalysisTaskSESelectHF.cxx:3 AliAnalysisTaskSESelectHF.cxx:4 AliAnalysisTaskSESelectHF.cxx:5 AliAnalysisTaskSESelectHF.cxx:6 AliAnalysisTaskSESelectHF.cxx:7 AliAnalysisTaskSESelectHF.cxx:8 AliAnalysisTaskSESelectHF.cxx:9 AliAnalysisTaskSESelectHF.cxx:10 AliAnalysisTaskSESelectHF.cxx:11 AliAnalysisTaskSESelectHF.cxx:12 AliAnalysisTaskSESelectHF.cxx:13 AliAnalysisTaskSESelectHF.cxx:14 AliAnalysisTaskSESelectHF.cxx:15 AliAnalysisTaskSESelectHF.cxx:16 AliAnalysisTaskSESelectHF.cxx:17 AliAnalysisTaskSESelectHF.cxx:18 AliAnalysisTaskSESelectHF.cxx:19 AliAnalysisTaskSESelectHF.cxx:20 AliAnalysisTaskSESelectHF.cxx:21 AliAnalysisTaskSESelectHF.cxx:22 AliAnalysisTaskSESelectHF.cxx:23 AliAnalysisTaskSESelectHF.cxx:24 AliAnalysisTaskSESelectHF.cxx:25 AliAnalysisTaskSESelectHF.cxx:26 AliAnalysisTaskSESelectHF.cxx:27 AliAnalysisTaskSESelectHF.cxx:28 AliAnalysisTaskSESelectHF.cxx:29 AliAnalysisTaskSESelectHF.cxx:30 AliAnalysisTaskSESelectHF.cxx:31 AliAnalysisTaskSESelectHF.cxx:32 AliAnalysisTaskSESelectHF.cxx:33 AliAnalysisTaskSESelectHF.cxx:34 AliAnalysisTaskSESelectHF.cxx:35 AliAnalysisTaskSESelectHF.cxx:36 AliAnalysisTaskSESelectHF.cxx:37 AliAnalysisTaskSESelectHF.cxx:38 AliAnalysisTaskSESelectHF.cxx:39 AliAnalysisTaskSESelectHF.cxx:40 AliAnalysisTaskSESelectHF.cxx:41 AliAnalysisTaskSESelectHF.cxx:42 AliAnalysisTaskSESelectHF.cxx:43 AliAnalysisTaskSESelectHF.cxx:44 AliAnalysisTaskSESelectHF.cxx:45 AliAnalysisTaskSESelectHF.cxx:46 AliAnalysisTaskSESelectHF.cxx:47 AliAnalysisTaskSESelectHF.cxx:48 AliAnalysisTaskSESelectHF.cxx:49 AliAnalysisTaskSESelectHF.cxx:50 AliAnalysisTaskSESelectHF.cxx:51 AliAnalysisTaskSESelectHF.cxx:52 AliAnalysisTaskSESelectHF.cxx:53 AliAnalysisTaskSESelectHF.cxx:54 AliAnalysisTaskSESelectHF.cxx:55 AliAnalysisTaskSESelectHF.cxx:56 AliAnalysisTaskSESelectHF.cxx:57 AliAnalysisTaskSESelectHF.cxx:58 AliAnalysisTaskSESelectHF.cxx:59 AliAnalysisTaskSESelectHF.cxx:60 AliAnalysisTaskSESelectHF.cxx:61 AliAnalysisTaskSESelectHF.cxx:62 AliAnalysisTaskSESelectHF.cxx:63 AliAnalysisTaskSESelectHF.cxx:64 AliAnalysisTaskSESelectHF.cxx:65 AliAnalysisTaskSESelectHF.cxx:66 AliAnalysisTaskSESelectHF.cxx:67 AliAnalysisTaskSESelectHF.cxx:68 AliAnalysisTaskSESelectHF.cxx:69 AliAnalysisTaskSESelectHF.cxx:70 AliAnalysisTaskSESelectHF.cxx:71 AliAnalysisTaskSESelectHF.cxx:72 AliAnalysisTaskSESelectHF.cxx:73 AliAnalysisTaskSESelectHF.cxx:74 AliAnalysisTaskSESelectHF.cxx:75 AliAnalysisTaskSESelectHF.cxx:76 AliAnalysisTaskSESelectHF.cxx:77 AliAnalysisTaskSESelectHF.cxx:78 AliAnalysisTaskSESelectHF.cxx:79 AliAnalysisTaskSESelectHF.cxx:80 AliAnalysisTaskSESelectHF.cxx:81 AliAnalysisTaskSESelectHF.cxx:82 AliAnalysisTaskSESelectHF.cxx:83 AliAnalysisTaskSESelectHF.cxx:84 AliAnalysisTaskSESelectHF.cxx:85 AliAnalysisTaskSESelectHF.cxx:86 AliAnalysisTaskSESelectHF.cxx:87 AliAnalysisTaskSESelectHF.cxx:88 AliAnalysisTaskSESelectHF.cxx:89 AliAnalysisTaskSESelectHF.cxx:90 AliAnalysisTaskSESelectHF.cxx:91 AliAnalysisTaskSESelectHF.cxx:92 AliAnalysisTaskSESelectHF.cxx:93 AliAnalysisTaskSESelectHF.cxx:94 AliAnalysisTaskSESelectHF.cxx:95 AliAnalysisTaskSESelectHF.cxx:96 AliAnalysisTaskSESelectHF.cxx:97 AliAnalysisTaskSESelectHF.cxx:98 AliAnalysisTaskSESelectHF.cxx:99 AliAnalysisTaskSESelectHF.cxx:100 AliAnalysisTaskSESelectHF.cxx:101 AliAnalysisTaskSESelectHF.cxx:102 AliAnalysisTaskSESelectHF.cxx:103 AliAnalysisTaskSESelectHF.cxx:104 AliAnalysisTaskSESelectHF.cxx:105 AliAnalysisTaskSESelectHF.cxx:106 AliAnalysisTaskSESelectHF.cxx:107 AliAnalysisTaskSESelectHF.cxx:108 AliAnalysisTaskSESelectHF.cxx:109 AliAnalysisTaskSESelectHF.cxx:110 AliAnalysisTaskSESelectHF.cxx:111 AliAnalysisTaskSESelectHF.cxx:112 AliAnalysisTaskSESelectHF.cxx:113 AliAnalysisTaskSESelectHF.cxx:114 AliAnalysisTaskSESelectHF.cxx:115 AliAnalysisTaskSESelectHF.cxx:116 AliAnalysisTaskSESelectHF.cxx:117 AliAnalysisTaskSESelectHF.cxx:118 AliAnalysisTaskSESelectHF.cxx:119 AliAnalysisTaskSESelectHF.cxx:120 AliAnalysisTaskSESelectHF.cxx:121 AliAnalysisTaskSESelectHF.cxx:122 AliAnalysisTaskSESelectHF.cxx:123 AliAnalysisTaskSESelectHF.cxx:124 AliAnalysisTaskSESelectHF.cxx:125 AliAnalysisTaskSESelectHF.cxx:126 AliAnalysisTaskSESelectHF.cxx:127 AliAnalysisTaskSESelectHF.cxx:128 AliAnalysisTaskSESelectHF.cxx:129 AliAnalysisTaskSESelectHF.cxx:130 AliAnalysisTaskSESelectHF.cxx:131 AliAnalysisTaskSESelectHF.cxx:132 AliAnalysisTaskSESelectHF.cxx:133 AliAnalysisTaskSESelectHF.cxx:134 AliAnalysisTaskSESelectHF.cxx:135 AliAnalysisTaskSESelectHF.cxx:136 AliAnalysisTaskSESelectHF.cxx:137 AliAnalysisTaskSESelectHF.cxx:138 AliAnalysisTaskSESelectHF.cxx:139 AliAnalysisTaskSESelectHF.cxx:140 AliAnalysisTaskSESelectHF.cxx:141 AliAnalysisTaskSESelectHF.cxx:142 AliAnalysisTaskSESelectHF.cxx:143 AliAnalysisTaskSESelectHF.cxx:144 AliAnalysisTaskSESelectHF.cxx:145 AliAnalysisTaskSESelectHF.cxx:146 AliAnalysisTaskSESelectHF.cxx:147 AliAnalysisTaskSESelectHF.cxx:148 AliAnalysisTaskSESelectHF.cxx:149 AliAnalysisTaskSESelectHF.cxx:150 AliAnalysisTaskSESelectHF.cxx:151 AliAnalysisTaskSESelectHF.cxx:152 AliAnalysisTaskSESelectHF.cxx:153 AliAnalysisTaskSESelectHF.cxx:154 AliAnalysisTaskSESelectHF.cxx:155 AliAnalysisTaskSESelectHF.cxx:156 AliAnalysisTaskSESelectHF.cxx:157 AliAnalysisTaskSESelectHF.cxx:158 AliAnalysisTaskSESelectHF.cxx:159 AliAnalysisTaskSESelectHF.cxx:160 AliAnalysisTaskSESelectHF.cxx:161 AliAnalysisTaskSESelectHF.cxx:162 AliAnalysisTaskSESelectHF.cxx:163 AliAnalysisTaskSESelectHF.cxx:164 AliAnalysisTaskSESelectHF.cxx:165 AliAnalysisTaskSESelectHF.cxx:166 AliAnalysisTaskSESelectHF.cxx:167 AliAnalysisTaskSESelectHF.cxx:168 AliAnalysisTaskSESelectHF.cxx:169 AliAnalysisTaskSESelectHF.cxx:170 AliAnalysisTaskSESelectHF.cxx:171 AliAnalysisTaskSESelectHF.cxx:172 AliAnalysisTaskSESelectHF.cxx:173 AliAnalysisTaskSESelectHF.cxx:174 AliAnalysisTaskSESelectHF.cxx:175 AliAnalysisTaskSESelectHF.cxx:176 AliAnalysisTaskSESelectHF.cxx:177 AliAnalysisTaskSESelectHF.cxx:178 AliAnalysisTaskSESelectHF.cxx:179 AliAnalysisTaskSESelectHF.cxx:180 AliAnalysisTaskSESelectHF.cxx:181 AliAnalysisTaskSESelectHF.cxx:182 AliAnalysisTaskSESelectHF.cxx:183 AliAnalysisTaskSESelectHF.cxx:184 AliAnalysisTaskSESelectHF.cxx:185 AliAnalysisTaskSESelectHF.cxx:186 AliAnalysisTaskSESelectHF.cxx:187 AliAnalysisTaskSESelectHF.cxx:188 AliAnalysisTaskSESelectHF.cxx:189 AliAnalysisTaskSESelectHF.cxx:190 AliAnalysisTaskSESelectHF.cxx:191 AliAnalysisTaskSESelectHF.cxx:192 AliAnalysisTaskSESelectHF.cxx:193 AliAnalysisTaskSESelectHF.cxx:194 AliAnalysisTaskSESelectHF.cxx:195 AliAnalysisTaskSESelectHF.cxx:196 AliAnalysisTaskSESelectHF.cxx:197 AliAnalysisTaskSESelectHF.cxx:198 AliAnalysisTaskSESelectHF.cxx:199 AliAnalysisTaskSESelectHF.cxx:200 AliAnalysisTaskSESelectHF.cxx:201 AliAnalysisTaskSESelectHF.cxx:202 AliAnalysisTaskSESelectHF.cxx:203 AliAnalysisTaskSESelectHF.cxx:204 AliAnalysisTaskSESelectHF.cxx:205 AliAnalysisTaskSESelectHF.cxx:206 AliAnalysisTaskSESelectHF.cxx:207 AliAnalysisTaskSESelectHF.cxx:208 AliAnalysisTaskSESelectHF.cxx:209 AliAnalysisTaskSESelectHF.cxx:210 AliAnalysisTaskSESelectHF.cxx:211 AliAnalysisTaskSESelectHF.cxx:212 AliAnalysisTaskSESelectHF.cxx:213 AliAnalysisTaskSESelectHF.cxx:214 AliAnalysisTaskSESelectHF.cxx:215 AliAnalysisTaskSESelectHF.cxx:216