]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliRDHFCutsD0toKpi.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliRDHFCutsD0toKpi.h
index 57d49614d634195aeb4e4ba0ce8b0d3066474be0..6220da7edec5dfe1c246e159f94f39c45c68f210 100644 (file)
@@ -21,9 +21,10 @@ class AliRDHFCutsD0toKpi : public AliRDHFCuts
 {
  public:
 
+
   AliRDHFCutsD0toKpi(const char* name="CutsD0toKpi");
   
-  virtual ~AliRDHFCutsD0toKpi(){}
+  virtual ~AliRDHFCutsD0toKpi();
 
   AliRDHFCutsD0toKpi(const AliRDHFCutsD0toKpi& source);
   AliRDHFCutsD0toKpi& operator=(const AliRDHFCutsD0toKpi& source); 
@@ -39,11 +40,15 @@ class AliRDHFCutsD0toKpi : public AliRDHFCuts
                          {return IsSelected(obj,selectionLevel,0);}
   virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel,AliAODEvent* aod);
 
+  virtual Int_t IsSelectedCombPID(AliAODRecoDecayHF* d); 
+  virtual void CalculateBayesianWeights(AliAODRecoDecayHF* d);
+
   Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);}
   Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(1,iPtBin)] : 1.e6);}
   Int_t CombineSelectionLevels(Int_t selectionvalTrack,Int_t selectionvalCand,Int_t selectionvalPID)const;
   virtual Bool_t IsInFiducialAcceptance(Double_t pt,Double_t y) const;
   virtual void SetStandardCutsPP2010();
+  virtual void SetStandardCutsPP2010vsMult();
   virtual void SetStandardCutsPP2011_276TeV();
   virtual void SetStandardCutsPbPb2010();
   virtual void SetStandardCutsPbPb2011();
@@ -63,21 +68,69 @@ class AliRDHFCutsD0toKpi : public AliRDHFCuts
   Double_t GetPtForPIDtight()const {return fPtLowPID;}
   void SetUseKF(Bool_t useKF);
   Bool_t GetIsUsedKF() const {return fUseKF;}
+  void SetWeightsPositive(Double_t* weights){
+     for (Int_t i = 0; i<AliPID::kSPECIES; i++) {
+         fWeightsPositive[i] = weights[i];
+     }
+}
+  Double_t *GetWeightsPositive() const {return fWeightsPositive;}
+  void SetWeightsNegative(Double_t* weights){
+     for (Int_t i = 0; i<AliPID::kSPECIES; i++) {
+         fWeightsNegative[i] = weights[i];
+     }
+     }
+  Double_t *GetWeightsNegative() const {return fWeightsNegative;}
+  void SetBayesianStrategy(Int_t strat) {fBayesianStrategy=strat;}
+  Int_t GetBayesianStrategy() const {return fBayesianStrategy;}
+  
+  enum EBayesianStrategy {
+     kBayesMomentum,
+     kBayesWeight,
+     kBayesWeightNoFilter,
+     kBayesSimple
+  };
+
+  
+  enum EBayesianCondition {
+     kMaxProb,
+     kAbovePrior,
+     kThreshold
+  };
+  
+  void SetBayesianCondition(Int_t cond) {fBayesianCondition=cond;}
+  Int_t GetBayesianCondition() const {return fBayesianCondition;}
+  void SetCombPID(Bool_t CombPID){fCombPID=CombPID;}
+  Bool_t GetCombPID() const {return fCombPID;}
+  void SetBayesProbThreshold(Double_t thresh){fProbThreshold=thresh;}
+  Double_t GetBayesProbThreshold() const {return fProbThreshold;}
+  
 
  protected:
+  
   Int_t IsSelectedKF(AliAODRecoDecayHF2Prong* d,AliAODEvent* aod) const;
 
   Bool_t fUseSpecialCuts;  // flag to switch on/off special cuts
   Bool_t fLowPt;           // flag to switch on/off different pid for low pt D0
   Bool_t fDefaultPID;      // flag to switch on/off the default pid
+  
   Bool_t fUseKF;           // flag to switch on/off D0 selection via KF 
   Double_t fPtLowPID;      // transverse momentum below which the strong PID is applied
   Double_t fPtMaxSpecialCuts; // transverse momentum below which the special cuts are applied
+  
                               //  if set to zero, used for all pt
   Double_t  fmaxPtrackForPID; // max momentum for applying PID
 
-  ClassDef(AliRDHFCutsD0toKpi,8);  // class for cuts on AOD reconstructed D0->Kpi
+  Bool_t fCombPID;             //switch for Bayesian
+  Int_t fnSpecies;   //number of species (used only for array declaration)
+  Double_t* fWeightsPositive; //[fnSpecies] Bayesian weights for positive track
+  Double_t* fWeightsNegative; //[fnSpecies] Bayesian weights for negative track
+
+  Double_t fProbThreshold; //Probability threshold for kaon to be accepted in Bayesian method (only applied if fBayesianCondition==kThreshold)
+  
+  Int_t fBayesianStrategy;    // Switch for which Bayesian PID strategy to use
+  Int_t fBayesianCondition;   //Switch for conition applied to kaons
+
+  ClassDef(AliRDHFCutsD0toKpi,11);  // class for cuts on AOD reconstructed D0->Kpi
 };
 
 #endif