05991370729e91f45aca0061e6a438efda7bec87
[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 AliITS;
17 class TH1F; 
18 class TArrayF;
19
20 class AliITSVertexerPPZ : public AliITSVertexer {
21
22  public:
23   AliITSVertexerPPZ();
24   AliITSVertexerPPZ(TString fn, Float_t x0=0., Float_t y0=0.);  // standard constructor 
25   virtual ~AliITSVertexerPPZ(); // destructor
26   virtual AliESDVertex* FindVertexForCurrentEvent(Int_t event);
27   virtual void FindVertices();
28   virtual Float_t GetZFound() const {return fZFound;}
29   virtual Float_t GetZsig() const {return fZsig;}
30   virtual void PrintStatus() const;
31   virtual void SetDiffPhiMax(Float_t pm = 0.05){fDiffPhiMax = pm;}
32   virtual void SetFirstLayerModules(Int_t m1 = 0, Int_t m2 = 79){fFirstL1 = m1; fLastL1 = m2;}
33   virtual void SetSecondLayerModules(Int_t m1 = 80, Int_t m2 = 239){fFirstL2 = m1; fLastL2 = m2;}
34   virtual void SetWindow(Float_t w=3.){fWindow = w;}
35   static Float_t Curv(Double_t x1,Double_t y1, Double_t x2,Double_t y2,
36                        Double_t x3,Double_t y3); 
37
38  private:
39   void EvalZ(TH1F *hist,Int_t sepa, Int_t ncoinc, TArrayF *zval);
40
41  protected:
42   Int_t fFirstL1;          // first module of the first pixel layer
43   Int_t fLastL1;           // last module of the first pixel layer
44   Int_t fFirstL2;          // first module of the second pixel layer
45   Int_t fLastL2;           // last module of the second pixel layer
46   Float_t fDiffPhiMax;     // Maximum delta phi allowed among corr. pixels
47   Float_t fX0;             // Nominal x coordinate of the vertex
48   Float_t fY0;             // Nominal y coordinate of the vertex
49   AliITS *fITS;            //! pointer to the AliITS object
50   Float_t fZFound;         //! found value for the current event
51   Float_t fZsig;           //! RMS of Z
52   Float_t fWindow;         // window width for Z search in mm (3 mm by def.)
53
54
55   ClassDef(AliITSVertexerPPZ,2);
56 };
57
58 #endif