d33dc8be5b8f3bca9892d55ef8ec6f4dcffa8692
[u/mrichter/AliRoot.git] / ITS / AliITSVertexerPPZ.h
1 #ifndef ALIITSVERTEXERPPZ_H
2 #define ALIITSVERTEXERPPZ_H
3 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7 #include <AliITSVertexer.h>
8
9 /////////////////////////////////////////////////////////////////////
10 //                                                                 //
11 // Class for primary vertex Z coordinate reconstruction            //
12 // Optimized for p-p events (in general: low multiplicity events)  //
13 //                                                                 //
14 /////////////////////////////////////////////////////////////////////
15
16 class TH1F; 
17 class TArrayF;
18
19 class AliITSVertexerPPZ : public AliITSVertexer {
20
21  public:
22   AliITSVertexerPPZ();
23   AliITSVertexerPPZ(TString fn, Float_t x0=0., Float_t y0=0.);  // standard constructor 
24   virtual ~AliITSVertexerPPZ(); // destructor
25   virtual AliESDVertex* FindVertexForCurrentEvent(Int_t event);
26   virtual void FindVertices();
27   virtual Float_t GetZFound() const {return fZFound;}
28   virtual Float_t GetZsig() const {return fZsig;}
29   virtual void PrintStatus() const;
30   virtual void SetDiffPhiMax(Float_t pm = 0.05){fDiffPhiMax = pm;}
31   virtual void SetFirstLayerModules(Int_t m1 = 0, Int_t m2 = 79){fFirstL1 = m1; fLastL1 = m2;}
32   virtual void SetSecondLayerModules(Int_t m1 = 80, Int_t m2 = 239){fFirstL2 = m1; fLastL2 = m2;}
33   virtual void SetWindow(Float_t w=3.){fWindow = w;}
34   static Float_t Curv(Double_t x1,Double_t y1, Double_t x2,Double_t y2,
35                        Double_t x3,Double_t y3); 
36
37
38  protected:
39   Int_t fFirstL1;          // first module of the first pixel layer
40   Int_t fLastL1;           // last module of the first pixel layer
41   Int_t fFirstL2;          // first module of the second pixel layer
42   Int_t fLastL2;           // last module of the second pixel layer
43   Float_t fDiffPhiMax;     // Maximum delta phi allowed among corr. pixels
44   Float_t fX0;             // Nominal x coordinate of the vertex
45   Float_t fY0;             // Nominal y coordinate of the vertex
46   //AliITS *fITS;            //! pointer to the AliITS object
47   Float_t fZFound;         //! found value for the current event
48   Float_t fZsig;           //! RMS of Z
49   Float_t fWindow;         // window width for Z search in mm (3 mm by def.)
50
51  private:
52   void EvalZ(TH1F *hist,Int_t sepa, Int_t ncoinc, TArrayF *zval);
53
54   ClassDef(AliITSVertexerPPZ,3);
55 };
56
57 #endif