// McRecoTrackNtuple.h #ifndef McRecoTrackNtuple_H #define McRecoTrackNtuple_H // Abstract class for a class which manages an ntuple containing // matched pairs of MC and reco tracks. // #include "ptr/Ptr.h" #include "trfbase/MCTrack.h" #include "trffit/RTrack.h" #include "TrackNtuple.h" namespace trf { class HTrack; class TrackMatch; class McRecoTrackNtuple : public TrackNtuple { private: // data // Include starting MC track. bool _mc; // Include reco track. bool _reco; // Include final MC track. bool _mc2; public: // constructors and destructor // constructor // mc - include starting Monte Carlo track // reco - include reconstructed track // mc2 - include final MC track McRecoTrackNtuple(bool mc, bool reco, bool mc2); public: // non-virtual non-const methods // Fill ntuple from a list of (unmatched) MC tracks. void fill_list(const MCTrackList& mctrks); // Fill ntuple from a pair of lists of (unmatched) MC tracks. void fill_list(const MCTrackList& mctrks1, const MCTrackList& mctrks2); // Fill ntuple from a list of (unmatched) reconstructed tracks. void fill_list(const RTrackList& rtrks); // fill ntuple from a match void fill_match(const TrackMatch& match); // fill ntuple from a match and a list of final MC tracks void fill_match(const TrackMatch& match, const MCTrackList& mc2s); public: // virtual non-const methods // fill ntuple from the full triplet of tracks // The tracks must be at the DCA. virtual void fill(const VTrack& trv, const HTrack& trh, const VTrack& trv2) =0; // fill ntuple from MC-reco pair // The tracks must be at the same surface. virtual void fill(const VTrack& trv, const HTrack& trh) =0; // fill ntuple from a MC-MC pair // The tracks must be at the DCA. virtual void fill(const VTrack& trv, const VTrack& trv2) =0; // fill ntuple from a unmatched MC track virtual void fill(const VTrack& trv) =0; // fill ntuple from an unmatched reco track virtual void fill(const HTrack& trm) =0; public: // non-virtual const methods // Are we filling starting MC information? bool mc() const { return _mc; } // Are we filling reconstructed track parameters. bool reco() const { return _reco; } // Are we filling final MC information? bool mc2() const { return _mc2; } }; } // end namespace trf #endif