]>
Commit | Line | Data |
---|---|---|
c683985a | 1 | #ifndef ALIPIDCOMBINED_H |
2 | #define ALIPIDCOMBINED_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | //---------------------------------------------------------------// | |
7 | // Base class for combining PID response of // | |
8 | // of different detectors // | |
9 | // and compute Bayesian probabilities // | |
10 | // // | |
11 | // Origin: Pietro Antonioli, INFN-BO, pietro.antonioli@cern.ch // | |
12 | // // | |
13 | //---------------------------------------------------------------// | |
14 | ||
15 | ||
16 | ||
17 | #include <TNamed.h> | |
18 | #include "AliPID.h" | |
19 | #include "AliPIDResponse.h" | |
20 | #include <TH1F.h> | |
21 | #include <TH2F.h> | |
22 | ||
23 | //class TH1; | |
24 | class AliPIDResponse; | |
25 | ||
26 | class AliPIDCombined : public TNamed { | |
27 | public: | |
28 | AliPIDCombined(); | |
29 | AliPIDCombined(const TString& name, const TString& title); | |
30 | virtual ~AliPIDCombined(); | |
31 | ||
32 | void SetDetectorMask(Int_t mask) {fDetectorMask=mask;} | |
33 | Int_t GetDetectorMask() const {return fDetectorMask;} | |
34 | void SetRejectMismatchMask(Int_t mask) {fRejectMismatchMask=mask;} | |
35 | Int_t GetRejectMismatchMask() const {return fRejectMismatchMask;} | |
36 | void SetEnablePriors(Bool_t flag) {fEnablePriors=flag;} | |
37 | Bool_t GetEnablePriors() const {return fEnablePriors;} | |
38 | void SetPriorDistribution(AliPID::EParticleType type,TH1F *prior); | |
39 | // const TH1* GetPriorDistribution(AliPID::EParticleType type) const {return (TH1*)fPriorsDistributions[type];} | |
40 | TH1* GetPriorDistribution(AliPID::EParticleType type) const {return (TH1*)fPriorsDistributions[type];} | |
41 | ||
42 | void GetPriors(const AliVTrack *track,Double_t* p,const AliPIDResponse *response,UInt_t detUsed) const; | |
43 | ||
44 | void SetDefaultTPCPriors(); | |
45 | ||
506c1482 | 46 | UInt_t ComputeProbabilities(const AliVTrack *track, const AliPIDResponse *response, Double_t* bayesProbabilities,Double_t* priorsOwn=NULL) const; |
c683985a | 47 | void SetSelectedSpecies(Int_t selectedSpecies) {fSelectedSpecies = selectedSpecies;} |
48 | Int_t GetSelectedSpecies() const {return fSelectedSpecies;} | |
49 | ||
42fcc729 | 50 | static Float_t GetTOFmismatchProb() {return fTOFmismProb;} |
51 | ||
c683985a | 52 | protected: |
506c1482 | 53 | void GetPriors(const AliVTrack *track,Double_t* priors,Float_t centrality=-1,Bool_t isPPB=kFALSE) const; |
42fcc729 | 54 | void ComputeBayesProbabilities(Double_t* bayesProbabilities,const Double_t* probDensity, const Double_t* priors, Double_t* probDensityMism=NULL) const; |
c683985a | 55 | void SetCombinedStatus(const AliPIDResponse::EDetPidStatus status,UInt_t *mask, const AliPIDResponse::EDetCode bit) const; |
56 | void SetCombinedStatus(const AliPIDResponse::EDetPidStatus status,UInt_t *mask, const AliPIDResponse::EDetCode bit, Double_t* p,const Float_t probMis) const; | |
57 | ||
58 | private: | |
59 | AliPIDCombined(const AliPIDCombined&); | |
60 | AliPIDCombined &operator=(const AliPIDCombined&); | |
61 | ||
62 | Int_t fDetectorMask; // Detectors included in combined pid | |
63 | Int_t fRejectMismatchMask; // Detectors set return flat prob. if mismatch detected | |
64 | Bool_t fEnablePriors; // Enable bayesian PID (if kFALSE priors set flat) | |
65 | Int_t fSelectedSpecies; // Number of selected species to study | |
66 | TH1F *fPriorsDistributions[AliPID::kSPECIESC]; // priors | |
67 | Bool_t fUseDefaultTPCPriors; // switch to use Defaul TPC Priors | |
506c1482 | 68 | static TH2F *fDefaultPriorsTPC[AliPID::kSPECIESC]; // Default priors for TPC tracks |
69 | static TH2F *fDefaultPriorsTPCpPb[AliPID::kSPECIESC]; // Default priors for TPC tracks in pPb | |
42fcc729 | 70 | static Float_t fTOFmismProb; //TOF mismatch probability |
c683985a | 71 | |
506c1482 | 72 | ClassDef(AliPIDCombined, 4); // Combined PID using priors |
c683985a | 73 | }; |
74 | ||
75 | #endif |