]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSpidESD1.cxx
A new bunch of Global QA histogramms
[u/mrichter/AliRoot.git] / ITS / AliITSpidESD1.cxx
index 7a3cb0d2ecbf5553a956d7f516ad7940dd16d5e6..2e012f04588da1b9a51e3c8968d56d1e804e0128 100755 (executable)
@@ -13,6 +13,8 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
+/* $Id$ */
+
 //-----------------------------------------------------------------
 // ITS PID method # 1
 //           Implementation of the ITS PID class
 //-----------------------------------------------------------------
 #include "AliITSpidESD.h"
 #include "AliITSpidESD1.h"
-#include "AliESD.h"
+#include "AliESDEvent.h"
 #include "AliESDtrack.h"
 
 ClassImp(AliITSpidESD1)
 
-AliITSpidESD1::AliITSpidESD1(): AliITSpidESD() {
+AliITSpidESD1::AliITSpidESD1(): AliITSpidESD(),
+fMIP(0),
+fRes(0),
+fRange(0) 
+{
   //Default constructor
-  fMIP=0;
-  fRes=0;
-  fRange=0;
 }
 //_________________________________________________________________________
-AliITSpidESD1::AliITSpidESD1(Double_t *param): AliITSpidESD()
+AliITSpidESD1::AliITSpidESD1(Double_t *param): AliITSpidESD(),
+fMIP(param[0]),
+fRes(param[1]),
+fRange(param[2])
 {
   //
   //  The main constructor
   //
-  fMIP=param[0];
-  fRes=param[1];
-  fRange=param[2];
 }
 
 
 //_________________________________________________________________________
-Int_t AliITSpidESD1::MakePID(AliESD *event)
+Int_t AliITSpidESD1::MakePID(AliESDEvent *event)
 {
   //
   //  This function calculates the "detector response" PID probabilities 
@@ -57,19 +60,31 @@ Int_t AliITSpidESD1::MakePID(AliESD *event)
       if ((t->GetStatus()&AliESDtrack::kITSout)==0) continue;
     Double_t mom=t->GetP();
     Double_t dedx=t->GetITSsignal()/fMIP;
-    Int_t ns=AliPID::kSPECIES;
     Double_t p[10];
-    for (Int_t j=0; j<ns; j++) {
-      Double_t mass=AliPID::ParticleMass(j);
-      Double_t bethe=AliITSpidESD::Bethe(mom/mass); 
+    Bool_t mismatch=kTRUE, heavy=kTRUE;
+    for (Int_t j=0; j<AliPID::kSPECIES; j++) {
+      Double_t mass=AliPID::ParticleMass(j);//GeV/c^2
+      Double_t bethe=AliITSpidESD::Bethe(mom,mass);
       Double_t sigma=fRes*bethe;
       if (TMath::Abs(dedx-bethe) > fRange*sigma) {
        p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
-        continue;
+      } else {
+        p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
+        mismatch=kFALSE;
       }
-      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
+
+      // Check for particles heavier than (AliPID::kSPECIES - 1)
+      if (dedx < (bethe + fRange*sigma)) heavy=kFALSE;
+
     }
+
+    if (mismatch)
+       for (Int_t j=0; j<AliPID::kSPECIES; j++) p[j]=1/AliPID::kSPECIES;
+
     t->SetITSpid(p);
+
+    if (heavy) t->ResetStatus(AliESDtrack::kITSpid);
+
   }
   return 0;
 }