]>
Commit | Line | Data |
---|---|---|
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; | |
30 | class TPDGCode; | |
31 | class TParticle; | |
32 | class TFile; | |
33 | class TMultiLayerPerceptron; | |
34 | ||
35 | class AliAODTrack; | |
36 | class AliESDtrack; | |
37 | class AliMCEvent; | |
38 | class AliVEvent; | |
39 | class AliESDpid; | |
40 | class AliExternalTrackParam; | |
41 | class AliLog; | |
42 | ||
43 | class AliHFEV0pidMC; | |
44 | class AliHFEcollection; | |
45 | class AliHFEtrdPIDqa; | |
46 | class AliHFEV0pid; | |
47 | class AliHFEpidTRD; | |
48 | ||
49 | ||
50 | class AliHFEpidQA : public TObject{ | |
51 | public: | |
52 | AliHFEpidQA(); | |
53 | ~AliHFEpidQA(); | |
54 | AliHFEpidQA(const AliHFEpidQA &ref); | |
55 | AliHFEpidQA &operator=(const AliHFEpidQA &ref); | |
56 | virtual void Copy(TObject &o) const; | |
57 | ||
58 | void Init(); | |
59 | void Process(); | |
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 | ||
68 | void SetEvent(AliVEvent* const ev) { fEvent = ev; }; | |
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 | ||
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; } | |
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, | |
90 | kTOF = 3 | |
91 | }; | |
92 | ||
93 | TObjArray *MakeTrackList(const TObjArray *tracks) const; | |
94 | TObjArray *MakeCleanListElectrons(const TObjArray *tracks) const; | |
95 | ||
96 | void MakePurity(const TObjArray *tracks, Int_t species); | |
97 | TObjArray *MakeCleanListForTRD(const TObjArray * const track, Int_t species); | |
98 | void FillElectronLikelihoods(const TObjArray * const particles, Int_t species); | |
99 | void FillPIDresponse(const TObjArray * const particles, Int_t species); | |
100 | void FillIllumination(const TObjArray *const particles, Int_t species); | |
101 | void FillTPCinfo(AliESDtrack * const track, Int_t species); | |
102 | void RecalculateTRDpid(AliESDtrack *track, Double_t *pidProbs) const; | |
103 | void RecalculateTRDpid(AliAODTrack *track, Double_t *pidProbs) const; | |
104 | void CheckTenderV0pid(const 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 | const Int_t TRDmomBin(Double_t p); | |
109 | ||
110 | protected: | |
111 | Int_t GetMaxPID(const Double_t *pidProbs) const; | |
112 | Int_t GetPDG(Int_t index); | |
113 | ||
114 | private: | |
115 | AliVEvent *fEvent; // event pointer | |
116 | AliMCEvent *fMC; // MC Event | |
117 | AliHFEV0pid *fV0pid; // V0 PID | |
118 | AliHFEV0pidMC *fV0pidMC; // V0 MC PID | |
119 | AliHFEtrdPIDqa *fTRDpidQA; //! TRD PID QA object | |
120 | AliHFEcollection *fOutput; // Output container | |
121 | AliESDpid *fESDpid; // ESD PID object | |
122 | private: | |
123 | TFile *fNNref; // reference file for NN pid | |
124 | TMultiLayerPerceptron *fNet[11]; // reference networks | |
125 | ||
126 | ClassDef(AliHFEpidQA, 1) // PID QA tool | |
127 | }; | |
128 | #endif |