]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added minimum probability threshold for PID
authorrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Mar 2009 12:51:56 +0000 (12:51 +0000)
committerrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Mar 2009 12:51:56 +0000 (12:51 +0000)
CORRFW/AliCFPairPidCut.h
CORRFW/AliCFTrackCutPid.cxx
CORRFW/AliCFTrackCutPid.h

index fb4e2d75dfcdeb52004c1642cec5d5f35e4c7384..e99bc270699717e1fed90e4af59497173cecdd4f 100755 (executable)
@@ -53,6 +53,7 @@ class AliCFPairPidCut : public AliCFCutBase
   void SetMinDiffProb(Bool_t check1, Double_t mindiff1, Bool_t check2, Double_t mindiff2)
   {fCutNeg->SetMinDiffProb(check1,mindiff1); fCutPos->SetMinDiffProb(check2,mindiff2);}  //set checking at probability level
   void SetAODmode(Bool_t mode) {fCutNeg->SetAODmode(mode); fCutPos->SetAODmode(mode);}
+  void SetProbThreshold(Double_t value1, Double_t value2) {fCutNeg->SetProbThreshold(value1); fCutPos->SetProbThreshold(value2);}
 
   Bool_t IsSelected(TObject *obj); //boolean for detectors
   Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
index 6ba323e1c6969bd189e0837a1e21c851480d77f4..39607355edfe9d165f750c7294e87c819b7c3a67 100644 (file)
@@ -84,7 +84,8 @@ AliCFTrackCutPid::AliCFTrackCutPid() :
   fNbins(101),
   fDetRestr(-1),
   fiPartRestr(-1),
-  fDetProbRestr(1)
+  fDetProbRestr(1),
+  fProbThreshold(0.)
 { 
   //
   //Default constructor 
@@ -119,7 +120,8 @@ AliCFTrackCutPid::AliCFTrackCutPid(const Char_t* name, const Char_t* title) :
   fNbins(101),
   fDetRestr(-1),
   fiPartRestr(-1),
-  fDetProbRestr(1)
+  fDetProbRestr(1),
+  fProbThreshold(0.)
 {
   //
   //Constructor
@@ -154,7 +156,8 @@ AliCFTrackCutPid::AliCFTrackCutPid(const AliCFTrackCutPid& c) :
   fNbins(c.fNbins),
   fDetRestr(c.fDetRestr),
   fiPartRestr(c.fiPartRestr),
-  fDetProbRestr(c.fDetProbRestr)
+  fDetProbRestr(c.fDetProbRestr),
+  fProbThreshold(c.fProbThreshold)
 {
   //
   //Copy constructor
@@ -198,6 +201,7 @@ AliCFTrackCutPid& AliCFTrackCutPid::operator=(const AliCFTrackCutPid& c)
     this->fDetRestr=c.fDetRestr;
     this->fiPartRestr=c.fiPartRestr;
     this->fDetProbRestr=c.fDetProbRestr;
+    this->fProbThreshold=c.fProbThreshold;
   
     for(Int_t i=0; i< kNdets ; i++ )   {
       this->fDets[i]=c.fDets[i];
@@ -480,9 +484,15 @@ Int_t AliCFTrackCutPid::Identify(Double_t pid[AliPID::kSPECIES]) const
     if(fIsQAOn) fhCombProb[iP]->Fill(probability[iP]);
   }
   
-  AliPID::EParticleType sel = getpid.GetMostProbable();
-  if(getpid.GetProbability(sel,fPriors)>fCut) iPart= (Int_t)sel;
-  AliDebug(2,Form("probabilities   : %f  %f  %f  %f  %f",probability[0],probability[1],probability[2],probability[3],probability[4]));
+
+  if (fProbThreshold > 0.) {
+    if (probability[fgParticleType] >= fProbThreshold) iPart=fgParticleType;
+  }
+  else {
+    AliPID::EParticleType sel = getpid.GetMostProbable();
+    if(getpid.GetProbability(sel,fPriors)>fCut) iPart= (Int_t)sel;
+    AliDebug(2,Form("probabilities   : %f  %f  %f  %f  %f",probability[0],probability[1],probability[2],probability[3],probability[4]));
+  }
 
   if(fCheckResponse && !Check(pid,iPart, fMinDiffResponse)) iPart=kCheckResp;
   if(fCheckSelection && !Check(probability,iPart,fMinDiffProbability)) iPart=kCheckProb;
index df94600680cc671e548dd2c1c554e7ca17852252..2b4df8dc07a6ca8ba08821c359267a11ec96d17b 100644 (file)
@@ -60,6 +60,7 @@ class AliCFTrackCutPid : public AliCFCutBase
   void SetDetectorProbabilityRestriction(TString det, Int_t iPart, Double_t upperprob); 
   void SetHistogramAxis(Int_t nbins, Double_t xmin, Double_t xmax) {fNbins=nbins; fXmin = xmin; fXmax = xmax;}
   void SetAODmode(Bool_t isaod = kFALSE) {fgIsAOD=isaod;}  
+  void SetProbThreshold(Double_t value) {fProbThreshold=value;}
  
   //returns the track identification number  
   Int_t GetID(ULong_t status[kNdets+1], Double_t pid[kNdets+1][AliPID::kSPECIES]) const;  
@@ -108,6 +109,9 @@ class AliCFTrackCutPid : public AliCFCutBase
   Int_t fDetRestr;                                          // id of the detector for the restriction
   Int_t fiPartRestr;                                        // id of the particle for the restriction
   Double_t fDetProbRestr;                                   // probability restriction value
+  Double_t fProbThreshold;                                  // if different from 0, the assigned PID will be set to 
+                                                            // fgParticleType if the probability is larger than this threshold,
+                                                            // regardless it is the highest or not (!)
 
   Double_t fPriors[AliPID::kSPECIES];                       // a priori concentrations
   TF1 *fPriorsFunc[AliPID::kSPECIES];                       // momentum dependent priors