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
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