]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDComparisonMI.C
Changed AliRunLoader::GetRunLoader() into AliRunLoader::Instance()
[u/mrichter/AliRoot.git] / STEER / AliESDComparisonMI.C
index ffaa283387827bc9678c42fb12c6968623c0cb68..540c2a8c1f90f3bf86e26376441350143c913ca8 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)
@@ -172,8 +169,7 @@ TProfile prof("prof","prof",10,0.5,5);
 #include "AliTPCParamSR.h"
 #include "AliTracker.h"
 #include "AliComplexCluster.h"
-#include "AliMagF.h"
-#include "AliESD.h"
+#include "AliESDEvent.h"
 #include "AliESDtrack.h"
 #include "AliITStrackMI.h"
 #include "AliTRDtrack.h"
@@ -181,7 +177,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"
@@ -189,18 +185,6 @@ TProfile prof("prof","prof",10,0.5,5);
 
 
 
-TCut cprim("cprim","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)<0.01&&abs(MC.fVDist[2])<0.01");
-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");
-
-TCut cpos1("cpos1","abs(MC.fParticle.fVz/sqrt(MC.fParticle.fVx*MC.fParticle.fVx+MC.fParticle.fVy*MC.fParticle.fVy))<1");
-TCut csens("csens","abs(sqrt(fVDist[0]**2+fVDist[1]**2)-170)<50");
-TCut cmuon("cmuon","abs(MC.fParticle.fPdgCode==-13)");
-TCut cchi2("cchi2","fESDTrack.fITSchi2MIP[0]<7.&&fESDTrack.fITSchi2MIP[1]<5.&&fESDTrack.fITSchi2MIP[2]<7.&&fESDTrack.fITSchi2MIP[3]<7.5&&fESDTrack.fITSchi2MIP[4]<6.");
-  
 
 
 void MakeAliases(AliESDComparisonDraw&comp)
@@ -322,7 +306,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, AliESDEvent *event)
 {
   //
   //
@@ -393,7 +377,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;
     }      
   }
   //
@@ -463,13 +448,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
@@ -483,7 +468,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 
@@ -649,14 +634,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);
     }    
     //            
@@ -782,14 +765,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;
@@ -833,7 +814,7 @@ ESDCmpTr::ESDCmpTr(const char* fnGenTracks,
   //
   fLoader = AliRunLoader::Open(fnGalice);
   if (gAlice){
-    //delete gAlice->GetRunLoader();
+    //delete AliRunLoader::Instance();
     delete gAlice;
     gAlice = 0x0;
   }
@@ -856,8 +837,6 @@ ESDCmpTr::ESDCmpTr(const char* fnGenTracks,
     fEventNr = nall-firstEvent;
     cerr<<"restricted number of events availaible"<<endl;
   }
-  AliMagF * magf = gAlice->Field();
-  AliTracker::SetFieldMap(magf);
 
 }
 
@@ -898,19 +877,11 @@ Int_t ESDCmpTr::SetIO(Int_t eventNr)
   //
  
   TTree* tree = (TTree*) f.Get("esdTree");
-  if (!tree) { 
-    Char_t ename[100]; 
-    sprintf(ename,"%d",eventNr);
-    fEvent = (AliESD*)f.Get(ename);
-    if (!fEvent){
-      sprintf(ename,"ESD%d",eventNr);
-      fEvent = (AliESD*)f.Get(ename);
-    }
-  }
-  else{
-    tree->SetBranchAddress("ESD", &fEvent);
-    tree->GetEntry(eventNr);
-  }
+  if(fEvent)delete fEvent;
+  fEvent = new AliESDEvent();
+  fEvent->ReadFromTree(tree);
+  tree->GetEntry(eventNr);
+
 
 
   /*
@@ -1099,8 +1070,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;
@@ -1109,15 +1080,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(); 
@@ -1146,7 +1117,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);
 }
 ////////////////////////////////////////////////////////////////////////
@@ -1162,7 +1133,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];
   //
@@ -1174,7 +1145,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;
   }
@@ -1222,9 +1193,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]);
@@ -1269,6 +1240,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);
@@ -1339,7 +1311,12 @@ 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{
@@ -1355,10 +1332,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();
@@ -1585,41 +1563,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){
@@ -1635,7 +1613,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;
@@ -1645,7 +1623,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++;
@@ -1668,10 +1647,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;
@@ -1693,7 +1672,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;