add NaN trap to linux version
[u/mrichter/AliRoot.git] / RICH / AliRICHPatRec.h
1 #ifndef ALIRICHPATREC_H
2 #define ALIRICHPATREC_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 ////////////////////////////////////////////////////////////////
10 //   Pattern Recognition classes for set:RICH version 0       //
11 ////////////////////////////////////////////////////////////////
12
13 #include <TObject.h>
14 #include <TMath.h>
15
16 #include "AliRICH.h"
17 #include "AliRICHHitMap.h"
18
19
20 class AliRICHPatRec;
21
22 class AliRICHPatRec : public TObject {
23     
24  public:
25   AliRICHPatRec();
26   AliRICHPatRec(const char *name, const char *title);
27   virtual       ~AliRICHPatRec() {}
28   void   PatRec();
29   Int_t   TrackParam(Int_t itr, Int_t &ich);
30   //Old CERENK
31   Float_t EstimationAtLimits(Float_t lim, Float_t radius, Float_t phiphot);  
32   //Old REC_ETAPHOT
33   Float_t PhotonCerenkovAngle();
34   //Old GIME_EMISSPOINT
35   void EmissionPoint();
36   //Old ITER_CUT
37   void PhotonSelection(Int_t track, Int_t &nphot, Float_t &thetamean);
38   //Old BKG_SUBTRACT
39   void BackgroundEstimation();
40   //Old FLAG_PHOTONS
41   void FlagPhotons(Int_t track, Float_t theta);
42   //Old NEWINBAND
43   Int_t PhotonInBand();
44   //Old RADII
45   Float_t DistanceFromMip(Float_t nf,Float_t nq,
46                                     Float_t Em,Float_t th, Float_t ph, Float_t pointsOnCathode[3]);
47   //Old GIME_PHI
48   Float_t PhiPad();
49   //Old THREECOORD
50   //void CoordSphere(Float_t r, Float_t theta, Float_t phi, Float_t *x);
51   //Old ANGT
52   Float_t SnellAngle(Float_t n1, Float_t n2, Float_t theta1);
53   //Old TETCER
54   Float_t CherenkovAngle(Float_t n, Float_t beta);
55   // Old hough_filtering
56   void HoughFiltering(float HCS[]);
57   // Old hough_analysis
58   void HoughResponse();
59   //new
60   Float_t BetaCerenkov(Float_t n, Float_t theta);  
61   //new
62   //void CerenkovRingDrawing();
63
64  public:
65   Int_t   fNumEtaPhotons;                 // Number of photons
66   Float_t fEtaPhotons[1000];              // Cerenkov angle each photon
67   Float_t fWeightPhotons[1000];           // weight for each photon
68   Float_t fThetaCerenkov;                 // Theta angle for photon
69   Float_t fThetaPeakPos;                  // Peak position
70
71   Float_t fDTheta;                        //Step for sliding window
72   Float_t fWindowWidth;                   //Hough width of sliding window
73
74 private:
75
76   Float_t fRw,fQw,fTgap;                  //  
77
78   Float_t fTrackLoc[3];                   // Position of track
79   Float_t fTrackTheta;                    // Theta angle for track (dip angle)
80   Float_t fTrackPhi;                      // Phi angle
81   Float_t fTrackMom;                      // Track momentum
82   Float_t fXpad;                          // x-position of pad hit
83   Float_t fYpad;                          // y-position of pad hit
84   Int_t   fQpad;                          // Charge deposited
85
86   Float_t fXshift,fYshift;                // Shifts in x and y
87   Float_t fEmissPoint;                    // Emission point for Cerenkov photons
88   Float_t fCerenkovAnglePad;              // Cerenkov angle of single pad
89   Float_t fOnCathode[3];                 // Point of exit from photocathode 
90
91
92   ClassDef(AliRICHPatRec,1)                //Pat Rec module for :RICH version 0
93       
94 };
95
96
97         
98         
99 #endif