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

class HKalFilterTask: public HReconstructor

_HADES_CLASS_DESCRIPTION

 This class implements the track reconstruction using the Kalman filter.



Function Members (Methods)

public:
HKalFilterTask(Int_t refid, Bool_t sim = kFALSE, Bool_t wire = kFALSE, Bool_t daf = kFALSE, Bool_t comp = kFALSE)
virtual~HKalFilterTask()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidHReconstructor::Browse(TBrowser* b)
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 Bool_tHReconstructor::connectTask(HTask* task, Int_t n = 0)
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual Bool_tdoPid(Int_t pid)
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 Int_texecute()
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 Bool_tfinalize()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Double_tgetChi2() const
virtual HTask*HReconstructor::getComposite()
virtual voidHReconstructor::getConnections()
virtual voidgetCovErrs(Int_t& nSymErrs, Int_t& nPosDefErrs) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Double_tgetFieldIntegral() const
virtual const TObjArray&getFieldTrack() const
virtual Int_tgetHitType() const
virtual const char*TObject::GetIconName() const
virtual Int_tgetIniPid(const HMdcTrkCand *const cand) const
virtual Bool_tgetIniSv(TVectorD& inisv, TMatrixD& iniC, Int_t pid, const TObjArray& allhits, const HMetaMatch2 *const pMetaMatch, const HMdcSeg *const inSeg, const HMdcSeg *const outSeg) const
virtual Bool_tgetIniSvGeant(TVectorD& inisv, TMatrixD& iniC, const TObjArray& allhitsGeantMdc, Int_t pid, Bool_t bSmear) const
virtual Bool_tgetIniSvRungeKutta(TVectorD& inisv, TMatrixD& iniC, Int_t pid, const TObjArray& allhits, const HMetaMatch2 *const pMetaMatch) const
virtual const HKalInput*getKalInput() const
virtual const HKalMetaMatcher*getKalMetaMatcher() const
virtual const HKalIFilt*getKalSys() const
virtual Int_tgetMeasDim() const
virtual const char*TNamed::GetName() const
virtual Double_tgetNdf() const
virtual Int_tgetNhits() const
virtual Int_tgetNsites() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual HTask*HTask::getOwner()
virtual const TObjArray&getPointsTrack() const
virtual Int_tgetStateDim(Kalman::coordSys coord = kSecCoord) const
TObjArrayHReconstructor::getTable()
virtual HTask*HReconstructor::getTask(const Char_t* name)
virtual const char*TNamed::GetTitle() const
virtual Double_tgetTrackLength() const
virtual Int_tgetTrackNum() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::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 Bool_tinit()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tHReconstructor::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
virtual voidHReconstructor::isTimed(Bool_t flag = kTRUE)
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual HTask*HReconstructor::next(Int_t& errCode)
virtual HMdcTrkCand*nextTrack(TObjArray& allhits)
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)
HTask&HTask::operator=(const HTask&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidHReconstructor::printTimer()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Bool_treinit()
voidTObject::ResetBit(UInt_t f)
virtual voidHReconstructor::resetTimer()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidHReconstructor::setActive(Bool_t state)MENU
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual Bool_tHTask::setConnections()
virtual voidsetConstField(Bool_t constField)
virtual voidsetCounterStep(Int_t c)
virtual voidsetDafPars(Double_t chi2cut, const Double_t* T, Int_t n)
virtual voidsetDirection(Bool_t dir)
virtual voidsetDoEnerLoss(Bool_t dedx)
virtual voidsetDoMultScat(Bool_t ms)
virtual voidsetDoPid(Int_t* pid, Int_t n)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidsetErrors(Double_t dx, Double_t dy, Double_t dtx, Double_t dty, Double_t dmom)
virtual voidsetFieldMap(HMdcTrackGField* fMap, Double_t scale)
virtual voidsetFieldVector(const TVector3& B)
virtual voidsetFillPointsArrays(Bool_t fill)
virtual voidsetFillSites(Bool_t fill)
virtual voidsetFilterMethod(Kalman::filtMethod type)
virtual Bool_tsetFilterPars(Bool_t wire, Bool_t daf, Bool_t comp)
virtual voidsetFuncMomErr(TF1* f)
virtual voidsetFuncTxErr(TF1* f)
virtual voidsetFunKyErr(TF1* f)
virtual voidsetIniStateMethod(Int_t value)
voidHTask::setManual()
virtual voidsetMdcMaterials(TObjArray* mats)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
virtual voidsetNumIterations(Int_t kalRuns)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidHTask::setOwner(HTask* atask)
virtual voidsetPid(Int_t (*)(HMdcTrkCand*) fPid)
virtual voidsetRotation(Kalman::kalRotateOptions rotate)
virtual voidsetRungeKuttaParams(Float_t initialStpSize, Float_t stpSizeDec, Float_t stpSizeInc, Float_t maxStpSize, Float_t minStpSize, Float_t minPrec, Float_t maxPrec, Int_t maxNumStps, Int_t maxNumStpsPCA, Float_t maxDst, Double_t minLngthCalcQ)
virtual voidsetSmoothing(Bool_t smooth)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidsetUseGeantPid(Bool_t geant)
virtual voidsetVerbose(Int_t v)
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
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 Bool_tcreateKalSystem()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidfillData(HMetaMatch2 *const pMetaMatch, const TObjArray& allhitsGeantMdc, HMdcSeg *const inSeg, HMdcSeg *const outSeg)
virtual voidfillDataSites(Int_t& iFirstSite, Int_t& iLastSite, const TObjArray& allhitsGeantMdc)
virtual HKalTrack*fillDataTrack(Int_t& iKalTrack, HMetaMatch2 *const pMetaMatch, Int_t iCatSiteFist, Int_t iCatSiteLast, HMdcSeg *const inSeg, HMdcSeg *const outSeg, const HKalMetaMatch& kalMatch) const
voidTObject::MakeZombie()

Data Members

protected:
Bool_tHReconstructor::fActiveActive flag
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
Bool_tHTask::fIsTimedtimer flag
TStringTNamed::fNameobject identifier
TObjArrayHReconstructor::fOutputs
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
private:
Bool_tbCompHitsConsider competing hits for the DAF.
Bool_tbDafApply the Deterministic Annealing Filter (DAF).
Bool_tbFillSitesFill Kalman categories for measurement sites and hits. Turned off by default.
Bool_tbGeantPidRun with Geant PID.
Bool_tbPrintErrPrint/suppress error messages during tracking.
Bool_tbPrintWarnPrint/suppress warnings during tracking.
Bool_tbSimSimulation/real data.
Bool_tbWireFit wire or segment hits.
Int_tcounterstepPrint out after fitting this amount of events.
TArrayIdopidFit only tracks with certain pids.
Double_terrMomError of initial momentum estimate as a fraction: 0.05 <=> 5% uncertainty. Will only be used if fMomErr is not defined or if the initial state estimate is from Geant.
Double_terrTxError of track state Tan(p_x/p_z) in sector coordinates and radians. Will only be used if fTxErr is not defined or if the initial state estimate is from Geant.
Double_terrTyError of track state Tan(p_y/p_z) in sector coordinates and radians. Will only be used if fTyErr is not defined or if the initial state estimate is from Geant.
Double_terrXError of track state x-position in sector coordinates and mm.
Double_terrYError of track state y-position in sector coordinates and mm.
HCategory*fCatKalHit2d! Output category. Filled when fitting segments.
HCategory*fCatKalHitWire! Output category. Filled when fitting wire hits.
HCategory*fCatKalSite! Output category.
HCategory*fCatKalTrack! Output category.
HCategory*fCatMetaMatch! Meta match category.
HCategory*fCatRpcClst! RpcCluster category.
HCategory*fCatSplineTrack1 Retrieve momentum estimate from spline.
HCategory*fCatTofHit! TofHit categeory.
Int_t (*)(HMdcTrkCand*)fGetPid! Function for initial PID hypothesis.
TF1*fMomErr! Function to calculate the initial momentum error. Depends on theta in degrees.
TF1*fTxErr! Function to calculate the initial parameter tan(p_x/p_z). Depends on theta in degrees.
TF1*fTyErr! Function to calculate the initial parameter tan(p_x/p_z). Depends on theta in degrees.
Int_tiniSvMethodInput for initial state vector. default = Spline, 1 = Geant, 2 = smeared Geant, 2 = Runge-Kutta
HKalInput*input! Retrieves measurements of the next track.
HKalIFilt*kalsys! Kalman filter object.
TObjArray*materials! Optional pointer to array with materials for the MDCs.
Int_tmeasDimDimension of measurement vector.
HKalMetaMatchermetaMatcherMatches track with Meta detector.
const TStringnoKalman
Int_tnumTracksNumber of reconstructed tracks
Int_tnumTracksErrNumber of tracks where reconstruction failed
Int_trefIdRuntime reference ID.
Int_tstateDimDimension of track state vector.

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

Bool_t createKalSystem()
 Create a new kalsys object depending on the class variables
 bWire, bDaf and bCompHits.
 An existing kalsys object will be deleted.
void fillData(HMetaMatch2 *const pMetaMatch, const TObjArray& allhitsGeantMdc, HMdcSeg *const inSeg, HMdcSeg *const outSeg)
 Fills categories with reconstruction results.
 pMetaMatch: Meta match candidate. Index to Kalman filter is set.
 allhitsGeantMdc:
HKalTrack* fillDataTrack(Int_t& iKalTrack, HMetaMatch2 *const pMetaMatch, Int_t iCatSiteFist, Int_t iCatSiteLast, HMdcSeg *const inSeg, HMdcSeg *const outSeg, const HKalMetaMatch& kalMatch) const
void fillDataSites(Int_t& iFirstSite, Int_t& iLastSite, const TObjArray& allhitsGeantMdc)
 Fills categories for measurement sites and hits with reconstruction results.
 Storing these categories consumes large amounts of disk space and is mainly
 intended for debugging purposes.

 Returns the indices for the first and last measurement site needed by the
 main track category.

 output:
 iFirstSite: index of first measurement site in catagory catKalSite.
 iLastSite:  index of last measurement site in catagory catKalSite.

 input:
 allhitsGeantMdc: Array with Geant hits in MDCs.
HKalFilterTask(Int_t refid, Bool_t sim = kFALSE, Bool_t wire = kFALSE, Bool_t daf = kFALSE, Bool_t comp = kFALSE)
 Task to run the Kalman filter.

 Input:
 ref:   Run ID number.
 sim:   Simulation/Data.
 wire:  Run Kalman filter Mdc drift chamber hits or on segment hits.
 daf:   Apply the Deterministic Annealing Filter (DAF).
~HKalFilterTask()
Int_t getIniPid(const HMdcTrkCand *const cand) const
 Get particle hypothesis.
Bool_t getIniSv(TVectorD& inisv, TMatrixD& iniC, Int_t pid, const TObjArray& allhits, const HMetaMatch2 *const pMetaMatch, const HMdcSeg *const inSeg, const HMdcSeg *const outSeg) const
 Calculates initial state vector and covariance matrix for
 the Kalman filter.
 Position is derived from first measurement,
 direction from MDC segments and momentum is taken from Spline fit.

 output:
 inisv: Initial state vector.
 iniC:  Initial covariance matrix.
 input:
 pid:        GEANT particle ID.
 allhits:    Array with MDC hits. Must be of class HKalMdcHit.
 pMetaMatch: Pointer to Meta match.
 inSeg:      Pointer to inner MDC segment.
 outSeg:     Pointer to outer MDC segment.
Bool_t getIniSvGeant(TVectorD& inisv, TMatrixD& iniC, const TObjArray& allhitsGeantMdc, Int_t pid, Bool_t bSmear) const
 Calculate starting position and direction of Geant hit.
Bool_t getIniSvRungeKutta(TVectorD& inisv, TMatrixD& iniC, Int_t pid, const TObjArray& allhits, const HMetaMatch2 *const pMetaMatch) const
 Retrieve initial state from Runge-Kutta fit.
 Find any Runge-Kutta object from MetaMatch.
Bool_t doPid(Int_t pid)
 Returns true if particles with Geant ID pid are going to be filtered.
Int_t execute(void)
Bool_t init(void)
HMdcTrkCand* nextTrack(TObjArray& allhits)
 Fill the array allhits with the next track candidate.
Bool_t reinit(void)
Bool_t finalize(void)
void setErrors(Double_t dx, Double_t dy, Double_t dtx, Double_t dty, Double_t dmom)
 Error estimates used to fill the initial covariance matrix.
 dx, dy:   Position errors in sector coordinates and mm.
 dtx, dty: tx = tan(px/pz), ty = tan(py/pz) in radians.
 dmom:     Momentum uncertainty as a fraction. For example 0.1 means initial estimate is
           within 10% of the true momentum.
void setDoPid(Int_t* pid, Int_t n)
 Only reconstruct particles with certain pid.
 pid: Array containing the Geant particle ids.
 n:   Size of array pid. Pass n=0 to reconstruct all particles.
Bool_t setFilterPars(Bool_t wire, Bool_t daf, Bool_t comp)
 Modifies the type of the Kalman filter that will be applied:
 wire:  Run Kalman filter Mdc drift chamber hits or on segment hits.
 daf:   Apply the Deterministic Annealing Filter (DAF).
 comp:  Consider competing hits for the DAF.

 It is recommended to specify the desired values for these parameters
 already in the contructor.
 Returns kFALSE if the parameter combination is not valid.
 An existing Kalman filter object will be deleted along with its
 settings.
void setVerbose(Int_t v)
 Set verbose level:
 1: print warnings and error messages
 2: print error messages only
 all else: print nothing.
Double_t getChi2() const
{ return kalsys->getChi2(); }
void getCovErrs(Int_t& nSymErrs, Int_t& nPosDefErrs) const
{ kalsys->getCovErrs(nSymErrs, nPosDefErrs); }
Double_t getFieldIntegral() const
{ return kalsys->getFieldIntegral(); }
Int_t getHitType() const
{ return kalsys->getHitType(); }
Int_t getNhits() const
{ return kalsys->getNhits(); }
Double_t getNdf() const
{ return kalsys->getNdf(); }
Int_t getNsites() const
{ return kalsys->getNsites(); }
Int_t getMeasDim() const
{ return kalsys->getMeasDim(); }
TObjArray const& getPointsTrack() const
{ return kalsys->getPointsTrack(); }
TObjArray const& getFieldTrack() const
{ return kalsys->getFieldTrack(); }
const HKalIFilt* getKalSys() const
{ return kalsys; }
const HKalInput* getKalInput() const
{ return input; }
const HKalMetaMatcher* getKalMetaMatcher() const
{ return &metaMatcher; }
Int_t getStateDim(Kalman::coordSys coord = kSecCoord) const
{ return kalsys->getStateDim(coord); }
Double_t getTrackLength() const
{ return kalsys->getTrackLength(); }
Int_t getTrackNum() const
{ return kalsys->getTrackNum(); }
void setConstField(Bool_t constField)
{ (kalsys) ? kalsys->setConstField(constField) : Warning("setConstField()","%s", noKalman.Data()); }
void setCounterStep(Int_t c)
{ counterstep = c; }
void setDafPars(Double_t chi2cut, const Double_t* T, Int_t n)
{ kalsys->setDafPars(chi2cut, &T[0], n); }
void setDirection(Bool_t dir)
{ (kalsys) ? kalsys->setDirection(dir) : Warning("setConstField()","%s", noKalman.Data()); }
void setDoEnerLoss(Bool_t dedx)
{ (kalsys) ? kalsys->setDoEnerLoss(dedx) : Warning("setConstField()","%s", noKalman.Data()); }
void setDoMultScat(Bool_t ms)
{ (kalsys) ? kalsys->setDoMultScat(ms) : Warning("setConstField()","%s", noKalman.Data()); }
void setFillPointsArrays(Bool_t fill)
{ (kalsys) ? kalsys->setFillPointsArrays(fill) : Warning("setConstField()","%s", noKalman.Data()); }
void setFillSites(Bool_t fill)
{ bFillSites = fill; }
void setFieldMap(HMdcTrackGField* fMap, Double_t scale)
{ (kalsys) ? kalsys->setFieldMap(fMap, scale) : Warning("setConstField()","%s", noKalman.Data()); }
void setFieldVector(const TVector3& B)
{ (kalsys) ? kalsys->setFieldVector(B) : Warning("setConstField()","%s", noKalman.Data()); }
void setFilterMethod(Kalman::filtMethod type)
{ (kalsys) ? kalsys->setFilterMethod(type) : Warning("setConstField()","%s", noKalman.Data()); }
void setFuncMomErr(TF1* f)
{ fMomErr = f; }
void setFuncTxErr(TF1* f)
{ fTxErr = f; }
void setFunKyErr(TF1* f)
{ fTyErr = f; }
void setIniStateMethod(Int_t value)
{ iniSvMethod = value; }
void setMdcMaterials(TObjArray* mats)
{ materials = mats; }
void setNumIterations(Int_t kalRuns)
{ (kalsys) ? kalsys->setNumIterations(kalRuns) : Warning("setConstField()","%s", noKalman.Data()); }
void setPid(Int_t (*)(HMdcTrkCand*) fPid)
{ fGetPid = fPid; }
void setRotation(Kalman::kalRotateOptions rotate)
{ (kalsys) ? kalsys->setRotation(rotate) : Warning("setConstField()","%s", noKalman.Data()); }
void setRungeKuttaParams(Float_t initialStpSize, Float_t stpSizeDec, Float_t stpSizeInc, Float_t maxStpSize, Float_t minStpSize, Float_t minPrec, Float_t maxPrec, Int_t maxNumStps, Int_t maxNumStpsPCA, Float_t maxDst, Double_t minLngthCalcQ)
void setSmoothing(Bool_t smooth)
{ (kalsys) ? kalsys->setSmoothing(smooth) : Warning("setConstField()","%s", noKalman.Data()); }
void setUseGeantPid(Bool_t geant)
{ bGeantPid = geant; }