示例#1
0
TrackPointer PlayerInfo::getCurrentPlayingTrack() {
    int deck = getCurrentPlayingDeck();
    if (deck >= 0) {
        return getTrackInfo(PlayerManager::groupForDeck(deck));
    }
    return TrackPointer();
}
示例#2
0
// ----------------------------------------------------------------------------
//
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;
}
示例#3
0
// 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;
}