TrackPointer PlayerInfo::getCurrentPlayingTrack() { int deck = getCurrentPlayingDeck(); if (deck >= 0) { return getTrackInfo(PlayerManager::groupForDeck(deck)); } return TrackPointer(); }
// ---------------------------------------------------------------------------- // CString MusicPlayer::getTrackFullName( LPCSTR track_link ) { TrackInfo track_info; CString buffer; if ( getTrackInfo( track_link, &track_info ) ) buffer.Format( "%s by %s", track_info.track_name, track_info.artist_name ); return buffer; }
// Fit one track void fitTrack() { /* Find long aspect of track */ int p_min_idx = 0, p_max_idx = 0; if ( (m_track->x_max-m_track->x_min) >= (m_track->y_max-m_track->y_min) ) { p_min_idx = m_track->x_min_idx; p_max_idx = m_track->x_max_idx; } else { p_min_idx = m_track->y_min_idx; p_max_idx = m_track->y_max_idx; } // start fit track TVirtualFitter::SetDefaultFitter("Minuit"); TVirtualFitter *min = TVirtualFitter::Fitter(0, 5); // Fitting with theta and phi min -> SetObjectFit(m_gr); min -> SetFCN(SumDistance2); // MAKE QUIET double p1=-1; min ->ExecuteCommand("SET PRINTOUT",&p1, 1); double arglist[6] = {-1, 0, 0, 0, 0, 0}; /*min -> ExecuteCommand("SET PRINT", arglist, 1); min -> ExecuteCommand("SET NOWARNINGS", arglist, 0); */ TVector3 temp_vector3 (m_track->x[p_max_idx]-m_track->x[p_min_idx], m_track->y[p_max_idx]-m_track->y[p_min_idx], m_track->z[p_max_idx]-m_track->z[p_min_idx]); double init_theta = temp_vector3.Theta(); double init_phi = temp_vector3.Phi(); double pStart[5] = {m_track->x[p_min_idx], m_track->y[p_min_idx], m_track->z[p_min_idx], init_theta, init_phi}; min -> SetParameter(0, "x0", pStart[0], 0.01, 0, 0); min -> SetParameter(1, "y0", pStart[1], 0.01, 0, 0); min -> SetParameter(2, "z0", pStart[2], 0.01, 0, 0); min -> SetParameter(3, "theta", pStart[3], 0.0001, 0, 0); min -> SetParameter(4, "phi", pStart[4], 0.0001, 0, 0); arglist[0] = 1000; // number of fucntion calls arglist[1] = 0.01; // tolerance min -> ExecuteCommand("MIGRAD", arglist, 2); for (int iPar = 0; iPar < 5; iPar++){ m_fit[m_track->iTrack].pars[iPar] = min -> GetParameter(iPar); m_fit[m_track->iTrack].errs[iPar] = min -> GetParError(iPar); } m_fit[m_track->iTrack].phi = m_fit[m_track->iTrack].pars[4]*180./3.14159; m_fit[m_track->iTrack].theta = m_fit[m_track->iTrack].pars[3]*180./3.14159; getTrackInfo(); getPID(); // Set PID flags /* Second arg comes from defs in constants.h */ /* Make sure to set NaNs (or something) for wrong PID channels */ m_distributor->setData(m_fit[m_track->iTrack].iTPC, chan_sumTOT, m_fit[m_track->iTrack].sumTOT); m_distributor->setData(m_fit[m_track->iTrack].iTPC, chan_phi, m_fit[m_track->iTrack].phi); m_distributor->setData(m_fit[m_track->iTrack].iTPC, chan_theta, m_fit[m_track->iTrack].theta); m_distributor->setData(m_fit[m_track->iTrack].iTPC, chan_alpha_flag, m_fit[m_track->iTrack].alphaFlag); m_distributor->setData(m_fit[m_track->iTrack].iTPC, chan_neutron_flag, m_fit[m_track->iTrack].neutronFlag); m_distributor->setData(m_fit[m_track->iTrack].iTPC, chanEvtDispl, evtDisplay); m_distributor->incrementCount(m_fit[m_track->iTrack].iTPC, chan_total_rate); if(m_fit[m_track->iTrack].alphaFlag) m_distributor->incrementCount(m_fit[m_track->iTrack].iTPC, chan_alpha_rate); else if(m_fit[m_track->iTrack].neutronFlag) m_distributor->incrementCount(m_fit[m_track->iTrack].iTPC, chan_neutron_rate); #if DEBUG printf("TPC[%d]: %d %d %d %d\n", m_fit[m_track->iTrack].iTPC, evtDisplay[0], evtDisplay[1], evtDisplay[2], evtDisplay[3]); #endif m_distributor->channelDone(m_fit[m_track->iTrack].iTPC); /* Trigger processing of I/O Intr records */ m_gr -> Delete(); delete min; }