]>
Commit | Line | Data |
---|---|---|
70da6c5a | 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 | // Class for PID QA | |
17 | // Several studies done on clean samples of electrons, pions and kaons | |
18 | // coming from V0 PID | |
19 | // More information can be found in the implementation file | |
20 | // | |
21 | #ifndef ALIHFEPIDQA_H | |
22 | #define ALIHFEPIDQA_H | |
23 | ||
24 | #ifndef ROOT_TObject | |
25 | #include <TObject.h> | |
26 | #endif | |
27 | ||
28 | class TList; | |
29 | class TObjArray; | |
faee3b18 | 30 | class TPDGCode; |
31 | class TParticle; | |
32 | class TFile; | |
33 | class TMultiLayerPerceptron; | |
70da6c5a | 34 | |
35 | class AliAODTrack; | |
36 | class AliESDtrack; | |
70da6c5a | 37 | class AliMCEvent; |
70da6c5a | 38 | class AliVEvent; |
39 | class AliESDpid; | |
faee3b18 | 40 | class AliExternalTrackParam; |
41 | class AliLog; | |
42 | ||
70da6c5a | 43 | class AliHFEV0pidMC; |
faee3b18 | 44 | class AliHFEcollection; |
45 | class AliHFEtrdPIDqa; | |
46 | class AliHFEV0pid; | |
47 | class AliHFEpidTRD; | |
48 | ||
70da6c5a | 49 | |
50 | class AliHFEpidQA : public TObject{ | |
51 | public: | |
52 | AliHFEpidQA(); | |
53 | ~AliHFEpidQA(); | |
faee3b18 | 54 | AliHFEpidQA(const AliHFEpidQA &ref); |
55 | AliHFEpidQA &operator=(const AliHFEpidQA &ref); | |
56 | virtual void Copy(TObject &o) const; | |
70da6c5a | 57 | |
58 | void Init(); | |
faee3b18 | 59 | void Process(); |
70da6c5a | 60 | |
61 | TList *GetOutput(); | |
62 | TList *GetV0pidQA(); | |
63 | TList *GetV0pidMC(); | |
64 | ||
65 | Bool_t HasV0pidQA() const { return TestBit(kV0pidQA); }; | |
66 | Bool_t HasRecalculateTRDpid() const { return TestBit(kRecalculateTRDpid); }; | |
67 | ||
faee3b18 | 68 | void SetEvent(AliVEvent* const ev) { fEvent = ev; }; |
70da6c5a | 69 | void SetMCEvent(AliMCEvent * const mc) { fMC = mc; }; |
70 | void SetV0pidQA(Bool_t v0pidQA = kTRUE) { SetBit(kV0pidQA, v0pidQA); }; | |
71 | void SetRecalculateTRDpid(Bool_t recal = kTRUE) { SetBit(kRecalculateTRDpid, recal); }; | |
72 | ||
faee3b18 | 73 | void SetESDpid(AliESDpid* const pid) { fESDpid = pid; } |
74 | Float_t TOFbeta(AliESDtrack* const track) const; | |
75 | ||
76 | void CheckEvent(); | |
77 | void SetNNref(TFile *f) { fNNref = f; }; | |
78 | ||
79 | AliHFEtrdPIDqa *GetTRDQA() const { return fTRDpidQA; } | |
70da6c5a | 80 | |
81 | protected: | |
82 | enum{ | |
83 | kV0pidQA = BIT(14), | |
84 | kRecalculateTRDpid = BIT(15) | |
85 | }; | |
86 | enum{ // detectors for histogram names | |
87 | kITS = 0, | |
88 | kTPC = 1, | |
89 | kTRD = 2, | |
faee3b18 | 90 | kTOF = 3 |
70da6c5a | 91 | }; |
92 | ||
faee3b18 | 93 | TObjArray *MakeTrackList(TObjArray *tracks) const; |
94 | TObjArray *MakeCleanListElectrons(TObjArray *tracks) const; | |
95 | ||
70da6c5a | 96 | void MakePurity(TObjArray *tracks, Int_t species); |
faee3b18 | 97 | TObjArray *MakeCleanListForTRD(TObjArray * const track, Int_t species); |
98 | void FillElectronLikelihoods(TObjArray * const particles, Int_t species); | |
70da6c5a | 99 | void FillPIDresponse(TObjArray * const particles, Int_t species); |
faee3b18 | 100 | void FillIllumination(TObjArray *const particles, Int_t species); |
101 | void FillTPCinfo(AliESDtrack * const track, Int_t species); | |
70da6c5a | 102 | void RecalculateTRDpid(AliESDtrack *track, Double_t *pidProbs) const; |
103 | void RecalculateTRDpid(AliAODTrack *track, Double_t *pidProbs) const; | |
faee3b18 | 104 | void CheckTenderV0pid(TObjArray * const particles, Int_t species); |
105 | Int_t GetTenderV0pid(AliESDtrack * const track); | |
106 | ||
107 | Double_t TRDlikeTracklet(Int_t layer, AliESDtrack * const track, Double_t *likelihood); | |
108 | Int_t TRDmomBin(Double_t p); | |
70da6c5a | 109 | |
faee3b18 | 110 | protected: |
111 | Int_t GetMaxPID(Double_t *pidProbs) const; | |
112 | Int_t GetPDG(Int_t index); | |
113 | ||
70da6c5a | 114 | private: |
faee3b18 | 115 | AliVEvent *fEvent; // event pointer |
70da6c5a | 116 | AliMCEvent *fMC; // MC Event |
117 | AliHFEV0pid *fV0pid; // V0 PID | |
118 | AliHFEV0pidMC *fV0pidMC; // V0 MC PID | |
faee3b18 | 119 | AliHFEtrdPIDqa *fTRDpidQA; //! TRD PID QA object |
70da6c5a | 120 | AliHFEcollection *fOutput; // Output container |
faee3b18 | 121 | AliESDpid *fESDpid; // ESD PID object |
122 | private: | |
123 | TFile *fNNref; // reference file for NN pid | |
124 | TMultiLayerPerceptron *fNet[11]; // reference networks | |
70da6c5a | 125 | |
126 | ClassDef(AliHFEpidQA, 1) // PID QA tool | |
127 | }; | |
128 | #endif |