//----------------------------------------------------------------------------
AliAnalysisVertexingHF::AliAnalysisVertexingHF():
fInputAOD(kFALSE),
+fAODMapSize(0),
fAODMap(0),
fBzkG(0.),
fSecVtxWithKF(kFALSE),
AliAnalysisVertexingHF::AliAnalysisVertexingHF(const AliAnalysisVertexingHF &source) :
TNamed(source),
fInputAOD(source.fInputAOD),
+fAODMapSize(source.fAODMapSize),
fAODMap(source.fAODMap),
fBzkG(source.fBzkG),
fSecVtxWithKF(source.fSecVtxWithKF),
//
if(&source == this) return *this;
fInputAOD = source.fInputAOD;
+ fAODMapSize = source.fAODMapSize;
fBzkG = source.fBzkG;
fSecVtxWithKF = source.fSecVtxWithKF;
fRecoPrimVtxSkippingTrks = source.fRecoPrimVtxSkippingTrks;
if(fV1) { delete fV1; fV1=0; }
if(fTrackFilter) { delete fTrackFilter; fTrackFilter=0; }
if(fTrackFilterSoftPi) { delete fTrackFilterSoftPi; fTrackFilterSoftPi=0; }
+ if(fAODMap) { delete fAODMap; fAODMap=0; }
}
//----------------------------------------------------------------------------
void AliAnalysisVertexingHF::FindCandidates(AliVEvent *event,
TClonesArray *aodCharm3ProngTClArr,
TClonesArray *aodCharm4ProngTClArr,
TClonesArray *aodDstarTClArr,
- TClonesArray *aodLikeSignTClArr)
+ TClonesArray *aodLikeSign2ProngTClArr,
+ TClonesArray *aodLikeSign3ProngTClArr)
{
// Find heavy-flavour vertex candidates
// Input: ESD or AOD
TString evtype = event->IsA()->GetName();
fInputAOD = ((evtype=="AliAODEvent") ? kTRUE : kFALSE);
+ if(fInputAOD) {
+ AliDebug(2,"Creating HF candidates from AOD");
+ } else {
+ AliDebug(2,"Creating HF candidates from ESD");
+ }
+
if(!aodVerticesHFTClArr) {
printf("ERROR: no aodVerticesHFTClArr");
return;
printf("ERROR: no aodDstarTClArr");
return;
}
- if(fLikeSign && !aodLikeSignTClArr) {
- printf("ERROR: no aodLikeSignTClArr");
+ if(fLikeSign && !aodLikeSign2ProngTClArr) {
+ printf("ERROR: no aodLikeSign2ProngTClArr");
+ return;
+ }
+ if(fLikeSign && f3Prong && !aodLikeSign3ProngTClArr) {
+ printf("ERROR: no aodLikeSign2ProngTClArr");
return;
}
// delete candidates from previous event and create references
- Int_t iVerticesHF=0,iD0toKpi=0,iJPSItoEle=0,i3Prong=0,i4Prong=0,iDstar=0,iLikeSign=0;
+ Int_t iVerticesHF=0,iD0toKpi=0,iJPSItoEle=0,i3Prong=0,i4Prong=0,iDstar=0,iLikeSign2Prong=0,iLikeSign3Prong=0;
aodVerticesHFTClArr->Delete();
iVerticesHF = aodVerticesHFTClArr->GetEntriesFast();
TClonesArray &verticesHFRef = *aodVerticesHFTClArr;
aodDstarTClArr->Delete();
iDstar = aodDstarTClArr->GetEntriesFast();
}
- if(fLikeSign) {
- aodLikeSignTClArr->Delete();
- iLikeSign = aodLikeSignTClArr->GetEntriesFast();
+ if(fLikeSign) {
+ aodLikeSign2ProngTClArr->Delete();
+ iLikeSign2Prong = aodLikeSign2ProngTClArr->GetEntriesFast();
+ }
+ if(fLikeSign && f3Prong) {
+ aodLikeSign3ProngTClArr->Delete();
+ iLikeSign3Prong = aodLikeSign3ProngTClArr->GetEntriesFast();
}
- TClonesArray &aodD0toKpiRef = *aodD0toKpiTClArr;
- TClonesArray &aodJPSItoEleRef = *aodJPSItoEleTClArr;
- TClonesArray &aodCharm3ProngRef = *aodCharm3ProngTClArr;
- TClonesArray &aodCharm4ProngRef = *aodCharm4ProngTClArr;
- TClonesArray &aodDstarRef = *aodDstarTClArr;
- TClonesArray &aodLikeSignRef = *aodLikeSignTClArr;
+
+ TClonesArray &aodD0toKpiRef = *aodD0toKpiTClArr;
+ TClonesArray &aodJPSItoEleRef = *aodJPSItoEleTClArr;
+ TClonesArray &aodCharm3ProngRef = *aodCharm3ProngTClArr;
+ TClonesArray &aodCharm4ProngRef = *aodCharm4ProngTClArr;
+ TClonesArray &aodDstarRef = *aodDstarTClArr;
+ TClonesArray &aodLikeSign2ProngRef = *aodLikeSign2ProngTClArr;
+ TClonesArray &aodLikeSign3ProngRef = *aodLikeSign3ProngTClArr;
AliAODRecoDecayHF2Prong *io2Prong = 0;
return;
}
TString primTitle = primary->GetTitle();
- if(!primTitle.Contains("VertexerTracks")) {
+ if(!primTitle.Contains("VertexerTracks") ||
+ primary->GetNContributors()<=0) {
AliDebug(1," No primary vertex from tracks");
return;
}
TObjArray *fourTrackArray = new TObjArray(4);
Double_t dispersion;
- Bool_t isLikeSignPair=kFALSE;
+ Bool_t isLikeSign2Prong=kFALSE,isLikeSign3Prong=kFALSE;
AliAODRecoDecayHF *rd = 0;
AliAODRecoCascadeHF *rc = 0;
if(!TESTBIT(seleFlags[iTrkN1],kBitDispl)) continue;
if(postrack1->Charge()==negtrack1->Charge()) { // like-sign
- isLikeSignPair=kTRUE;
+ isLikeSign2Prong=kTRUE;
if(!fLikeSign) continue;
if(iTrkN1<iTrkP1) continue; // this is needed to avoid double-counting of like-sign
} else { // unlike-sign
- isLikeSignPair=kFALSE;
+ isLikeSign2Prong=kFALSE;
if(postrack1->Charge()<0 || negtrack1->Charge()>0) continue; // this is needed to avoid double-counting of unlike-sign
}
// back to primary vertex
postrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
negtrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
+ //printf("********** %d %d\n",postrack1->GetID(),negtrack1->GetID());
// DCA between the two tracks
dcap1n1 = postrack1->GetDCA(negtrack1,fBzkG,xdummy,ydummy);
// 2 prong candidate
if(fD0toKpi || fJPSItoEle || fDstar || fLikeSign) {
-
+
io2Prong = Make2Prong(twoTrackArray1,event,vertexp1n1,dcap1n1,okD0,okJPSI,okD0fromDstar);
-
- if((fD0toKpi && okD0) || (fJPSItoEle && okJPSI) || (isLikeSignPair && (okD0 || okJPSI))) {
+
+ if((fD0toKpi && okD0) || (fJPSItoEle && okJPSI) || (isLikeSign2Prong && (okD0 || okJPSI))) {
// add the vertex and the decay to the AOD
AliAODVertex *v2Prong = new(verticesHFRef[iVerticesHF++])AliAODVertex(*vertexp1n1);
if(fInputAOD) AddDaughterRefs(v2Prong,event,twoTrackArray1);
- if(!isLikeSignPair) {
+ if(!isLikeSign2Prong) {
if(okD0) {
rd = new(aodD0toKpiRef[iD0toKpi++])AliAODRecoDecayHF2Prong(*io2Prong);
rd->SetSecondaryVtx(v2Prong);
rd->SetSecondaryVtx(v2Prong);
if(!okD0) v2Prong->SetParent(rd); // it cannot have two mothers ...
}
- } else { // isLikeSignPair
- rd = new(aodLikeSignRef[iLikeSign++])AliAODRecoDecayHF2Prong(*io2Prong);
+ } else { // isLikeSign2Prong
+ rd = new(aodLikeSign2ProngRef[iLikeSign2Prong++])AliAODRecoDecayHF2Prong(*io2Prong);
rd->SetSecondaryVtx(v2Prong);
v2Prong->SetParent(rd);
}
}
// D* candidates
- if(fDstar && okD0fromDstar && !isLikeSignPair) {
+ if(fDstar && okD0fromDstar && !isLikeSign2Prong) {
// write references in io2Prong
if(fInputAOD) {
AddDaughterRefs(vertexp1n1,event,twoTrackArray1);
}
twoTrackArrayCasc->Clear();
trackPi=0;
- ioCascade=NULL;
- delete vertexCasc;
+ if(ioCascade) {delete ioCascade; ioCascade=NULL;}
+ delete vertexCasc; vertexCasc=NULL;
} // end loop on soft pi tracks
if(trackD0) {delete trackD0; trackD0=NULL;}
}
-
- io2Prong=NULL;
+ if(io2Prong) {delete io2Prong; io2Prong=NULL;}
}
twoTrackArray1->Clear();
- if((!f3Prong && !f4Prong) || isLikeSignPair) {
+ if( (!f3Prong && !f4Prong) ||
+ (isLikeSign2Prong && !f3Prong) ) {
negtrack1=0;
delete vertexp1n1;
continue;
if(!TESTBIT(seleFlags[iTrkP2],kBitDispl)) continue;
+ if(isLikeSign2Prong) { // like-sign pair -> have to build only like-sign triplet
+ if(postrack1->Charge()>0) { // ok: like-sign triplet (+++)
+ isLikeSign3Prong=kTRUE;
+ } else { // not ok
+ continue;
+ }
+ } else { // normal triplet (+-+)
+ isLikeSign3Prong=kFALSE;
+ }
+
// back to primary vertex
postrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
postrack2->PropagateToDCA(fV1,fBzkG,kVeryBig);
if(!vertexp2n1) {
twoTrackArray2->Clear();
postrack2=0;
- continue;
+ continue;
}
// 3 prong candidates
if(f3Prong) {
-
- threeTrackArray->AddAt(postrack1,0);
- threeTrackArray->AddAt(negtrack1,1);
- threeTrackArray->AddAt(postrack2,2);
+ if(postrack2->Charge()>0) {
+ threeTrackArray->AddAt(postrack1,0);
+ threeTrackArray->AddAt(negtrack1,1);
+ threeTrackArray->AddAt(postrack2,2);
+ } else {
+ threeTrackArray->AddAt(negtrack1,0);
+ threeTrackArray->AddAt(postrack1,1);
+ threeTrackArray->AddAt(postrack2,2);
+ }
AliAODVertex* secVert3PrAOD = ReconstructSecondaryVertex(threeTrackArray,dispersion);
io3Prong = Make3Prong(threeTrackArray,event,secVert3PrAOD,dispersion,vertexp1n1,vertexp2n1,dcap1n1,dcap2n1,dcap1p2,ok3Prong);
if(ok3Prong) {
AliAODVertex *v3Prong = new(verticesHFRef[iVerticesHF++])AliAODVertex(*secVert3PrAOD);
if(fInputAOD) AddDaughterRefs(v3Prong,event,threeTrackArray);
- rd = new(aodCharm3ProngRef[i3Prong++])AliAODRecoDecayHF3Prong(*io3Prong);
- rd->SetSecondaryVtx(v3Prong);
- v3Prong->SetParent(rd);
+ if(!isLikeSign3Prong) {
+ rd = new(aodCharm3ProngRef[i3Prong++])AliAODRecoDecayHF3Prong(*io3Prong);
+ rd->SetSecondaryVtx(v3Prong);
+ v3Prong->SetParent(rd);
+ } else { // isLikeSign3Prong
+ rd = new(aodLikeSign3ProngRef[iLikeSign3Prong++])AliAODRecoDecayHF3Prong(*io3Prong);
+ rd->SetSecondaryVtx(v3Prong);
+ v3Prong->SetParent(rd);
+ }
}
- if(io3Prong) io3Prong=NULL;
+ if(io3Prong) {delete io3Prong; io3Prong=NULL;}
+ if(secVert3PrAOD) {delete secVert3PrAOD; secVert3PrAOD=NULL;}
}
// 4 prong candidates
- if(f4Prong) {
+ if(f4Prong
+ // don't make 4 prong with like-sign pairs and triplets
+ && !isLikeSign2Prong && !isLikeSign3Prong
+ // track-to-track dca cuts already now
+ && dcap1n1 < fD0to4ProngsCuts[1]
+ && dcap2n1 < fD0to4ProngsCuts[1]) {
// back to primary vertex
postrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
negtrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
negtrack2->PropagateToDCA(fV1,fBzkG,kVeryBig);
dcap1n2 = postrack1->GetDCA(negtrack2,fBzkG,xdummy,ydummy);
- if(dcap1n2>dcaMax) { negtrack2=0; continue; }
+ if(dcap1n2 > fD0to4ProngsCuts[1]) { negtrack2=0; continue; }
dcap2n2 = postrack2->GetDCA(negtrack2,fBzkG,xdummy,ydummy);
- if(dcap2n2>dcaMax) { negtrack2=0; continue; }
+ if(dcap2n2 > fD0to4ProngsCuts[1]) { negtrack2=0; continue; }
// Vertexing
fourTrackArray->AddAt(postrack1,0);
v4Prong->SetParent(rd);
}
- if(io4Prong) io4Prong=NULL;
+ if(io4Prong) {delete io4Prong; io4Prong=NULL;}
+ if(secVert4PrAOD) {delete secVert4PrAOD; secVert4PrAOD=NULL;}
fourTrackArray->Clear();
negtrack2 = 0;
twoTrackArray2->Clear();
- // 2nd LOOP ON NEGATIVE TRACKS (for 3 prong +--)
+ // 2nd LOOP ON NEGATIVE TRACKS (for 3 prong -+-)
for(iTrkN2=iTrkN1+1; iTrkN2<nSeleTrks; iTrkN2++) {
if(iTrkN2==iTrkP1 || iTrkN2==iTrkP2 || iTrkN2==iTrkN1) continue;
if(!TESTBIT(seleFlags[iTrkN2],kBitDispl)) continue;
+ if(isLikeSign2Prong) { // like-sign pair -> have to build only like-sign triplet
+ if(postrack1->Charge()<0) { // ok: like-sign triplet (---)
+ isLikeSign3Prong=kTRUE;
+ } else { // not ok
+ continue;
+ }
+ } else { // normal triplet (-+-)
+ isLikeSign3Prong=kFALSE;
+ }
+
// back to primary vertex
postrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
negtrack1->PropagateToDCA(fV1,fBzkG,kVeryBig);
if(ok3Prong) {
AliAODVertex *v3Prong = new(verticesHFRef[iVerticesHF++])AliAODVertex(*secVert3PrAOD);
if(fInputAOD) AddDaughterRefs(v3Prong,event,threeTrackArray);
- rd = new(aodCharm3ProngRef[i3Prong++])AliAODRecoDecayHF3Prong(*io3Prong);
- rd->SetSecondaryVtx(v3Prong);
- v3Prong->SetParent(rd);
+ if(!isLikeSign3Prong) {
+ rd = new(aodCharm3ProngRef[i3Prong++])AliAODRecoDecayHF3Prong(*io3Prong);
+ rd->SetSecondaryVtx(v3Prong);
+ v3Prong->SetParent(rd);
+ } else { // isLikeSign3Prong
+ rd = new(aodLikeSign3ProngRef[iLikeSign3Prong++])AliAODRecoDecayHF3Prong(*io3Prong);
+ rd->SetSecondaryVtx(v3Prong);
+ v3Prong->SetParent(rd);
+ }
}
- if(io3Prong) io3Prong=NULL;
+ if(io3Prong) {delete io3Prong; io3Prong=NULL;}
+ if(secVert3PrAOD) {delete secVert3PrAOD; secVert3PrAOD=NULL;}
}
negtrack2 = 0;
delete vertexp1n2;
} // end 2nd loop on negative tracks
+
twoTrackArray2->Clear();
negtrack1 = 0;
(Int_t)aodDstarTClArr->GetEntriesFast()));
}
if(fLikeSign) {
- AliDebug(1,Form(" Like-sign pairs in event = %d;\n",
- (Int_t)aodLikeSignTClArr->GetEntriesFast()));
+ AliDebug(1,Form(" Like-sign 2Prong in event = %d;\n",
+ (Int_t)aodLikeSign2ProngTClArr->GetEntriesFast()));
+ }
+ if(fLikeSign && f3Prong) {
+ AliDebug(1,Form(" Like-sign 3Prong in event = %d;\n",
+ (Int_t)aodLikeSign3ProngTClArr->GetEntriesFast()));
}
delete [] seleFlags; seleFlags=NULL;
if(fInputAOD) {
- seleTrksArray.Delete();
+ seleTrksArray.Delete();
+ if(fAODMap) { delete fAODMap; fAODMap=NULL; }
}
return;
delete tmpCascade; tmpCascade=NULL;
if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
rd2Prong->UnsetOwnPrimaryVtx();
- delete primVertexAOD; primVertexAOD=NULL;
}
+ if(primVertexAOD) {delete primVertexAOD; primVertexAOD=NULL;}
//---
return theCascade;
AliDebug(2," candidate didn't pass mass cut");
return 0x0;
}
-
+
// primary vertex to be used by this candidate
AliAODVertex *primVertexAOD = PrimaryVertex(twoTrackArray,event);
if(!primVertexAOD) return 0x0;
negtrack->PropagateToDCA(primVertexAOD,fBzkG,kVeryBig,d0z0,covd0z0);
d0[1] = d0z0[0];
d0err[1] = TMath::Sqrt(covd0z0[0]);
-
+
// create the object AliAODRecoDecayHF2Prong
AliAODRecoDecayHF2Prong *the2Prong = new AliAODRecoDecayHF2Prong(secVert,px,py,pz,d0,d0err,dca);
the2Prong->SetOwnPrimaryVtx(primVertexAOD);
UShort_t id[2]={(UShort_t)postrack->GetID(),(UShort_t)negtrack->GetID()};
the2Prong->SetProngIDs(2,id);
+ delete primVertexAOD; primVertexAOD=NULL;
-
+
// select D0->Kpi
Int_t checkD0,checkD0bar;
if(fD0toKpi) okD0 = the2Prong->SelectD0(fD0toKpiCuts,checkD0,checkD0bar);
//if(fDebug && fDstar) printf(" %d\n",(Int_t)okD0fromDstar);
// remove the primary vertex (was used only for selection)
- if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) the2Prong->UnsetOwnPrimaryVtx();
-
+ if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
+ the2Prong->UnsetOwnPrimaryVtx();
+ }
+
// get PID info from ESD
Double_t esdpid0[5]={0.,0.,0.,0.,0.};
if(postrack->GetStatus()&AliESDtrack::kESDpid) postrack->GetESDpid(esdpid0);
ok3Prong=kFALSE;
- if(!secVert) return 0x0;
+ if(!secVert || !vertexp1n1 || !vertexp2n1) return 0x0;
Double_t px[3],py[3],pz[3],d0[3],d0err[3];
Double_t momentum[3];
UShort_t id[3]={(UShort_t)postrack1->GetID(),(UShort_t)negtrack->GetID(),(UShort_t)postrack2->GetID()};
the3Prong->SetProngIDs(3,id);
+ delete primVertexAOD; primVertexAOD=NULL;
// select D+->Kpipi, Ds->KKpi, Lc->pKpi
if(f3Prong) {
}
//if(fDebug) printf("ok3Prong: %d\n",(Int_t)ok3Prong);
- if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) the3Prong->UnsetOwnPrimaryVtx();
+ if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
+ the3Prong->UnsetOwnPrimaryVtx();
+ }
// get PID info from ESD
Double_t esdpid0[5]={0.,0.,0.,0.,0.};
// G.E.Bruno, R.Romita
ok4Prong=kFALSE;
- if(!secVert) return 0x0;
+ if(!secVert || !vertexp1n1 || !vertexp1n1p2) return 0x0;
Double_t px[4],py[4],pz[4],d0[4],d0err[4];//d0z[3];
px[3] = momentum[0]; py[3] = momentum[1]; pz[3] = momentum[2];
// invariant mass cut for rho or D0 (try to improve coding here..)
- //Bool_t okMassCut=kFALSE;
- //if(!okMassCut) if(SelectInvMass(2,3,px,py,pz)) okMassCut=kTRUE;
- //if(!okMassCut) {
- // if(fDebug) printf(" candidate didn't pass mass cut\n");
- // return 0x0;
- // }
+ Bool_t okMassCut=kFALSE;
+ if(!okMassCut && fD0to4ProngsCuts[8]==0.){ //no PID, to be implemented with PID
+ if(SelectInvMass(4,4,px,py,pz)) okMassCut=kTRUE;
+ }
+ if(!okMassCut) {
+ //if(fDebug) printf(" candidate didn't pass mass cut\n");
+ //printf(" candidate didn't pass mass cut\n");
+ return 0x0;
+ }
// primary vertex to be used by this candidate
AliAODVertex *primVertexAOD = PrimaryVertex(fourTrackArray,event);
UShort_t id[4]={(UShort_t)postrack1->GetID(),(UShort_t)negtrack1->GetID(),(UShort_t)postrack2->GetID(),(UShort_t)negtrack2->GetID()};
the4Prong->SetProngIDs(4,id);
- // invariant mass cut for rho or D0 (try to improve coding here..)
- Bool_t okMassCut=kFALSE;
- if(!okMassCut && fD0to4ProngsCuts[8]==0.){ //no PID, to be implemented with PID
- if(SelectInvMass(4,4,px,py,pz)) okMassCut=kTRUE;
- }
- if(!okMassCut) {
- //if(fDebug) printf(" candidate didn't pass mass cut\n");
- //printf(" candidate didn't pass mass cut\n");
- return 0x0;
- }
-
+ delete primVertexAOD; primVertexAOD=NULL;
Int_t checkD0,checkD0bar;
ok4Prong=the4Prong->SelectD0(fD0to4ProngsCuts,checkD0,checkD0bar);
- if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) the4Prong->UnsetOwnPrimaryVtx();
+ if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx) {
+ the4Prong->UnsetOwnPrimaryVtx();
+ }
// get PID info from ESD
if(strstr(fV1->GetTitle(),"VertexerTracksWithConstraintOnlyFitter"))
vertexer->SetOnlyFitter();
}
- Int_t skipped[10];
+ Int_t skipped[1000];
Int_t nTrksToSkip=0,id;
AliExternalTrackParam *t = 0;
for(Int_t i=0; i<nTrks; i++) {
if(id<0) continue;
skipped[nTrksToSkip++] = id;
}
+ // TEMPORARY FIX
+ // For AOD, skip also tracks without covariance matrix
+ if(fInputAOD) {
+ Double_t covtest[21];
+ for(Int_t j=0; j<event->GetNumberOfTracks(); j++) {
+ AliVTrack *vtrack = (AliVTrack*)event->GetTrack(j);
+ if(!vtrack->GetCovarianceXYZPxPyPz(covtest)) {
+ id = (Int_t)t->GetID();
+ if(id<0) continue;
+ skipped[nTrksToSkip++] = id;
+ }
+ }
+ }
+ //
vertexer->SetSkipTracks(nTrksToSkip,skipped);
vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event);
Double_t *dummyd0 = new Double_t[nprongs];
for(Int_t ip=0;ip<nprongs;ip++) dummyd0[ip]=0.;
AliAODRecoDecay *rd = new AliAODRecoDecay(0x0,nprongs,dummycharge,px,py,pz,dummyd0);
- delete [] dummyd0;
+ delete [] dummyd0; dummyd0=NULL;
UInt_t pdg2[2],pdg3[3],pdg4[4];
Double_t mPDG,minv;
break;
}
- delete rd;
+ delete rd; rd=NULL;
return retval;
}
const AliVVertex *vprimary = event->GetPrimaryVertex();
if(fV1) { delete fV1; fV1=NULL; }
- if(fAODMap) { delete [] fAODMap; fAODMap=NULL; }
+ if(fAODMap) { delete fAODMap; fAODMap=NULL; }
Int_t nindices=0;
UShort_t *indices = 0;
vprimary->GetCovarianceMatrix(cov);
fV1 = new AliESDVertex(pos,cov,100.,100,vprimary->GetName());
indices = new UShort_t[event->GetNumberOfTracks()];
- fAODMap = new Int_t[100000];
+ fAODMapSize = 100000;
+ fAODMap = new Int_t[fAODMapSize];
}
}
AliESDtrack *esdt = 0;
+
if(!fInputAOD) {
esdt = (AliESDtrack*)track;
} else {