ROOT logo
AliRoot » HMPID » AliHMPIDReconHTA

class AliHMPIDReconHTA: public TNamed


AliHMPIDReconHTA

HMPID class to perfom pattern recognition based on Hough transfrom
for single chamber

Function Members (Methods)

public:
AliHMPIDReconHTA()
virtual~AliHMPIDReconHTA()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Double_tCkovFit() const
Bool_tCkovHiddenTrk(AliESDtrack* pTrk, TClonesArray* pClu, Int_t index, Double_t nmean)
static TClass*Class()
virtual const char*TObject::ClassName() const
Bool_tClCk(Int_t i) const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
Bool_tCluPreFilter(TClonesArray* pClu)
Int_tCompactDB(Int_t binX, Int_t binY) const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
voidDeleteVars() const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
Bool_tDoRecHiddenTrk()
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
voidFillZeroChan() const
voidFindBinDB(Double_t x, Double_t y, Int_t& binX, Int_t& binY)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Bool_tFindShape(Double_t& thTrkRec, Double_t& phiTrkRec, Double_t& thetaCRec)
Double_tFindSimmPhi()
Bool_tFitFree(Double_t thTrkRec, Double_t phiTrkRec)
Bool_tFitRing(Double_t thTrkRec, Double_t phiTrkRec)
Bool_tFitStatus() const
static voidFunMinPhot(Int_t&, Double_t*, Double_t& f, Double_t* par, Int_t iflag)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
Int_tIdxMip() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInitDatabase()
voidInitVars(Int_t n)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
Double_tMipQ() const
Double_tMipX() const
Double_tMipY() const
Int_tNClu() const
Int_tNCluFit() const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
Double_tPhotPhi(Int_t i) const
Double_tPhotTheta(Int_t i) const
Double_tPhTrkFit() const
Double_tPhTrkIn() const
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
Int_tr2(Double_t* coef, Double_t& x1, Double_t& x2)
Double_tRadX() const
Double_tRadY() const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCkovFit(Double_t ckov)
voidSetCkovSig2(Double_t rms)
voidSetClCk(Int_t i, Bool_t what)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetFitStatus(Bool_t status)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidSetNClu(Int_t nclu)
voidSetNCluFit(Int_t ncluFit)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPhotAngles(Int_t i, Double_t th, Double_t ph)
voidSetRadXY(Double_t x, Double_t y)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidSetTrkFit(Double_t th, Double_t ph)
virtual voidTObject::SetUniqueID(UInt_t uid)
Bool_tShapeModel(Int_t np, Double_t* phiphot, Double_t* dist, Double_t& xA, Double_t& xB, Double_t& phiStart)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
Double_tThTrkFit() const
Double_tThTrkIn() const
Bool_tUniformDistrib()
virtual voidTObject::UseCurrentStyle()
Double_tVertParab(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3) const
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Double_tXClu(Int_t i) const
Double_tYClu(Int_t i) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

protected:
Double_tfCkovFitestimated ring Cherenkov angle
Double_tfCkovSig2estimated error^2 on ring Cherenkov angle
Bool_t*fClCkflag if cluster is used in fitting
Bool_tfFitStatusstatus of the fit 0=ok 1=still to be optimized
Int_tfIdxMipmip index in the clus list
Double_tfMipQmip Q for Hidden Track Algorithm
Double_tfMipXmip X position for Hidden Track Algorithm
Double_tfMipYmip Y position for Hidden Track Algorithm
Int_tfNClun clusters to fit
Int_tfNCluFitn clusters used to fit the ring
TStringTNamed::fNameobject identifier
AliHMPIDParam*fParamPointer to AliHMPIDParam
Double_tfPhTrkFitphi fitted of the track
Double_tfPhTrkInphi started from ShapeModel
Double_t*fPhiPhotcontainer for phi clus
Double_tfRadXrad X position for Hidden Track Algorithm
Double_tfRadYrad Y position for Hidden Track Algorithm
Double_tfThTrkFittheta fitted of the track
Double_tfThTrkIntheta started from ShapeModel
Double_t*fThetaPhotcontainer for theta Cerenkov clus
TStringTNamed::fTitleobject title
Double_t*fXClucontainer for x clus position
Double_t*fYClucontainer for y clus position
static Int_tfgDB[500][150]tmp DB

Class Charts

Inheritance Chart:
TNamed
AliHMPIDReconHTA

Function documentation

AliHMPIDReconHTA()
..
hidden algorithm
..
~AliHMPIDReconHTA()
void InitVars(Int_t n)
..
Init some variables
..
void DeleteVars() const
..
Delete variables
..
Bool_t CkovHiddenTrk(AliESDtrack* pTrk, TClonesArray* pClu, Int_t index, Double_t nmean)
 Pattern recognition method without any infos from tracking:HTA (Hidden Track Algorithm)...
 The method finds in the chmuber the cluster with the highest charge
 compatibile with a MIP, then the strategy is applied
 Arguments:  pTrk     - pointer to ESD track
             pCluLs   - list of clusters for a given chamber
             pNmean   - pointer to ref. index
             pQthre   - pointer to qthre
   Returns:           - 0=ok,1=not fitted
Bool_t DoRecHiddenTrk()
 Pattern recognition method without any infos from tracking...
 First a preclustering filter to avoid part of the noise
 Then only ellipsed-rings are fitted (no possibility,
 for the moment, to reconstruct very inclined tracks)
 Finally a fitting with (th,ph) free, starting by very close values
 previously evaluated.
 Arguments:   none
   Returns:   none
