]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RICH/AliRICHRecon.h
Allowing coding conventions to be checked
[u/mrichter/AliRoot.git] / RICH / AliRICHRecon.h
index c48ba4cf23a4c520d0c426148f39b387ba9cc3c8..03132c51be2acefac2dc42e65521fc3bb73cf01b 100644 (file)
@@ -4,6 +4,15 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// AliRICHRecon                                                         //
+//                                                                      //
+// RICH class to perfom pattern recognition based on Hough transfrom    //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+
 #include <TTask.h>
 
 class AliRICH;
@@ -17,258 +26,271 @@ public :
     AliRICHRecon(const char*, const char*);
    ~AliRICHRecon(){EndProcessEvent();}
 
-  AliRICH* Rich() {return fRich;}
-  void StartProcessEvent();
-  void EndProcessEvent();
-  void InitRecon();
-  void PatRec();
-  void Minimization();
-  void FillHistograms();
-  void FindThetaPhotonCerenkov();
-  void FindAreaAndPortionOfRing();
-  void FindEmissionPoint();
-  void FindPhotonAnglesInDRS();
-  void FindPhiPoint();
-  void FindThetaAtQuartz(Float_t ThetaCerenkov);
-  void HoughResponse();
-  void HoughFiltering(float HCS[]);
-  void FlagPhotons();
-  void FindWeightThetaCerenkov();
-  void EstimationOfTheta();
-  void FindIntersectionWithDetector();
-  void DrawEvent(Int_t flag);
-  void Waiting();
-  Int_t   GetPhotonFlag() { return fPhotonFlag[fPhotonIndex];}
-  Int_t PhotonInBand();
-  Int_t CheckDetectorAcceptance();
-  Int_t   GetTrackCharge() { return fTrackCharge;}
-  Int_t   GetPhotonsNumber() { return fPhotonsNumber;}
-  Int_t   GetPhotonIndex() { return fPhotonIndex;}
-  Int_t GetMipIndex() { return fMipIndex;}
-  Int_t GetTrackIndex() { return fTrackIndex;}
-  Int_t GetCandidatePhotonsNumber() { return fCandidatePhotonsNumber;}
-  Int_t GetHoughPhotons() { return fHoughPhotons;}
-  Int_t   GetFittedHoughPhotons() { return fFittedHoughPhotons;}
-  Float_t FindMassOfParticle();
-  Float_t Cerenkovangle(Float_t n, Float_t beta);
-  Float_t PhotonPositionOnCathode();
-  Float_t GetEventVertexZ() { return fEventVertZ;}
-  Float_t GetEventMultiplicity() { return fEventMultiplicity;}
-  Float_t GetPhotonEnergy() { return fPhotonEnergy;}
-  Float_t GetFreonRefractiveIndex() { return fFreonRefractiveIndex;}
-  Float_t GetQuartzRefractiveIndex() { return fQuartzRefractiveIndex;}
-  Float_t GetGasRefractiveIndex() { return fGasRefractiveIndex;}
-  Float_t GetFreonScaleFactor() { return fFreonScaleFactor;}
-  Float_t GetEmissionPoint() { return fLengthEmissionPoint;}
-  Float_t GetMassHypotesis() { return fMassHypotesis;}
-  Float_t GetBetaOfParticle() { return fTrackBeta;}
-  Float_t GetEntranceX() { return fXtoentr;}
-  Float_t GetEntranceY() { return fYtoentr;}
-  Float_t GetThetaCerenkov() { return fThetaCerenkov;}
-  Float_t GetThetaPhotonCerenkov() { return fThetaPhotonCerenkov;}
-  Float_t GetTrackMomentum() { return fTrackMomentum;}
-  Float_t GetTrackEta() { return fTrackEta;}
-  Float_t GetTrackTheta() { return fTrackTheta;}
-  Float_t GetTrackPhi() { return fTrackPhi;}
-  Float_t GetTrackPt() { return fTrackPt;}
-  Float_t GetTrackTPCLastZ() { return fTrackTPCLastZ;}
-  Float_t GetMinDist() { return fMinDist;}
-  Float_t GetXPointOnCathode() { return fPhotonLimitX;}
-  Float_t GetYPointOnCathode() { return fPhotonLimitY;}
-  Float_t GetThetaPhotonInDRS() { return fThetaPhotonInDRS;}
-  Float_t GetPhiPhotonInDRS() { return fPhiPhotonInDRS;}
-  Float_t GetThetaPhotonInTRS() { return fThetaPhotonInTRS;}
-  Float_t GetPhiPhotonInTRS() { return fPhiPhotonInTRS;}
-  Float_t GetThetaAtQuartz() { return fThetaAtQuartz;}
-  Float_t GetPhiPoint(){ return fPhiPoint;}
-  Float_t GetXCoordOfEmission() {return fXEmiss;}
-  Float_t GetYCoordOfEmission() {return fYEmiss;}
-  Float_t GetXInnerRing() {return fXInner;}
-  Float_t GetYInnerRing() {return fYInner;}
-  Float_t GetRadiusInnerRing() {return fInnerRadius;}
-  Float_t GetXOuterRing() {return fXOuter;}
-  Float_t GetYOuterRing() {return fYOuter;}
-  Float_t GetRadiusOuterRing() {return fOuterRadius;}
-  Float_t GetShiftX() { return fShiftX;}
-  Float_t GetShiftY() { return fShiftY;}
-  Float_t GetDetectorWhereX() { return fXcoord;}
-  Float_t GetDetectorWhereY() { return fYcoord;}
-  Float_t GetIntersectionX() {return fIntersectionX;}
-  Float_t GetIntersectionY() {return fIntersectionY;}
-  Float_t GetThetaOfRing() { return fThetaOfRing;}
-  Float_t GetAreaOfRing() {return fAreaOfRing;}
-  Float_t GetPortionOfRing() {return fPortionOfRing;}
-  Float_t GetHoughArea() { return fHoughArea;}
-  Float_t GetPhotonEta() { return fPhotonEta[fPhotonIndex];}
-  Float_t GetPhotonWeight() { return fPhotonWeight[fPhotonIndex];}
-  Float_t GetHoughRMS() { return fHoughRMS;}
-  Float_t* GetCandidatePhotonX() { return fCandidatePhotonX;}
-  Float_t* GetCandidatePhotonY() { return fCandidatePhotonY;}
-  Float_t GetHoughPhotonsNorm() { return fHoughPhotonsNorm;}
-  Float_t GetFittedTrackTheta() { return fFittedTrackTheta;}
-  Float_t GetFittedTrackPhi() { return fFittedTrackPhi;}
-  Float_t GetFittedThetaCerenkov() { return fFittedThetaCerenkov;}
-  Float_t GetEstimationOfTheta() { return fEstimationOfTheta;}
-  Float_t GetEstimationOfThetaRMS() { return fEstimationOfThetaRMS;}
-  void SetEventVertexZ(Float_t EventVertZ) { fEventVertZ = EventVertZ;}
-  void SetEventMultiplicity(Float_t EventMultiplicity) { fEventMultiplicity = EventMultiplicity;}
-  void SetPhotonEnergy(Float_t PhotonEnergy) { fPhotonEnergy = PhotonEnergy;} 
-  void SetFreonRefractiveIndex() {fFreonRefractiveIndex = fFreonScaleFactor*(1.177+0.0172*fPhotonEnergy);}
-  void SetQuartzRefractiveIndex() {fQuartzRefractiveIndex = sqrt(1+(46.411/(113.763556-TMath::Power(fPhotonEnergy,2)))+(228.71/(328.51563-TMath::Power(fPhotonEnergy,2))));}
-  void SetGasRefractiveIndex() { fGasRefractiveIndex = 1.;}
-  void SetFreonScaleFactor(Float_t FreonScaleFactor) {fFreonScaleFactor = FreonScaleFactor;}
-  void SetEmissionPoint(Float_t LengthEmissionPoint) { fLengthEmissionPoint = LengthEmissionPoint;}
-  void SetMassHypotesis(Float_t mass) {fMassHypotesis = mass;}
-  void SetBetaOfParticle() { fTrackBeta = fTrackMomentum/sqrt(TMath::Power(fTrackMomentum,2)+TMath::Power(fMassHypotesis,2));}
-  void SetEntranceX(Float_t Xtoentr) { fXtoentr = Xtoentr;}
-  void SetEntranceY(Float_t Ytoentr) { fYtoentr = Ytoentr;}
-  void SetThetaPhotonInTRS(Float_t Theta) {fThetaPhotonInTRS = Theta;}
-  void SetPhiPhotonInTRS(Float_t Phi) {fPhiPhotonInTRS = Phi;}
-  void SetThetaPhotonInDRS(Float_t Theta) {fThetaPhotonInDRS = Theta;}
-  void SetPhiPhotonInDRS(Float_t Phi) {fPhiPhotonInDRS = Phi;}
-  void SetThetaAtQuartz(Float_t ThetaAtQuartz) {fThetaAtQuartz = ThetaAtQuartz;}
-  void SetPhiPoint(Float_t PhiPoint){ fPhiPoint = PhiPoint;}
-  void SetXCoordOfEmission(Float_t XEmiss) {fXEmiss = XEmiss;}
-  void SetYCoordOfEmission(Float_t YEmiss) {fYEmiss = YEmiss;}
-  void SetXPointOnCathode(Float_t PhotonLimitX) { fPhotonLimitX = PhotonLimitX;}
-  void SetYPointOnCathode(Float_t PhotonLimitY) { fPhotonLimitY = PhotonLimitY;}
-  void SetXInnerRing(Float_t XInner) {fXInner = XInner;}
-  void SetYInnerRing(Float_t YInner) {fYInner = YInner;}
-  void SetRadiusInnerRing(Float_t InnerRadius) {fInnerRadius = InnerRadius;}
-  void SetXOuterRing(Float_t XOuter) {fXOuter = XOuter;}
-  void SetYOuterRing(Float_t YOuter) {fYOuter = YOuter;}
-  void SetRadiusOuterRing(Float_t OuterRadius) {fOuterRadius = OuterRadius;}
-  void SetThetaCerenkov(Float_t ThetaCer) {fThetaCerenkov = ThetaCer;}
-  void SetThetaPhotonCerenkov(Float_t ThetaPhotCer) {fThetaPhotonCerenkov = ThetaPhotCer;}
-  void SetTrackMomentum(Float_t TrackMomentum) {fTrackMomentum = TrackMomentum;}
-  void SetTrackEta(Float_t TrackEta) {fTrackEta = TrackEta;}
-  void SetTrackTheta(Float_t TrackTheta) { fTrackTheta = TrackTheta;}
-  void SetTrackPhi(Float_t TrackPhi) { fTrackPhi = TrackPhi;}
-  void SetTrackPt(Float_t TrackPt) { fTrackPt = TrackPt;}
-  void SetTrackCharge(Int_t TrackCharge) { fTrackCharge = TrackCharge;}
-  void SetTrackTPCLastZ(Float_t TrackTPCLastZ) { fTrackTPCLastZ = TrackTPCLastZ;}
-  void SetMinDist(Float_t MinDist) { fMinDist = MinDist;}
-  void SetShiftX(Float_t ShiftX) { fShiftX = ShiftX;}
-  void SetShiftY(Float_t ShiftY) { fShiftY = ShiftY;}
-  void SetDetectorWhereX(Float_t Xcoord) { fXcoord = Xcoord;}
-  void SetDetectorWhereY(Float_t Ycoord) { fYcoord = Ycoord;}
-  void SetIntersectionX(Float_t IntersectionX) { fIntersectionX = IntersectionX;}
-  void SetIntersectionY(Float_t IntersectionY) { fIntersectionY = IntersectionY;}
-  void SetThetaOfRing(Float_t ThetaOfRing) { fThetaOfRing = ThetaOfRing;}
-  void SetAreaOfRing(Float_t AreaOfRing) { fAreaOfRing = AreaOfRing;}
-  void SetPortionOfRing(Float_t PortionOfRing) { fPortionOfRing = PortionOfRing;}
-  void SetHoughArea(Float_t HoughArea) { fHoughArea = HoughArea;}
-  void SetPhotonsNumber(Int_t PhotonsNumber) { fPhotonsNumber = PhotonsNumber;}
-  void SetPhotonIndex(Int_t PhotonIndex) { fPhotonIndex = PhotonIndex;}
-  void SetPhotonEta(Float_t PhotonEta) { fPhotonEta[fPhotonIndex] = PhotonEta;}
-  void SetPhotonFlag(Int_t PhotonFlag) { fPhotonFlag[fPhotonIndex] = PhotonFlag;}
-  void SetPhotonWeight(Float_t PhotonWeight) { fPhotonWeight[fPhotonIndex] = PhotonWeight;}
-  void SetHoughRMS(Float_t HoughRMS) { fHoughRMS = HoughRMS;}
-  void SetMipIndex(Int_t MipIndex) { fMipIndex = MipIndex;}
-  void SetTrackIndex(Int_t TrackIndex) { fTrackIndex = TrackIndex;}
-  void SetCandidatePhotonX(Float_t *CandidatePhotonX) { fCandidatePhotonX = CandidatePhotonX;}
-  void SetCandidatePhotonY(Float_t *CandidatePhotonY) { fCandidatePhotonY = CandidatePhotonY;}
-  void SetCandidatePhotonsNumber(Int_t CandidatePhotonsNumber) { fCandidatePhotonsNumber = CandidatePhotonsNumber;}
-  void SetHoughPhotons(Int_t HoughPhotons) { fHoughPhotons = HoughPhotons;}
-  void SetHoughPhotonsNorm(Float_t HoughPhotonsNorm) { fHoughPhotonsNorm = HoughPhotonsNorm;}
-  void SetFittedTrackTheta(Float_t FittedTrackTheta)    { fFittedTrackTheta = FittedTrackTheta;}
-  void SetFittedTrackPhi(Float_t FittedTrackPhi)    { fFittedTrackPhi = FittedTrackPhi;}
-  void SetFittedThetaCerenkov(Float_t FittedThetaCerenkov) { fFittedThetaCerenkov = FittedThetaCerenkov;}
-  void SetFittedHoughPhotons(Int_t FittedHoughPhotons) { fFittedHoughPhotons = FittedHoughPhotons;}
-  void SetEstimationOfTheta(Float_t EstimationOfTheta) { fEstimationOfTheta = EstimationOfTheta;}
-  void SetEstimationOfThetaRMS(Float_t EstimationOfThetaRMS) { fEstimationOfThetaRMS = EstimationOfThetaRMS;}
-  void FindBetaFromTheta(Float_t ThetaCerenkov) {fTrackBeta = 1/(fFreonRefractiveIndex*cos(ThetaCerenkov));}
-  Float_t SnellAngle(Float_t n1, Float_t n2, Float_t theta1);
-  Float_t FromEmissionToCathode();
-public:
-   Int_t   fNumEtaPhotons;                 // Number of photons
-   Int_t   fEtaFlag[3000];                 // flag for good photons
-   Float_t fEtaPhotons[3000];              // Cerenkov angle each photon
-   Float_t fWeightPhotons[3000];           // weight for each photon
-   Float_t fThetaCerenkov;                 // Theta angle for Hough
-   Float_t fWeightThetaCerenkov;           // Theta Cerenkov angle weighted
-   Float_t fThetaPeakPos;                  // Peak position
+  AliRICH* Rich() {return fRich;}             //main pointer to RICH
+  void StartProcessEvent();                   //
+  void EndProcessEvent();                     //
+  //PH  void InitRecon();                           //
+  void PatRec();                              //
+  void Minimization();                        //
+  void FillHistograms();                      //
+  void FindThetaPhotonCerenkov();             //
+  void FindAreaAndPortionOfRing();            //
+  void FindEmissionPoint();                   //
+  void FindPhotonAnglesInDRS();               //
+  void FindPhiPoint();                        //
+  void FindThetaAtQuartz(Float_t ThetaCer);   //
+  void HoughResponse();                       //
+  void HoughFiltering(float HCS[]);           //
+  void FlagPhotons();                         //
+  void FindWeightThetaCerenkov();             //
+  void EstimationOfTheta();                   //
+  void FindIntersectionWithDetector();        //
+  void Waiting();                             //
+  Float_t FindMassOfParticle();               //
+  Float_t Cerenkovangle(Float_t n, Float_t b);//
+  Float_t PhotonPositionOnCathode();          //
+  Int_t   PhotonInBand();                     //
+  void DrawEvent(Int_t flag)  const;          //
+  Int_t   CheckDetectorAcceptance() const;    //
+  Int_t   GetFittedHoughPhotons()                   const{ return fFittedHoughPhotons;}             //
+  Int_t   GetPhotonFlag()                           const{ return fPhotonFlag[fPhotonIndex];}       //
+  Int_t   GetTrackCharge()                          const{ return fTrackCharge;}                    //
+  Int_t   GetPhotonsNumber()                        const{ return fPhotonsNumber;}                  //
+  Int_t   GetPhotonIndex()                          const{ return fPhotonIndex;}                    //
+  Int_t   GetMipIndex()                             const{ return fMipIndex;}                       //
+  Int_t   GetTrackIndex()                           const{ return fTrackIndex;}                     //
+  Int_t   GetCandidatePhotonsNumber()               const{ return fCandidatePhotonsNumber;}         //
+  Int_t   GetHoughPhotons()                         const{ return fHoughPhotons;}                   //
+  Float_t GetEventVertexZ()                         const{ return fEventVertZ;}                     //
+  Float_t GetEventMultiplicity()                    const{ return fEventMultiplicity;}              //
+  Float_t GetPhotonEnergy()                         const{ return fPhotonEnergy;}                   //
+  Float_t GetFreonRefractiveIndex()                 const{ return fFreonRefractiveIndex;}           //
+  Float_t GetQuartzRefractiveIndex()                const{ return fQuartzRefractiveIndex;}          //
+  Float_t GetGasRefractiveIndex()                   const{ return fGasRefractiveIndex;}             //
+  Float_t GetFreonScaleFactor()                     const{ return fFreonScaleFactor;}               //
+  Float_t GetEmissionPoint()                        const{ return fLengthEmissionPoint;}            //
+  Float_t GetMassHypotesis()                        const{ return fMassHypotesis;}                  //
+  Float_t GetBetaOfParticle()                       const{ return fTrackBeta;}                      //
+  Float_t GetEntranceX()                            const{ return fXtoentr;}                        //
+  Float_t GetEntranceY()                            const{ return fYtoentr;}                        //
+  Float_t GetThetaCerenkov()                        const{ return fThetaCerenkov;}                  //
+  Float_t GetThetaPhotonCerenkov()                  const{ return fThetaPhotonCerenkov;}            //
+  Float_t GetTrackMomentum()                        const{ return fTrackMomentum;}                  //
+  Float_t GetTrackEta()                             const{ return fTrackEta;}                       //
+  Float_t GetTrackTheta()                           const{ return fTrackTheta;}                     //
+  Float_t GetTrackPhi()                             const{ return fTrackPhi;}                       //
+  Float_t GetTrackPt()                              const{ return fTrackPt;}                        //
+  Float_t GetTrackTPCLastZ()                        const{ return fTrackTPCLastZ;}                  //
+  Float_t GetMinDist()                              const{ return fMinDist;}                        //
+  Float_t GetXPointOnCathode()                      const{ return fPhotonLimitX;}                   //
+  Float_t GetYPointOnCathode()                      const{ return fPhotonLimitY;}                   //
+  Float_t GetThetaPhotonInDRS()                     const{ return fThetaPhotonInDRS;}               //
+  Float_t GetPhiPhotonInDRS()                       const{ return fPhiPhotonInDRS;}                 //
+  Float_t GetThetaPhotonInTRS()                     const{ return fThetaPhotonInTRS;}               //
+  Float_t GetPhiPhotonInTRS()                       const{ return fPhiPhotonInTRS;}                 //
+  Float_t GetThetaAtQuartz()                        const{ return fThetaAtQuartz;}                  //
+  Float_t GetPhiPoint()                             const{ return fPhiPoint;}                       //
+  Float_t GetXCoordOfEmission()                     const{ return fXEmiss;}                         //
+  Float_t GetYCoordOfEmission()                     const{ return fYEmiss;}                         //
+  Float_t GetXInnerRing()                           const{ return fXInner;}                         //
+  Float_t GetYInnerRing()                           const{ return fYInner;}                         //
+  Float_t GetRadiusInnerRing()                      const{ return fInnerRadius;}                    //
+  Float_t GetXOuterRing()                           const{ return fXOuter;}                         //
+  Float_t GetYOuterRing()                           const{ return fYOuter;}                         //
+  Float_t GetRadiusOuterRing()                      const{ return fOuterRadius;}                    //
+  Float_t GetShiftX()                               const{ return fShiftX;}                         //
+  Float_t GetShiftY()                               const{ return fShiftY;}                         //
+  Float_t GetDetectorWhereX()                       const{ return fXcoord;}                         //
+  Float_t GetDetectorWhereY()                       const{ return fYcoord;}                         //
+  Float_t GetIntersectionX()                        const{ return fIntersectionX;}                  //
+  Float_t GetIntersectionY()                        const{ return fIntersectionY;}                  //
+  Float_t GetThetaOfRing()                          const{ return fThetaOfRing;}                    //
+  Float_t GetAreaOfRing()                           const{ return fAreaOfRing;}                     //
+  Float_t GetPortionOfRing()                        const{ return fPortionOfRing;}                  //
+  Float_t GetHoughArea()                            const{ return fHoughArea;}                      //
+  Float_t GetPhotonEta()                            const{ return fPhotonEta[fPhotonIndex];}        //
+  Float_t GetPhotonWeight()                         const{ return fPhotonWeight[fPhotonIndex];}     //
+  Float_t GetHoughRMS()                             const{ return fHoughRMS;}                       //
+  Float_t* GetCandidatePhotonX()                    const{ return fCandidatePhotonX;}               //
+  Float_t* GetCandidatePhotonY()                    const{ return fCandidatePhotonY;}               //
+  Float_t GetHoughPhotonsNorm()                     const{ return fHoughPhotonsNorm;}               //
+  Float_t GetFittedTrackTheta()                     const{ return fFittedTrackTheta;}               //
+  Float_t GetFittedTrackPhi()                       const{ return fFittedTrackPhi;}                 //
+  Float_t GetFittedThetaCerenkov()                  const{ return fFittedThetaCerenkov;}            //
+  Float_t GetEstimationOfTheta()                    const{ return fEstimationOfTheta;}              //
+  Float_t GetEstimationOfThetaRMS()                 const{ return fEstimationOfThetaRMS;}           //
+  void SetEventVertexZ(Float_t EventVertZ) { fEventVertZ = EventVertZ;}                             //
+  void SetEventMultiplicity(Float_t EventMultiplicity) { fEventMultiplicity = EventMultiplicity;}   //
+  void SetPhotonEnergy(Float_t PhotonEnergy) { fPhotonEnergy = PhotonEnergy;}                       //
+  void SetFreonRefractiveIndex() {fFreonRefractiveIndex = fFreonScaleFactor*(1.177+0.0172*fPhotonEnergy);}//
+  void SetQuartzRefractiveIndex() {fQuartzRefractiveIndex = sqrt(1+(46.411/(113.763556-TMath::Power(fPhotonEnergy,2)))+(228.71/(328.51563-TMath::Power(fPhotonEnergy,2))));}//
+  void SetGasRefractiveIndex() { fGasRefractiveIndex = 1.;}                                         //
+  void SetFreonScaleFactor(Float_t FreonScaleFactor) {fFreonScaleFactor = FreonScaleFactor;}        //
+  void SetEmissionPoint(Float_t LengthEmissionPoint) { fLengthEmissionPoint = LengthEmissionPoint;} //
+  void SetMassHypotesis(Float_t mass) {fMassHypotesis = mass;}                                      //
+  void SetBetaOfParticle() { fTrackBeta = fTrackMomentum/sqrt(TMath::Power(fTrackMomentum,2)+TMath::Power(fMassHypotesis,2));}//
+  void SetEntranceX(Float_t Xtoentr) { fXtoentr = Xtoentr;}                                         //
+  void SetEntranceY(Float_t Ytoentr) { fYtoentr = Ytoentr;}                                         //
+  void SetThetaPhotonInTRS(Float_t Theta) {fThetaPhotonInTRS = Theta;}                              //
+  void SetPhiPhotonInTRS(Float_t Phi) {fPhiPhotonInTRS = Phi;}                                      //
+  void SetThetaPhotonInDRS(Float_t Theta) {fThetaPhotonInDRS = Theta;}                              //
+  void SetPhiPhotonInDRS(Float_t Phi) {fPhiPhotonInDRS = Phi;}                                      //
+  void SetThetaAtQuartz(Float_t ThetaAtQuartz) {fThetaAtQuartz = ThetaAtQuartz;}                    //
+  void SetPhiPoint(Float_t PhiPoint){ fPhiPoint = PhiPoint;}                                        //
+  void SetXCoordOfEmission(Float_t XEmiss) {fXEmiss = XEmiss;}                                      //
+  void SetYCoordOfEmission(Float_t YEmiss) {fYEmiss = YEmiss;}                                      //
+  void SetXPointOnCathode(Float_t PhotonLimitX) { fPhotonLimitX = PhotonLimitX;}                    //
+  void SetYPointOnCathode(Float_t PhotonLimitY) { fPhotonLimitY = PhotonLimitY;}                    //
+  void SetXInnerRing(Float_t XInner) {fXInner = XInner;}                                            //
+  void SetYInnerRing(Float_t YInner) {fYInner = YInner;}                                            //
+  void SetRadiusInnerRing(Float_t InnerRadius) {fInnerRadius = InnerRadius;}                        //
+  void SetXOuterRing(Float_t XOuter) {fXOuter = XOuter;}                                            //
+  void SetYOuterRing(Float_t YOuter) {fYOuter = YOuter;}                                            //
+  void SetRadiusOuterRing(Float_t OuterRadius) {fOuterRadius = OuterRadius;}                        //
+  void SetThetaCerenkov(Float_t ThetaCer) {fThetaCerenkov = ThetaCer;}                              //
+  void SetThetaPhotonCerenkov(Float_t ThetaPhotCer) {fThetaPhotonCerenkov = ThetaPhotCer;}          //
+  void SetTrackMomentum(Float_t TrackMomentum) {fTrackMomentum = TrackMomentum;}                    //
+  void SetTrackEta(Float_t TrackEta) {fTrackEta = TrackEta;}                                        //
+  void SetTrackTheta(Float_t TrackTheta) { fTrackTheta = TrackTheta;}                               //
+  void SetTrackPhi(Float_t TrackPhi) { fTrackPhi = TrackPhi;}                                       //
+  void SetTrackPt(Float_t TrackPt) { fTrackPt = TrackPt;}                                           //
+  void SetTrackCharge(Int_t TrackCharge) { fTrackCharge = TrackCharge;}                             //
+  void SetTrackTPCLastZ(Float_t TrackTPCLastZ) { fTrackTPCLastZ = TrackTPCLastZ;}                   //
+  void SetMinDist(Float_t MinDist) { fMinDist = MinDist;}                                           //
+  void SetShiftX(Float_t ShiftX) { fShiftX = ShiftX;}                                               //
+  void SetShiftY(Float_t ShiftY) { fShiftY = ShiftY;}                                               //
+  void SetDetectorWhereX(Float_t Xcoord) { fXcoord = Xcoord;}                                       //
+  void SetDetectorWhereY(Float_t Ycoord) { fYcoord = Ycoord;}                                       //
+  void SetIntersectionX(Float_t IntersectionX) { fIntersectionX = IntersectionX;}                   //
+  void SetIntersectionY(Float_t IntersectionY) { fIntersectionY = IntersectionY;}                   //
+  void SetThetaOfRing(Float_t ThetaOfRing) { fThetaOfRing = ThetaOfRing;}                           //
+  void SetAreaOfRing(Float_t AreaOfRing) { fAreaOfRing = AreaOfRing;}                               //
+  void SetPortionOfRing(Float_t PortionOfRing) { fPortionOfRing = PortionOfRing;}                   //
+  void SetHoughArea(Float_t HoughArea) { fHoughArea = HoughArea;}                                   //
+  void SetPhotonsNumber(Int_t PhotonsNumber) { fPhotonsNumber = PhotonsNumber;}                     //
+  void SetPhotonIndex(Int_t PhotonIndex) { fPhotonIndex = PhotonIndex;}                             //
+  void SetPhotonEta(Float_t PhotonEta) { fPhotonEta[fPhotonIndex] = PhotonEta;}                     //
+  void SetPhotonFlag(Int_t PhotonFlag) { fPhotonFlag[fPhotonIndex] = PhotonFlag;}                   //
+  void SetPhotonWeight(Float_t PhotonWeight) { fPhotonWeight[fPhotonIndex] = PhotonWeight;}         //
+  void SetHoughRMS(Float_t HoughRMS) { fHoughRMS = HoughRMS;}                                       //
+  void SetMipIndex(Int_t MipIndex) { fMipIndex = MipIndex;}                                         //
+  void SetTrackIndex(Int_t TrackIndex) { fTrackIndex = TrackIndex;}                                 //
+  void SetCandidatePhotonX(Float_t *CandidatePhotonX) { fCandidatePhotonX = CandidatePhotonX;}      //
+  void SetCandidatePhotonY(Float_t *CandidatePhotonY) { fCandidatePhotonY = CandidatePhotonY;}      //
+  void SetCandidatePhotonsNumber(Int_t CandidatePhotonsNumber) { fCandidatePhotonsNumber = CandidatePhotonsNumber;}//
+  void SetHoughPhotons(Int_t HoughPhotons) { fHoughPhotons = HoughPhotons;}                         //
+  void SetHoughPhotonsNorm(Float_t HoughPhotonsNorm) { fHoughPhotonsNorm = HoughPhotonsNorm;}       //
+  void SetFittedTrackTheta(Float_t FittedTrackTheta)    { fFittedTrackTheta = FittedTrackTheta;}    //
+  void SetFittedTrackPhi(Float_t FittedTrackPhi)    { fFittedTrackPhi = FittedTrackPhi;}            //
+  void SetFittedThetaCerenkov(Float_t FittedThetaCerenkov) { fFittedThetaCerenkov = FittedThetaCerenkov;}//
+  void SetFittedHoughPhotons(Int_t FittedHoughPhotons) { fFittedHoughPhotons = FittedHoughPhotons;} //
+  void SetEstimationOfTheta(Float_t EstimationOfTheta) { fEstimationOfTheta = EstimationOfTheta;}   //
+  void SetEstimationOfThetaRMS(Float_t EstimationOfThetaRMS) { fEstimationOfThetaRMS = EstimationOfThetaRMS;}//
+  void FindBetaFromTheta(Float_t ThetaCerenkov) {fTrackBeta = 1/(fFreonRefractiveIndex*cos(ThetaCerenkov));}//
+  Float_t SnellAngle(Float_t n1, Float_t n2, Float_t theta1);                                       //
+  Float_t FromEmissionToCathode();                                                                  //
+
 protected:
