ROOT logo
AliRoot » HMPID » AliHMPIDRecon

class AliHMPIDRecon: public TNamed


AliHMPIDRecon

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

Function Members (Methods)

public:
AliHMPIDRecon()
virtual~AliHMPIDRecon()
voidTObject::AbstractMethod(const char* method) const
voidAddObjectToFriends(TClonesArray* pCluLst, Int_t photonIndex, AliESDtrack* pTrk)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
voidCkovAngle(AliESDtrack* pTrk, TClonesArray* pCluLst, Int_t index, Double_t nmean, Float_t xRa, Float_t yRa)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") 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)
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)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Bool_tFindPhotCkov(Double_t cluX, Double_t cluY, Double_t& thetaCer, Double_t& phiCer)
Double_tFindRingCkov(Int_t iNclus)
Double_tFindRingExt(Double_t ckov, Int_t ch, Double_t xPc, Double_t yPc, Double_t thRa, Double_t phRa)
voidFindRingGeom(Double_t ckovAng, Int_t level = 1)
Int_tFlagPhot(Double_t ckov, TClonesArray* pCluLst, AliESDtrack* pTrk)
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
TVector2GetMip() 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
Double_tGetRingAcc() const
Double_tGetRingArea() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
Double_tHoughResponse()
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
voidInitVars(Int_t n)
virtual voidTObject::Inspect() constMENU
TVector2IntWithEdge(TVector2 p1, TVector2 p2) const
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
voidLors2Trs(TVector3 dirCkov, Double_t& thetaCer, Double_t& phiCer) const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) 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 = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidPropagate(const TVector3 dir, TVector3& pos, Double_t z) const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidRefract(TVector3& dir, Double_t n1, Double_t n2) const
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)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetImpPC(Double_t xPc, Double_t yPc)
voidSetMip(Double_t xmip, Double_t ymip)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidSetTrack(Double_t xRad, Double_t yRad, Double_t theta, Double_t phi)
virtual voidTObject::SetUniqueID(UInt_t uid)
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
TVector2TraceForward(TVector3 dirCkov) const
TVector2TracePhot(Double_t ckovTh, Double_t ckovPh) const
voidTrs2Lors(TVector3 dirCkov, Double_t& thetaCer, Double_t& phiCer) const
virtual voidTObject::UseCurrentStyle()
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
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

