#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 << "Initialize" << std::endl; fMCTrackFinder = new IMCTrackFinder("mctrackfinder", "MC track finder"); fMCTrackFinder->Init(); } bool operator () (COMET::ICOMETEvent& event) { eventNumber = event.GetEventId(); 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); return true; } void Finalize(COMET::ICOMETOutput* output) { std::cout << "Finalize" << std::endl; delete fMCTrackFinder; return; } private: IMCTrackFinder* fMCTrackFinder; int eventNumber; }; int main(int argc, char **argv) { TMyEventLoop userCode; cometEventLoop(argc, argv, userCode); }