-  AliRICH* fRich;
-  Int_t   fTrackCharge;
-  Int_t fMipIndex;
-  Int_t fTrackIndex;
-  Int_t fPhotonsNumber;
-  Int_t fPhotonIndex;
-  Int_t fPhotonFlag[3000];
-  Int_t fCandidatePhotonsNumber;
-  Int_t fHoughPhotons;
-  Int_t   fFittedHoughPhotons;
-  Float_t fEventVertZ;
-  Float_t fEventMultiplicity;
-  Float_t fTrackTheta;
-  Float_t fTrackPhi;
-  Float_t fTrackMomentum;
-  Float_t fTrackEta;
-  Float_t fTrackPt;
-  Float_t fTrackTPCLastZ;
-  Float_t fMinDist;
-  Float_t fTrackBeta;
-  Float_t fXtoentr;
-  Float_t fYtoentr;
-  Float_t fThetaPhotonInTRS;
-  Float_t fPhiPhotonInTRS;
-  Float_t fThetaPhotonInDRS;
-  Float_t fPhiPhotonInDRS;
-  Float_t fThetaAtQuartz;
-  Float_t fPhiPoint;
-  Float_t fXEmiss;
-  Float_t fYEmiss;
-  Float_t fXInner;
-  Float_t fYInner;
-  Float_t fXOuter;
-  Float_t fYOuter;
-  Float_t fInnerRadius;
-  Float_t fOuterRadius;
-  Float_t fPhotonEnergy;
-  Float_t fFreonRefractiveIndex;
-  Float_t fQuartzRefractiveIndex;
-  Float_t fGasRefractiveIndex;
-  Float_t fFreonScaleFactor;
-  Float_t fLengthEmissionPoint;
-  Float_t fPhotonLimitX;
-  Float_t fPhotonLimitY;
-  Float_t fDistanceFromCluster;
-  Float_t fMassHypotesis;
-  Float_t fCerenkovAnglePad;
-  Float_t fThetaPhotonCerenkov;
-  Float_t fShiftX;
-  Float_t fShiftY;
-  Float_t fXcoord;
-  Float_t fYcoord;
-  Float_t fIntersectionX;
-  Float_t fIntersectionY;
-  Float_t fThetaOfRing;
-  Float_t fAreaOfRing;
-  Float_t fPortionOfRing;
-  Float_t fHoughArea;
-  Float_t fPhotonEta[3000];
-  Float_t fPhotonWeight[3000];
-  Float_t fHoughRMS;
-  Float_t* fCandidatePhotonX;
-  Float_t* fCandidatePhotonY;
-  Float_t fHoughPhotonsNorm;
-  Float_t fFittedTrackTheta;
-  Float_t fFittedTrackPhi;
-  Float_t fFittedThetaCerenkov;
-  Float_t fEstimationOfTheta;
-  Float_t fEstimationOfThetaRMS;
-  Int_t   fThetaBin; Float_t fThetaMin,fThetaMax;
-  Float_t fXmin,fXmax,fYmin,fYmax;
-  TFile  *fOutFile;  
-  TNtuple *fNtuple;
-  TCanvas *fDisplay;
-  Int_t  fNrings;   //current number of reconstructed rings
-  Bool_t fDebug;
-  Bool_t fIsDISPLAY;
-  Bool_t fIsWEIGHT;
-  Bool_t fIsBACKGROUND;
-  Bool_t fIsMINIMIZER;
+  AliRICH* fRich;                             // main poiter to RICH
+  Int_t   fTrackCharge;                       // charge track
+  Int_t fMipIndex;                            // index for Mip
+  Int_t fTrackIndex;                          // index for track
+  Int_t fPhotonsNumber;                       // Number of photons candidate
+  Int_t fPhotonIndex;                         // index of photons
+  Int_t fPhotonFlag[3000];                    // flag for photons
+  Int_t fCandidatePhotonsNumber;              // number of candidate photons
+  Int_t fHoughPhotons;                        // n. photons after Hough
+  Int_t   fFittedHoughPhotons;                // n. photons after Hough and after minimization
+  Float_t fEventVertZ;                        // z coord. of the primary vertex
+  Float_t fEventMultiplicity;                 // event primary multiplicity
+  Float_t fTrackTheta;                        // Theta of track at RICH
+  Float_t fTrackPhi;                          // Phi of track at RICH
+  Float_t fTrackMomentum;                     // track momentum
+  Float_t fTrackEta;                          // track pseudorapidity
+  Float_t fTrackPt;                           // pt of track
+  Float_t fTrackTPCLastZ;                     // z last point of the TPC
+  Float_t fMinDist;                           // min distance between extrapolated track and MIP
+  Float_t fTrackBeta;                         // beta of the track
+  Float_t fXtoentr;                           // X entrance to RICH
+  Float_t fYtoentr;                           // Y entrance to RICH
+  Float_t fThetaPhotonInTRS;                  // Theta of photon in the Track Reference System (TRS)
+  Float_t fPhiPhotonInTRS;                    // Phi of photon in TRS
+  Float_t fThetaPhotonInDRS;                  // Theta of photon in Detector Reference System (DRS)
+  Float_t fPhiPhotonInDRS;                    // Phi of photon in DRS
+  Float_t fThetaAtQuartz;                     // Theta at the quartz entrance
+  Float_t fPhiPoint;                          // phi of ring point
+  Float_t fXEmiss;                            //  x emission
+  Float_t fYEmiss;                            //  y emission
+  Float_t fXInner;                            // X inner ring
+  Float_t fYInner;                            // Y inner ring
+  Float_t fXOuter;                            // X outer ring
+  Float_t fYOuter;                            // Y outer ring
+  Float_t fInnerRadius;                       // inner radius
+  Float_t fOuterRadius;                       // outer radius
+  Float_t fPhotonEnergy;                      // photon energy
+  Float_t fFreonRefractiveIndex;              // n freon
+  Float_t fQuartzRefractiveIndex;             // n quartz
+  Float_t fGasRefractiveIndex;                // n gas
+  Float_t fFreonScaleFactor;                  // scale factor for n freon
+  Float_t fLengthEmissionPoint;               // lenght of emmission point
+  Float_t fPhotonLimitX;                      // X phys limit for photon
+  Float_t fPhotonLimitY;                      // Y phys limit for photon 
+  Float_t fDistanceFromCluster;               // distance from cluster
+  Float_t fMassHypotesis;                     // reconstructed mass
+  Float_t fCerenkovAnglePad;                  // cherenkov angle of pad
+  Float_t fThetaPhotonCerenkov;               // theta cerenkov for photon
+  Float_t fShiftX;                            // x shift to entrance in radiator
+  Float_t fShiftY;                            // y shift to entrance in radiator
+  Float_t fXcoord;                            // ..
+  Float_t fYcoord;                            // ..
+  Float_t fIntersectionX;                     // ..
+  Float_t fIntersectionY;                     // ..
+  Float_t fThetaOfRing;                       // theta of ring
+  Float_t fAreaOfRing;                        // area of the ring
+  Float_t fPortionOfRing;                     // fraction of the accepted ring
+  Float_t fHoughArea;                         // area Hough
+  Float_t fPhotonEta[3000];                   // theta cerenkov of photon candidates
+  Float_t fPhotonWeight[3000];                // weigth
+  Float_t fHoughRMS;                          // rms Hough
+  Float_t* fCandidatePhotonX;                 // x photon candidates
+  Float_t* fCandidatePhotonY;                 // y photon candidates
+  Float_t fHoughPhotonsNorm;                  // n. photons norm.
+  Float_t fFittedTrackTheta;                  // theta track after minim.
+  Float_t fFittedTrackPhi;                    // phi track after minim.
+  Float_t fFittedThetaCerenkov;               // thetacerenkov after minim.
+  Float_t fEstimationOfTheta;                 // theta estimate
+  Float_t fEstimationOfThetaRMS;              // theta RMS
+  Int_t   fThetaBin;                          // bin in theta
+  Float_t fThetaMin,fThetaMax;                // min max
+  Float_t fXmin,fXmax,fYmin,fYmax;            // xy min max
+  TFile  *fOutFile;                           // histogram output
+  TNtuple *fNtuple;                           // output ntuple
+  TCanvas *fDisplay;                          // for display
+  Int_t   fNrings;                            //current number of reconstructed rings
+  Bool_t  fDebug;                             // flag for debug
+  Bool_t  fIsDISPLAY;                         // flag for display
+  Bool_t  fIsWEIGHT;                          // flag to consider weight procedure
+  Bool_t  fIsBACKGROUND;                      // flag to simulate bkg
+  Bool_t  fIsMINIMIZER;                       // flag to start with (theta,phi) minimization
+  Int_t   fNpadX;                             // npadx
+  Int_t   fNpadY;                             // npady
+  Float_t fPadSizeX;                          // sizepad x
+  Float_t fPadSizeY;                          // sizepad y
+  Float_t fRadiatorWidth;                     // radiator width
+  Float_t fQuartzWidth;                       // quartz width
+  Float_t fGapWidth;                          // gap width
+  Float_t fDTheta;                            // Step for sliding window
+  Float_t fWindowWidth;                       // Hough width of sliding window
+  
+  Int_t   fNumEtaPhotons;                     // Number of photons
+  Int_t   fEtaFlag[3000];                     // flag for good photons
+  Float_t fEtaPhotons[3000];                  // Cerenkov angle each photon
+  Float_t fWeightPhotons[3000];               // weight for each photon
+  Float_t fThetaCerenkov;                     // Theta angle for Hough
+  Float_t fWeightThetaCerenkov;               // Theta Cerenkov angle weighted
+  Float_t fThetaPeakPos;                      // Peak position
+
+
   ClassDef(AliRICHRecon,0)
 };