ROOT logo

#include "hkalfilt2d.h"

//_HADES_CLASS_DESCRIPTION
///////////////////////////////////////////////////////////////////////////////
//
// Kalman filter for segment hits. See doc for HKalIFilter
//-----------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////

ClassImp (HKalFilt2d)

//  -----------------------------------
//  Ctors and Dtor
//  -----------------------------------

HKalFilt2d::HKalFilt2d(Int_t n, Int_t measDim, Int_t stateDim,
                       HMdcTrackGField *fMap, Double_t fpol)
    : HKalIFilt(n, measDim, stateDim, fMap, fpol) {

    setHitType(Kalman::kSegHit);
}

Bool_t HKalFilt2d::calcMeasVecFromState(TVectorD &projMeasVec, const HKalTrackSite *site,
					Kalman::kalFilterTypes stateType, Kalman::coordSys sys,
					Int_t iHit) const {
    // Extracts measurement vector from state vector for segment hits.

#if kalDebug > 0
    Int_t mdim = getMeasDim();
    if(projMeasVec.GetNrows() != mdim) {
        Warning("calcMeasVecFromState()", Form("Dimension of measurement vector (%i) does not match that of function parameter (%i).", mdim, projMeasVec.GetNrows()));
        projMeasVec.ResizeTo(mdim);
    }

    if(mdim != 2) {
        Error("calcMeasVecFromState()", Form("Dimension of measurement vector is %i. Expected 2 for segment hits.", mdim));
        return kFALSE;
    }
#endif
    const TVectorD &sv = site->getStateVec(stateType);

    projMeasVec(0) = sv(kIdxX0);
    projMeasVec(1) = sv(kIdxY0);

    return kTRUE;
}

//  -----------------------------------
//  Implementation of protected methods
//  -----------------------------------

Bool_t HKalFilt2d::calcProjector(Int_t iSite) const {
    // The projection function h(a) extracts a measurement vector from a track state a.
    // The projector matrix is the Jacobian of this function, i.e. @h(a)/@a.
    // The projector matrix is stored in the site's filtered track state.

    HKalTrackSite *site = getSite(iSite);
    if(!site) {
	return kFALSE;
    }

    Int_t mdim = getMeasDim();
    Int_t sdim = getStateDim();

#if kalDebug > 0
    if(getHitType() != Kalman::kSegHit) {
    }
    if(mdim != 2) {
        Error("calcProjector()",
              Form("Dimension of measurement vector is %i. Expected 2 for segment hits.", mdim));
        return kFALSE;
    }
    if(sdim < Kalman::kIdxX0 || sdim < Kalman::kIdxY0) {
        Error("calcProjector()",
              Form("Dimension of state vector is %i. Expected at least %i.", sdim, TMath::Max(kIdxX0, kIdxY0)));
        return kFALSE;
    }
#endif

    TMatrixD fProj(mdim, sdim);
    fProj.Zero();

    // For segment hits, x0 and y0 are coordinates of the measurement
    // in the sector system.
    fProj(0, kIdxX0) = 1.;
    fProj(1, kIdxY0) = 1.;

    // Store result.
    site->setStateProjMat(Kalman::kFiltered, fProj);

    return kTRUE;
}



 hkalfilt2d.cc:1
 hkalfilt2d.cc:2
 hkalfilt2d.cc:3
 hkalfilt2d.cc:4
 hkalfilt2d.cc:5
 hkalfilt2d.cc:6
 hkalfilt2d.cc:7
 hkalfilt2d.cc:8
 hkalfilt2d.cc:9
 hkalfilt2d.cc:10
 hkalfilt2d.cc:11
 hkalfilt2d.cc:12
 hkalfilt2d.cc:13
 hkalfilt2d.cc:14
 hkalfilt2d.cc:15
 hkalfilt2d.cc:16
 hkalfilt2d.cc:17
 hkalfilt2d.cc:18
 hkalfilt2d.cc:19
 hkalfilt2d.cc:20
 hkalfilt2d.cc:21
 hkalfilt2d.cc:22
 hkalfilt2d.cc:23
 hkalfilt2d.cc:24
 hkalfilt2d.cc:25
 hkalfilt2d.cc:26
 hkalfilt2d.cc:27
 hkalfilt2d.cc:28
 hkalfilt2d.cc:29
 hkalfilt2d.cc:30
 hkalfilt2d.cc:31
 hkalfilt2d.cc:32
 hkalfilt2d.cc:33
 hkalfilt2d.cc:34
 hkalfilt2d.cc:35
 hkalfilt2d.cc:36
 hkalfilt2d.cc:37
 hkalfilt2d.cc:38
 hkalfilt2d.cc:39
 hkalfilt2d.cc:40
 hkalfilt2d.cc:41
 hkalfilt2d.cc:42
 hkalfilt2d.cc:43
 hkalfilt2d.cc:44
 hkalfilt2d.cc:45
 hkalfilt2d.cc:46
 hkalfilt2d.cc:47
 hkalfilt2d.cc:48
 hkalfilt2d.cc:49
 hkalfilt2d.cc:50
 hkalfilt2d.cc:51
 hkalfilt2d.cc:52
 hkalfilt2d.cc:53
 hkalfilt2d.cc:54
 hkalfilt2d.cc:55
 hkalfilt2d.cc:56
 hkalfilt2d.cc:57
 hkalfilt2d.cc:58
 hkalfilt2d.cc:59
 hkalfilt2d.cc:60
 hkalfilt2d.cc:61
 hkalfilt2d.cc:62
 hkalfilt2d.cc:63
 hkalfilt2d.cc:64
 hkalfilt2d.cc:65
 hkalfilt2d.cc:66
 hkalfilt2d.cc:67
 hkalfilt2d.cc:68
 hkalfilt2d.cc:69
 hkalfilt2d.cc:70
 hkalfilt2d.cc:71
 hkalfilt2d.cc:72
 hkalfilt2d.cc:73
 hkalfilt2d.cc:74
 hkalfilt2d.cc:75
 hkalfilt2d.cc:76
 hkalfilt2d.cc:77
 hkalfilt2d.cc:78
 hkalfilt2d.cc:79
 hkalfilt2d.cc:80
 hkalfilt2d.cc:81
 hkalfilt2d.cc:82
 hkalfilt2d.cc:83
 hkalfilt2d.cc:84
 hkalfilt2d.cc:85
 hkalfilt2d.cc:86
 hkalfilt2d.cc:87
 hkalfilt2d.cc:88
 hkalfilt2d.cc:89
 hkalfilt2d.cc:90
 hkalfilt2d.cc:91
 hkalfilt2d.cc:92
 hkalfilt2d.cc:93
 hkalfilt2d.cc:94
 hkalfilt2d.cc:95
 hkalfilt2d.cc:96