]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDComparisonMI.C
Compatibility changes due to recent changes in the underlying classes.
[u/mrichter/AliRoot.git] / STEER / AliESDComparisonMI.C
index 74dc37d633d2aea6a59cfe8e957f54d4f268cfa5..c17d21d87735bd3d71cf6e8515134ebee7a287a3 100644 (file)
 //
 //
 
-/*
+/* 
 marian.ivanov@cern.ch
 Usage:
-
 
 .L $ALICE_ROOT/STEER/AliGenInfo.C+
 //be sure you created genTracks file before
 .L $ALICE_ROOT/STEER/AliESDComparisonMI.C+
-
 //
-ESDCmpTr *t2 = new ESDCmpTr("genTracks.root","cmpESDTracks.root","galice.root",-1,1,0);
+ESDCmpTr *t2 = new ESDCmpTr("genTracks.root","cmpESDTracks.root","galice.root",-1,0,0);
 t2->Exec();
 
 //
@@ -45,9 +44,6 @@ TCut citsin("citsin","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)<5");
 TCut csec("csec","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)>0.5");
 
 
-
-
-
 TCut crec("crec","fReconstructed==1");
 TCut cteta1("cteta1","abs(MC.fParticle.Theta()/3.1415-0.5)<0.25");
 TCut cteta05("cteta05","abs(MC.fParticle.Theta()/3.1415-0.5)<0.1");
@@ -115,12 +111,13 @@ comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx1","fTRDOn&&abs(fPd
 comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx2","fTRDOn&&abs(fPdg)==321&&fTRDtrack.fN>40&&fStatus[2]>1") 
 comp.fTree->Draw("fESDTrack.fTRDsignal:MC.fParticle.P()>>dEdx3","fTRDOn&&abs(fPdg)==11&&fTRDtrack.fN>40&&fStatus[2]>1") 
 
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx0","fTRDOn&&abs(fPdg)==211&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)") 
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx1","fTRDOn&&abs(fPdg)==2212&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)") 
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx2","fTRDOn&&abs(fPdg)==321&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)") 
-comp.fTree->Draw("fESDTrack.fTPCsignal:MC.fParticle.P()>>dEdx3","fTRDOn&&abs(fPdg)==11&&fTRDtrack.fN>40&&abs(fESDTrack.fTRDLabel)==abs(fESDTrack.fTPCLabel)") 
-
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx0","fTPCOn&&abs(fPdg)==211&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1); 
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx1","fTPCOn&&abs(fPdg)==2212&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1); 
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx2","fTPCOn&&abs(fPdg)==321&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1); 
+comp.fTree->Draw("fESDTrack.fTPCsignal:fTPCinP0[4]>>dEdx3","fTPCOn&&abs(fPdg)==11&&fESDTrack.fTPCncls>180&&fESDTrack.fTPCsignal>10"+cteta1); 
 
+hdedx3->SetXTitle("P(GeV/c)");
+hdedx3->SetYTitle("dEdx(unit)");
 hdedx3->Draw(); hdedx1->Draw("same"); hdedx2->Draw("same"); hdedx0->Draw("same");
 
 comp.DrawXY("fITSinP0[3]","fITSPools[4]","fReconstructed==1&&fPdg==-211&&fITSOn"+cprim,"1",4,0.2,1.0,-8,8)
@@ -181,7 +178,7 @@ TProfile prof("prof","prof",10,0.5,5);
 #include "AliESDVertex.h"
 #include "AliExternalTrackParam.h"
 #include "AliESDkink.h"
-#include "AliESDV0MI.h"
+#include "AliESDv0.h"
 
 #endif
 #include "AliGenInfo.h"
@@ -190,6 +187,37 @@ TProfile prof("prof","prof",10,0.5,5);
 
 
 
+
+void MakeAliases(AliESDComparisonDraw&comp)
+{
+  //
+  // aliases definition
+  //
+  comp.fTree->SetAlias("radius","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)");
+  comp.fTree->SetAlias("direction","MC.fParticle.fVx*MC.fParticle.fPx+MC.fParticle.fVy*MC.fParticle.fPy");
+  comp.fTree->SetAlias("decaydir","MC.fTRdecay.fX*MC.fTRdecay.fPx+MC.fTRdecay.fY*MC.fTRdecay.fPy");
+  comp.fTree->SetAlias("theta","MC.fTrackRef.Theta()");
+  comp.fTree->SetAlias("primdca","sqrt(RC.fITStrack.fD[0]**2+RC.fITStrack.fD[1]**2)");
+  comp.fTree->SetAlias("trdchi2","fTRDtrack.fChi2/fTRDtrack.fN");
+  comp.fTree->SetAlias("trdchi2","fTRDtrack.fChi2/fTRDtrack.fN");
+  
+  comp.fTree->SetAlias("trddedx","(RC.fESDTrack.fTRDsignals[0]+RC.fESDTrack.fTRDsignals[1]+RC.fESDTrack.fTRDsignals[2]+RC.fESDTrack.fTRDsignals[3]+RC.fESDTrack.fTRDsignals[4]+RC.fESDTrack.fTRDsignals[5])/6.");
+  
+  comp.fTree->SetAlias("dtofmc2","fESDTrack.fTrackTime[2]-(10^12*MC.fTOFReferences[0].fTime)");
+  comp.fTree->SetAlias("dtofrc2","(fESDTrack.fTrackTime[2]-fESDTrack.fTOFsignal)");
+
+  comp.fTree->SetAlias("psum","fESDTrack.fTOFr[4]+fESDTrack.fTOFr[3]+fESDTrack.fTOFr[2]+fESDTrack.fTOFr[1]+fESDTrack.fTOFr[0]");
+  comp.fTree->SetAlias("P0","fESDTrack.fTOFr[0]/psum");
+  comp.fTree->SetAlias("P1","fESDTrack.fTOFr[1]/psum");
+  comp.fTree->SetAlias("P2","fESDTrack.fTOFr[2]/psum");
+  comp.fTree->SetAlias("P3","fESDTrack.fTOFr[3]/psum");
+  comp.fTree->SetAlias("P4","fESDTrack.fTOFr[4]/psum");
+  comp.fTree->SetAlias("MaxP","max(max(max(P0,P1),max(P2,P3)),P4)");
+}
+
+
+
+
 void  AliESDRecInfo::UpdatePoints(AliESDtrack*track)
 {
   //
@@ -279,7 +307,7 @@ void  AliESDRecInfo::UpdatePoints(AliESDtrack*track)
 
 //
 //
-void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed)
+void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconstructed, AliESD *event)
 {
   //
   //
@@ -350,7 +378,8 @@ void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconst
       fStatus[1] =2;
     }
     else{
-      fStatus[1]=1;
+      if ((fESDTrack.GetStatus()&AliESDtrack::kTPCin)>0)
+       fStatus[1]=1;
     }      
   }
   //
@@ -410,7 +439,7 @@ void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconst
   }
 
 
-  if (fStatus[1]>0 &&info->fNTPCRef>0){
+  if (fStatus[1]>0 &&info->fNTPCRef>0&&TMath::Abs(fTPCinP0[3])>0.0001){
     //TPC
     fESDTrack.GetInnerXYZ(fTPCinR1);
     fTPCinR1[3] = TMath::Sqrt(fTPCinR1[0]*fTPCinR1[0]+fTPCinR1[1]*fTPCinR1[1]);
@@ -420,13 +449,13 @@ void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconst
     fTPCinP1[4] = TMath::Sqrt(fTPCinP1[3]*fTPCinP1[3]+fTPCinP1[2]*fTPCinP1[2]);
     //
     //
-    if (fTPCinP1[3]>0.0000001){
+    if (fTPCinP1[3]>0.000000000000001){
       fTPCAngle1[0] = TMath::ATan2(fTPCinP1[1],fTPCinP1[0]);
       fTPCAngle1[1] = TMath::ATan(fTPCinP1[2]/fTPCinP1[3]);  
     }    
-    Double_t cov[15], param[5],x;
+    Double_t cov[15], param[5],x, alpha;
     fESDTrack.GetInnerExternalCovariance(cov);
-    fESDTrack.GetInnerExternalParameters(x,param);
+    fESDTrack.GetInnerExternalParameters(alpha, x,param);
     if (x<50) return ;
     //
     fTPCDelta[0] = (fTPCinR0[4]-fTPCinR1[4])*fTPCinR1[3];  //delta rfi
@@ -440,7 +469,7 @@ void AliESDRecInfo::Update(AliMCInfo* info,AliTPCParam * /*par*/, Bool_t reconst
     fTPCDelta[4] = (fTPCinP0[3]-fTPCinP1[3]);
     Double_t sign = (param[4]>0)? 1.:-1; 
     fSign =sign;
