]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Performance improvements of PID (E. Bruna)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 24 May 2007 16:04:32 +0000 (16:04 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 24 May 2007 16:04:32 +0000 (16:04 +0000)
ITS/AliITSReconstructor.cxx
ITS/AliITSpidESD.cxx
ITS/AliITSpidESD.h
ITS/AliITSpidESD1.cxx
ITS/AliITSpidESD1.h

index cf2343c17aba63b16a841b826d5e32e7681c0e67..996753107a2408fb74d4e783e8406e7d7771948c 100644 (file)
@@ -190,7 +190,7 @@ AliTracker* AliITSReconstructor::CreateTracker(AliRunLoader* runLoader)const
     loader->AdoptITSpid(new AliITSpidESD2((AliITStrackerMI*)tracker,loader));
   }
   else{
-    Double_t parITS[] = {76., 0.15, 10.}; //PH positions of the MIP peak
+    Double_t parITS[] = {0.15, 10.}; //PH positions of the MIP peak
     loader->AdoptITSpid(new AliITSpidESD1(parITS));
   }
   return tracker;
index 2d4a26a1490c9635b58d825049fbcce09a4e9158..ae32fc8f9b78eb3825c1a986024628eb15b5b016 100644 (file)
@@ -32,16 +32,22 @@ AliITSpidESD::AliITSpidESD():TObject(){
   //Default constructor
  
 }
-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;
-  /*if (bg<3.5) 
-     bethe=(1.+ bg2)/bg2*(log(5940*bg2) - bg2/(1.+ bg2));
-  else*/  // not 100% clear why...
-  bethe=(1.+ bg2)/bg2*(TMath::Log(3.5*5940*bg) - bg2/(1.+ bg2));
-  return bethe/11.091;
-}
 
+Double_t AliITSpidESD::Bethe(Double_t p,Double_t mass) {
+
+  Double_t mom=p*1000;//MeV
+  Double_t Mass=mass*1000;//Mev
+  Float_t dens =2.33; //g cm-3
+  Double_t K=0.307075;//MeVcm^2/g
+  Double_t ZovA=0.49848;
+  Double_t me=0.511;//MeV/c^2
+  Double_t I=173./1000000.;//MeV
+  Double_t En=TMath::Sqrt(mom*mom+Mass*Mass);//MeV
+  Double_t gamma=En/Mass;
+  Double_t beta=mom/En;
+  Double_t Tmax=2*me*beta*beta*gamma*gamma/(1+2*gamma*me/Mass+(me/Mass)*(me/Mass));
+  Double_t deltaover2=28.816*1e-6*TMath::Sqrt(dens*ZovA)+TMath::Log(beta*gamma)-0.5;
+  return K*ZovA*1/(beta*beta)*(0.5*TMath::Log(2*me*beta*beta*gamma*gamma*Tmax/(I*I))-beta*beta-deltaover2)*2.33*1000*0.03-37;
+
+
+}
index 2d17140ef2f4e4f13574a8540321a913c2ab5b9c..06c0411612ca4fb4dce02cdc9ec31dbe2fe3ba89 100644 (file)
@@ -18,7 +18,7 @@ public:
   AliITSpidESD();
   virtual ~AliITSpidESD() {}
   virtual Int_t MakePID(AliESD *event) =0;
-  static Double_t Bethe(Double_t bg);
+  static Double_t Bethe(Double_t p,Double_t mass);
 private:
   ClassDef(AliITSpidESD,1)   // ITS PID class
 };
index a9228bf97367759fd225b1c76f9946146fcdc390..7455ba2665e0669428e61b81efb2db1b47a95569 100755 (executable)
@@ -27,7 +27,6 @@
 ClassImp(AliITSpidESD1)
 
 AliITSpidESD1::AliITSpidESD1(): AliITSpidESD(),
-fMIP(0),
 fRes(0),
 fRange(0) 
 {
@@ -35,9 +34,8 @@ fRange(0)
 }
 //_________________________________________________________________________
 AliITSpidESD1::AliITSpidESD1(Double_t *param): AliITSpidESD(),
-fMIP(param[0]),
-fRes(param[1]),
-fRange(param[2])
+fRes(param[0]),
+fRange(param[1])
 {
   //
   //  The main constructor
@@ -57,12 +55,12 @@ Int_t AliITSpidESD1::MakePID(AliESD *event)
     if ((t->GetStatus()&AliESDtrack::kITSin )==0)
       if ((t->GetStatus()&AliESDtrack::kITSout)==0) continue;
     Double_t mom=t->GetP();
-    Double_t dedx=t->GetITSsignal()/fMIP;
+    Double_t dedx=t->GetITSsignal();
     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); 
+      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;
index 68e3ae58c29cf9729352d549b32fb36f563ca164..a50efe8bad4213d903d68a74df565f01390a70e0 100755 (executable)
@@ -20,10 +20,9 @@ public:
   virtual Int_t MakePID(AliESD *event);
 
 private:
-  Double_t fMIP;          // dEdx for MIP
   Double_t fRes;          // relative dEdx resolution
   Double_t fRange;        // one particle type PID range (in sigmas)
-  ClassDef(AliITSpidESD1,1)   // ITS PID class
+  ClassDef(AliITSpidESD1,2)   // ITS PID class
 };
 
 #endif