]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HMPID/AliHMPIDRecon.h
Call to HTA added.
[u/mrichter/AliRoot.git] / HMPID / AliHMPIDRecon.h
1 #ifndef AliHMPIDRecon_h
2 #define AliHMPIDRecon_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 // AliHMPIDRecon                                                         //
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 AliHMPIDParam;//general pourpose
22
23 class AliHMPIDRecon : public TTask 
24 {
25 public : 
26              AliHMPIDRecon();
27     virtual ~AliHMPIDRecon() {;} //dtor
28
29   void     InitVars     (Int_t n);                                                                 //init space for variables
30   void     DeleteVars   ();                                                                        //delete variables
31   void     CkovAngle    (AliESDtrack *pTrk,TClonesArray *pCluLst,Double_t nmean, Double_t qthre);  //reconstructed Theta Cerenkov
32   Bool_t   FindPhotCkov (Double_t cluX,Double_t cluY,Double_t &thetaCer,Double_t &phiCer    );     //find ckov angle for single photon candidate
33   Double_t FindRingCkov (Int_t iNclus                                                       );     //best ckov for ring formed by found photon candidates
34   Double_t FindRingArea (Double_t ckovAng                                                   )const;//estimated area of delta ring in cm^2 to weight Hough Transform
35   TVector2 IntWithEdge  (TVector2 p1,TVector2 p2                                            )const;//find intercection between plane and lines of 2 thetaC
36   Int_t    FlagPhot     (Double_t ckov                                                      );     //is photon ckov near most probable track ckov
37   Double_t HoughResponse(                                                                   );     //most probable track ckov angle
38   void     Propagate    (const TVector3  dir,      TVector3 &pos,Double_t z                 )const;//propagate photon alogn the line  
39   void     Refract      (      TVector3 &dir,                    Double_t n1,    Double_t n2)const;//refract photon on the boundary
40   TVector2 TracePhot    (Double_t ckovTh,Double_t ckovPh                                    )const;//trace photon created by track to PC 
41   TVector2 TraceForward (TVector3 dirCkov                                                   )const;//tracing forward a photon from (x,y) to PC
42   void     RecPhot      (TVector3 dirCkov,Double_t &thetaCer,Double_t &phiCer               );     //theta,phi cerenkov reconstructed
43   TVector2 GetMip       (                                                                   ) 
44                         {return fMipPos;}                                                          //mip coordinates
45   void     SetTrack     (Double_t xRad,Double_t yRad,Double_t theta,Double_t phi            )
46                                 {fTrkDir.SetMagThetaPhi(1,theta,phi);  fTrkPos.Set(xRad,yRad);}    //set track parameter at RAD
47   void     SetImpPC     (Double_t xPc,Double_t yPc                                          )
48                                 {fPc.Set(xPc,yPc);}                                                //set track impact to PC 
49   void     SetMip       (Double_t xmip,Double_t ymip                                        )
50                                 {fMipPos.Set(xmip,ymip);}                                          //set track impact to PC
51   Double_t SigLoc       (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to cathode segmetation
52   Double_t SigGeom      (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to unknown photon origin
53   Double_t SigCrom      (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to unknonw photon energy
54   Double_t Sigma2       (Double_t ckovTh,Double_t ckovPh                                    )const;//photon candidate sigma^2
55   enum ETrackingFlags {kMipDistCut=-9,kMipQdcCut=-5,kNoPhotAccept=-11};
56 //
57 protected:
58   Int_t     fPhotCnt;                           // counter of photons candidate
59   Int_t    *fPhotFlag;                          // flags of photon candidates
60   Double_t *fPhotCkov;                          // Ckov angles of photon candidates, [rad]
61   Double_t *fPhotPhi;                           // phis of photons candidates, [rad]
62   Double_t *fPhotWei;                           // weigths of photon candidates
63   Double_t  fCkovSigma2;                        // sigma2 of the reconstructed ring
64
65   Bool_t    fIsWEIGHT;                          // flag to consider weight procedure
66   Float_t   fDTheta;                            // Step for sliding window
67   Float_t   fWindowWidth;                       // Hough width of sliding window
68   
69   TVector3  fTrkDir;                            //track direction in LORS at RAD
70   TVector2  fTrkPos;                            //track positon in LORS at RAD
71   TVector2  fMipPos;                            //mip positon for a given track
72   TVector2  fPc;                                //track position at PC
73   
74   AliHMPIDParam *fParam;                        //Pointer to AliHMPIDParam
75 //
76   ClassDef(AliHMPIDRecon,0)
77 };
78
79 #endif // #ifdef AliHMPIDRecon_cxx
80