]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/hfe/AliHFEV0pid.h
Coverity fixes (Ivana, Markus)
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEV0pid.h
CommitLineData
27de2dfb 1#ifndef ALIHFEV0PID_H
2#define ALIHFEV0PID_H
3
70da6c5a 4/**************************************************************************
5* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6* *
7* Author: The ALICE Off-line Project. *
8* Contributors are mentioned in the code where appropriate. *
9* *
10* Permission to use, copy, modify and distribute this software and its *
11* documentation strictly for non-commercial purposes is hereby granted *
12* without fee, provided that the above copyright notice appears in all *
13* copies and that both the copyright notice and this permission notice *
14* appear in the supporting documentation. The authors make no claims *
15* about the suitability of this software for any purpose. It is *
16* provided "as is" without express or implied warranty. *
17**************************************************************************/
27de2dfb 18
19/* $Id$ */
20
70da6c5a 21//
22// Utility class for V0 PID
23// Provides smaples of electrons, pions and protons
24// More information can be found in the implementation file
25//
70da6c5a 26#ifndef ROOT_TObject
27#include <TObject.h>
28#endif
29
70da6c5a 30class TObjArray;
31class TList;
faee3b18 32class TString;
70da6c5a 33
34class AliESDv0;
35class AliESDtrack;
36class AliKFParticle;
37class AliKFVertex;
38class AliVEvent;
39class AliVTrack;
3a72645a 40class AliMCEvent;
70da6c5a 41
faee3b18 42class AliHFEV0cuts;
43class AliHFEcollection;
44
70da6c5a 45class AliHFEV0pid : public TObject{
46 public:
70da6c5a 47 AliHFEV0pid();
48 ~AliHFEV0pid();
49
faee3b18 50 void Process(AliVEvent * const inputEvent);
70da6c5a 51 Int_t ProcessV0(TObject *v0);
faee3b18 52 void Flush();
70da6c5a 53
faee3b18 54 void InitQA();
55 TList *GetListOfQAhistograms();
70da6c5a 56
57 TObjArray *GetListOfElectrons() const { return fElectrons; }
58 TObjArray *GetListOfPionsK0() const { return fPionsK0; }
59 TObjArray *GetListOfPionsL() const { return fPionsL; }
60 TObjArray *GetListOfKaons() const { return fKaons; }
61 TObjArray *GetListOfProtons() const { return fProtons; }
62
faee3b18 63 Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); }
64 Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); }
65 void SetAODanalysis(Bool_t isAOD = kTRUE) { SetBit(kAODanalysis, isAOD); };
66 void SetESDanalysis(Bool_t isESD = kTRUE) { SetBit(kAODanalysis, !isESD); };
70da6c5a 67
3a72645a 68 void SetMCEvent(AliMCEvent* const ev) { fMCEvent = ev; };
69
faee3b18 70 protected:
70da6c5a 71 enum{
72 kAODanalysis = BIT(14)
faee3b18 73 };
3a72645a 74
75 Int_t PreselectV0(AliESDv0 * const v0, Int_t idMC);
76
77 void ArmenterosPlotMC(AliESDv0 * const v0, Int_t idMC);
70da6c5a 78 Bool_t IsGammaConv(TObject *v0);
79 Bool_t IsK0s(TObject *v0);
80 Bool_t IsPhi(TObject *v0);
faee3b18 81 Bool_t IsLambda(TObject *v0);
82 TList *GetV0pidQA();
70da6c5a 83
3a72645a 84 Int_t IdentifyV0(TObject *v0, Int_t d[2]);
85
e97c2edf 86 void BenchmarkV0finder();
87
faee3b18 88 private:
70da6c5a 89 class AliHFEV0pidTrackIndex{
faee3b18 90 public:
91 AliHFEV0pidTrackIndex();
92 ~AliHFEV0pidTrackIndex();
93 void Init(Int_t capacity);
94 void Add(Int_t index, Int_t species);
95 Bool_t Find(Int_t index) const;
96 Bool_t Find(Int_t index, Int_t species) const;
97 Int_t GetNumberOfElectrons() const { return fNElectrons; };
98 Int_t GetNumberOfPionsK0() const { return fNPionsK0; };
99 Int_t GetNumberOfPionsL() const { return fNPionsL; };
100 Int_t GetNumberOfKaons() const { return fNKaons; };
101 Int_t GetNumberOfProtons() const { return fNProtons; };
102 void Flush();
103
104 private:
105 AliHFEV0pidTrackIndex(const AliHFEV0pidTrackIndex &ref);
106 AliHFEV0pidTrackIndex &operator=(const AliHFEV0pidTrackIndex &ref);
107 Int_t fNElectrons; // Number of identified electrons
108 Int_t fNPionsK0; // Number of identified pions from K0s
109 Int_t fNPionsL; // Lumber of identified pions from Lambda
110 Int_t fNKaons; // Number of identified kaons
111 Int_t fNProtons; // Number of identified protons
112 Int_t *fIndexElectron; // Indices of identified electrons
113 Int_t *fIndexPionK0; // Indices of identified pions from K0s
114 Int_t *fIndexPionL; // Indices of identified pions from Lambda
115 Int_t *fIndexKaon; // Indices of identified kaons
116 Int_t *fIndexProton; // Indices of identified protons
70da6c5a 117 };
70da6c5a 118 AliHFEV0pid(const AliHFEV0pid &ref);
119 AliHFEV0pid&operator=(const AliHFEV0pid &ref);
faee3b18 120
70da6c5a 121 AliVEvent *fInputEvent; // Input Event
3a72645a 122 Int_t fNtracks; // number of tracks in current event
123 AliMCEvent *fMCEvent; // MC evnet
124 Bool_t fMCon; // availability of MC information
70da6c5a 125 AliKFVertex *fPrimaryVertex; // Primary Vertex
126 TObjArray *fElectrons; // List of Electron tracks coming from Conversions
127 TObjArray *fPionsK0; // List of Pion tracks coming from K0
128 TObjArray *fPionsL; // List of Pion tracks coming from L
129 TObjArray *fKaons; // List of Kaon tracks from Phi decay
130 TObjArray *fProtons; // List of Proton Tracks coming from Lambdas
faee3b18 131
132 TObjArray *fGammas; // for MC purposes - list of found gammas
133 TObjArray *fK0s; // for MC purposes - list of found K0s
134 TObjArray *fLambdas; // for MC purposes - list of found lambdas
135 TObjArray *fAntiLambdas; // for MC purposes - list of found anti lambdas
136
70da6c5a 137 AliHFEV0pidTrackIndex *fIndices; // Container for Track indices
138 AliHFEcollection *fQA; // Collection of QA histograms
faee3b18 139 AliHFEV0cuts *fV0cuts; // separate class for studying and applying the V0 cuts
140 TList *fOutput; // collection list
70da6c5a 141
142 ClassDef(AliHFEV0pid, 1) // V0 PID Class
143
144};
145
70da6c5a 146#endif