]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSFastRecParticle.cxx
Updated to new CDB
[u/mrichter/AliRoot.git] / PHOS / AliPHOSFastRecParticle.cxx
index e8ec464235c755a8af1e1b0803f24cd67012ec85..0c5c366bf0c7e2b5384598bfd04309c04fa9c059 100644 (file)
 
 /* $Id$ */
 
+/* History of cvs commits:
+ *
+ * $Log$
+ */
+
 //_________________________________________________________________________
 //  A  Particle modified by PHOS response and produced by AliPHOSvFast
 //  To become a general class of AliRoot ?    
 // --- Standard library ---
 
 // --- AliRoot header files ---
-
+#include "AliLog.h"
 #include "AliPHOSFastRecParticle.h"
 #include "TPad.h"
 #include "TPaveText.h"
 
-ClassImp(AliPHOSFastRecParticle) 
+ClassImp(AliPHOSFastRecParticle) 
 
 //____________________________________________________________________________
 AliPHOSFastRecParticle::AliPHOSFastRecParticle() : TParticle()
@@ -178,10 +183,10 @@ Bool_t AliPHOSFastRecParticle::IsPhoton(TString purity) const
   if      (purity == "low"   ) photonLike = TestPIDBit(6);
   else if (purity == "medium") photonLike = TestPIDBit(7);
   else if (purity == "high"  ) photonLike = TestPIDBit(8);
-  else Error("IsPhoton","Wrong purity type: \'%s\'",purity.Data());
   if (photonLike                                   && //  photon by PCA
       (TestPIDBit(5)||TestPIDBit(4)||TestPIDBit(3))&& //  fast by TOF
-      (TestPIDBit(2)||TestPIDBit(1)||TestPIDBit(0)))  //  neutral by CPV
+      (TestPIDBit(2)||TestPIDBit(1)||TestPIDBit(0))&& //  neutral by CPV
+      !TestPIDBit(14))                              //  no charged track
     return kTRUE ;
   else
     return kFALSE;
@@ -198,10 +203,12 @@ Bool_t AliPHOSFastRecParticle::IsPi0(TString purity) const
   if      (purity == "low"   ) pi0Like = TestPIDBit(9);
   else if (purity == "medium") pi0Like = TestPIDBit(10);
   else if (purity == "high"  ) pi0Like = TestPIDBit(11);
-  else Error("IsPi0","Wrong purity type: %s",purity.Data());
+  else 
+    AliError(Form("Wrong purity type: %s",purity.Data()));
   if (pi0Like                                      && //  pi0 by PCA
       (TestPIDBit(5)||TestPIDBit(4)||TestPIDBit(3))&& //  fast by TOF
-      (TestPIDBit(2)||TestPIDBit(1)||TestPIDBit(0)))  //  neutral by CPV
+      (TestPIDBit(2)||TestPIDBit(1)||TestPIDBit(0))&& //  neutral by CPV
+      !TestPIDBit(14))                              //  no charged track
     return kTRUE ;
   else
     return kFALSE;
@@ -218,10 +225,36 @@ Bool_t AliPHOSFastRecParticle::IsElectron(TString purity) const
   if      (purity == "low"   ) photonLike = TestPIDBit(6);
   else if (purity == "medium") photonLike = TestPIDBit(7);
   else if (purity == "high"  ) photonLike = TestPIDBit(8);
-  else Error("IsElectron","Wrong purity type: %s",purity.Data());
+  else 
+    AliError(Form("Wrong purity type: %s",purity.Data()));
+  
+  if (photonLike                                   && //  photon by PCA
+      (TestPIDBit(5)|| TestPIDBit(4)|| TestPIDBit(3))&& //  fast by TOF
+      (!TestPIDBit(2)||!TestPIDBit(1)||!TestPIDBit(0))&& //  charged by CPV
+      TestPIDBit(14))                                  //  no charged track
+    return kTRUE ;
+  else
+    return kFALSE;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSFastRecParticle::IsEleCon(TString purity) const
+{
+  // Rec.Particle is an electron if it has a photon-like shape, fast and charged
+  // photon-like shape is defined with a purity "low", "medium" or "high"
+
+  purity.ToLower();
+  Bool_t photonLike = kFALSE;
+  if      (purity == "low"   ) photonLike = TestPIDBit(6);
+  else if (purity == "medium") photonLike = TestPIDBit(7);
+  else if (purity == "high"  ) photonLike = TestPIDBit(8);
+  else 
+    AliError(Form("Wrong purity type: %s",purity.Data()));
+  
   if (photonLike                                   && //  photon by PCA
       (TestPIDBit(5)|| TestPIDBit(4)|| TestPIDBit(3))&& //  fast by TOF
-     (!TestPIDBit(2)||!TestPIDBit(1)||!TestPIDBit(0)))  //  charged by CPV
+      (!TestPIDBit(2)||!TestPIDBit(1)||!TestPIDBit(0))&& //  charged by CPV
+      !TestPIDBit(14))                                  //  no charged track
     return kTRUE ;
   else
     return kFALSE;
