/////////// #include "PndOnlineSTTTemplateTSF.h" #include "PndDetectorList.h" #include "PndSttTube.h" #include "PndSttHit.h" #include #include #include // ----- Public method Init (abstract in base class) -------------------- InitStatus PndOnlineSTTTemplateTSF::Init() { cout << "In PndOnlineSTTTemplateTSF::Init()..." << endl; vector channel_list; // NOTE: need to deal with edge cases // first layer - deal with 6 different sectors int first_layer_startnums[6] = { 217, 234, 255, 275, 292, 313 }; int first_layer_sizes[6] = { 16, 20, 16, 16, 20, 16 }; for(int sector=0; sector<6; sector++) { for(int pivot_num = first_layer_startnums[sector]; pivot_num < first_layer_startnums[sector] + first_layer_sizes[sector]; pivot_num++) { channel_list.clear(); channel_list.push_back( pivot_num - (216+sector*2) ); channel_list.push_back( pivot_num - (111+sector) ); channel_list.push_back( pivot_num + 116+sector); channel_list.push_back( pivot_num - (215+sector*2) ); channel_list.push_back( pivot_num ); channel_list.push_back( pivot_num - (110+sector) ); channel_list.push_back( pivot_num + 117+sector); channel_list.push_back( pivot_num - (214+sector*2) ); TSF_list.push_back( PndOnlineSTTStdTSF( channel_list ) ); } } /** for(int pivot_num=217; pivot_num<=232; ++pivot_num) { channel_list.push_back(pivot_num-216); channel_list.push_back(pivot_num-111); channel_list.push_back(pivot_num+116); channel_list.push_back(pivot_num-215); channel_list.push_back(pivot_num); channel_list.push_back(pivot_num-110); channel_list.push_back(pivot_num+117); channel_list.push_back(pivot_num-214); } for(int pivot_num=234; pivot_num<=253; ++pivot_num) { channel_list.push_back(pivot_num-218); channel_list.push_back(pivot_num-112); channel_list.push_back(pivot_num+117); channel_list.push_back(pivot_num-217); channel_list.push_back(pivot_num); channel_list.push_back(pivot_num-111); channel_list.push_back(pivot_num+118); channel_list.push_back(pivot_num-216); } for(int pivot_num=255; pivot_num<=270; ++pivot_num) { channel_list.push_back(pivot_num-220); channel_list.push_back(pivot_num-113); channel_list.push_back(pivot_num+118); channel_list.push_back(pivot_num-219); channel_list.push_back(pivot_num); channel_list.push_back(pivot_num-112); channel_list.push_back(pivot_num+119); channel_list.push_back(pivot_num-218); } **/ return kSUCCESS; } // ----- Public method Exec -------------------------------------------- void PndOnlineSTTTemplateTSF::Exec(Option_t* opt) { cout << "In PndOnlineSTTTemplateTSF::Exec()..." << endl; if(online_manager == NULL) return; TStopwatch timer; timer.Start(); vector< list > &hit_channel_map = online_manager->GetHitChannelMap(kSTT); for(list::iterator tsf_it=TSF_list.begin(); tsf_it!=TSF_list.end(); tsf_it++) { PndOnlineTrack *new_track; if(new_track = tsf_it->FindTrackSegment(hit_channel_map)) { online_manager->AddTrack(new_track); } } timer.Stop(); last_run_time = timer.CpuTime(); } // ----- Public method Finish ------------------------------------------ void PndOnlineSTTTemplateTSF::Finish() { } ClassImp(PndOnlineSTTTemplateTSF);