//
    // Cannot use DMI through plug & play devices. This is probably OK for present.
    //
    bool getDMIPointer(int SocketId, transaction_type& trans, tlm::tlm_dmi&  dmi_data)
    {
        Addr address = trans.get_address();
        Addr offset;
        int  portId = getPortId(address, offset);
        Bool result = false;

        if(portId >= 0) {
            initiator_socket_type* decodeSocket = &initiator_socket[portId];

            // send on the transaction with the new address, adjusted for the decoder offset
            trans.set_address(offset);
            result = (*decodeSocket)->get_direct_mem_ptr(trans, dmi_data);

            // put the address back how it was
            trans.set_address(address);

            // Should always succeed
            Addr start = dmi_data.get_start_address();
            Addr end   = dmi_data.get_end_address();

            if (result) {
                // Range must contain address
                assert(start <= offset);
                assert(end   >= offset);
            }

            adjustRange(portId, address, start, end);

            dmi_data.set_start_address(start);
            dmi_data.set_end_address(end);
        }

        return result;
    }
Esempio n. 2
0
/**
 * @brief Set the initial calibrated throttle based on the first event
 *     passed by SDL.
 * @param Current value for axis.
 */
void JoyAxis::setInitialThrottle(int value)
{
    if (value >= JoyAxis::NegativeHalfThrottle && value <= JoyAxis::PositiveHalfThrottle)
    {
        if (value != throttle)
        {
            throttle = value;
            adjustRange();
            emit throttleChanged();
        }
    }
}
Esempio n. 3
0
void JoyAxis::reset()
{
    deadZone = getDefaultDeadZone();
    isActive = false;

    eventActive = false;
    maxZoneValue = getDefaultMaxZone();
    throttle = getDefaultThrottle();

    paxisbutton->reset();
    naxisbutton->reset();
    activeButton = 0;

    adjustRange();
    setCurrentRawValue(currentThrottledDeadValue);
    currentThrottledValue = calculateThrottledValue(currentRawValue);
    axisName.clear();
}
Esempio n. 4
0
void Plotter2ViewportInfo::setData(const std::vector<float>& inXData, const std::vector<float>& inYData, const int id) {
    if (!hasDataRange) {
        minXData = inXData[0];
	maxXData = inXData[0];
	minYData = inYData[0];
	maxYData = inYData[0];

        hasDataRange = true;
    }

    Plotter2DataInfo* info = &vData[id];

    info->xData.clear();
    info->xData.reserve(inXData.size());
    for (unsigned int i = 0; i < inXData.size(); ++i) {
        info->xData.push_back(inXData[i]);

	if (!info->hasData) {
	    updateXDataRange(inXData[i]);
	}
    }

    info->yData.clear();
    info->yData.reserve(inYData.size());
    for (unsigned int i = 0; i < inYData.size(); ++i) {
        info->yData.push_back(inYData[i]);

	if (!info->hasData) {
  	    updateYDataRange(inYData[i]);
	}
    }

    if (info->hasData) {
        updateAllDataRanges();
    } else {
        info->hasData = true;
    }

    adjustRange();
    adjustTickInterval();
}
Esempio n. 5
0
void compare2AlignmentsSame(
  char *filename,
  TString alment0="fromAlignment",
  TString alment1="ideal")
{
  setupStyle();
  
  AlighnmentTTrees alignTrees[2];

  importTreesFromFile(filename, alment0, &alignTrees[0], alment0+"_");
  importTreesFromFile(filename, alment1, &alignTrees[1], alment1+"_");


  alignTrees[0].DTWheels->AddFriend(alignTrees[1].DTWheels,"a");
  alignTrees[0].DTChambers->AddFriend(alignTrees[1].DTChambers,"a");
  alignTrees[0].DTStations->AddFriend(alignTrees[1].DTStations,"a");
//  alignTrees[0].DTSuperLayers->AddFriend(alignTrees[1].DTSuperLayers,"a");
//  alignTrees[0].DTLayers->AddFriend(alignTrees[1].DTLayers,"a");
  alignTrees[0].CSCStations->AddFriend(alignTrees[1].CSCStations,"a");
  alignTrees[0].CSCChambers->AddFriend(alignTrees[1].CSCChambers,"a");
//  alignTrees[0].CSCLayers->AddFriend(alignTrees[1].CSCLayers,"a");

  /// ------ PLOTTING -------------

  char histostr[100], histostr1[100], drawstr[300], cutstr[200], hsetupstr[200];
  //double nbin = 20, low = -0.15, high = 0.15;
  double nbin = 20, low = -0.05, high = 0.05;
  
  TCanvas *c1 = (TCanvas*)gROOT->FindObject("c_barrel_dz");
  if (c1==NULL) return;
  TH1F *h_1;
  TH1F *h_bz_[5];
  for (int i=-2; i<=2; i++) {
    c1->cd(i+3);
    sprintf(histostr,"h_bz_s[%d]",i+2);
    sprintf(histostr1,"h_bz_[%d]",i+2);
    //sprintf(drawstr,"z-a.z>>%s(%d,%f,%f)",histostr,nbin,low,high);
    sprintf(drawstr,"xhatx*dx+xhaty*dy+xhatz*dz>>%s(%d,%f,%f)",histostr,nbin,low,high);
    sprintf(cutstr, "structa==%d",i);
    //sprintf(hsetupstr,"wheel %d:  #Delta z;#Delta z;# chambers", i);
    sprintf(hsetupstr,"wheel %d:  #Delta x;#Delta x;# chambers", i);
    cout<<drawstr<<endl;
    alignTrees[0].DTChambers->Draw(drawstr,cutstr,"same");
    h_bz_[i+2] = (TH1F*) gROOT->FindObject(histostr);
    setupHisto(h_bz_[i+2],hsetupstr, -1, 4);
    h_1 = (TH1F*) gROOT->FindObjectAny(histostr1);
    adjustRange(h_bz_[i+2],h_1);
  }
  c1->cd();

  
  //nbin = 20; low = -1.5; high = 1.5;
  nbin = 20; low = -.02; high = .02;
  
  TCanvas *c2 = (TCanvas*)gROOT->FindObject("c_endcap_dz");
  if (c2==NULL) return;
  TH1F *h_edz_[9];
  int npad=1;
  for (int i=-4; i<=4; i++) {
    if (i==0) continue;
    c2->cd(npad++);
    sprintf(histostr,"h_edz_s[%d]",i+4);
    sprintf(histostr1,"h_edz_[%d]",i+4);
    //sprintf(drawstr,"z-a.z>>%s(%d,%f,%f)",histostr,nbin,low,high);
    sprintf(drawstr,"xhatx*dx+xhaty*dy+xhatz*dz>>%s(%d,%f,%f)",histostr,nbin,low,high);
    //sprintf(cutstr, "structa==%d",i);
    sprintf(cutstr, "structa==%d&&(!(abs(structa)==1&&(structb==1||structb==4)))",i);
    //sprintf(hsetupstr,"disk %d:  #Delta z;#Delta z;# chambers", i);
    sprintf(hsetupstr,"disk %d:  #Delta x;#Delta x;# chambers", i);
    cout<<drawstr<<endl;
    alignTrees[0].CSCChambers->Draw(drawstr,cutstr,"same");
    h_edz_[i+4] = (TH1F*) gROOT->FindObject(histostr);
    setupHisto(h_edz_[i+4],hsetupstr, -1, 4);
    h_1 = (TH1F*) gROOT->FindObjectAny(histostr1);
    adjustRange(h_edz_[i+4],h_1);
  }
  c2->cd();


  //TCanvas *tc = new TCanvas("test","test",900,900);
  //tc->Divide(2,2);
  //tc->cd(1);


  /// ------ END PLOTTING -------------
  
  return;
 
  if (gROOT->IsBatch()) return;
  new TBrowser();
  TTreeViewer *treeview = new TTreeViewer();
//  char tnames[8][50] = {"DTWheels","DTStations","DTChambers","DTSuperLayers","DTLayers" ,"CSCStations" ,"CSCChambers" ,"CSCLayers"};
  char tnames[8][50] = {"DTWheels","DTStations","DTChambers","CSCStations" ,"CSCChambers" };
  for (int i=0;i<8;i++)  {
    char nm[200];
    sprintf(nm,"%s_%s",alment0.Data(),tnames[i]);
    treeview->SetTreeName(nm);
  }
  for (int i=0;i<8;i++)  {
    char nm[200];
    sprintf(nm,"%s_%s",alment1.Data(),tnames[i]);
    treeview->SetTreeName(nm);
  }


}
Esempio n. 6
0
bool PSV_Public::getLabels(QVariant &maxValue, QVariant &minValue, QPair<double, double> &range, QList<QPair<QVariant, QString> > &labelList)
{
    if(maxValue.type() != minValue.type())
    {
        return false;
    }
    QVariant::Type type = maxValue.type();
    switch(type)
    {
    case QVariant::Double:
    case QVariant::Int:
    case QVariant::UInt:
    {
        double max = maxValue.toDouble();
        double min = minValue.toDouble();
        int numTick = getNumTicks(max, min);
        if(numTick <= 0)
        {
            return false;
        }
        adjustRange(max, min);
        labelList.clear();
        for(int i = 0; i <= numTick; ++i)
        {
            double value = min + 1.0 * (max - min) * i / numTick;
            QString str = QObject::tr("%1").arg(value);
            labelList.append(QPair<QVariant, QString>(value, str));
        }
        maxValue = max;
        minValue = min;
        range = QPair<double,double>(min,max);
        return true;
    }
        break;
    case QVariant::Date:
    {
        QDate maxDate = maxValue.toDate();
        QDate minDate = minValue.toDate();
        bool isOk = getDateLabels(maxDate, minDate, labelList);
        maxValue = maxDate;
        minValue = minDate;
        range = QPair<double,double>(0.0, 1.0 * minDate.daysTo(maxDate));
        return isOk;
    }
        break;
    case QVariant::Time:
    {
        QTime maxTime = maxValue.toTime();
        QTime minTime = minValue.toTime();
        bool isOk = getTimeLabels(maxTime, minTime, labelList);
        maxValue = maxTime;
        minValue = minTime;
        range = QPair<double,double>(0.0, 86400.0/*1.0 * minTime.secsTo(maxTime)*/);
        return isOk;
    }
        break;
    case QVariant::DateTime:
    {
        QDateTime maxTime = maxValue.toDateTime();
        QDateTime minTime = minValue.toDateTime();
        //        PSV_Public::printMes(maxTime,"1maxTime");
        //        PSV_Public::printMes(minTime,"1minTime");
        bool isOk = getDateTimeLabels(maxTime, minTime, labelList);
        maxValue = maxTime;
        minValue = minTime;
        //        PSV_Public::printMes(maxTime,"2maxTime");
        //        PSV_Public::printMes(minTime,"2minTime");

        range = QPair<double,double>(PSV_BEGIN_DATETIME.secsTo(minValue.toDateTime()),PSV_BEGIN_DATETIME.secsTo(maxValue.toDateTime()));
        return isOk;
    }
        break;
    default:
        break;
    }
    return false;
}