a3b7a32f488627fca00b9ed48f0b765e694a52a2
[u/mrichter/AliRoot.git] / STEER / AliCascadeVertexer.h
1 #ifndef ALICASCADEVERTEXER_H
2 #define ALICASCADEVERTEXER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //------------------------------------------------------------------
7 //                    Cascade Vertexer Class
8 //          Reads V0s and tracks, writes out cascade vertices
9 //    Origin: Christian Kuhn, IReS, Strasbourg, christian.kuhn@ires.in2p3.fr
10 //------------------------------------------------------------------
11
12 #include "TObject.h"
13
14 class AliESD;
15 class TTree;
16 class AliESDv0;
17 class AliExternalTrackParam;
18
19 //_____________________________________________________________________________
20 class AliCascadeVertexer : public TObject {
21 public:
22   AliCascadeVertexer();
23   AliCascadeVertexer(const Double_t cuts[8]);
24   void SetCuts(const Double_t cuts[8]);
25   void SetVertex(Double_t *vtx) { fX=vtx[0]; fY=vtx[1]; fZ=vtx[2]; }
26
27   Int_t V0sTracks2CascadeVertices(AliESD *event);
28   Double_t PropagateToDCA(AliESDv0 *vtx,AliExternalTrackParam *trk,Double_t b);
29
30   void GetCuts(Double_t cuts[8]) const;
31   void GetVertex(Double_t *vtx) const { vtx[0]=fX; vtx[1]=fY; vtx[2]=fZ; }
32
33 private:
34   Double_t fChi2max;    // maximal allowed chi2 
35   Double_t fDV0min;     // min. allowed V0 impact parameter
36   Double_t fMassWin;    // window around the Lambda mass
37   Double_t fDBachMin;   // min. allowed bachelor impact parameter
38   Double_t fDCAmax;     // maximal allowed DCA between the V0 and the track 
39   Double_t fCPAmax;     // maximal allowed cosine of the cascade pointing angle
40   Double_t fRmin, fRmax;// max & min radii of the fiducial volume
41   
42   Double_t fX;            // X-coordinate of the primary vertex
43   Double_t fY;            // Y-coordinate of the primary vertex
44   Double_t fZ;            // Z-coordinate of the primary vertex
45
46   ClassDef(AliCascadeVertexer,1)  // cascade verterxer 
47 };
48
49 inline AliCascadeVertexer::AliCascadeVertexer() :
50   TObject(),
51   fChi2max(33.), 
52   fDV0min(0.015),
53   fMassWin(0.05),
54   fDBachMin(0.015),
55   fDCAmax(0.01),
56   fCPAmax(0.025), 
57   fRmin(0.5),
58   fRmax(2.5), 
59   fX(0),
60   fY(0),
61   fZ(0)
62 {
63 }
64
65 inline AliCascadeVertexer::AliCascadeVertexer(const Double_t cuts[8]) :
66   TObject(),
67   fChi2max(cuts[0]), 
68   fDV0min(cuts[1]),
69   fMassWin(cuts[2]),
70   fDBachMin(cuts[3]),
71   fDCAmax(cuts[4]),
72   fCPAmax(cuts[5]),
73   fRmin(cuts[6]),
74   fRmax(cuts[7]), 
75   fX(0),
76   fY(0),
77   fZ(0)
78 {
79 }
80
81 inline void AliCascadeVertexer::SetCuts(const Double_t cuts[8]) {
82   fChi2max=cuts[0]; 
83   fDV0min=cuts[1];   fMassWin=cuts[2]; fDBachMin=cuts[3];
84   fDCAmax=cuts[4];   fCPAmax=cuts[5];
85   fRmin=cuts[6];     fRmax=cuts[7]; 
86 }
87
88 inline void AliCascadeVertexer::GetCuts(Double_t cuts[8]) const {
89   cuts[0]=fChi2max; 
90   cuts[1]=fDV0min;   cuts[2]=fMassWin;  cuts[3]=fDBachMin;
91   cuts[4]=fDCAmax;   cuts[5]=fCPAmax;
92   cuts[6]=fRmin;     cuts[7]=fRmax; 
93 }
94
95 #endif
96