Calib data usage reactivated for Nmean, thres is still not active
[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
22 class AliHMPIDRecon : public TTask 
23 {
24 public : 
25              AliHMPIDRecon();
26     virtual ~AliHMPIDRecon()                                                          {}
27
28   
29   void     CkovAngle    (AliESDtrack *pTrk,TClonesArray *pCluLst,Double_t nmean             );                           //reconstructed Theta Cerenkov
30   Double_t FindPhotCkov (Double_t cluX,Double_t cluY                                        );     //find ckov angle for single photon candidate
31   Double_t FindPhotPhi  (Double_t cluX,Double_t cluY                                        );     //find phi angle for single photon candidate
32   Double_t FindRingCkov (Int_t iNclus                                                       );     //best ckov for ring formed by found photon candidates
33   Double_t FindRingArea (Double_t ckov                                                      )const;//estimated area of ring in cm^2
34   Int_t    FlagPhot     (Double_t ckov                                                      );     //is photon ckov near most probable track ckov
35   Double_t HoughResponse(                                                                   );     //most probable track ckov angle
36   void     Propagate    (const TVector3 &dir,      TVector3 &pos,Double_t z                 )const;//propagate photon alogn the line  
37   void     Refract      (      TVector3 &dir,                    Double_t n1,    Double_t n2)const;//refract photon on the boundary
38   Double_t TracePhot    (Double_t ckovTh,Double_t ckovPh,TVector2 &pos                      )const;//trace photon created by track to PC 
39   void     SetTrack     (Double_t x,Double_t y,Double_t th,Double_t ph                      ){fTrkDir.SetMagThetaPhi(1,th,ph);  fTrkPos.Set(x,y);}//set track
40   Double_t SigLoc       (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to cathode segmetation
41   Double_t SigGeom      (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to unknown photon origin
42   Double_t SigCrom      (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to unknonw photon energy
43   Double_t Sigma2       (Double_t ckovTh,Double_t ckovPh                                    )const;//photon candidate sigma
44   enum ETrackingFlags {kMipDistCut=-9,kMipQdcCut=-5,kNoPhotAccept=-11};
45 protected:
46   static const Double_t fgkRadThick;                      //radiator thickness
47   static const Double_t fgkWinThick;                      //window thickness
48   static const Double_t fgkGapThick;                      //proximity gap thickness
49   static const Double_t fgkWinIdx;                        //mean refractive index of WIN material (SiO2) 
50   static const Double_t fgkGapIdx;                        //mean refractive index of GAP material (CH4)
51   Double_t fRadNmean;                          //C6F14 mean refractive index
52   Int_t    fPhotCnt;                           // counter of photons candidate
53   Int_t    fPhotFlag[3000];                    // flags of photon candidates
54   Double_t fPhotCkov[3000];                    // Ckov angles of photon candidates, [rad]
55   Double_t fPhotPhi [3000];                    // phis of photons candidates, [rad]
56   Double_t fPhotWei [3000];                    // weigths of photon candidates
57   Double_t fCkovSigma2;                        // sigma2 of the reconstructed ring
58
59   Bool_t  fIsWEIGHT;                          // flag to consider weight procedure
60   Float_t fDTheta;                            // Step for sliding window
61   Float_t fWindowWidth;                       // Hough width of sliding window
62   
63   TVector3 fTrkDir;                           //track direction in LORS
64   TVector2 fTrkPos;                           //track positon in LORS at the middle of radiator
65   ClassDef(AliHMPIDRecon,0)
66 };
67
68 typedef AliHMPIDRecon AliRICHRecon; // for backward compatibility
69     
70 #endif // #ifdef AliHMPIDRecon_cxx
71