Update of the HFE package
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEV0cuts.h
CommitLineData
c04c80e6 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 the V0 cuts - tuned to obtain clean eletron, pion and proton samples.
17// NOT suitable for V0 analysis
18//
c2690925 19#ifndef ALIHFEV0CUTS_H
20#define ALIHFEV0CUTS_H
21
c04c80e6 22#include "AliHFEcollection.h"
23
24class TList;
25
26class AliMCParticle;
27class AliVEvent;
28class AliMCEvent;
c2690925 29class AliESDtrack;
c04c80e6 30class AliESDv0;
31class AliKFVertex;
32class AliKFParticle;
33class AliVTrack;
34
35class AliHFEV0cuts : public TObject {
36 public:
e156c3bb 37 enum{
38 kBitQA = 1,
39 kBitQAmc = 2
40 };
3a72645a 41 enum{ // Reconstructed V0
42 kUndef = 0,
43 kRecoGamma = 1,
44 kRecoK0 = 2,
45 kRecoPhi = 3,
46 kRecoLambda = 4,
47 kRecoALambda = -4
48
49 };
50 enum{ // Identified Daughter particles
51 kRecoElectron = 0,
52 kRecoPionK0 = 1,
53 kRecoPionL = 2,
54 kRecoKaon = 3,
55 kRecoProton = 4
56 };
c04c80e6 57 AliHFEV0cuts();
58 ~AliHFEV0cuts();
59 AliHFEV0cuts(const AliHFEV0cuts &ref);
60 AliHFEV0cuts &operator=(const AliHFEV0cuts &ref);
61
62 void Init(const char* name);
63
64 void RunQA();
c04c80e6 65 void SetMCEvent(AliMCEvent* const mce) { fMCEvent = mce; };
66 void SetInputEvent(AliVEvent* const e) { fInputEvent = e; };
67 void SetPrimaryVertex(AliKFVertex* const v) { fPrimaryVertex = v; };
68
e156c3bb 69 TList* GetList() {
70 CLRBIT(fDestBits, kBitQA);
71 return fQA->GetList();
72 };
73 TList* GetListMC() {
74 CLRBIT(fDestBits, kBitQAmc);
75 return fQAmc->GetList();
76 };
c04c80e6 77
78 Bool_t TrackCutsCommon(AliESDtrack* track);
79 Bool_t V0CutsCommon(AliESDv0 *v0);
80 Bool_t GammaCuts(AliESDv0 *v0);
81 Bool_t K0Cuts(AliESDv0 *v0);
82 Bool_t LambdaCuts(AliESDv0 *v0, Bool_t &isLambda);
83
e156c3bb 84 void Armenteros(const AliESDv0 *v0, Float_t val[2]);
c04c80e6 85
e156c3bb 86 Double_t OpenAngle(AliESDv0 const *v0);//opening angle between V0 daughters; close to zero for conversions
87 Double_t PsiPair(const AliESDv0 *v0);
c04c80e6 88
e156c3bb 89 Bool_t CheckSigns(AliESDv0 const *v0);
3a72645a 90 Bool_t GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]);
91 Bool_t GetHelixCenter(AliESDtrack * const track, Double_t b,Int_t charge, Double_t center[2]);
92
93
94 // MC stuff
95 void SetCurrentV0id(Int_t id) { fCurrentV0id = id; };
96 void SetDaughtersID(Int_t d[2]) {fPdaughterPDG = d[0]; fNdaughterPDG = d[1]; };
c04c80e6 97
e156c3bb 98 AliKFParticle *CreateMotherParticle(AliVTrack const *pdaughter, AliVTrack const *ndaughter, Int_t pspec, Int_t nspec);
c04c80e6 99
100 private:
101 void Copy(TObject &ref) const;
102
103 private:
104
105 AliHFEcollection *fQA; // store QA cut histograms
3a72645a 106 AliHFEcollection *fQAmc; // store
c04c80e6 107 AliMCEvent *fMCEvent; // MC event
108 AliVEvent *fInputEvent; // Input Event
109 AliKFVertex *fPrimaryVertex; // primary vertex
110
3a72645a 111 Int_t fCurrentV0id; // MC flagged V0
112 Int_t fPdaughterPDG; // MC id of the positive daugeter
113 Int_t fNdaughterPDG; // MC id of the negative daugeter
114
e156c3bb 115 UInt_t fDestBits; // status bits for destructor
116
c04c80e6 117 ClassDef(AliHFEV0cuts, 1)
118};
119
120
121#endif