#include "littrack/parallel/muon/LitTrackFinderNNVecMuon.h" #include "sa_interface/EventReader.h" #include "sa_interface/DetectorLayoutReader.h" #include "tbb/tick_count.h" #include //#define DEBUG_TRACKING 0 int main( int argc, const char* argv[] ) { // Read data files and create event buffer std::cout << "Start reading events..." << std::endl; EventReader eventReader; eventReader.SetNofEvents(100); eventReader.SetHitsFileName("/u/andrey/cbm/standalone/standalone/data/sa_hits.txt"); eventReader.SetSeedsFileName("/u/andrey/cbm/standalone/standalone/data/sa_seeds.txt"); eventReader.CreateEventBuffer(); std::cout << "Finish reading events..." << std::endl; // Read detector geometry file DetectorLayoutReader layoutReader; layoutReader.SetGeometryFileName("/u/andrey/cbm/standalone/standalone/data/sa_geometry.txt"); // Get the detector geometry std::cout << "Start getting detector layout..." << std::endl; LitDetectorLayoutMuonVec layout; layoutReader.GetDetectorGeometryVec(layout); #ifdef DEBUG_TRACKING std::cout << layout; #endif std::cout << "Finish getting layout..." << std::endl; // Create track finder LitTrackFinderNNVecMuon trackFinder; trackFinder.SetDetectorLayout(layout); std::cout << "Running tracking..." << std::endl; // Time calculation tbb::tick_count t0 = tbb::tick_count::now(); // Loop over events for (int iEvent = 0; iEvent < eventReader.GetNofEvents(); iEvent++) { // Input LitScalPixelHit** hits = eventReader.GetHits(iEvent); int nofHits = eventReader.GetNofHits(iEvent); LitScalTrack** trackSeeds = eventReader.GetSeeds(iEvent); int nofSeeds = eventReader.GetNofSeeds(iEvent); // Output LitScalTrack* ltracks[nofSeeds]; unsigned int nofTracks = 0; #ifdef DEBUG_TRACKING std::cout << "Event: " << iEvent << std::endl; std::cout << "Nof hits: " << eventReader.GetNofHits(iEvent) << std::endl; std::cout << "Nof seeds: " << nofSeeds << std::endl; //for (int i = 0; i < nofSeeds; i++) std::cout << *trackSeeds[i]; //for (int i = 0; i < nofHits; i++) std::cout << *hits[i]; #endif // Run the track reconstruction trackFinder.DoFind(hits, nofHits, trackSeeds, nofSeeds, ltracks, nofTracks); #ifdef DEBUG_TRACKING std::cout << "Nof reconstructed tracks: " << nofTracks << std::endl; #endif } tbb::tick_count t1 = tbb::tick_count::now(); // Print calculation time double dtime = (t1-t0).seconds(); std::cout << "Time: " << std::endl; std::cout << " total:" << dtime << " sec / " << eventReader.GetNofEvents() << " events." << std::endl; std::cout << " average per event:" << dtime / eventReader.GetNofEvents() << " sec." << std::endl; // Clear event buffer eventReader.ClearEventBuffer(); }