Corrections in the detector response function (Yu.Belikov)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jan 2004 09:23:53 +0000 (09:23 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 Jan 2004 09:23:53 +0000 (09:23 +0000)
ITS/AliITSpidESD.cxx
STEER/AliESDtest.C
STEER/AliESDtrack.h
TOF/AliTOFpidESD.cxx
TPC/AliTPCpidESD.cxx

index c4109bd..28faee4 100644 (file)
@@ -41,7 +41,8 @@ Double_t AliITSpidESD::Bethe(Double_t bg) {
   // This is the Bethe-Bloch function normalised to 1 at the minimum
   //
   Double_t bg2=bg*bg;
-  Double_t bethe=(1.+ bg2)/bg2*(log(5940*bg2) - bg2/(1.+ bg2));
+  Double_t bethe;
+  bethe=(1.+ bg2)/bg2*(log(5940*bg2) - bg2/(1.+ bg2));
   return bethe/11.091;
 }
 
@@ -59,19 +60,19 @@ Int_t AliITSpidESD::MakePID(AliESD *event)
     AliESDtrack *t=event->GetTrack(i);
     if ((t->GetStatus()&AliESDtrack::kITSin )==0)
       if ((t->GetStatus()&AliESDtrack::kITSout)==0) continue;
+    Double_t mom=t->GetP();
+    Double_t dedx=t->GetITSsignal()/fMIP;
     Int_t ns=AliESDtrack::kSPECIES;
     Double_t p[10];
     for (Int_t j=0; j<ns; j++) {
       Double_t mass=masses[j];
-      Double_t mom=t->GetP();
-      Double_t dedx=t->GetITSsignal()/fMIP;
       Double_t bethe=Bethe(mom/mass); 
       Double_t sigma=fRes*bethe;
       if (TMath::Abs(dedx-bethe) > fRange*sigma) {
-       p[j]=TMath::Exp(-0.5*fRange*fRange);
+       p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
         continue;
       }
-      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma));
+      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
     }
     t->SetITSpid(p);
   }
