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