-    fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(cov[14]);    
+    fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
   }
   if (fITSOn){
     // ITS 
@@ -606,14 +635,12 @@ void  AliESDRecV0Info::Update(Float_t vertex[3])
     if (fDist2<10.5){
       Double_t x,alpha,param[5],cov[15];
       //
-      fT1.fESDTrack.GetInnerExternalParameters(x,param);
+      fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
       fT1.fESDTrack.GetInnerExternalCovariance(cov);
-      alpha = fT1.fESDTrack.GetInnerAlpha();
       AliExternalTrackParam paramm(x,alpha,param,cov);
       //
-      fT2.fESDTrack.GetInnerExternalParameters(x,param);
+      fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
       fT2.fESDTrack.GetInnerExternalCovariance(cov);
-      alpha = fT2.fESDTrack.GetInnerAlpha();
       AliExternalTrackParam paramd(x,alpha,param,cov);
     }    
     //            
@@ -739,14 +766,12 @@ void  AliESDRecKinkInfo::Update()
     if (fDist2<10.5){
       Double_t x,alpha,param[5],cov[15];
       //
-      fT1.fESDTrack.GetInnerExternalParameters(x,param);
+      fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
       fT1.fESDTrack.GetInnerExternalCovariance(cov);
-      alpha = fT1.fESDTrack.GetInnerAlpha();
       AliExternalTrackParam paramm(x,alpha,param,cov);
       //
-      fT2.fESDTrack.GetInnerExternalParameters(x,param);
+      fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
       fT2.fESDTrack.GetInnerExternalCovariance(cov);
-      alpha = fT2.fESDTrack.GetInnerAlpha();
       AliExternalTrackParam paramd(x,alpha,param,cov);
       /*
       AliESDkink kink;
@@ -814,7 +839,7 @@ ESDCmpTr::ESDCmpTr(const char* fnGenTracks,
     cerr<<"restricted number of events availaible"<<endl;
   }
   AliMagF * magf = gAlice->Field();
-  AliTracker::SetFieldMap(magf);
+  AliTracker::SetFieldMap(magf,0);
 
 }
 
@@ -930,6 +955,7 @@ Int_t ESDCmpTr::Exec()
    
   fNextTreeGenEntryToRead = 0;
   fNextKinkToRead = 0;
+  fNextV0ToRead   =0;
   cerr<<"fFirstEventNr, fNEvents: "<<fFirstEventNr<<" "<<fNEvents<<endl;
   for (Int_t eventNr = fFirstEventNr; eventNr < fFirstEventNr+fNEvents;
        eventNr++) {
@@ -1055,8 +1081,8 @@ void ESDCmpTr::CreateTreeCmp()
   fRecInfo = new AliESDRecInfo;
   AliESDtrack * esdTrack = new AliESDtrack;
   //  AliITStrackMI * itsTrack = new AliITStrackMI;  
-  fTreeCmp->Branch("MC","AliMCInfo",&fMCInfo);
-  fTreeCmp->Branch("RC","AliESDRecInfo",&fRecInfo);
+  fTreeCmp->Branch("MC","AliMCInfo",&fMCInfo,256000);
+  fTreeCmp->Branch("RC","AliESDRecInfo",&fRecInfo,256000);
   //  fTreeCmp->Branch("fESDTrack","AliESDtrack",&esdTrack);
   //  fTreeCmp->Branch("ITS","AliITStrackMI",&itsTrack);
   delete esdTrack;
@@ -1065,15 +1091,15 @@ void ESDCmpTr::CreateTreeCmp()
   fTreeCmpKinks    = new TTree("ESDcmpKinks","ESDcmpKinks"); 
   fGenKinkInfo     = new AliGenKinkInfo;
   fRecKinkInfo     = new AliESDRecKinkInfo;
-  fTreeCmpKinks->Branch("MC.","AliGenKinkInfo",&fGenKinkInfo);
-  fTreeCmpKinks->Branch("RC.","AliESDRecKinkInfo",&fRecKinkInfo);
+  fTreeCmpKinks->Branch("MC.","AliGenKinkInfo",&fGenKinkInfo,256000);
+  fTreeCmpKinks->Branch("RC.","AliESDRecKinkInfo",&fRecKinkInfo,256000);
   //
   //
   fTreeCmpV0       = new TTree("ESDcmpV0","ESDcmpV0"); 
   fGenV0Info     = new AliGenV0Info;
   fRecV0Info     = new AliESDRecV0Info;
-  fTreeCmpV0->Branch("MC.","AliGenV0Info",   &fGenV0Info);
-  fTreeCmpV0->Branch("RC.","AliESDRecV0Info",&fRecV0Info);
+  fTreeCmpV0->Branch("MC.","AliGenV0Info",   &fGenV0Info,256000);
+  fTreeCmpV0->Branch("RC.","AliESDRecV0Info",&fRecV0Info,256000);
   //
   fTreeCmp->AutoSave(); 
   fTreeCmpKinks->AutoSave(); 
@@ -1102,7 +1128,7 @@ TVector3 ESDCmpTr::TR2Local(AliTrackReference *trackRef,
   Float_t x[3] = { trackRef->X(),trackRef->Y(),trackRef->Z()};
   Int_t index[4];
   paramTPC->Transform0to1(x,index);
-  paramTPC->Transform1to2(x,index);
+  paramTPC->Transform1to2Ideal(x,index);
   return TVector3(x);
 }
 ////////////////////////////////////////////////////////////////////////
@@ -1118,7 +1144,7 @@ Int_t ESDCmpTr::TreeTLoop()
   //  
   Int_t nEntries = (Int_t)fEvent->GetNumberOfTracks();  
   Int_t nKinks = (Int_t) fEvent->GetNumberOfKinks();
-  Int_t nV0MIs = (Int_t) fEvent->GetNumberOfV0MIs();
+  Int_t nV0MIs = (Int_t) fEvent->GetNumberOfV0s();
   fSignedKinks = new Short_t[nKinks];
   fSignedV0    = new Short_t[nV0MIs];
   //
@@ -1130,7 +1156,7 @@ Int_t ESDCmpTr::TreeTLoop()
   }
   //
   for (Int_t i=0; i<nV0MIs;i++){
-    AliESDV0MI * v0MI =fEvent->GetV0MI(i);
+    AliESDv0 * v0MI =fEvent->GetV0(i);
     fSignedV0[i]=0;
     if (v0MI->fStatus<0) continue;
   }
@@ -1178,9 +1204,9 @@ Int_t ESDCmpTr::TreeTLoop()
   }  
   // --sort reconstructed V0
   //
-  AliESDV0MI * v0MI=0;
+  AliESDv0 * v0MI=0;
   for (Int_t iEntry=0; iEntry<nV0MIs;iEntry++){
-    v0MI = fEvent->GetV0MI(iEntry);
+    v0MI = fEvent->GetV0(iEntry);
     if (!v0MI) continue;
     //
     //    Int_t label0 = TMath::Abs(v0MI->fLab[0]);
@@ -1225,6 +1251,7 @@ Int_t ESDCmpTr::TreeGenLoop(Int_t eventNr)
   TBranch * branch = fTreeCmp->GetBranch("RC");
   branch->SetAddress(&fRecInfo); // set all pointers
   fRecArray = new TObjArray(fNParticles);
+  AliESDtrack dummytrack;  //
 
   while (entry < nParticlesTR) {
     fTreeGenTracks->GetEntry(entry);
@@ -1295,9 +1322,17 @@ Int_t ESDCmpTr::TreeGenLoop(Int_t eventNr)
        }
       }        
       //
-      fRecInfo->fESDTrack =*track; 
+      if (track) {
+       new (&(fRecInfo->fESDTrack)) AliESDtrack(*track);
+      }else{
+       fRecInfo->fESDTrack = dummytrack;
+      }
+      
       if (track->GetITStrack())
        fRecInfo->fITStrack = *((AliITStrackMI*)track->GetITStrack());
+      else{
+       fRecInfo->fITStrack = *track;
+      }
       if (track->GetTRDtrack()){
        fRecInfo->fTRDtrack = *((AliTRDtrack*)track->GetTRDtrack());
       }
@@ -1308,10 +1343,11 @@ Int_t ESDCmpTr::TreeGenLoop(Int_t eventNr)
       fRecInfo->fFake     = fFakeRecTracks[fMCInfo->fLabel];
       fRecInfo->fMultiple = fMultiRecTracks[fMCInfo->fLabel];
       //
-      fRecInfo->Update(fMCInfo,fParamTPC,kTRUE);          
+      fRecInfo->Update(fMCInfo,fParamTPC,kTRUE, fEvent);          
     }
     else{
-      fRecInfo->Update(fMCInfo,fParamTPC,kFALSE);
+      fRecInfo->fESDTrack = dummytrack;
+      fRecInfo->Update(fMCInfo,fParamTPC,kFALSE, fEvent);
     }
     fRecArray->AddAt(new AliESDRecInfo(*fRecInfo),fMCInfo->fLabel);
     fTreeCmp->Fill();
@@ -1538,41 +1574,41 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
        //
        // TPC V0 Info
        Double_t x,alpha, param[5],cov[15];
-       fRecV0Info->fT1.fESDTrack.GetInnerExternalParameters(x,param);
-       fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
-       alpha = fRecV0Info->fT1.fESDTrack.GetInnerAlpha();
-       AliExternalTrackParam paramP(x,alpha,param,cov);
-       //
-       fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(x,param);
-       fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
-       alpha = fRecV0Info->fT2.fESDTrack.GetInnerAlpha();
-       AliExternalTrackParam paramM(x,alpha,param,cov);
-       //
-       fRecV0Info->fV0tpc.SetM(paramM);
-       fRecV0Info->fV0tpc.SetP(paramP);
-       Double_t pid1[5],pid2[5];
-       fRecV0Info->fT1.fESDTrack.GetESDpid(pid1);
-       fRecV0Info->fT1.fESDTrack.GetESDpid(pid2);
-       //
-       fRecV0Info->fV0tpc.UpdatePID(pid1,pid2);
-       fRecV0Info->fV0tpc.Update(vertex);
-       //
-       //
-       fRecV0Info->fT1.fESDTrack.GetExternalParameters(x,param);
-       fRecV0Info->fT1.fESDTrack.GetExternalCovariance(cov);
-       alpha = fRecV0Info->fT1.fESDTrack.GetAlpha();
-       new (&paramP) AliExternalTrackParam(x,alpha,param,cov);
-       //
-       fRecV0Info->fT2.fESDTrack.GetExternalParameters(x,param);
-       fRecV0Info->fT2.fESDTrack.GetExternalCovariance(cov);
-       alpha = fRecV0Info->fT2.fESDTrack.GetAlpha();
-       new (&paramM) AliExternalTrackParam(x,alpha,param,cov);
-       //
-       fRecV0Info->fV0its.SetM(paramM);
-       fRecV0Info->fV0its.SetP(paramP);
-       fRecV0Info->fV0its.UpdatePID(pid1,pid2);
-       fRecV0Info->fV0its.Update(vertex);
-
+       if ( fRecV0Info->fT1.fESDTrack.GetInnerParam() && fRecV0Info->fT2.fESDTrack.GetInnerParam()){
+         fRecV0Info->fT1.fESDTrack.GetInnerExternalParameters(alpha,x,param);
+         fRecV0Info->fT1.fESDTrack.GetInnerExternalCovariance(cov);
+         AliExternalTrackParam paramP(x,alpha,param,cov);
+         //
+         fRecV0Info->fT2.fESDTrack.GetInnerExternalParameters(alpha,x,param);
+         fRecV0Info->fT2.fESDTrack.GetInnerExternalCovariance(cov);
+         AliExternalTrackParam paramM(x,alpha,param,cov);
+         //
+         fRecV0Info->fV0tpc.SetM(paramM);
+         fRecV0Info->fV0tpc.SetP(paramP);
+         Double_t pid1[5],pid2[5];
+         fRecV0Info->fT1.fESDTrack.GetESDpid(pid1);
+         fRecV0Info->fT1.fESDTrack.GetESDpid(pid2);
+         //
+         fRecV0Info->fV0tpc.UpdatePID(pid1,pid2);
+         fRecV0Info->fV0tpc.Update(vertex);
+       
+         //
+         //
+         fRecV0Info->fT1.fESDTrack.GetExternalParameters(x,param);
+         fRecV0Info->fT1.fESDTrack.GetExternalCovariance(cov);
+         alpha = fRecV0Info->fT1.fESDTrack.GetAlpha();
+         new (&paramP) AliExternalTrackParam(x,alpha,param,cov);
+         //
+         fRecV0Info->fT2.fESDTrack.GetExternalParameters(x,param);
+         fRecV0Info->fT2.fESDTrack.GetExternalCovariance(cov);
+         alpha = fRecV0Info->fT2.fESDTrack.GetAlpha();
+         new (&paramM) AliExternalTrackParam(x,alpha,param,cov);
+         //
+         fRecV0Info->fV0its.SetM(paramM);
+         fRecV0Info->fV0its.SetP(paramP);
+         fRecV0Info->fV0its.UpdatePID(pid1,pid2);
+         fRecV0Info->fV0its.Update(vertex);
+       }
       }
       if (TMath::Abs(fGenV0Info->fMCm.fPdg)==11 &&TMath::Abs(fGenV0Info->fMCd.fPdg)==11){
        if (fRecV0Info->fDist2>10){
@@ -1588,7 +1624,7 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
  
     Int_t label =  TMath::Min(fGenV0Info->fMCm.fLabel,fGenV0Info->fMCd.fLabel);
     Int_t label2 = TMath::Max(fGenV0Info->fMCm.fLabel,fGenV0Info->fMCd.fLabel);    
-    AliESDV0MI *v0MI=0;
+    AliESDv0 *v0MI=0;
     fRecV0Info->fRecStatus   =0;
     fRecV0Info->fMultiple    = fMultiRecV0[label];
     fRecV0Info->fV0Multiple=0;
@@ -1598,7 +1634,8 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
       //      for (Int_t j=0;j<TMath::Min(fMultiRecV0s[label],100);j++){
       for (Int_t j=TMath::Min(fMultiRecV0[label],Short_t(20))-1;j>=0;j--){
        Int_t index = fIndexRecV0[label*20+j];
-       AliESDV0MI *v0MI2  = fEvent->GetV0MI(index);
+       if (index<0) continue;
+       AliESDv0 *v0MI2  = fEvent->GetV0(index);
        if (TMath::Abs(v0MI2->fLab[0])==label &&TMath::Abs(v0MI2->fLab[1])==label2) {
          v0MI =v0MI2;
          fRecV0Info->fV0Multiple++;
@@ -1621,10 +1658,10 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
   //
   // write fake v0s
 
-  Int_t nV0MIs = fEvent->GetNumberOfV0MIs();
+  Int_t nV0MIs = fEvent->GetNumberOfV0s();
   for (Int_t i=0;i<nV0MIs;i++){
     if (fSignedV0[i]==0){
-      AliESDV0MI *v0MI  = fEvent->GetV0MI(i);
+      AliESDv0 *v0MI  = fEvent->GetV0(i);
       if (!v0MI) continue;
       //
       fRecV0Info->fV0rec = *v0MI;
@@ -1646,7 +1683,6 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
 
 
   fTreeCmpV0->AutoSave();
-  fRecArray->Delete();
   printf("Time spended in BuilV0Info Loop\n");
   timer.Print();
   if (fDebug > 2) cerr<<"end of BuildV0Info Loop"<<endl;