]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSVertexer3DTapan.h
In Open() and GotoEvent() try the ESD operations first, fallback to run-loader.
[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 class AliITSgeom;
31
32 class AliITSVertexer3DTapan : public AliITSVertexer {
33 public:
34   AliITSVertexer3DTapan(Int_t n=10000):fITSgeom(0),
35     fX1(n),fY1(n),fZ1(n), fPhi1(n), ficlu1(0),
36     fX2(n),fY2(n),fZ2(n), fPhi2(n), ficlu2(0) {;}
37   AliITSVertexer3DTapan(const AliITSgeom *g, Int_t n=10000): fITSgeom(g),
38     fX1(n),fY1(n),fZ1(n), fPhi1(n), ficlu1(0),
39     fX2(n),fY2(n),fZ2(n), fPhi2(n), ficlu2(0) {;}
40   virtual ~AliITSVertexer3DTapan(){}
41   virtual AliESDVertex *FindVertexForCurrentEvent(TTree *cTree);
42   virtual void PrintStatus() const {}
43
44 protected:
45   void LoadClusters(TTree *cTree);
46   void CalculatePhi(Float_t fx, Float_t fy, Float_t & phi);
47   void CalculateVertex3d1(Double_t pos[3], Float_t cuts[3], Int_t &ncontr);
48   void CalculateVertex3d2(Double_t pos[3], Float_t cuts[3], Int_t &ncontr, Double_t sigpos[3]);
49   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;
50
51 private:
52   AliITSVertexer3DTapan(AliITSVertexer3DTapan &);
53   AliITSVertexer3DTapan& operator=(const AliITSVertexer3DTapan &);
54
55   const AliITSgeom *fITSgeom;   //the ITS geometry  
56
57   TArrayD fX1;     // X position of cluster on layer 1 of ITS
58   TArrayD fY1;     // Y position of cluster on layer 1 of ITS
59   TArrayD fZ1;     // Z position of cluster on layer 1 of ITS
60   TArrayD fPhi1;   // Phi position of cluster on layer 1 of ITS
61   Int_t   ficlu1;   // Number of clusters on layer 1 of ITS
62    
63   TArrayD fX2;      // X position of cluster on layer 2 of ITS
64   TArrayD fY2;      // Y position of cluster on layer 2 of ITS
65   TArrayD fZ2;      // Z position of cluster on layer 2 of ITS
66   TArrayD fPhi2;    // Phi position of cluster on layer 2 of ITS
67   Int_t   ficlu2;    // Number of clusters on layer 2 of ITS
68    
69   ClassDef(AliITSVertexer3DTapan,2);
70 };
71
72 #endif