#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /// User code for the event loop. This can be copied and used as a skeleton /// for generic user loop programs. class IUserLoop: public COMET::ICOMETEventLoopFunction, public ICyDetReconEventFunction { private: public: IUserLoop() {} virtual ~IUserLoop() {}; void Initialize(void) { // ICyDetReconEventFunction::Initialize(); } void Finalize(const COMET::ICOMETOutput*) { std::cout << "Finalize end" << std::endl; } bool operator () (COMET::ICOMETEvent& event) { BeginOfEvent(); PrepareHits(event); COMET::IHandle fits = event.GetFit("ReconCyDet_1stHitSel"); if(!fits) return false; ProcessAlgorithms((*fits), event); if(!fits) return false; COMET::IHandle fitResults = event.GetFit("IGenFitResult_IGenFitter_CyDet"); if(!fitResults){ std::cout<<"ReconCyDet can not find fit result "< tracks = fitResults->GetResultsContainer("GenFit_TrackContainer_IGenFitter_CyDet"); if(!tracks) return false; for(COMET::IReconObjectContainer::iterator reconIter = tracks->begin(); reconIter != tracks->end(); reconIter++){ COMET::IHandle track = *reconIter; std::cout << "\t\t" << track->GetName() << " Track Momentum = " << track->GetMomentum() << " MeV." << std::endl; } EndOfEvent(); return true; } }; int main(int argc, char **argv) { IUserLoop userLoop; cometEventLoop(argc, argv, userLoop); return 0; }