]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
update treatment of PID weights in tracks
authorpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Jun 2009 07:51:56 +0000 (07:51 +0000)
committerpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Jun 2009 07:51:56 +0000 (07:51 +0000)
PWG2/RESONANCES/AliRsnDaughter.cxx
PWG2/RESONANCES/AliRsnDaughter.h
PWG2/RESONANCES/AliRsnPIDDefESD.cxx
PWG2/RESONANCES/AliRsnPIDDefESD.h

index 6332ce7303ae237534745d41409daffe95fc75cb..bfb7b39683178699a98b859039b0300ced6f69d0 100644 (file)
@@ -25,6 +25,7 @@
 #include "AliAODVertex.h"
 #include "AliAODTrack.h"
 
+#include "AliRsnPIDDefESD.h"
 #include "AliRsnDaughter.h"
 
 ClassImp(AliRsnDaughter)
@@ -248,7 +249,7 @@ AliPID::EParticleType AliRsnDaughter::AssignedPID() const
 }
 
 //_____________________________________________________________________________
-Bool_t AliRsnDaughter::CombineWithPriors(Double_t *priors)
+Bool_t AliRsnDaughter::CombineWithPriors(Double_t *priors, AliRsnPIDDefESD *pidDef)
 {
 //
 // Combine current PID weights (assumed to be them) with prior probs
@@ -257,9 +258,23 @@ Bool_t AliRsnDaughter::CombineWithPriors(Double_t *priors)
   Int_t       i;
   Double_t    sum = 0.0;
 
+  // get PID weights according to definition
+  // if the reference is not ESD or the pidDef is null
+  // of it is not null but is requires the ESD pid,
+  // the standard PID value is used, otherwise
+  if (pidDef)
+  {
+    AliESDtrack *esdTrack = GetRefESD();
+    if (esdTrack) pidDef->ComputeWeights(esdTrack, fPID);
+  }
+  else
+  {
+    for (i = 0; i < AliPID::kSPECIES; i++) fPID[i] = fRef->PID()[i];
+  }
+
   // multiply weights and priors
   for (i = 0; i < AliPID::kSPECIES; i++) {
-    fPID[i] = priors[i] * fRef->PID()[i];
+    fPID[i] *= priors[i];
     sum += fPID[i];
   }
   if (sum <= (Double_t) 0.) {
index 5f4ab257a6bd99414fa6bc1020b0d6eabc9c4234..a01bec5c90e56e6da0d1e1d2380e3ee2407a1f46 100644 (file)
@@ -25,6 +25,7 @@ class TParticle;
 class AliStack;
 class AliESDtrack;
 class AliAODEvent;
+class AliRsnPIDDefESD;
 
 class AliRsnDaughter : public TObject
 {
@@ -73,7 +74,7 @@ class AliRsnDaughter : public TObject
 
     // PID
     const Double_t        *PID() const {return fRef->PID();}
-    Bool_t                 CombineWithPriors(Double_t *priors);
+    Bool_t                 CombineWithPriors(Double_t *priors, AliRsnPIDDefESD *pidDef = 0x0);
     AliPID::EParticleType  RealisticPID() const;
     AliPID::EParticleType  PerfectPID() const;
     Double_t               PIDProb(AliPID::EParticleType type) const {return PID()[(Int_t)type];}
index a908d26cf12b8b59c33373e0af2f5ce0097243be..09e5b0b106b96be05a5e4750b5b87515d5a440c7 100644 (file)
@@ -229,6 +229,26 @@ const char* AliRsnPIDDefESD::DetName(EDetector det) {
   }
 }
 
+//_____________________________________________________________________________
+const char* AliRsnPIDDefESD::SchemeName() {
+//
+// Scheme name for messages
+//
+
+  TString out;
+
+  Int_t i, ndet = 0;
+
+  for (i = 0; i < kDetectors; i++)
+    if (fUseDet[i])
+    {
+      if (ndet > 0) out += '_';
+      out.Append(DetName((EDetector)i));
+    }
+
+  return out.Data();
+}
+
 //_____________________________________________________________________________
 void AliRsnPIDDefESD::SetDivValue(EDetector det, Double_t value, Bool_t userHigher) {
 //
index 5fb792e794a15da78a9b206817dfe6aeb8cdcf27..01f3c5eabfef6d1643ab0a3135a8b9cf046a6529 100644 (file)
@@ -58,6 +58,7 @@ class AliRsnPIDDefESD : public TObject {
     void        ComputeWeights(AliESDtrack *track, Double_t *weights);
     void        PrintStatus();
     const char* DetName(EDetector);
+    const char* SchemeName();
 
   private: