]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HMPID/AliHMPIDRecon.h
Algorithm to reconstruct rings without tracking infos included
[u/mrichter/AliRoot.git] / HMPID / AliHMPIDRecon.h
index feb0e5c1ffd4e28686c4b1122910ee0169f6090c..b3743f4e43754d25ea219e9ce1171cbf57f97e5f 100644 (file)
@@ -46,7 +46,27 @@ public :
   Double_t SigCrom      (Double_t ckovTh,Double_t ckovPh,Double_t beta                      )const;//error due to unknonw photon energy
   Double_t Sigma2       (Double_t ckovTh,Double_t ckovPh                                    )const;//photon candidate sigma
   enum ETrackingFlags {kMipDistCut=-9,kMipQdcCut=-5,kNoPhotAccept=-11};
-
+// hidden track algorithm
+  void     CkovHiddenTrk    (TClonesArray *pCluLst,Double_t nmean);                                //Pattern recognition without trackinf information
+  void     CluPreFilter     (                                    );                                //Pre clustering filter to cut bkg clusters
+  void     DoRecHiddenTrk   (                                    );                                //Calling to the fitted procedures
+  Bool_t   FitEllipse       (Double_t &phiRec                    );                                //Fit clusters with a conical section (kTRUE only for ellipses)
+  void     FitFree          (Double_t phiRec                     );                                //Fit (th,ph) of the track and ckovFit as result
+  Double_t FunConSect       (Double_t *c,Double_t x,Double_t y   );                                //Function of a general conical section
+  void     SetCkovFit       (Double_t ckov                       ) {fCkovFit=ckov;}                //Setter for ckof fitted
+  void     SetTrkFit        (Double_t th,Double_t ph             ) {fThTrkFit = th;fPhTrkFit = ph;}//Setter for (th,ph) of the track
+  static void     FunMinEl  (Int_t&/* */,Double_t* /* */,Double_t &f,Double_t *par,Int_t /* */);   //Fit function to find ellipes parameters
+  static void     FunMinPhot(Int_t&/* */,Double_t* /* */,Double_t &f,Double_t *par,Int_t /* */);   //Fit function to minimize thetaCer RMS/Sqrt(n) of n clusters
+  Int_t    IdxMip       ()const {return fIdxMip;}                                                  //Getter index of MIP
+  Double_t MipX         ()const {return fMipX;}                                                    //Getter of x MIP in LORS
+  Double_t MipY         ()const {return fMipY;}                                                    //Getter of y MIP in LORS
+  Int_t    NClu         ()const {return fNClu;}                                                    //Getter of cluster multiplicity
+  Double_t XClu         (Int_t i)const {return fXClu[i];}                                          //Getter of x clu
+  Double_t YClu         (Int_t i)const {return fYClu[i];}                                          //Getter of y clu
+  Double_t CkovFit      ()const {return fCkovFit;}                                                 //Getter of ckov angle fitted
+  Double_t ThTrkFit     ()const {return fThTrkFit;}                                                //Getter of theta fitted of the track
+  Double_t PhTrkFit     ()const {return fPhTrkFit;}                                                //Getter of phi fitted of the track
+//
 protected:
   Double_t fRadNmean;                          //C6F14 mean refractive index
   Int_t    fPhotCnt;                           // counter of photons candidate
@@ -56,14 +76,24 @@ protected:
   Double_t fPhotWei [3000];                    // weigths of photon candidates
   Double_t fCkovSigma2;                        // sigma2 of the reconstructed ring
 
-  Bool_t  fIsWEIGHT;                          // flag to consider weight procedure
-  Float_t fDTheta;                            // Step for sliding window
-  Float_t fWindowWidth;                       // Hough width of sliding window
-  
-  TVector3 fTrkDir;                           //track direction in LORS at RAD
-  TVector2 fTrkPos;                           //track positon in LORS at RAD
-  TVector2 fPc;                               //track position at PC
+  Bool_t   fIsWEIGHT;                          // flag to consider weight procedure
+  Float_t  fDTheta;                            // Step for sliding window
+  Float_t  fWindowWidth;                       // Hough width of sliding window
   
+  TVector3 fTrkDir;                            //track direction in LORS at RAD
+  TVector2 fTrkPos;                            //track positon in LORS at RAD
+  TVector2 fPc;                                //track position at PC
+// hidden track algorithm
+  Double_t fMipX;                              //mip X position for Hidden Track Algorithm  
+  Double_t fMipY;                              //mip Y position for Hidden Track Algorithm
+  Int_t    fIdxMip;                            //mip index in the clus list
+  Int_t    fNClu;                              //n clusters to fit
+  Double_t fXClu[1000];                        //container for x clus position
+  Double_t fYClu[1000];                        //container for y clus position
+  Double_t fThTrkFit;                          //theta fitted of the track
+  Double_t fPhTrkFit;                          //phi   fitted of the track
+  Double_t fCkovFit;                           //estimated ring Cherenkov angle
+//
 private:  
   static const Double_t fgkRadThick;                      //radiator thickness
   static const Double_t fgkWinThick;                      //window thickness