Bool_t CluPreFilter(TClonesArray* pClu)
 Pre-filter of bkg clusters
 Arguments:    pSluLst  -  List of the clusters for a given chamber
   Returns:    status   -  TRUE if filtering leaves enough photons, FALSE if not

Bool_t FindShape(Double_t& thTrkRec, Double_t& phiTrkRec, Double_t& thetaCRec)
 Finds the estimates for phi and theta of the track and the ThetaCerenkov
 by using a database of the shapes of the rings
 Arguments:   none
   Returns:   thTrkRec  - estimate of theta track
              phiTrkRec - estimate of phi   track
              thetaCRec - estimate of ThetaCerenkov
              status    - TRUE if a good solution is found, FALSE if not
Bool_t ShapeModel(Int_t np, Double_t* phiphot, Double_t* dist, Double_t& xA, Double_t& xB, Double_t& phiStart)
 Find a Spline curve to define dist. vs. phi angle
 in order to estimate the phi of the track
 Arguments:   np     - # points corresponding to # photon candidates
             dist    - distance of each photon from MIP
             phiphot - phi of the photon in the DRS
   Returns:  xA      - min. distance from MIP
             xB      - dist. from mip perpedicular to the major axis
             phiStart- estimate of the track phi
Double_t VertParab(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3) const
 It uses parabola from 3 points to evaluate the x-coord of the parab
 Arguments:    xi,yi - points
   Returns:    x-coord of the vertex
Bool_t FitRing(Double_t thTrkRec, Double_t phiTrkRec)
Bool_t FitFree(Double_t thTrkRec, Double_t phiTrkRec)
 Fit performed by minimizing RMS/sqrt(n) of the
 photons reconstructed. First phi is fixed and theta
 is fouond, then (th,ph) of the track
 as free parameters
 Arguments:    PhiRec phi of the track
   Returns:    none
void FunMinPhot(Int_t& , Double_t* , Double_t& f, Double_t* par, Int_t iflag)
 Minimization function to find best track and thetaC parameters
 Arguments:    f = function value to minimize
             par = list of parameter to find
           iflag = flag status. See Minuit instructions
   Returns:    none

 Note: it is necessary to call an instance of AlihMPIDParam. Not possible to use fParam
 because of the static instantiation of the function in Minuit
void InitDatabase()
 Construction a database of ring shapes on fly
   Arguments: none
   Returns  : none
  N.B. fgDB is the distance with x-min from MIP
                                 y-dist from the ring of the MIP perpendicular to major axis
        The content is the packed info of track theta and thetaC in degrees
                        thetaC+1000*thTrk

  TFile *pout = new TFile("./database.root","recreate");
void FillZeroChan() const
If fills eventually channel without entries
inthe histo "database" jyst interpolating the neighboring cells
 Arguments: histogram pointer of the database
   Returns: none

Int_t r2(Double_t* coef, Double_t& x1, Double_t& x2)
2nd deg. equation
solution
 Arguments: coef 2 1 0: ax^2+bx+c=0
   Returns: n. of solutions
            x1= 1st sol
            x2= 2nd sol
Double_t FindSimmPhi()
 Reconstruction of phiTRK angle with two methods (in switching)

 - least square method (for closed rings)
 - by minimum distance mip-photon (for open rings)
void FindBinDB(Double_t x, Double_t y, Int_t& binX, Int_t& binY)
Bool_t UniformDistrib()
AliHMPIDReconHTA()
void SetNClu(Int_t nclu)
{fNClu=nclu;}
void SetClCk(Int_t i, Bool_t what)
{fClCk[i]=what;}
void SetCkovFit(Double_t ckov)
{fCkovFit=ckov;}
void SetCkovSig2(Double_t rms)
{fCkovSig2=rms;}
void SetTrkFit(Double_t th, Double_t ph)
{fThTrkFit = th;fPhTrkFit = ph;}
void SetNCluFit(Int_t ncluFit)
{fNCluFit=ncluFit;}
void SetPhotAngles(Int_t i, Double_t th, Double_t ph)
{fPhiPhot[i]=ph;fThetaPhot[i]=th;}
void SetFitStatus(Bool_t status)
{fFitStatus = status;}
void SetRadXY(Double_t x, Double_t y)
{fRadX = x;fRadY = y;}
Int_t CompactDB(Int_t binX, Int_t binY) const
{return fgDB[binX][binY];}
Int_t IdxMip() const
{return fIdxMip;}
Double_t MipX() const
{return fMipX;}
Double_t MipY() const
{return fMipY;}
Double_t MipQ() const
{return fMipQ;}
Double_t RadX() const
{return fRadX;}
Double_t RadY() const
{return fRadY;}
Int_t NClu() const
{return fNClu;}
Int_t NCluFit() const
{return fNCluFit;}
Double_t XClu(Int_t i) const
{return fXClu[i];}
Double_t YClu(Int_t i) const
{return fYClu[i];}
Bool_t ClCk(Int_t i) const
{return fClCk[i];}
Double_t PhotPhi(Int_t i) const
{return fPhiPhot[i];}
Double_t PhotTheta(Int_t i) const
{return fThetaPhot[i];}
Bool_t FitStatus() const
{return fFitStatus;}
Double_t CkovFit() const
{return fCkovFit;}
Double_t ThTrkIn() const
{return fThTrkIn;}
Double_t PhTrkIn() const
{return fPhTrkIn;}
Double_t ThTrkFit() const
{return fThTrkFit;}
Double_t PhTrkFit() const
{return fPhTrkFit;}
AliHMPIDReconHTA & operator=(const AliHMPIDReconHTA& r)