#ifndef TRACKESTIMATOR_H
#define TRACKESTIMATOR_H
//_____________________________________________________________________________
///
/// \class TrackEstimator 
///
/// Abstract class to define track estimator interface. Concrete implementations
/// can use different method to get an initial estimate of the track fit 
/// parameters. 
///
/// \author Sergei avva@fnal.gov
///

#include "Rtypes.h"

class AlgConfig;
class FitContext;
#if ROOT_VERSION_CODE >= ROOT_VERSION(5,8,0)
#include "TMatrixDfwd.h"
#else
class TMatrixD;
#endif


class TrackEstimator {

public:
    
    virtual ~TrackEstimator() {};

    ///
    /// configure filter using given AlgConfig 
    ///
    virtual void    Config(const AlgConfig& ) = 0;
    
    ///
    /// filter method
    ///
    virtual TVectorD EstimateTrackParams(FitContext& ) const = 0;
};

#endif
