#ifndef TFgdReconHacked_hxx_seen #define TFgdReconHacked_hxx_seen #include #include #include // #include "TFgdTpcMatcherRecPack.hxx" #include "IFgdTpcMatcherIncremental.hxx" #include "IFgdTpcMatcherCheating.hxx" #include "IFgdTpcNoMatcher.hxx" #include "IFgdIsoRecon.hxx" #include "IFgdIsoReconP0DCluster.hxx" #include "IFgdIsoReconSbcat.hxx" #include "IFgdIsoReconRadon.hxx" #include "IFGDHitFilter.hxx" #include "IFGDTimeBinner.hxx" #include "IFGDPid.hxx" /// This is the main FGD reconstruction algorithm. /// The Algorithm result contains the following TrackContainers /// and HitSelections: /// /// HitSelections: /// /// 1) "matchedFgdHits": these are the FGD hits that were matched to /// a TPC track during matching stage. /// /// 2) "unmatchedFgdHits": these are the FGD hits that were not /// matched to a TPC track during matching stage. /// /// TrackContainers: /// /// 0) "fittedTpcTracks": these are the fitted tracks from the /// TPC reconstruction. /// /// 1) "xzFgdTracks": XZ tracks from FGD Iso reconstruction. /// /// 2) "yzFgdTracks": YZ tracks from FGD Iso reconstruction. /// /// 3) "fittedFgdTracks": XYZ tracks from FGD Iso reconstruction. /// These are XZ and YZ tracks that have been successfully /// matched together. /// /// 4) "fittedFgdTpcTracks": This is the tracks where a TPC /// track has been fit to a set of FGD hits; the FGD hits /// are then fit using a Kalman filter. /// /// 5) "finalFgdTpcTracks": This is a set of tracks /// which have crossed one of more TPC and been matched to /// the FGD hits in the adjacent FGDs. /// Each track contains the following information: /// /// a) A set of ReconNodes from both the TPC likelihood /// fit and the FGD kalman fit. /// b) The status flags for both the FGD and TPC fits. /// /// The track also saves separately for each TPC the following /// information: the TPC measured momentum, momentum error and /// charge. /// /// ReconVertices: /// /// 1) "trackerSimpleVertices": a set of reconstructed vertices /// using tracks from container 3 and 5. /// /// Track containers 3 and 5 and the reconstructed vertices are probably /// the most relevant information to the end user. /// Between them reasonable particle identification and /// event selection should be possible. /// class IReconFGDHacked: public COMET::IAlgorithm { protected: /// COMET::IAlgorithm for handling the matching of TPC tracks to /// FGD hits. IFgdTpcMatcher *matcher; /// COMET::IAlgorithm for handling reconstruction of FGD-isolated /// tracks. IFgdIsoRecon *fgdIsoRecon; IFGDTimeBinner *timeBinner; IFGDPid *pid; public: IReconFGDHacked(); virtual ~IReconFGDHacked(); // Method that does reconstruction. COMET::IHandle Process(const COMET::IAlgorithmResult&); COMET::IHandle HackedProcess(COMET::IHandle fgd_raw); // Access to reconstruction routines. IFgdTpcMatcher* GetMatcher(){return matcher;} IFgdIsoRecon* GetIsoRecon(){return fgdIsoRecon;} void FPlot(); }; #endif