BevelView() : fShapeBounds(SkRect::MakeWH(kShapeBoundsSize, kShapeBoundsSize)) , fControlPanel(kCtrlRange) { this->setBGColor(0xFF666868); // Slightly colorized gray for contrast // Controls fBevelWidth = 25.0f; fBevelHeight = 25.0f; fBevelType = 0; int currLight = 0; fLightDefs[currLight++] = {SkVector::Make(0.0f, 1.0f), 1.0f, SkColor3f::Make(0.6f, 0.45f, 0.3f)}; fLightDefs[currLight++] = {SkVector::Make(0.0f, -1.0f), 1.0f, SkColor3f::Make(0.3f, 0.45f, 0.6f)}; fLightDefs[currLight++] = {SkVector::Make(1.0f, 0.0f), 1.0f, SkColor3f::Make(0.0f, 0.0f, 0.0f)}; // Making sure we initialized all lights SkASSERT(currLight == kNumLights); fControlPanel.add(ContinuousSliderControl::Make(SkString("BevelWidth"), &fBevelWidth, 1.0f, kShapeBoundsSize)); fControlPanel.add(ContinuousSliderControl::Make(SkString("BevelHeight"), &fBevelHeight, -50.0f, 50.0f)); fControlPanel.add(DiscreteSliderControl::Make(SkString("BevelType"), &fBevelType, 0, 2)); sk_sp<ParentControl> lightCtrlSelector = ControlSwitcher::Make(SkString("SelectedLight")); for (int i = 0; i < kNumLights; i++) { SkString name("Light"); name.appendS32(i); sk_sp<ParentControl> currLightPanel = ControlPanel::Make(); SkString dirName(name); dirName.append("Dir"); currLightPanel->add(RadialDirectionControl::Make(dirName, &(fLightDefs[i].fDirXY))); SkString heightName(name); heightName.append("Height"); currLightPanel->add(ContinuousSliderControl::Make(heightName, &(fLightDefs[i].fDirZ), 0.0f, 2.0f)); SkString redName(name); redName.append("Red"); currLightPanel->add(ContinuousSliderControl::Make(redName, &(fLightDefs[i].fColor.fX), 0.0f, 1.0f)); SkString greenName(name); greenName.append("Green"); currLightPanel->add(ContinuousSliderControl::Make(greenName, &(fLightDefs[i].fColor.fY), 0.0f, 1.0f)); SkString blueName(name); blueName.append("Blue"); currLightPanel->add(ContinuousSliderControl::Make(blueName, &(fLightDefs[i].fColor.fZ), 0.0f, 1.0f)); currLightPanel->add(ColorDisplay::Make(&(fLightDefs[i].fColor))); lightCtrlSelector->add(currLightPanel); } fControlPanel.add(lightCtrlSelector); fControlPanelSelected = false; fDirtyNormalSource = true; fLabelTypeface = sk_tool_utils::create_portable_typeface("sans-serif", SkFontStyle()); }
void GraphParameters(TString DirName,TString Var){ gROOT->LoadMacro("$HSANA/THSBins.C+"); TFile* file=new TFile(DirName+"DataEntries.root"); THSBins* DataBins=(THSBins*)file->Get("HSDataBins"); TString BinName=DataBins->GetBinName(0); cout<<BinName<<endl; Int_t va= DataBins->GetAxisi(Var); TString AxisName=Var; // TList * Graphs=new TList(); Graphs->SetName("AllGraphs"); for(Int_t ib=0;ib<DataBins->GetN();ib++){ TString redName=DataBins->GetBinName(ib); //Strip the variable we are plotting from the name //so we can find the relevent graph TString axisBin=redName(redName.Index(AxisName),TString(redName(redName.Index(AxisName)+AxisName.Sizeof()-1,redName.Sizeof())).First("_")+AxisName.Sizeof()); redName.Replace(redName.Index(AxisName),TString(redName(redName.Index(AxisName)+AxisName.Sizeof()-1,redName.Sizeof())).First("_")+AxisName.Sizeof(),""); Int_t iP=DataBins->GetParti(va,axisBin);//index for this bin on this axis cout<<redName<<" "<<axisBin<<" "<<iP<<" "<<va<<endl; //Open the file with the results //TFile* fileR=new TFile(DirName+TString("Plots")+DataBins->GetBinName(ib)+".root"); TFile* fileR=new TFile(DirName+TString("Results")+DataBins->GetBinName(ib)+".root"); if(!fileR->IsOpen()) continue; RooFitResult* result=gDirectory->Get("HSFitResult"); file->cd(); RooArgList Pars= result->floatParsFinal(); //Loop over parameters getting values and error for graph TGraphErrors* graph=0; for(Int_t ipar=0;ipar<Pars.getSize();ipar++){ //if graph doesn't exist yet create new one if(!(graph= dynamic_cast<TGraphErrors*>(Graphs->FindObject(redName+Pars[ipar].GetName())))){ graph=new TGraphErrors(0); graph->SetNameTitle(redName+Pars[ipar].GetName(),redName+Pars[ipar].GetName()); Graphs->Add(graph); } Int_t Npoint=graph->GetN(); cout<<redName<<" "<<DataBins->GetAxis(va).GetBinCenter(iP+1)<<endl; graph->SetPoint(Npoint,DataBins->GetAxis(va).GetBinCenter(iP+1),((RooRealVar*)(&Pars[ipar]))->getVal()); graph->SetPointError(Npoint,DataBins->GetAxis(va).GetBinWidth(iP+1)/2,((RooRealVar*)(&Pars[ipar]))->getError()); } delete result; fileR->Close(); delete fileR; //TGraphErrors* graph=Graphs->Get(redName); } TFile* fileG=new TFile(DirName+"ParGraphs"+Var+".root","recreate"); Graphs->Write(); fileG->Close(); delete fileG; file->Close(); delete file; return; }