ROOT logo
HYDRA - THE HADES ANALYSIS PACKAGE » (UNKNOWN) » HKalTrackSite

class HKalTrackSite: public TObject

_HADES_CLASS_DESCRIPTION


 A track site stores information about a measurement hit and parameters of
 the Kalman filter track states (prediction, filtering, smoothing, inverse filtering)
 for this hit.
 The hit object for a site may be replaced with the setHit(const HKalMdcHit &newhit)
 function.
 The site provides read/write access to the state vectors and the matrices for all
 track states via the setState* functions.
 The dimension of the measurement vector and track state vector must be defined
 when building the object and may not be changed later on.
 Track states can be stored in two coordinate systems: a system common for
 all measurement sites (usually sector coordinate) and coordinates defined by a
 virtual layer. The virtual layer has to be defined with the setHitVirtPlane()
 function.
 The functions transVirtLayToSec() and transSecToVirtLay() calculate and store
 the track state vectors and covariance matrices in the other coordinate system.
 The virtual layer coordinate system is used for drift chamber wire hits where
 the measurement point does not lie on the measurement layer.



Function Members (Methods)

public:
HKalTrackSite(const HKalTrackSite&)
HKalTrackSite(Int_t measDim, Int_t stateDim, Int_t stateDimVirtLay = 5)
virtual~HKalTrackSite()
voidTObject::AbstractMethod(const char* method) const
virtual voidaddHit(HKalMdcHit* newhit)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
virtual voidcalcJacLayToSec(TMatrixD& jac, const TVectorD& svLay, const HKalPlane& plane) const
virtual voidcalcJacSecToLay(TMatrixD& jac, const TVectorD& svSec, const HKalPlane& plane) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual voidclearHits()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
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 TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Int_tgetCell(Int_t idx = 0) const
virtual Double_tgetChi2() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const TMatrixD&getEffErrMat() const
virtual const TVectorD&getEffMeasVec() const
virtual Double_tgetEnergyLoss() const
virtual const TMatrixD&getErrMat(Int_t idx = 0) const
virtual const TVectorD&getErrVec(Int_t idx = 0) const
virtual const HKalMdcHit&getHit(Int_t idx = 0) const
virtual Double_tgetHitChi2(Int_t idx = 0) const
virtual Double_tgetHitDriftTime(Int_t idx = 0) const
virtual Double_tgetHitDriftTimeErr(Int_t idx = 0) const
virtual Float_tgetHitImpactAngle(Int_t idx = 0) const
virtual const HKalMdcMeasLayer&getHitMeasLayer() const
virtual Double_tgetHitsTotalWeight() const
virtual Double_tgetHitTimeTof(Int_t idx = 0) const
virtual Int_tgetHitType() const
virtual const TVectorD&getHitVec(Int_t idx = 0) const
virtual voidgetHitVec3(TVector3& hit3, Int_t idx = 0) const
virtual const HKalPlane&getHitVirtPlane(Int_t idx = 0) const
virtual Double_tgetHitWeight(Int_t idx = 0) const
virtual Double_tgetHitWeightHist(Int_t iDaf, Int_t idx = 0) const
virtual voidgetHitWirePts(TVector3& wire1, TVector3& wire2, Int_t idx = 0) const
virtual const char*TObject::GetIconName() const
virtual Bool_tgetIsActive() const
virtual Int_tgetLayer(Int_t idx = 0) const
virtual Int_tgetMeasDim() const
virtual Int_tgetModule(Int_t idx = 0) const
virtual const char*TObject::GetName() const
virtual Int_tgetNcompetitors() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual voidgetPosAndDirFromState(TVector3& pos, TVector3& dir, Kalman::kalFilterTypes stateType) const
virtual Int_tgetSector(Int_t idx = 0) const
virtual const HKalTrackState&getState(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
virtual const TMatrixD&getStateCovMat(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
virtual Int_tgetStateDim(Kalman::coordSys coord = kSecCoord) const
virtual Double_tgetStateParam(Kalman::kalFilterTypes stateType, Kalman::kalStateIdx par, Kalman::coordSys coord = kSecCoord) const
virtual const TMatrixD&getStateProcMat(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
virtual const TMatrixD&getStateProjMat(Kalman::kalFilterTypes stateType = kFiltered, Kalman::coordSys coord = kSecCoord) const
virtual const TMatrixD&getStatePropMat(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
virtual const TVectorD&getStateVec(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() 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
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_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::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)
HKalTrackSite&operator=(const HKalTrackSite&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidprint(Option_t* opt = "") const
virtual voidTObject::Print(Option_t* option = "") 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(ostream& out, Option_t* option = "")
virtual voidsetActive(Bool_t active)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidsetChi2(Double_t c)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidsetEffErrMat(const TMatrixD& errMat)
virtual voidsetEffMeasVec(const TVectorD& measVec)
virtual voidsetEnergyLoss(Double_t eloss)
virtual voidsetHitAndErr(const TVectorD& newhit, const TVectorD& newerr, Int_t idx = 0)
virtual voidsetHitChi2(Double_t chi2, Int_t idx = 0)
virtual voidsetHitDriftTime(Double_t time, Double_t timeErr, Int_t idx = 0)
virtual voidsetHitImpactAngle(Float_t alpha, Int_t idx = 0)
virtual Bool_tsetHitVirtPlane(const TVector3& origin, const TVector3& n, Int_t idx = 0)
virtual Bool_tsetHitVirtPlane(const TVector3& origin, const TVector3& u, const TVector3& v, Int_t idx = 0)
virtual voidsetHitWeight(Double_t weight, Int_t idx = 0)
virtual voidsetHitWeightHist(Double_t weight, Int_t iDaf, Int_t idx = 0)
virtual voidsetNdafs(Int_t n)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidsetStateCovMat(Kalman::kalFilterTypes stateType, const TMatrixD& fCov, Kalman::coordSys coord = kSecCoord)
virtual voidsetStateProcMat(Kalman::kalFilterTypes stateType, const TMatrixD& fProc, Kalman::coordSys coord = kSecCoord)
virtual voidsetStateProjMat(Kalman::kalFilterTypes stateType, const TMatrixD& fProj, Kalman::coordSys coord = kSecCoord)
virtual voidsetStatePropMat(Kalman::kalFilterTypes stateType, const TMatrixD& fProp, Kalman::coordSys coord = kSecCoord)
virtual voidsetStateVec(Kalman::kalFilterTypes stateType, const TVectorD& sv, Kalman::coordSys coord = kSecCoord)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidsortHits()
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
virtual voidtransform(const TRotation& transMat)
virtual voidtransSecToVirtLay(Kalman::kalFilterTypes stateType, Int_t iHit, Bool_t bCovUD = kFALSE)
virtual voidtransVirtLayToSec(Kalman::kalFilterTypes stateType, Int_t iHit, Bool_t bCovUD = kFALSE)
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()
private:
virtual HKalMdcHit*getHitPtr(Int_t idx = 0)
virtual voidtransformHit(const TRotation& transMat)
virtual voidtransformStates(const TRotation& transMat)

Data Members

private:
Bool_tbActiveSite is active/not active.
Double_tchi2IncThis site's contribution to chi^2 of the fit.
TMatrixDeffErrMat! Weighted error matrix of all competing hits in this site.
TVectorDeffMeasVec! Weighted measurement vector of all competing hits in this site.
Double_tenergyLossEnergy loss from the first site to this site in MeV/particle charge in elementary charges. Sign depends on propagation direction. This number is positive for forward and negative for backward iteraton.
TObjArray*hits! Stores all competing measurement hits.
HKalTrackState***trackStates! array with the track parameters for each track state in the sector coordinate system.

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HKalTrackSite(Int_t measDim, Int_t stateDim, Int_t stateDimVirtLay = 5)
 Creates a dummy hit and track states.
 measDim:  dimension of measurement vector.
 stateDimSec: dimension of the track state vectors in the sector coordinate system.
 stateDimVirtLay: dimension  of the track state vectors in the virtual layer coordinate system.
~HKalTrackSite()
HKalMdcHit* getHitPtr(Int_t idx = 0)
 Get hit at index idx that this site contains.
void transformHit(const TRotation& transMat)
 Transform the measurement hit coordinates and layer vectors
 using the rotation matrix transMat.
void transformStates(const TRotation& transMat)
 Transform the track state vectors using the rotation matrix transMat.
 Since information about the measurement layer is needed, make sure
 the hit has not been transformed yet.
void addHit(HKalMdcHit* newhit)
 Add a new hit to this site.
void calcJacLayToSec(TMatrixD& jac, const TVectorD& svLay, const HKalPlane& plane) const
 Track states can be stored in two coordinate systems:
 the sector coordinate system common for all sites and a local
 coordinate system for this site defined by a virtual plane.
 This calculated the Jacobian matrix for the transformation
 function from virtual layer to sector coordinates.

 Output:
 jac:   Jacobian matrix

 Input:
 svSec: State vector in virtual layer coordinates.
 plane: Virtual layer.
void calcJacSecToLay(TMatrixD& jac, const TVectorD& svSec, const HKalPlane& plane) const
 Track states can be stored in two coordinate systems:
 the sector coordinate system common for all sites and a local
 coordinate system for this site defined by a virtual plane.
 This calculated the Jacobian matrix for the transformation
 function from sector to virtual layer coordinates.

 Output:
 jac:   Jacobian matrix

 Input:
 svSec: State vector in sector coordinates.
 plane: Virtual layer.
void clearHits()
void sortHits()
void print(Option_t* opt = "") const
 Prints information about the hit and track states for this site.
 opt: Determines what information about the object will be printed.
 If opt contains:
 "Hit": print information about hit's measurement coordinates and layer
 "Pred": print state vector and used matrices of the predicted state
 "Filt": print state vector and used matrices of the filtered state
 "Smoo": print state vector and used matrices of the smoothed state
 "Inv":  print state vector and used matrices of the inverse filtered state
 If opt is empty all of the above will be printed.
 Only the state vector and covariance matrix are printed for all states.
 The content of unused matrices will not be printed:
 The propagator and process noise matrices are always stored in the filtered state.
 The projector matrix is stored in class HKalSystem.
 idx: Index of hit object in site.
void transform(const TRotation& transMat)
 Transform the track state vectors and measurement hit coordinates
 and the hit's measurement layer using the rotation matrix transMat.
void transVirtLayToSec(Kalman::kalFilterTypes stateType, Int_t iHit, Bool_t bCovUD = kFALSE)
 Track states can be stored in two coordinate systems:
 the sector coordinate system common for all sites and a local
 coordinate system for this site defined by a virtual plane.
 This functions calculates and stores the track state and
 covariance matrix in virtual layer coordinates from sector.

 Input:
 stateType: state to transform (kPredicted, kFiltered, kSmoothed, kInvFiltered)
 iHit:      index of hit stored in site
 bCovUD:    set to true if using the UD filter.
void transSecToVirtLay(Kalman::kalFilterTypes stateType, Int_t iHit, Bool_t bCovUD = kFALSE)
 Track states can be stored in two coordinate systems:
 the sector coordinate system common for all sites and a local
 coordinate system for this site defined by a virtual plane.
 This functions calculates and stores the track state and
 covariance matrix in sector coordinates from virtual layer.

 Input:
 stateType: state to transform (predicted, filtered, etc.)
 iHit:      index of hit stored in site
 bCovUD:    set to true if using the UD filter.
TMatrixD const& getErrMat(Int_t idx = 0) const
 Return the measurement covariance matrix.

 idx: The index of the hit stored in this measurement site.
      -1 will return the effective covariance which is
      used for the annealing filter. This matrix is a weighted
      mean of the measurement errors of all competing
      hits and must be calculated by calling the calcEffErrMat()
      function beforehand.
HKalMdcHit const& getHit(Int_t idx = 0) const
 Get hit at index idx that this site contains.
Double_t getHitsTotalWeight() const
 Returns the sum of the weights from all hits in this site.
TVectorD const& getHitVec(Int_t idx = 0) const
 Return the hit vector (measurement vector).

 idx: The index of the hit stored in this measurement site.
      -1 will return the effective measurement which is
      used for the annealing filter. The effective measurement
      is a weighted mean of the measurements of all competing
      hits and must be calculated by calling the calcEffMeasVec()
      function beforehand.
void setNdafs(Int_t n)
 Change number of DAF iterations.
void getPosAndDirFromState(TVector3& pos, TVector3& dir, Kalman::kalFilterTypes stateType) const
 Extracts a position and direction vector from a track state's parameters.

 Output:
 pos:       returns the hit coordinate vector
 dir:       returns the track direction vector
 Input:
 stateType: track state type (kPredicted, kFiltered, kSmoothed, kInvFiltered)
void setEffErrMat(const TMatrixD& errMat)
void setEffMeasVec(const TVectorD& measVec)
HKalTrackSite(Int_t measDim, Int_t stateDim, Int_t stateDimVirtLay = 5)
Int_t getCell(Int_t idx = 0) const
{ return getHit(idx).getCell(); }
Double_t getChi2() const
{ return chi2Inc; }
Double_t getEnergyLoss() const
{ return energyLoss; }
TMatrixD const& getEffErrMat() const
{ return effErrMat; }
TVectorD const& getEffMeasVec() const
{ return effMeasVec; }
TVectorD const& getErrVec(Int_t idx = 0) const
{ return getHit(idx).getErrVec(); }
Double_t getHitChi2(Int_t idx = 0) const
{ return getHit(idx).getChi2(); }
Double_t getHitDriftTime(Int_t idx = 0) const
{ return getHit(idx).getDriftTime(); }
Double_t getHitDriftTimeErr(Int_t idx = 0) const
{ return getHit(idx).getDriftTimeErr(); }
Float_t getHitImpactAngle(Int_t idx = 0) const
{ return getHit(idx).getImpactAngle(); }
HKalMdcMeasLayer const& getHitMeasLayer() const
{ return getHit().getMeasLayer(); }
void getHitVec3(TVector3& hit3, Int_t idx = 0) const
{ getHit(idx).getHitVec3(hit3); }
Double_t getHitTimeTof(Int_t idx = 0) const
{ return getHit(idx).getTimeTof(); }
Int_t getHitType() const
{ return getHit().getHitType(); }
Double_t getHitWeight(Int_t idx = 0) const
{ return getHit(idx).getWeight(); }
Double_t getHitWeightHist(Int_t iDaf, Int_t idx = 0) const
{ return getHit(idx).getWeightHist(iDaf); }
void getHitWirePts(TVector3& wire1, TVector3& wire2, Int_t idx = 0) const
{ getHit(idx).getWirePts(wire1, wire2); }
HKalPlane const& getHitVirtPlane(Int_t idx = 0) const
{ return getHit(idx).getVirtPlane(); }
Bool_t getIsActive() const
{ return bActive; }
Int_t getLayer(Int_t idx = 0) const
{ return getHit(idx).getLayer(); }
HKalTrackState const& getState(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
{ return *trackStates[coord][stateType]; }
Int_t getMeasDim() const
{ return getHit().getDimension(); }
Int_t getModule(Int_t idx = 0) const
{ return getHit(idx).getModule(); }
Int_t getNcompetitors() const
{ return hits->GetEntries(); }
Int_t getSector(Int_t idx = 0) const
{ return getHit(idx).getSector(); }
Int_t getStateDim(Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][kPredicted]->getStateDim(); }
Double_t getStateParam(Kalman::kalFilterTypes stateType, Kalman::kalStateIdx par, Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][stateType]->getStateParam(par); }
TVectorD const& getStateVec(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][stateType]->getStateVec(); }
TMatrixD const& getStateCovMat(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][stateType]->getCovMat(); }
TMatrixD const& getStatePropMat(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][stateType]->getPropMat(); }
TMatrixD const& getStateProjMat(Kalman::kalFilterTypes stateType = kFiltered, Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][stateType]->getProjMat(); }
TMatrixD const& getStateProcMat(Kalman::kalFilterTypes stateType, Kalman::coordSys coord = kSecCoord) const
{ return trackStates[coord][stateType]->getProcNoiseMat(); }
void setActive(Bool_t active)
{ bActive = active; }
void setChi2(Double_t c)
{ chi2Inc = c; }
void setEnergyLoss(Double_t eloss)
{ energyLoss = eloss; }
void setHitAndErr(const TVectorD& newhit, const TVectorD& newerr, Int_t idx = 0)
{ getHitPtr(idx)->setHitAndErr(newhit, newerr); }
void setHitChi2(Double_t chi2, Int_t idx = 0)
{ getHitPtr(idx)->setChi2(chi2); }
void setHitDriftTime(Double_t time, Double_t timeErr, Int_t idx = 0)
{ getHitPtr(idx)->setDriftTime(time, timeErr); }
void setHitImpactAngle(Float_t alpha, Int_t idx = 0)
{ getHitPtr(idx)->setImpactAngle(alpha); }
Bool_t setHitVirtPlane(const TVector3& origin, const TVector3& n, Int_t idx = 0)
{ return getHitPtr(idx)->setVirtPlane(origin, n); }
Bool_t setHitVirtPlane(const TVector3& origin, const TVector3& u, const TVector3& v, Int_t idx = 0)
{ return getHitPtr(idx)->setVirtPlane(origin, u, v); }
void setHitWeight(Double_t weight, Int_t idx = 0)
{ getHitPtr(idx)->setWeight(weight); }
void setHitWeightHist(Double_t weight, Int_t iDaf, Int_t idx = 0)
{ getHitPtr(idx)->setWeightHist(weight, iDaf); }
void setStateCovMat(Kalman::kalFilterTypes stateType, const TMatrixD& fCov, Kalman::coordSys coord = kSecCoord)
{ trackStates[coord][stateType]->setCovMat(fCov); }
void setStatePropMat(Kalman::kalFilterTypes stateType, const TMatrixD& fProp, Kalman::coordSys coord = kSecCoord)
{ trackStates[coord][stateType]->setPropMat(fProp); }
void setStateProjMat(Kalman::kalFilterTypes stateType, const TMatrixD& fProj, Kalman::coordSys coord = kSecCoord)
{ trackStates[coord][stateType]->setProjMat(fProj); }
void setStateProcMat(Kalman::kalFilterTypes stateType, const TMatrixD& fProc, Kalman::coordSys coord = kSecCoord)
{ trackStates[coord][stateType]->setProcNoiseMat(fProc); }
void setStateVec(Kalman::kalFilterTypes stateType, const TVectorD& sv, Kalman::coordSys coord = kSecCoord)
{ trackStates[coord][stateType]->setStateVec(sv); }