]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HMPID/AliHMPIDReconHTA.h
New class for Hidden Track Algorithm (HTA) devoted to the reconstruction of Cherenkov...
[u/mrichter/AliRoot.git] / HMPID / AliHMPIDReconHTA.h
1 #ifndef AliHMPIDReconHTA_h
2 #define AliHMPIDReconHTA_h
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //////////////////////////////////////////////////////////////////////////
8 //                                                                      //
9 // AliHMPIDReconHTA                                                     //
10 //                                                                      //
11 // HMPID class to perfom pattern recognition based on Hough transfrom   //
12 //                                                                      //
13 //////////////////////////////////////////////////////////////////////////
14
15
16 #include <TTask.h>        //base class
17 #include <TVector3.h>     //fields 
18
19 class TClonesArray; //CkovAngle()
20 class AliESDtrack;  //CkovAngle()
21 class TH2I;         //InitDatabase()
22 class AliHMPIDParam;//General pourpose
23
24 class AliHMPIDReconHTA : public TTask 
25 {
26 public : 
27              AliHMPIDReconHTA();
28     virtual ~AliHMPIDReconHTA();
29
30 // HTA hidden track algorithm
31   void     InitVars         (Int_t n);                                                             //init space for variables
32   void     DeleteVars       ();                                                                    //delete variables
33   void     InitDatabase     ();                                                                    //initialization of database
34   TH2I*    DBHTA            ()     {return fDatabase;}                                             //pointer for HTA database of rings
35   void     FillZeroChan     (TH2I *deconv);                                                        //complete the DB
36   Bool_t   CkovHiddenTrk    (AliESDtrack *pTrk,TClonesArray *pCluLst,Double_t nmean,Double_t qthre);//Pattern recognition without trackinf information
37   Bool_t   CluPreFilter     (TClonesArray *pClu               );                                   //Pre clustering filter to cut bkg clusters
38   Bool_t   DoRecHiddenTrk   (                                 );                                   //Calling to the fitted procedures
39   Bool_t   FindShape        (Double_t &thTrkRec,Double_t &phiTrkRec,Double_t &thetaCRec);          //Find shape of the ring
40   Bool_t   ShapeModel       (Int_t np,Double_t *phiphot,Double_t *dist,Double_t &xA,Double_t &xB,Double_t &phiStart);//initial shape model for the cluster candidates
41   Double_t VertParab        (Double_t x1,Double_t y1,Double_t x2, Double_t y2, Double_t x3, Double_t y3);//calculate the coord. of the min. for a parabole for 3 points
42   Bool_t   FitFree          (Double_t thTrkRec,Double_t phiTrkRec);                                //Fit (th,ph) of the track and ckovFit as result
43   void     SetNClu          (Int_t nclu                          ) {fNClu=nclu;}                   //Setter for # of clusters
44   void     SetClCk          (Int_t i,Bool_t what                 ) {fClCk[i]=what;}                //Setter for cluster flags 
45   void     SetCkovFit       (Double_t ckov                       ) {fCkovFit=ckov;}                //Setter for ckov fitted
46   void     SetCkovSig2      (Double_t rms                        ) {fCkovSig2=rms;}                //Setter for sigma2 ckov fitted
47   void     SetTrkFit        (Double_t th,Double_t ph             ) {fThTrkFit = th;fPhTrkFit = ph;}//Setter for (th,ph) of the track
48   void     SetRadXY         (Double_t  x,Double_t y              ) {fRadX = x;fRadY = y;}          //Setter for (th,ph) of the track
49   static void     FunMinPhot(Int_t&/* */,Double_t* /* */,Double_t &f,Double_t *par,Int_t iflag);   //Fit function to minimize thetaCer RMS/Sqrt(n) of n clusters
50   Int_t    IdxMip       ()const {return fIdxMip;}                                                  //Getter index of MIP
51   Double_t MipX         ()const {return fMipX;}                                                    //Getter of x MIP in LORS
52   Double_t MipY         ()const {return fMipY;}                                                    //Getter of y MIP in LORS
53   Double_t MipQ         ()const {return fMipQ;}                                                    //Getter of Q MIP
54   Double_t RadX         ()const {return fRadX;}                                                    //Getter of x at RAD in LORS
55   Double_t RadY         ()const {return fRadY;}                                                    //Getter of y at RAD in LORS
56   Int_t    NClu         ()const {return fNClu;}                                                    //Getter of cluster multiplicity
57   Double_t XClu         (Int_t i)const {return fXClu[i];}                                          //Getter of x clu
58   Double_t YClu         (Int_t i)const {return fYClu[i];}                                          //Getter of y clu
59   Bool_t   ClCk         (Int_t i)const {return fClCk[i];}                                          //Getter of cluster flags
60   Double_t CkovFit      ()const {return fCkovFit;}                                                 //Getter of ckov angle fitted
61   Double_t ThTrkFit     ()const {return fThTrkFit;}                                                //Getter of theta fitted of the track
62   Double_t PhTrkFit     ()const {return fPhTrkFit;}                                                //Getter of phi fitted of the track
63 //
64 protected:
65 // HTA hidden track algorithm
66   Double_t fMipX;                              //mip X position for Hidden Track Algorithm  
67   Double_t fMipY;                              //mip Y position for Hidden Track Algorithm
68   Double_t fMipQ;                              //mip Q          for Hidden Track Algorithm
69   Double_t fRadX;                              //rad X position for Hidden Track Algorithm  
70   Double_t fRadY;                              //rad Y position for Hidden Track Algorithm
71   Int_t    fIdxMip;                            //mip index in the clus list
72   Int_t    fNClu;                              //n clusters to fit
73   Double_t *fXClu;                             //container for x clus position
74   Double_t *fYClu;                             //container for y clus position
75   Bool_t   *fClCk;                             //flag if cluster is used in fitting
76   Double_t fThTrkFit;                          //theta fitted of the track
77   Double_t fPhTrkFit;                          //phi   fitted of the track
78   Double_t fCkovFit;                           //estimated ring Cherenkov angle
79   Double_t fCkovSig2;                          //estimated error^2 on ring Cherenkov angle
80   
81   AliHMPIDParam *fParam;                       //Pointer to AliHMPIDParam
82   static TH2I* fDatabase;                      //database for ring shapes
83 //
84   ClassDef(AliHMPIDReconHTA,0)
85 };
86
87 #endif // #ifdef AliHMPIDReconHTA_cxx
88