/** * Register output data set * * @param dsname Data set name * * @return true on success */ static Bool_t RegisterDataset(const TString& dsname) { // Get the manager AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager(); // If we are asked to make a data-set, get the output handler and // common output container. AliVEventHandler* handler = mgr->GetOutputEventHandler(); if (!handler) return true; // Get the container AliAnalysisDataContainer* cont = mgr->GetCommonOutputContainer(); if (!cont) { Warning("OutputUtilities::RegisterDataset", "No common output container defined"); return false; } // Make the name TString nme(dsname); if (nme.IsNull()) nme = mgr->GetName(); if (nme.IsNull()) { Error("OutputUtilities::RegisterDataset", "No data set name specified"); return false; } // Flag for data-set creation cont->SetRegisterDataset(true); handler->SetOutputFileName(nme); // cont->SetFileName(nme); TString base(handler->GetOutputFileName()); base.ReplaceAll(".root",""); Info("OutputUtilities::RegisterDataset", "Will register tree output AODs (%s%s) as dataset", base.Data(), cont->GetTitle()); return true; }
/** * Make a GraphSysErr object * * @param d Directory * @param c1 Least centrality * @param c2 Largest centrality * * @return Newly created GraphSysErr */ TObject* MakeGSE(TDirectory* d, Double_t c1, Double_t c2) { if (!gROOT->GetClass("GraphSysErr")) return 0; TString bin; bin.Form("%03dd%02d_%03dd%02d", Int_t(c1), Int_t(c1*100)%100, Int_t(c2), Int_t(c2*100)%100); TString sub(bin); sub.Prepend("cent"); sub.Append("/dndeta"); TString nme(bin); nme.Prepend("CENT_"); TH1* g = GetH1(d, sub); if (!g) return 0; Color_t col = g->GetMarkerColor(); // Double_t bg = (1-c1/100)*(2-0.1)+0.1; // Double_t c = TMath::Power(c1/100,2)*(6.2-0.4)+0.4; Double_t bg = CSysEval(c2, 0.02, 0.001); Double_t c = CSysEval(c2, 0.005, 0.075); GraphSysErr* gse = new GraphSysErr(g->GetNbinsX()); gse->SetName(nme); gse->SetTitle(Form("%5.1f - %5.1f%%", c1, c2)); gse->SetKey("author", "PREGHENELLA : 20150"); gse->SetKey("title", "dNch/deta in PbPb at 5023 GeV"); gse->SetKey("obskey", "DN/DETARAP"); gse->SetKey("reackey", "PB PB --> CHARGED X"); gse->SetKey("laboratory", "CERN"); gse->SetKey("accelerator", "LHC"); gse->SetKey("detector", "TRACKLETS"); gse->SetKey("reference", "ALICE-AN-2830"); gse->AddQualifier("CENTRALITY IN PCT", Form("%.1f TO %.1f",c1,c2)); gse->AddQualifier("SQRT(S)/NUCLEON IN GEV", "5023"); gse->SetXTitle("ETARAP"); gse->SetYTitle("DN/DETARAP"); gse->SetMarkerStyle(g->GetMarkerStyle()); gse->SetMarkerSize(g->GetMarkerSize()); gse->SetDataOption(GraphSysErr::kNoTick); gse->SetMarkerColor(col); gse->SetLineColor(col); gse->SetFillColor(col); gse->SetSumFillColor(col); gse->SetSumLineColor(col); gse->SetSumOption(GraphSysErr::kBox); gse->SetCommonSumFillColor(col); gse->SetCommonSumLineColor(col); gse->SetCommonSumOption(GraphSysErr::kBox); MakeCommon(gse, "Particle composition", 0.01, col); MakeCommon(gse, "Weak decay", 0.01, col); MakeCommon(gse, "pT extrapolation", 0.02, col); MakeCommon(gse, "EG dependence", 0.02, col); MakeCommon(gse, "Background subrtaction", bg, col); MakeCommon(gse, "Centrality", c, col); Int_t acc = MakeP2P(gse, "Acceptance", col); Int_t j = 0; for (Int_t i = 1; i <= g->GetNbinsX(); i++) { Double_t eta = g->GetXaxis()->GetBinCenter(i); Double_t eEta = g->GetXaxis()->GetBinWidth(i)/2; Double_t xo = TMath::Abs(eta)+eEta; if (xo > 2) continue; Double_t ea = 0.02*TMath::Power(xo/2,2); gse->SetPoint(j, eta, g->GetBinContent(i)); gse->SetPointError(j, eEta, eEta); gse->SetStatError(j, g->GetBinError(i),g->GetBinError(i)); gse->SetSysError(acc, j, eEta, eEta, ea/100, ea/100); j++; } return gse; }
QList <DMXUSBWidget*> QLCFTDI::widgets() { QList <DMXUSBWidget*> widgetList; quint32 input_id = 0; struct ftdi_device_list* list = 0; struct ftdi_context ftdi; ftdi_init(&ftdi); ftdi_usb_find_all(&ftdi, &list, QLCFTDI::VID, QLCFTDI::PID); while (list != NULL) { #ifdef LIBFTDI1 struct libusb_device* dev = list->dev; #else struct usb_device* dev = list->dev; #endif Q_ASSERT(dev != NULL); char serial[256]; char name[256]; char vendor[256]; ftdi_usb_get_strings(&ftdi, dev, vendor, sizeof(vendor), name, sizeof(name), serial, sizeof(serial)); QString ser(serial); QString nme(name); QString ven(vendor); QMap <QString,QVariant> types(typeMap()); qDebug() << "serial: " << ser << "name:" << nme << "vendor:" << ven; if (types.contains(ser) == true) { // Force a widget with a specific serial to either type DMXUSBWidget::Type type = (DMXUSBWidget::Type) types[ser].toInt(); switch (type) { case DMXUSBWidget::OpenTX: widgetList << new EnttecDMXUSBOpen(serial, name, vendor); break; case DMXUSBWidget::ProRX: { EnttecDMXUSBProRX* prorx = new EnttecDMXUSBProRX(serial, name, vendor, input_id++); widgetList << prorx; break; } case DMXUSBWidget::ProMk2: { EnttecDMXUSBProTX* protx = new EnttecDMXUSBProTX(serial, name, vendor, 1); widgetList << protx; widgetList << new EnttecDMXUSBProTX(serial, name, vendor, 2, protx->ftdi()); EnttecDMXUSBProRX* prorx = new EnttecDMXUSBProRX(serial, name, vendor, input_id++, protx->ftdi()); widgetList << prorx; break; } case DMXUSBWidget::UltraProTx: { UltraDMXUSBProTx* protx = new UltraDMXUSBProTx(serial, name, vendor, 1); widgetList << protx; widgetList << new UltraDMXUSBProTx(serial, name, vendor, 2, protx->ftdi()); EnttecDMXUSBProRX* prorx = new EnttecDMXUSBProRX(serial, name, vendor, input_id++, protx->ftdi()); widgetList << prorx; break; } case DMXUSBWidget::VinceTX: widgetList << new VinceUSBDMX512TX(serial, name, vendor); break; default: case DMXUSBWidget::ProTX: widgetList << new EnttecDMXUSBProTX(serial, name, vendor); break; } } else if (nme.toUpper().contains("PRO MK2") == true) { EnttecDMXUSBProTX* protx = new EnttecDMXUSBProTX(serial, name, vendor, 1); widgetList << protx; widgetList << new EnttecDMXUSBProTX(serial, name, vendor, 2, protx->ftdi()); EnttecDMXUSBProRX* prorx = new EnttecDMXUSBProRX(serial, name, vendor, input_id++, protx->ftdi()); widgetList << prorx; } else if (nme.toUpper().contains("DMX USB PRO")) { /** Check if the device responds to label 77 and 78, so it might be a DMXking adapter */ int ESTAID = 0; int DEVID = 0; QString manName = readLabel(&ftdi, name, serial, USB_DEVICE_MANUFACTURER, &ESTAID); qDebug() << "--------> Device Manufacturer: " << manName; QString devName = readLabel(&ftdi, name, serial, USB_DEVICE_NAME, &DEVID); qDebug() << "--------> Device Name: " << devName; qDebug() << "--------> ESTA Code: " << QString::number(ESTAID, 16) << ", Device ID: " << QString::number(DEVID, 16); if (ESTAID == DMXKING_ESTA_ID) { if (DEVID == ULTRADMX_PRO_DEV_ID) { UltraDMXUSBProTx* protxP1 = new UltraDMXUSBProTx(serial, name, vendor, 1); protxP1->setRealName(devName); widgetList << protxP1; UltraDMXUSBProTx* protxP2 = new UltraDMXUSBProTx(serial, name, vendor, 2, protxP1->ftdi()); protxP2->setRealName(devName); widgetList << protxP2; EnttecDMXUSBProRX* prorx = new EnttecDMXUSBProRX(serial, name, vendor, input_id++, protxP1->ftdi()); prorx->setRealName(devName); widgetList << prorx; } else { EnttecDMXUSBProTX* protx = new EnttecDMXUSBProTX(serial, name, vendor); protx->setRealName(devName); widgetList << protx; } } else { /* This is probably a Enttec DMX USB Pro widget */ EnttecDMXUSBProTX* protx = new EnttecDMXUSBProTX(serial, name, vendor); widgetList << protx; EnttecDMXUSBProRX* prorx = new EnttecDMXUSBProRX(serial, name, vendor, input_id++, protx->ftdi()); widgetList << prorx; } } else if (nme.toUpper().contains("USB-DMX512 CONVERTER") == true) { widgetList << new VinceUSBDMX512TX(serial, name, vendor); } else { /* This is probably an Open DMX USB widget */ widgetList << new EnttecDMXUSBOpen(serial, name, vendor, 0); } list = list->next; } /* Search for DMX4ALL devices now */ ftdi_usb_find_all(&ftdi, &list, QLCFTDI::VID, QLCFTDI::DMX4ALLPID); while (list != NULL) { #ifdef LIBFTDI1 struct libusb_device* dev = list->dev; #else struct usb_device* dev = list->dev; #endif Q_ASSERT(dev != NULL); char serial[256]; char name[256]; char vendor[256]; ftdi_usb_get_strings(&ftdi, dev, vendor, sizeof(vendor), name, sizeof(name), serial, sizeof(serial)); QString ser(serial); QString nme(name); QString ven(vendor); qDebug() << "serial: " << ser << "name:" << nme << "vendor:" << ven; widgetList << new DMX4ALL(ser, nme, ven); list = list->next; } ftdi_deinit(&ftdi); return widgetList; }