Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef FTDTrack_h
#define FTDTrack_h
//#include "IMPL/TrackImpl.h"
//#include "MarlinTrk/IMarlinTrkSystem.h"
//#include "MarlinTrk/IMarlinTrack.h"
#include "edm4hep/Track.h"
#include "TrackSystemSvc/IMarlinTrkSystem.h"
#include <vector>
#include "ILDImpl/IFTDHit.h"
#include "KiTrack/ITrack.h"
#include "Tools/Fitter.h"
namespace KiTrackMarlin{
/** A class for ITracks containing an lcio::Track at core
*/
class FTDTrack : public ITrack {
public:
/** @param trkSystem An IMarlinTrkSystem, which is needed for fitting of the tracks
*/
FTDTrack( MarlinTrk::IMarlinTrkSystem* trkSystem );
/** @param hits The hits the track consists of
* @param trkSystem An IMarlinTrkSystem, which is needed for fitting of the tracks
*/
FTDTrack( std::vector< IFTDHit* > hits , MarlinTrk::IMarlinTrkSystem* trkSystem );
FTDTrack( const FTDTrack& f );
FTDTrack & operator= (const FTDTrack & f);
/** @return a track in the lcio format
*/
edm4hep::Track* getLcioTrack(){ return ( _lcioTrack );}
void addHit( IFTDHit* hit );
virtual double getNdf() const { return _lcioTrack->getNdf(); }
virtual double getChi2() const { return _lcioTrack->getChi2(); }
virtual double getChi2Prob() const { return _chi2Prob; }
virtual std::vector< IHit* > getHits() const { std::vector<IHit*> hits;
for(unsigned i=0; i<_hits.size();i++) hits.push_back( _hits[i] );
return hits; }
virtual double getQI() const;
/** Fits the track and sets chi2, Ndf etc.
*/
virtual void fit() ;
virtual ~FTDTrack(){ delete _lcioTrack; }
protected:
/** the hits the track consists of
*/
std::vector< IFTDHit* > _hits;
edm4hep::Track* _lcioTrack;
// for fitting
MarlinTrk::IMarlinTrkSystem* _trkSystem;
double _chi2Prob;
};
}
#endif