index b75c34e..9bda08d 100644 (file)
@@ -111,7 +111,7 @@ Int_t AliESDtest(Int_t nev=1,Int_t run=0) {
    AliITStrackerV2 itsTracker(geom);
    
    //An instance of the ITS PID maker
-   Double_t parITS[]={34.,0.15,10.};
+   Double_t parITS[]={35.5,0.11,10.};
    AliITSpidESD itsPID(parITS);
 
    //An instance of the V0 finder
@@ -156,7 +156,7 @@ Int_t AliESDtest(Int_t nev=1,Int_t run=0) {
    AliTPCtracker tpcTracker(par);
 
    //An instance of the TPC PID maker
-   Double_t parTPC[]={47.,0.10,10.};
+   Double_t parTPC[]={45.0,0.08,10.};
    AliTPCpidESD tpcPID(parTPC);
 
 
@@ -207,7 +207,6 @@ Int_t AliESDtest(Int_t nev=1,Int_t run=0) {
    }
    tofl->LoadDigits("read");
 
-
    //Instance of the TOF PID maker
    Double_t parTOF[]={130.,5.};
    AliTOFpidESD tofPID(parTOF);
@@ -265,10 +264,8 @@ Int_t AliESDtest(Int_t nev=1,Int_t run=0) {
 
 //***** Back propagation towards the outer barrel detectors
      rc+=itsTracker.PropagateBack(event); 
-     //itsPID.MakePID(event);
      
      rc+=tpcTracker.PropagateBack(event);
-     tpcPID.MakePID(event);
 
      TTree *trdTree=trdl->TreeR();
      if (!trdTree) {
@@ -277,12 +274,14 @@ Int_t AliESDtest(Int_t nev=1,Int_t run=0) {
      } 
      trdTracker.LoadClusters(trdTree);
      rc+=trdTracker.PropagateBack(event);
+
 /*
      for (Int_t iTrack = 0; iTrack < event->GetNumberOfTracks(); iTrack++) {
        AliESDtrack* track = event->GetTrack(iTrack);
        trdPID->MakePID(track);
      }
 */
+
      TTree *tofTree=tofl->TreeD();
      if (!tofTree) {
         cerr<<"Can't get the TOF cluster tree !\n";
@@ -293,23 +292,22 @@ Int_t AliESDtest(Int_t nev=1,Int_t run=0) {
      tofPID.UnloadClusters();
 
 
-
-//***** Here is the combined PID
-     AliESDpid::MakePID(event);
-
-
-
 //***** Now the final refit at the primary vertex...
      rc+=trdTracker.RefitInward(event);
      trdTracker.UnloadClusters();
 
      rc+=tpcTracker.RefitInward(event);
      tpcTracker.UnloadClusters();
+     tpcPID.MakePID(event);
 
      rc+=itsTracker.RefitInward(event); 
      itsTracker.UnloadClusters();
+     itsPID.MakePID(event);
 
 
+//***** Here is the combined PID
+     AliESDpid::MakePID(event);
+
 
 //***** Hyperon reconstruction 
      vtxer.SetVertex(vtx);
index 2ec4339..687128d 100644 (file)
@@ -123,7 +123,7 @@ protected:
   Int_t   fITSncls;        // number of clusters assigned in the ITS
   UInt_t  fITSindex[6];    //! indices of the assigned ITS clusters
   Float_t fITSsignal;      // detector's PID signal
-  Float_t fITSr[kSPECIES]; //! "detector response probabilities" (for the PID)
+  Float_t fITSr[kSPECIES]; // "detector response probabilities" (for the PID)
 
   // TPC related track information
   Float_t fTPCchi2;        // chi2 in the TPC
@@ -137,7 +137,7 @@ protected:
   Int_t   fTRDncls;        // number of clusters assigned in the TRD
   UInt_t  fTRDindex[90];   //! indices of the assigned TRD clusters
   Float_t fTRDsignal;      // detector's PID signal
-  Float_t fTRDr[kSPECIES]; //! "detector response probabilities" (for the PID)
+  Float_t fTRDr[kSPECIES]; // "detector response probabilities" (for the PID)
 
   // TOF related track information
   Float_t fTOFchi2;        // chi2 in the TOF
index 303cf62..14970f8 100644 (file)
@@ -225,6 +225,10 @@ Double_t dz=5*TMath::Sqrt(cov[2]) + 0.5*fDz + 2.5*TMath::Abs(par[3]);
     Double_t p[10];
     Double_t mom=t->GetP();
     for (Int_t j=0; j<AliESDtrack::kSPECIES; j++) {
+      
+      p[j]=1.00/AliESDtrack::kSPECIES;  // don't do anything
+      if (mom<0.7) continue;            // with the low momenta
+
       Double_t mass=kMasses[j];
       Double_t dpp=0.01;      //mean relative pt resolution;
       if (mom>0.5) dpp=0.01*mom;
@@ -234,10 +238,10 @@ Double_t dz=5*TMath::Sqrt(cov[2]) + 0.5*fDz + 2.5*TMath::Abs(par[3]);
       time[j]+=dlt/3e-2*TMath::Sqrt(mom*mom+mass*mass)/mom;
 
       if (TMath::Abs(tof-time[j]) > fRange*sigma) {
-       p[j]=TMath::Exp(-0.5*fRange*fRange);
+       p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
         continue;
       }
-      p[j]=TMath::Exp(-0.5*(tof-time[j])*(tof-time[j])/(sigma*sigma));
+      p[j]=TMath::Exp(-0.5*(tof-time[j])*(tof-time[j])/(sigma*sigma))/sigma;
     }
     /*
     if (c->GetLabel(0)!=TMath::Abs(t->GetLabel())) {
index fa7098c..32a2119 100644 (file)
@@ -68,10 +68,10 @@ Int_t AliTPCpidESD::MakePID(AliESD *event)
       Double_t bethe=Bethe(mom/mass); 
       Double_t sigma=fRes*bethe;
       if (TMath::Abs(dedx-bethe) > fRange*sigma) {
-       p[j]=TMath::Exp(-0.5*fRange*fRange);
+       p[j]=TMath::Exp(-0.5*fRange*fRange)/sigma;
         continue;
       }
-      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma));
+      p[j]=TMath::Exp(-0.5*(dedx-bethe)*(dedx-bethe)/(sigma*sigma))/sigma;
     }
     t->SetTPCpid(p);
   }