FindROOT + dictionary generating macro
[u/mrichter/AliRoot.git] / CORRFW / AliCFTrackCutPid.h
CommitLineData
563113d0 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16//
17// author : A. Mastroserio
18//
19
20#ifndef ALICFTRACKCUTPID_H
21#define ALICFTRACKCUTPID_H
22
23#include "AliCFCutBase.h"
24#include "AliPID.h"
25#include "AliESDtrack.h"
bc6176fb 26#include "AliAODTrack.h"
563113d0 27#include <TString.h>
28#include <TObject.h>
29#include <TH1F.h>
30#include <TF1.h>
31//__________________________________________________________________________________
32// CUT ON TRACK PID
33//__________________________________________________________________________________
34class AliESDtrack;
35
36class AliCFTrackCutPid : public AliCFCutBase
37{
38 public :
39 AliCFTrackCutPid() ;
40 AliCFTrackCutPid(const Char_t* name, const Char_t* title) ;
41 AliCFTrackCutPid(const AliCFTrackCutPid& c) ;
42 AliCFTrackCutPid& operator=(const AliCFTrackCutPid& c) ;
43
44 virtual ~AliCFTrackCutPid();
45
46 enum EDetType {kITS = 0, kTPC, kTRD, kTOF, kHMPID=4, kNoDet=-11};
47 enum EDetNum {kNdets=5};
48 enum ENoId {kCheckProb = -10, kCheckResp = -11, kDetRestr = -12};
49
50 // Setters
51
52 void SetDetectors(TString dets);
53 void SetPriors(Double_t r[AliPID::kSPECIES]);
54 void SetProbabilityCut(Double_t cut) {fCut=cut;}
55 void SetParticleType(Int_t iType, Bool_t tocombine) {fgParticleType=iType; fgIsComb=tocombine;}
56 void SetMinDiffResp(Bool_t check, Double_t mindiff) {fCheckResponse=check; fMinDiffResponse=mindiff;}
57 void SetMinDiffProb(Bool_t check, Double_t mindiff) {fCheckSelection=check; fMinDiffProbability=mindiff;}
58 void SetPriorFunctions(TF1 *func[AliPID::kSPECIES]);
59 void SetANDstatus(TString dets);
60 void SetDetectorProbabilityRestriction(TString det, Int_t iPart, Double_t upperprob);
61 void SetHistogramAxis(Int_t nbins, Double_t xmin, Double_t xmax) {fNbins=nbins; fXmin = xmin; fXmax = xmax;}
bc6176fb 62 void SetAODmode(Bool_t isaod = kFALSE) {fgIsAOD=isaod;}
39f34d57 63 void SetProbThreshold(Double_t value) {fProbThreshold=value;}
bc6176fb 64
563113d0 65 //returns the track identification number
66 Int_t GetID(ULong_t status[kNdets+1], Double_t pid[kNdets+1][AliPID::kSPECIES]) const;
bc6176fb 67 //returns the track identification number in caso of an AliAODTrack
68 Int_t GetAODID(AliAODTrack *aodtrack) const;
563113d0 69
bc6176fb 70
563113d0 71 //main
9eeae5d5 72 virtual Bool_t IsSelected(TObject *track);
73 Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
563113d0 74 //histos are added to a list
107a3100 75 void AddQAHistograms(TList *qalist);
563113d0 76
77
78 private:
56143784 79
80 //loads the track detector responses and the track status
81 void TrackInfo(const AliESDtrack *pTrk,ULong_t status[kNdets+1], Double_t pid[kNdets+1][AliPID::kSPECIES]) const;
82
83 //identifies the track
84 Int_t Identify(Double_t pid[AliPID::kSPECIES]) const;
85
86 //identifies the track filling the QA histograms
87 Int_t IdentifyQA(const Double_t pid[AliPID::kSPECIES],Int_t idets) const;
88
563113d0 89 void SetPPriors(AliESDtrack *pTrk);
56143784 90 ULong_t StatusForAND(ULong_t status[kNdets+1]) const;
563113d0 91 void InitialiseHisto();
56143784 92 void DefineHistograms(); // histo booking
563113d0 93 Bool_t Check(const Double_t *p, Int_t iPsel, Double_t minDiff) const;
94 void CombPID(ULong_t status[kNdets+1],Double_t pid[kNdets+1][AliPID::kSPECIES],Double_t *combpid) const;
95
56143784 96 Double_t fCut; // probability cut
563113d0 97 Double_t fMinDiffResponse; // minimum difference between detector resposes
98 Double_t fMinDiffProbability; // minimum difference between probability values
99 Int_t fgParticleType; // requested particle type
100 Bool_t fgIsComb; // flag for the combined pid
56143784 101 Bool_t fgIsAOD; // flag for AOD QA histograms
563113d0 102 Bool_t fCheckResponse; // flag to check the minimum difference of det responsess
103 Bool_t fCheckSelection; // flag to check the minimum difference of probabilities
56143784 104 Bool_t fIsPpriors; // flag for momentum dependent priors
105 Bool_t fIsDetAND; // flag for AND with multiple detectors
106 Double_t fXmin; // x min QA histo
107 Double_t fXmax; // x max QA histo
108 Int_t fNbins; // n bins QA histo
109 Int_t fDetRestr; // id of the detector for the restriction
110 Int_t fiPartRestr; // id of the particle for the restriction
111 Double_t fDetProbRestr; // probability restriction value
39f34d57 112 Double_t fProbThreshold; // if different from 0, the assigned PID will be set to
113 // fgParticleType if the probability is larger than this threshold,
114 // regardless it is the highest or not (!)
563113d0 115
00a38d07 116 Double_t fPriors[AliPID::kSPECIES]; // a priori concentrations
56143784 117 TF1 *fPriorsFunc[AliPID::kSPECIES]; // momentum dependent priors
118 Bool_t fDets[kNdets]; // boolean(s) corresponding to the chosen detector(s)
119 Bool_t fDetsInAnd[kNdets]; // detector to be in AND for the combined PID
120 TH1F *fhResp[kNdets][AliPID::kSPECIES]; // QA histo
121 TH1F *fhProb[kNdets][AliPID::kSPECIES]; // QA histo
122 TH1F *fhCombResp[AliPID::kSPECIES]; // QA histo
123 TH1F *fhCombProb[AliPID::kSPECIES]; // QA histo
563113d0 124
125 ClassDef(AliCFTrackCutPid,1);
126};
127#endif
128