add getter to cut on n cells
[u/mrichter/AliRoot.git] / ITS / AliITSVertexer3DTapan.h
1 #ifndef ALIITSVERTEXER3DTAPAN_H
2 #define ALIITSVERTEXER3DTAPAN_H
3
4 /*  See cxx source for full Copyright notice */
5
6
7 //-------------------------------------------------------------------------
8 //                          Class AliITSVertexer3DTapan
9 //   This is a class for the 3d vertex finding
10 //
11 //    Origin: Tapan Nayak, VECC-CERN, Tapan.Nayak@cern.ch
12 //-------------------------------------------------------------------------
13
14
15
16 //////////////////////////////////////////////////////////////////////////
17 //                                                                      //
18 //                        AliITSVertexer3DTapan                         //
19 //                                                                      //
20 //           Implementation of a 3D vertex finder based on              //
21 //           SPD clusters.                                              //
22 //                                                                      //
23 //////////////////////////////////////////////////////////////////////////
24
25 #include <TArrayD.h>
26 #include "AliITSVertexer.h"
27
28 class TTree;
29 class AliESDVertex;
30
31 class AliITSVertexer3DTapan : public AliITSVertexer {
32 public:
33   AliITSVertexer3DTapan(Int_t n=10000):
34     fX1(n),fY1(n),fZ1(n), fPhi1(n), ficlu1(0),
35     fX2(n),fY2(n),fZ2(n), fPhi2(n), ficlu2(0) {;}
36   virtual ~AliITSVertexer3DTapan(){}
37   virtual AliESDVertex *FindVertexForCurrentEvent(TTree *cTree);
38   virtual void PrintStatus() const {}
39
40 protected:
41   void LoadClusters(TTree *cTree);
42   void CalculatePhi(Float_t fx, Float_t fy, Float_t & phi);
43   void CalculateVertex3d1(Double_t pos[3], Float_t cuts[3], Int_t &ncontr);
44   void CalculateVertex3d2(Double_t pos[3], Float_t cuts[3], Int_t &ncontr, Double_t sigpos[3]);
45   void CalculateLine(Double_t P1[4], Double_t P2[4], Double_t P3[4], Double_t P4[4], Double_t Pa[3], Double_t Pb[3]) const;
46
47 private:
48   AliITSVertexer3DTapan(AliITSVertexer3DTapan &);
49   AliITSVertexer3DTapan& operator=(const AliITSVertexer3DTapan &);
50
51   TArrayD fX1;     // X position of cluster on layer 1 of ITS
52   TArrayD fY1;     // Y position of cluster on layer 1 of ITS
53   TArrayD fZ1;     // Z position of cluster on layer 1 of ITS
54   TArrayD fPhi1;   // Phi position of cluster on layer 1 of ITS
55   Int_t   ficlu1;   // Number of clusters on layer 1 of ITS
56    
57   TArrayD fX2;      // X position of cluster on layer 2 of ITS
58   TArrayD fY2;      // Y position of cluster on layer 2 of ITS
59   TArrayD fZ2;      // Z position of cluster on layer 2 of ITS
60   TArrayD fPhi2;    // Phi position of cluster on layer 2 of ITS
61   Int_t   ficlu2;    // Number of clusters on layer 2 of ITS
62    
63   ClassDef(AliITSVertexer3DTapan,3);
64 };
65
66 #endif