]> 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 dc487554876a7afbc4a824964da40edd15869d49..540c2a8c1f90f3bf86e26376441350143c913ca8 100644 (file)
@@ -31,7 +31,6 @@ 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,0,0);
 t2->Exec();
@@ -170,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"
@@ -179,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"
@@ -308,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)
 {
   //
   //
@@ -379,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;
     }      
   }
   //
@@ -449,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
@@ -469,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(TMath::Abs(cov[14]));    
+    fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
   }
   if (fITSOn){
     // ITS 
@@ -815,7 +814,7 @@ ESDCmpTr::ESDCmpTr(const char* fnGenTracks,
   //
   fLoader = AliRunLoader::Open(fnGalice);
   if (gAlice){
-    //delete gAlice->GetRunLoader();
+    //delete AliRunLoader::Instance();
     delete gAlice;
     gAlice = 0x0;
   }
@@ -838,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,0);
 
 }
 
@@ -880,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);
+
 
 
   /*
@@ -1128,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);
 }
 ////////////////////////////////////////////////////////////////////////
@@ -1144,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];
   //
@@ -1156,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;
   }
@@ -1204,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]);
@@ -1251,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);
@@ -1321,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{
@@ -1337,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();
@@ -1567,39 +1563,41 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
        //
        // TPC V0 Info
        Double_t x,alpha, param[5],cov[15];
-       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 ( 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){
@@ -1615,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;
@@ -1626,7 +1624,7 @@ Int_t ESDCmpTr::BuildV0Info(Int_t eventNr)
       for (Int_t j=TMath::Min(fMultiRecV0[label],Short_t(20))-1;j>=0;j--){
        Int_t index = fIndexRecV0[label*20+j];
        if (index<0) continue;
-       AliESDV0MI *v0MI2  = fEvent->GetV0MI(index);
+       AliESDv0 *v0MI2  = fEvent->GetV0(index);
        if (TMath::Abs(v0MI2->fLab[0])==label &&TMath::Abs(v0MI2->fLab[1])==label2) {
          v0MI =v0MI2;
          fRecV0Info->fV0Multiple++;
@@ -1649,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;
@@ -1674,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;