#include #include #include #include #include #include #include #include #include #include #include #include #include class TMyEventLoop: public COMET::ICOMETEventLoopFunction { public: TMyEventLoop() {} virtual ~TMyEventLoop() {} virtual void Initialize(void) { std::cout << "Init IMCTrackFinder" << std::endl; fMCTrackFinder = new IMCTrackFinder("mctrackfinder", "MC track finder"); fMCTrackFinder->Init(); std::cout << "Init IHoughTrackFinder" << std::endl; fHoughTrackFinder = new IHoughTrackFinder("houghtrackfinder", "Hough track finder"); fHoughTrackFinder->Init(); } bool operator () (COMET::ICOMETEvent& event) { eventNumber = event.GetEventId(); COMET::IOADatabase::Get().UpdateGeometry(); COMET::IHandle result(new COMET::IAlgorithmResult("CyDet_Hits1st", "First prepared hit selection")); COMET::IHandle hits = event.GetHitSelection("mcCDC"); COMET::IHitSelection* newHits = fMCTrackFinder->MakeMCHitSelection(hits); if (!newHits->empty()) result->AddHitSelection(newHits); else return true; //fMCTrackFinder->Process(*result); COMET::IHandle resultHough = fHoughTrackFinder->Process(*result); event.AddFit(resultHough); return true; } void Finalize(COMET::ICOMETOutput* output) { std::cout << "Finalize" << std::endl; fMCTrackFinder->Finish(); fHoughTrackFinder->Finish(); delete fMCTrackFinder; delete fHoughTrackFinder; return; } private: IMCTrackFinder* fMCTrackFinder; IHoughTrackFinder* fHoughTrackFinder; int eventNumber; }; int main(int argc, char **argv) { TMyEventLoop userCode; cometEventLoop(argc, argv, userCode); }