public:
enum ETrackingFlags { kNotPerformed
kMipDistCut
kMipQdcCut
kNoPhotAccept
kNoRad
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Double_tfCkovSigma2sigma2 of the reconstructed ring
Float_tfDThetaStep for sliding window
Bool_tfIsWEIGHTflag to consider weight procedure
TVector2fMipPosmip positon for a given track
TStringTNamed::fNameobject identifier
AliHMPIDParam*fParamPointer to AliHMPIDParam
TVector2fPctrack position at PC
Double_t*fPhotCkovCkov angles of photon candidates, [rad]
Int_t*fPhotClusIndexcluster index of photon candidates
Int_tfPhotCntcounter of photons candidate
Int_t*fPhotFlagflags of photon candidates
Double_t*fPhotPhiphis of photons candidates, [rad]
Double_t*fPhotWeiweigths of photon candidates
Double_tfRingAccfraction of the ring accepted by geometry
Double_tfRingAreaarea of a given ring
TStringTNamed::fTitleobject title
TVector3fTrkDirtrack direction in LORS at RAD
TVector2fTrkPostrack positon in LORS at RAD
Float_tfWindowWidthHough width of sliding window

Class Charts

Inheritance Chart:
TNamed
AliHMPIDRecon

Function documentation

AliHMPIDRecon()
..
init of data members
..
void InitVars(Int_t n)
..
Init some variables
..
void DeleteVars() const
..
Delete variables
..
void CkovAngle(AliESDtrack* pTrk, TClonesArray* pCluLst, Int_t index, Double_t nmean, Float_t xRa, Float_t yRa)
 Pattern recognition method based on Hough transform
 Arguments:   pTrk     - track for which Ckov angle is to be found
              pCluLst  - list of clusters for this chamber
   Returns:            - track ckov angle, [rad],
Bool_t FindPhotCkov(Double_t cluX, Double_t cluY, Double_t& thetaCer, Double_t& phiCer)
 Finds Cerenkov angle  for this photon candidate
 Arguments: cluX,cluY - position of cadidate's cluster
 Returns: Cerenkov angle
TVector2 TraceForward(TVector3 dirCkov) const
Trace forward a photon from (x,y) up to PC
 Arguments: dirCkov photon vector in LORS
   Returns: pos of traced photon at PC
void Lors2Trs(TVector3 dirCkov, Double_t& thetaCer, Double_t& phiCer) const
Theta Cerenkov reconstruction
 Arguments: dirCkov photon vector in LORS
   Returns: thetaCer of photon in TRS
              phiCer of photon in TRS
  TVector3 dirTrk;
  dirTrk.SetMagThetaPhi(1,fTrkDir.Theta(),fTrkDir.Phi());
  Double_t thetaCer = TMath::ACos(dirCkov*dirTrk);
void Trs2Lors(TVector3 dirCkov, Double_t& thetaCer, Double_t& phiCer) const
Theta Cerenkov reconstruction
 Arguments: dirCkov photon vector in TRS
   Returns: thetaCer of photon in LORS
              phiCer of photon in LORS
void FindRingGeom(Double_t ckovAng, Int_t level = 1)
 Find area covered in the PC acceptance
 Arguments: ckovAng - cerenkov angle
            level   - precision in finding area and portion of ring accepted (multiple of 50)
   Returns: area of the ring in cm^2 for given theta ckov
TVector2 IntWithEdge(TVector2 p1, TVector2 p2) const
 It finds the intersection of the line for 2 points traced as photons
 and the edge of a given PC
 Arguments: 2 points obtained tracing the photons
   Returns: intersection point with detector (PC) edges
Double_t FindRingCkov(Int_t iNclus)
 Loops on all Ckov candidates and estimates the best Theta Ckov for a ring formed by those candidates. Also estimates an error for that Theat Ckov
 collecting errors for all single Ckov candidates thetas. (Assuming they are independent)
 Arguments: iNclus- total number of clusters in chamber for background estimation
    Return: best estimation of track Theta ckov
Int_t FlagPhot(Double_t ckov, TClonesArray* pCluLst, AliESDtrack* pTrk)
 Flag photon candidates if their individual ckov angle is inside the window around ckov angle returned by  HoughResponse()
 Arguments: ckov- value of most probable ckov angle for track as returned by HoughResponse()
   Returns: number of photon candidates happened to be inside the window
void AddObjectToFriends(TClonesArray* pCluLst, Int_t photonIndex, AliESDtrack* pTrk)
 Add AliHMPIDcluster object to ESD friends
TVector2 TracePhot(Double_t ckovTh, Double_t ckovPh) const
 Trace a single Ckov photon from emission point somewhere in radiator up to photocathode taking into account ref indexes of materials it travereses
 Arguments: ckovThe,ckovPhi- photon ckov angles in TRS, [rad]
   Returns: distance between photon point on PC and track projection
void Propagate(const TVector3 dir, TVector3& pos, Double_t z) const
 Finds an intersection point between a line and XY plane shifted along Z.
 Arguments:  dir,pos   - vector along the line and any point of the line
             z         - z coordinate of plain
   Returns:  none
   On exit:  pos is the position if this intesection if any
void Refract(TVector3& dir, Double_t n1, Double_t n2) const
 Refract direction vector according to Snell law
 Arguments:
            n1 - ref idx of first substance
            n2 - ref idx of second substance
   Returns: none
   On exit: dir is new direction
Double_t HoughResponse()
    fIdxMip = mipId;
Double_t FindRingExt(Double_t ckov, Int_t ch, Double_t xPc, Double_t yPc, Double_t thRa, Double_t phRa)
 To find the acceptance of the ring even from external inputs.


AliHMPIDRecon()
virtual ~AliHMPIDRecon()
{;}
TVector2 GetMip() const
{return fMipPos;}
Double_t GetRingArea() const
{return fRingArea;}
Double_t GetRingAcc() const
{return fRingAcc;}
void SetTrack(Double_t xRad, Double_t yRad, Double_t theta, Double_t phi)
{fTrkDir.SetMagThetaPhi(1,theta,phi); fTrkPos.Set(xRad,yRad);}
void SetImpPC(Double_t xPc, Double_t yPc)
{fPc.Set(xPc,yPc);}
void SetMip(Double_t xmip, Double_t ymip)
{fMipPos.Set(xmip,ymip);}
AliHMPIDRecon & operator=(const AliHMPIDRecon& r)