]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSpidESD2.cxx
Make separate, specialized geometries for RPhi and RhoZ views.
[u/mrichter/AliRoot.git] / ITS / AliITSpidESD2.cxx
index b21a084ef99e448684237b664f4be0a5ae817cd1..801b92b3efeebb6ef5eb044babd4650bde246b2b 100644 (file)
@@ -13,6 +13,8 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
+/* $Id$ */
+
 //-----------------------------------------------------------------------//
 // ITS PID class --- method # 2                                          //
 //                                                                       //
 //-----------------------------------------------------------------------//
 
 #include "AliITSpidESD2.h"
-#include "AliESD.h"
+#include "AliESDEvent.h"
 #include "AliESDtrack.h"
 #include "AliITStrackV2.h"
-#include "AliITSclusterV2.h"
+#include "AliITSRecPoint.h"
 #include "AliITStrackerMI.h"
 #include "AliITSLoader.h"
 #include "AliITSPident.h"
@@ -38,20 +40,16 @@ ClassImp(AliITSpidESD2)
 //_________________________________________________________________________
   AliITSpidESD2::AliITSpidESD2():AliITSpidESD(),
 fTracker(0),
-fLoader(0),
 fSp(0)
 { //
   //  The main constructor
 }
 //_________________________________________________________________________
-AliITSpidESD2::AliITSpidESD2(AliITStrackerMI* tracker,AliITSLoader* loader):AliITSpidESD(),
-fTracker(0),
-fLoader(0),
+AliITSpidESD2::AliITSpidESD2(AliITStrackerMI* tracker):AliITSpidESD(),
+fTracker(tracker),
 fSp(0)
 { //
   //  The main constructor
-  fTracker=tracker;
-  fLoader=loader;
   fSp=new AliITSSteerPid();
   fSp->InitLayer();
 }