@@ -232,7 +265,7 @@ Bool_t AliPHOSFastRecParticle::IsHardPhoton() const
 {
   // Rec.Particle is a hard photon (E > 30 GeV) if its second moment M2x
   // corresponds to photons
-  if (TestPIDBit(12))
+  if (TestPIDBit(12) && !TestPIDBit(14))
     return kTRUE;
   else
     return kFALSE;
@@ -243,7 +276,7 @@ Bool_t AliPHOSFastRecParticle::IsHardPi0() const
 {
   // Rec.Particle is a hard pi0 (E > 30 GeV) if its second moment M2x
   // corresponds to pi0
-  if (TestPIDBit(13))
+  if (TestPIDBit(13)&& !TestPIDBit(14))
     return kTRUE;
   else
     return kFALSE;
@@ -365,18 +398,18 @@ TString AliPHOSFastRecParticle::Name() const
     name = "Photon high purity, ";
 
   if      (IsPi0("low"))
-    name += "Pi0 low purity, ";
+    name = "Pi0 low purity, ";
   else if (IsPi0("medium"))
-    name += "Pi0 medium purity, ";
+    name = "Pi0 medium purity, ";
   else if (IsPi0("high"))
-    name += "Pi0 high purity, ";
+    name = "Pi0 high purity, ";
 
   if      (IsElectron("low"))
-    name += "Electron low purity, ";
+    name = "Electron low purity, ";
   else if (IsElectron("medium"))
-    name += "Electron medium purity, ";
+    name = "Electron medium purity, ";
   else if (IsElectron("high"))
-    name += "Electron high purity, ";
+    name = "Electron high purity, ";
 
   if     (IsHadron()) {
     name = "hadron";
@@ -461,24 +494,35 @@ void AliPHOSFastRecParticle::Paint(Option_t *)
 }
 
 //____________________________________________________________________________
-void AliPHOSFastRecParticle::Print()const
+void AliPHOSFastRecParticle::Print(const Option_t *)const
 {
   // Print the type, energy and momentum of the reconstructed particle
 
-  TString message ; 
-  message  = "\n   PID bits are %d%d%d %d%d%d %d%d%d %d%d%d" ; 
-  message += ", type is \"%s\"\n" ; 
-  message += "   (E,Px,Py,Pz) = (% .3e, % .3e, % .3e, % .3e) GeV\n" ; 
-  Info("Print", message.Data(), 
-       TestPIDBit(0),TestPIDBit(1),
-       TestPIDBit(2),TestPIDBit(3),
-       TestPIDBit(4),TestPIDBit(5),
-       TestPIDBit(6),TestPIDBit(7),
-       TestPIDBit(8),TestPIDBit(9),
-       TestPIDBit(10),TestPIDBit(11),
-       Name().Data(), 
-       Energy(), 
-       Px(), 
-       Py(),
-       Pz() ); 
+  AliInfo(Form("Print", "-----------------------------")) ;  
+  printf("PID bits are %d%d%d %d%d%d %d%d%d %d%d%d",  
+        TestPIDBit(0),TestPIDBit(1),
+        TestPIDBit(2),TestPIDBit(3),
+        TestPIDBit(4),TestPIDBit(5),
+        TestPIDBit(6),TestPIDBit(7),
+        TestPIDBit(8),TestPIDBit(9),
+        TestPIDBit(10),TestPIDBit(11)) ; 
+  printf(", type is \"%s\"\n", Name().Data()) ; 
+  printf("  (E,Px,Py,Pz) = (% .3e, % .3e, % .3e, % .3e) GeV\n",     
+        Energy(), 
+        Px(), 
+        Py(),
+        Pz() ) ; 
+  printf("  TOF = %.3e ns\n", ToF() ) ; 
+  printf("  PID weight: \n" ) ;
+  printf("             photon ->              %f\n", fPID[AliPID::kPhoton] ) ; 
+  printf("             electron ->            %f\n", fPID[AliPID::kElectron] ) ; 
+  printf("             Conversion electron -> %f\n", fPID[AliPID::kEleCon] ) ; 
+  printf("             muon ->                %f\n", fPID[AliPID::kMuon] ) ; 
+  printf("             neutral pion ->        %f\n", fPID[AliPID::kPi0] ) ; 
+  printf("             charged pion ->        %f\n", fPID[AliPID::kPion] ) ; 
+  printf("             charged kaon ->        %f\n", fPID[AliPID::kKaon] ) ; 
+  printf("             neutral kaon ->        %f\n", fPID[AliPID::kKaon0] ) ; 
+  printf("             proton ->              %f\n", fPID[AliPID::kProton] ) ; 
+  printf("             neutron ->             %f\n", fPID[AliPID::kNeutron] ) ; 
+
 }