]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSpidESD1.cxx
Updating example reco macro for real data
[u/mrichter/AliRoot.git] / ITS / AliITSpidESD1.cxx
index 9683ae3023b8752860bf2b94f25293783f3d467c..2e012f04588da1b9a51e3c8968d56d1e804e0128 100755 (executable)
@@ -29,6 +29,7 @@
 ClassImp(AliITSpidESD1)
 
 AliITSpidESD1::AliITSpidESD1(): AliITSpidESD(),
+fMIP(0),
 fRes(0),
 fRange(0) 
 {
@@ -36,8 +37,9 @@ fRange(0)
 }
 //_________________________________________________________________________
 AliITSpidESD1::AliITSpidESD1(Double_t *param): AliITSpidESD(),
-fRes(param[0]),
-fRange(param[1])
+fMIP(param[0]),
+fRes(param[1]),
+fRange(param[2])
 {
   //
   //  The main constructor
@@ -57,20 +59,32 @@ Int_t AliITSpidESD1::MakePID(AliESDEvent *event)
     if ((t->GetStatus()&AliESDtrack::kITSin )==0)
       if ((t->GetStatus()&AliESDtrack::kITSout)==0) continue;
     Double_t mom=t->GetP();
-    Double_t dedx=t->GetITSsignal();
-    Int_t ns=AliPID::kSPECIES;
+    Double_t dedx=t->GetITSsignal()/fMIP;
     Double_t p[10];
-    for (Int_t j=0; j<ns; j++) {
+    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;
 }