@@ -65,7 +63,6 @@ AliITSpidESD2::~AliITSpidESD2(){
 //______________________________________________________________________
 AliITSpidESD2::AliITSpidESD2(const AliITSpidESD2 &ob) :AliITSpidESD(ob),
 fTracker(ob.fTracker),
-fLoader(ob.fLoader),
 fSp(ob.fSp) 
 {
   // Copy constructor
@@ -81,7 +78,7 @@ AliITSpidESD2& AliITSpidESD2::operator=(const AliITSpidESD2& ob ){
 }
 
 //_________________________________________________________________________
-Int_t AliITSpidESD2::MakePID(AliESD *event)
+Int_t AliITSpidESD2::MakePID(TTree *clustersTree, AliESDEvent *event)
 {
 
   //
@@ -89,10 +86,8 @@ Int_t AliITSpidESD2::MakePID(AliESD *event)
   //
   Double_t xr,par[5];
   AliITStrackV2* track=0;
-  fLoader->LoadRecPoints();
-  TTree *cTree=fLoader->TreeR();
-  fTracker->LoadClusters(cTree);
-
+  fTracker->LoadClusters(clustersTree);
+  printf("==== Landau Fit PID ITS ====== \n");
   Int_t ntrk=event->GetNumberOfTracks();
   Double_t momits;
   // for (Int_t i=0; i<ntrk; i++) {
@@ -117,59 +112,40 @@ Int_t AliITSpidESD2::MakePID(AliESD *event)
     const Int_t kns=AliPID::kSPECIES;
     Double_t condprobfun[kns];
     for(Int_t ii=0;ii<kns;ii++)condprobfun[ii]=0;
-    Int_t cluindsdd1 = track->GetClusterIndex(3);
-    Int_t cluindsdd2 = track->GetClusterIndex(2);
-    Int_t cluindssd1 = track->GetClusterIndex(1);
-    Int_t cluindssd2 = track->GetClusterIndex(0);
-    Float_t q1,q1corr,q2,q2corr,q3,q3corr,q4,q4corr;
-    AliITSclusterV2* clu1=(AliITSclusterV2*)fTracker->GetCluster(cluindsdd1);
-    if(clu1!=0){
-      q1=clu1->GetQ(); 
-      q1corr=q1*TMath::Sqrt((1-snp*snp)/(1+tgl*tgl));
-    }
-    else{
-      q1=-99;
-      q1corr=-99;
-    }
-       
-    AliITSclusterV2* clu2=(AliITSclusterV2*)fTracker->GetCluster(cluindsdd2);
-    if(clu2!=0){
-      q2=clu2->GetQ();
-      q2corr=q2*TMath::Sqrt((1-snp*snp)/(1+tgl*tgl));
+    Int_t cluind[12];
+    for(Int_t ii=0;ii<12;ii++){
+      cluind[ii]=track->GetClusterIndex(ii);
     }
-    else{
-      q2=-99;
-      q2corr=-99;
+    AliITSRecPoint* cluarr[12];
+    Float_t qclu[8],qclucorr[8],nlay[8];
+    for(Int_t ii=0;ii<8;ii++){
+      qclu[ii]=0;
+      qclucorr[ii]=0;
+      nlay[ii]=0;
     }
-    
-    AliITSclusterV2* clu3=(AliITSclusterV2*)fTracker->GetCluster(cluindssd1);
-    if(clu3!=0){
-      q3=clu3->GetQ();
-      q3corr=q3*TMath::Sqrt((1-snp*snp)/(1+tgl*tgl));
+    Int_t jj=0;
+    for(Int_t ij=0;ij<12;ij++){
+      cluind[ij]=track->GetClusterIndex(ij);
+      if(cluind[ij]>0){
+       cluarr[ij]=(AliITSRecPoint*)fTracker->GetCluster(cluind[ij]);
+       Int_t lay=cluarr[ij]->GetLayer();
+       if(lay>1){//sdd+ssd only
+         qclu[jj]=cluarr[ij]->GetQ(); 
+         qclucorr[jj]=qclu[jj]*TMath::Sqrt((1-snp*snp)/(1+tgl*tgl));
+         nlay[jj]=lay;
+         jj++;
+       }
+       else qclucorr[jj]=-1;
+      }
     }
-    else{
-      q3=-99;
-      q3corr=-99;
-    }
-    
-    AliITSclusterV2* clu4=(AliITSclusterV2*)fTracker->GetCluster(cluindssd2);
-    if(clu4!=0){
-      q4=clu4->GetQ();
-      q4corr=q4*TMath::Sqrt((1-snp*snp)/(1+tgl*tgl));
-    }
-    else{
-      q4=-99;
-      q4corr=-99;
-    }
-    Float_t qlay[4]={q1corr,q2corr,q3corr,q4corr};
+
     Float_t prip=0.33;
     Float_t prik=0.33;
     Float_t pripi=0.33;
     Float_t prie=0.;
-    Double_t invPt=track->Get1Pt();
-    AliITSPident mypid(momits,invPt,dEdxsignal,fSp,qlay,prip,prik,pripi,prie); 
-    condprobfun[0]=0.;//el
-    condprobfun[1]=0.;//mu
+    AliITSPident mypid(momits,dEdxsignal,fSp,qclucorr,nlay,prip,prik,pripi,prie); 
+    condprobfun[0]=mypid.GetProdCondFunPi();//el --PID in the ITS does not distinguish among Pi,el,mu
+    condprobfun[1]=mypid.GetProdCondFunPi();//mu
     condprobfun[2]=mypid.GetProdCondFunPi();//pi
     condprobfun[3]=mypid.GetProdCondFunK();//kaon
     condprobfun[4]=mypid.GetProdCondFunPro();//pro
@@ -177,8 +153,7 @@ Int_t AliITSpidESD2::MakePID(AliESD *event)
     esdtr->SetITSpid(condprobfun);
 
     delete track;
-   }
+  }
   fTracker->UnloadClusters();
-  fLoader->UnloadRecPoints();
   return 0;
 }