ROOT logo
#ifndef ALIPIDCOMBINED_H
#define ALIPIDCOMBINED_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//---------------------------------------------------------------//
//        Base class for combining PID response of               //
//        of different detectors                                 //
//        and compute Bayesian probabilities                     //
//                                                               //
//   Origin: Pietro Antonioli, INFN-BO, pietro.antonioli@cern.ch //
//                                                               //
//---------------------------------------------------------------//



#include <TNamed.h>
#include "AliPID.h"
#include "AliPIDResponse.h"
#include <TH1F.h>
#include <TH2F.h>

//class TH1;
class AliPIDResponse;

class AliPIDCombined : public TNamed {
public:
  AliPIDCombined();
  AliPIDCombined(const TString& name, const TString& title);
  virtual ~AliPIDCombined();

  void SetDetectorMask(Int_t mask) {fDetectorMask=mask;}
  Int_t GetDetectorMask() const {return fDetectorMask;}
  void SetRejectMismatchMask(Int_t mask) {fRejectMismatchMask=mask;}
  Int_t GetRejectMismatchMask() const {return fRejectMismatchMask;}
  void SetEnablePriors(Bool_t flag) {fEnablePriors=flag;}
  Bool_t GetEnablePriors() const {return fEnablePriors;}
  void SetPriorDistribution(AliPID::EParticleType type,TH1F *prior);
  //  const TH1* GetPriorDistribution(AliPID::EParticleType type) const {return (TH1*)fPriorsDistributions[type];}
  TH1* GetPriorDistribution(AliPID::EParticleType type)  const {return (TH1*)fPriorsDistributions[type];}
  
  void GetPriors(const AliVTrack *track,Double_t* p,const AliPIDResponse *response,UInt_t detUsed) const;
  
  void SetDefaultTPCPriors();
	
  UInt_t ComputeProbabilities(const AliVTrack *track, const AliPIDResponse *response, Double_t* bayesProbabilities,Double_t* priorsOwn=NULL) const;
  void SetSelectedSpecies(Int_t selectedSpecies) {fSelectedSpecies = selectedSpecies;}
  Int_t GetSelectedSpecies() const {return fSelectedSpecies;}

  static Float_t GetTOFmismatchProb() {return fTOFmismProb;}

protected:
  void GetPriors(const AliVTrack *track,Double_t* priors,Float_t centrality=-1,Bool_t isPPB=kFALSE) const;
  void ComputeBayesProbabilities(Double_t* bayesProbabilities,const Double_t* probDensity, const Double_t* priors, Double_t* probDensityMism=NULL) const;
  void SetCombinedStatus(const AliPIDResponse::EDetPidStatus status,UInt_t *mask, const AliPIDResponse::EDetCode bit) const;
  void SetCombinedStatus(const AliPIDResponse::EDetPidStatus status,UInt_t *mask, const AliPIDResponse::EDetCode bit, Double_t* p,const Float_t probMis) const;

private:
  AliPIDCombined(const AliPIDCombined&);
  AliPIDCombined &operator=(const AliPIDCombined&);

  Int_t fDetectorMask;       // Detectors included in combined pid
  Int_t fRejectMismatchMask; // Detectors set return flat prob. if mismatch detected 
  Bool_t fEnablePriors;      // Enable bayesian PID (if kFALSE priors set flat)
  Int_t fSelectedSpecies;    // Number of selected species to study
  TH1F *fPriorsDistributions[AliPID::kSPECIESC]; // priors
  Bool_t fUseDefaultTPCPriors; // switch to use Defaul TPC Priors
  static TH2F *fDefaultPriorsTPC[AliPID::kSPECIESC]; // Default priors for TPC tracks
  static TH2F *fDefaultPriorsTPCpPb[AliPID::kSPECIESC]; // Default priors for TPC tracks in pPb
  static Float_t fTOFmismProb; //TOF mismatch probability

  ClassDef(AliPIDCombined, 4);   // Combined PID using priors
};

#endif
 AliPIDCombined.h:1
 AliPIDCombined.h:2
 AliPIDCombined.h:3
 AliPIDCombined.h:4
 AliPIDCombined.h:5
 AliPIDCombined.h:6
 AliPIDCombined.h:7
 AliPIDCombined.h:8
 AliPIDCombined.h:9
 AliPIDCombined.h:10
 AliPIDCombined.h:11
 AliPIDCombined.h:12
 AliPIDCombined.h:13
 AliPIDCombined.h:14
 AliPIDCombined.h:15
 AliPIDCombined.h:16
 AliPIDCombined.h:17
 AliPIDCombined.h:18
 AliPIDCombined.h:19
 AliPIDCombined.h:20
 AliPIDCombined.h:21
 AliPIDCombined.h:22
 AliPIDCombined.h:23
 AliPIDCombined.h:24
 AliPIDCombined.h:25
 AliPIDCombined.h:26
 AliPIDCombined.h:27
 AliPIDCombined.h:28
 AliPIDCombined.h:29
 AliPIDCombined.h:30
 AliPIDCombined.h:31
 AliPIDCombined.h:32
 AliPIDCombined.h:33
 AliPIDCombined.h:34
 AliPIDCombined.h:35
 AliPIDCombined.h:36
 AliPIDCombined.h:37
 AliPIDCombined.h:38
 AliPIDCombined.h:39
 AliPIDCombined.h:40
 AliPIDCombined.h:41
 AliPIDCombined.h:42
 AliPIDCombined.h:43
 AliPIDCombined.h:44
 AliPIDCombined.h:45
 AliPIDCombined.h:46
 AliPIDCombined.h:47
 AliPIDCombined.h:48
 AliPIDCombined.h:49
 AliPIDCombined.h:50
 AliPIDCombined.h:51
 AliPIDCombined.h:52
 AliPIDCombined.h:53
 AliPIDCombined.h:54
 AliPIDCombined.h:55
 AliPIDCombined.h:56
 AliPIDCombined.h:57
 AliPIDCombined.h:58
 AliPIDCombined.h:59
 AliPIDCombined.h:60
 AliPIDCombined.h:61
 AliPIDCombined.h:62
 AliPIDCombined.h:63
 AliPIDCombined.h:64
 AliPIDCombined.h:65
 AliPIDCombined.h:66
 AliPIDCombined.h:67
 AliPIDCombined.h:68
 AliPIDCombined.h:69
 AliPIDCombined.h:70
 AliPIDCombined.h:71
 AliPIDCombined.h:72
 AliPIDCombined.h:73
 AliPIDCombined.h:74
 AliPIDCombined.h:75