]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RICH/AliRICHRecon.h
MAJOR UPGRADE: 1. all objects are counted from 0 2. new AliRICHRecon 3. calib off...
[u/mrichter/AliRoot.git] / RICH / AliRICHRecon.h
1 #ifndef AliRICHRecon_h
2 #define AliRICHRecon_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 // AliRICHRecon                                                         //
10 //                                                                      //
11 // RICH class to perfom pattern recognition based on Hough transfrom    //
12 //                                                                      //
13 //////////////////////////////////////////////////////////////////////////
14
15
16 #include <TTask.h> //base class
17 #include <TVector3.h>
18
19 class TClonesArray;
20 class AliRICHRecon : public TTask 
21 {
22 public : 
23              AliRICHRecon();
24     virtual ~AliRICHRecon()                                                          {}
25
26   
27   Double_t CkovAngle    (TClonesArray *pCluLst,Int_t &iNaccepted);                                                         //reconstructed Theta Cerenkov
28   Double_t CkovSigma2   (                                                                     )const{ return fCkovSigma2;} //track ckov angle error squared
29   Double_t FindPhotCkov (Double_t cluX,Double_t cluY                                          );     //find ckov angle for single photon candidate
30   Double_t FindPhotPhi  (Double_t cluX,Double_t cluY                                          );     //find phi angle for single photon candidate
31   Double_t FindRingCkov (Int_t iNclus                                                         );     //best ckov for ring formed by found photon candidates
32   Double_t FindRingArea (Double_t ckov                                                        )const;//estimated area of ring in cm^2
33   Int_t    FlagPhot     (Double_t ckov                                                        );     //is photon ckov near most probable track ckov
34   Double_t HoughResponse(                                                                     );     //most probable track ckov angle
35   void     Propagate    (const TVector3 &dir,      TVector3 &pos,Double_t z                   )const;//propagate photon alogn the line  
36   void     Refract      (      TVector3 &dir,                    Double_t n1,    Double_t n2  )const;//refract photon on the boundary
37   Double_t TracePhoton  (Double_t ckovTh,Double_t ckovPh,TVector2 &pos                        )const;//trace photon created by track to PC
38   
39   Double_t SigLoc  (Double_t ckovTh,Double_t ckovPh,Double_t trkTh,Double_t trkPh,Double_t beta)const; //localization error
40   Double_t SigGeom (Double_t ckovTh,Double_t ckovPh,Double_t trkTh,Double_t trkPh,Double_t beta)const; //geometry error
41   Double_t SigCrom (Double_t ckovTh,Double_t ckovPh,Double_t trkTh,Double_t trkPh,Double_t beta)const; //cromasity error
42   Double_t Sigma2  (Double_t ckovTh,Double_t ckovPh,Double_t trkTh,Double_t trkPh              )const; //photon candidate sigma
43   void     SetTrack(Double_t th,Double_t ph,Double_t x,Double_t y){  fTrkDir.SetMagThetaPhi(1,th,ph);  fTrkPos.Set(x,y);}//set track info
44    
45   const static Double_t fkRadThick;                      //radiator thickness
46   const static Double_t fkWinThick;                      //window thickness
47   const static Double_t fkGapThick;                      //proximity gap thickness
48   const static Double_t fkRadIdx;                        //mean refractive index of RAD material (C6F14)
49   const static Double_t fkWinIdx;                        //mean refractive index of WIN material (SiO2) 
50   const static Double_t fkGapIdx;                        //mean refractive index of GAP material (CH4)
51   
52 protected:
53   Int_t    fPhotCnt;                           // counter of photons candidate
54   Int_t    fPhotFlag[3000];                    // flags of photon candidates
55   Double_t fPhotCkov[3000];                    // Ckov angles of photon candidates, [rad]
56   Double_t fPhotPhi [3000];                    // phis of photons candidates, [rad]
57   Double_t fPhotWei [3000];                    // weigths of photon candidates
58   Double_t fCkovSigma2;                        // sigma2 of the reconstructed ring
59
60   Bool_t  fIsWEIGHT;                          // flag to consider weight procedure
61   Float_t fDTheta;                            // Step for sliding window
62   Float_t fWindowWidth;                       // Hough width of sliding window
63   
64   TVector3 fTrkDir;                           //track direction in LORS
65   TVector2 fTrkPos;                           //track positon in LORS at the middle of radiator
66   ClassDef(AliRICHRecon,0)
67 };
68     
69 #endif // #ifdef AliRICHRecon_cxx
70