31 #include "TObjArray.h" 36 #include "TGraphErrors.h" 45 #include "TMultiGraph.h" 103 if (format==NULL)
return -1;
104 if (index<0)
return -1;
106 TString sFormat(format);
107 TString token(format);
110 while (counter<index) {
111 if (sFormat.Tokenize(token,position,separator)) {
117 if (counter==index)
return token.Atoi();
134 if (format==NULL)
return -1;
135 if (index<0)
return -1;
137 TString sFormat(format);
138 TString token(format);
141 while (counter<index) {
142 if (sFormat.Tokenize(token,position,separator)) {
148 if (counter==index)
return token.Atof();
231 typedef std::map<TString,TString>::const_iterator it_type;
233 if (regExp.Match(iterator->first.Data())==0)
continue;
234 std::cout<<iterator->first <<
" " << iterator->second <<
"\n";
240 typedef std::map<TString,TStyle*>::const_iterator it_type;
242 if (regExp.Match(iterator->first.Data())==0)
continue;
243 if (option==NULL) std::cout << iterator->first <<
" " << iterator->second <<
"\n";
245 iterator->second->Print(option);
246 if (TString(option).Contains(
"dump")) iterator->second->Dump();
256 ::Error(
"AliDrawStyle::ApplyStyle",
"Invalid style %s",styleName);
258 ::Info(
"AliDrawStyle::ApplyStyle",
"%s",styleName);
260 if (style) style->cd();
269 fLatexAlice[
"qpt"]=
"#it{q}/#it{p}_{T} (GeV/#it{c})^{-1}";
273 fLatexAlice[
"sqptmev"]=
"#sigma_{#it{q}/#it{p}_{T}} (MeV/#it{c})^{-1}";
274 fLatexAlice[
"pbpb502"]=
"Pb#font[122]{-}Pb #sqrt{#it{s}_{NN}} =5.02 TeV";
284 style->SetName(
"figTemplate2");
285 style->SetTitleXSize(TMath::Power(2,0.5)*style->GetTitleXSize());
286 style->SetTitleYSize(TMath::Power(2,0.5)*style->GetTitleYSize());
287 style->SetLabelSize(TMath::Power(2,0.5)*style->GetLabelSize(
"X"),
"X");
288 style->SetLabelSize(TMath::Power(2,0.5)*style->GetLabelSize(
"Y"),
"Y");
289 style->SetLabelSize(TMath::Power(2,0.5)*style->GetLabelSize(
"Z"),
"Z");
292 style->SetName(
"figTemplate3");
293 style->SetTitleXSize(TMath::Power(3,0.5)*style->GetTitleXSize());
294 style->SetTitleYSize(TMath::Power(3,0.5)*style->GetTitleYSize());
295 style->SetLabelSize(TMath::Power(3,0.5)*style->GetLabelSize(
"X"),
"X");
296 style->SetLabelSize(TMath::Power(3,0.5)*style->GetLabelSize(
"Y"),
"Y");
297 style->SetLabelSize(TMath::Power(3,0.5)*style->GetLabelSize(
"Z"),
"Z");
305 const Int_t fillColors[] = {kGray+1, kRed-10, kBlue-9, kGreen-8, kMagenta-9, kOrange-9,kCyan-8,kYellow-7, kBlack, kRed+1 };
306 const Int_t
colors[] = {kBlack, kRed+1 , kBlue+1, kGreen+3, kMagenta+1, kOrange-1,kCyan+2,kYellow+2,kGray+1, kRed-10 };
307 const Int_t
markers[] = {kFullCircle, kFullSquare,kOpenCircle,kOpenSquare,kOpenDiamond,kOpenCross,kFullCross,kFullDiamond,kFullStar,kOpenStar};
311 (
fMarkerSize[
"figTemplate"])=std::vector<float>(10);
313 (
fLineWidth[
"figTemplate"])=std::vector<float>(10);
314 (
fLineColor[
"figTemplate"])=std::vector<float>(10);
315 (
fLineStyle[
"figTemplate"])=std::vector<float>(10);
316 for (Int_t i=0;i<10; i++){
326 Int_t colorsTRD[12]={0};
327 const Int_t markersTRD[] = {kOpenSquare,kFullSquare, kOpenStar,kFullStar, kOpenCircle,kFullCircle, kOpenDiamond,kFullDiamond, kOpenCross,kFullCross };
328 const Float_t markerTRDSize[] = {1,1, 0.9,0.9, 1.4,1.4, 1.1,1.1, 1.2,1.2 };
329 colorsTRD[0]=TColor::GetColor(
"#0000DD");
330 colorsTRD[1]=TColor::GetColor(
"#00EE00");
331 colorsTRD[2]=TColor::GetColor(
"#FF0000");
332 colorsTRD[3]=TColor::GetColor(
"#00EEDD");
333 colorsTRD[4]=TColor::GetColor(
"#FFEE00");
334 colorsTRD[5]=TColor::GetColor(
"#FF00DD");
335 colorsTRD[6]=TColor::GetColor(
"#9999DD");
336 colorsTRD[7]=TColor::GetColor(
"#99EE99");
337 colorsTRD[8]=TColor::GetColor(
"#FF9999");
338 colorsTRD[9]=TColor::GetColor(
"#66AADD");
339 colorsTRD[10]=TColor::GetColor(
"#AAEE66");
340 colorsTRD[11]=TColor::GetColor(
"#FF66AA");
343 (
fMarkerSize[
"figTemplateTRD"])=std::vector<float>(10);
344 (
fFillColors[
"figTemplateTRD"])=std::vector<int>(10);
345 (
fLineWidth[
"figTemplateTRD"])=std::vector<float>(10);
346 (
fLineStyle[
"figTemplateTRD"])=std::vector<float>(10);
349 (
fMarkerSize[
"figTemplateTRDPair"])=std::vector<float>(10);
350 (
fFillColors[
"figTemplateTRDPair"])=std::vector<int>(10);
351 (
fLineWidth[
"figTemplateTRDPair"])=std::vector<float>(10);
352 (
fLineStyle[
"figTemplateTRDPair"])=std::vector<float>(10);
353 for (Int_t i=0; i<10; i++){
355 (
fMarkerColors[
"figTemplateTRD"])[i]=TColor::GetColorDark(colorsTRD[i]);
356 (
fMarkerSize[
"figTemplateTRD"])[i]=markerTRDSize[i];
361 (
fMarkerColors[
"figTemplateTRDPair"])[i]=TColor::GetColorDark(colorsTRD[i/2]);
362 (
fMarkerSize[
"figTemplateTRDPair"])[i]=markerTRDSize[i];
363 (
fFillColors[
"figTemplateTRDPair"])[i]=fillColors[i/2];
375 TStyle * figStyle =
new TStyle;
376 figStyle->Reset(
"Plain");
377 figStyle->SetOptTitle(0);
378 figStyle->SetOptStat(0);
380 if(grayPalette) figStyle->SetPalette(8,0);
381 else figStyle->SetPalette(1);
383 figStyle->SetCanvasColor(10);
384 figStyle->SetCanvasBorderMode(0);
385 figStyle->SetFrameLineWidth(1);
386 figStyle->SetFrameFillColor(kWhite);
387 figStyle->SetPadColor(10);
388 figStyle->SetPadTickX(1);
389 figStyle->SetPadTickY(1);
390 figStyle->SetPadBottomMargin(0.15);
391 figStyle->SetPadLeftMargin(0.15);
392 figStyle->SetHistLineWidth(1);
393 figStyle->SetHistLineColor(kRed);
394 figStyle->SetFuncWidth(2);
395 figStyle->SetFuncColor(kGreen);
396 figStyle->SetLineWidth(2);
397 figStyle->SetLabelSize(0.045,
"xyz");
398 figStyle->SetLabelOffset(0.01,
"y");
399 figStyle->SetLabelOffset(0.01,
"x");
400 figStyle->SetLabelColor(kBlack,
"xyz");
401 figStyle->SetTitleSize(0.05,
"xyz");
402 figStyle->SetTitleOffset(1.25,
"y");
403 figStyle->SetTitleOffset(1.2,
"x");
404 figStyle->SetTitleFillColor(kWhite);
405 figStyle->SetTextSizePixels(26);
406 figStyle->SetTextFont(42);
407 figStyle->SetLegendBorderSize(0);
408 figStyle->SetLegendFillColor(kWhite);
409 figStyle->SetLegendFont(42);
425 TString input(inputDec);
426 TPRegexp valPat(
":.*;");
428 Int_t index0 = input.Index(propertyName);
429 if (index0<0)
return "";
430 dVal = TString(input(valPat,index0));
431 Int_t valLength = dVal.Index(
';') - dVal.Index(
':') -1;
432 return dVal(1,valLength);
472 Float_t
AliDrawStyle::GetNamedTypeAt(
const char *inputStr, Bool_t &status,
int index,
const char *propertyName, Int_t verbose,
const char sep,
const char *ignoreBrackets) {
475 else inputTStr = TString(inputStr);
477 Int_t arg = 0, startIndex = 0;
478 if (TString(inputStr) == TString(
"")) {
479 ::Error(
"AliDrawStyle",
"AliDrawStyle::GetNamedTypeAt(\"%s\", %d, \"%s\"). Options string should not be empty.", inputStr, index, propertyName);
483 std::vector<TString> values;
484 for (Int_t i = 0; i <= index; i++) values.push_back(TString(
""));
486 for (Int_t i = 0; i <= inputTStr.Length(); i++) {
487 if (arg > index)
break;
488 if (inputTStr(i) == TString(sep) || i == inputTStr.Length()) {
489 values[arg] = TString(inputTStr(startIndex, i - startIndex));
492 }
else if (inputTStr(i) == TString(ignoreBrackets)[0]) {
493 i = inputTStr.Index(ignoreBrackets[1], i);
498 if (index >= arg && index != 0)
return AliDrawStyle::GetNamedTypeAt(inputStr, status, arg-1, propertyName, verbose, sep, ignoreBrackets);
500 if (values[index].IsDec() || values[index].IsFloat()) {
501 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::GetNamedTypeAt(\"%s\",%d,%d,\"%s\") was transformed in %f",inputStr,status,index,propertyName, values[index].Atof());
503 return values[index].Atof();
505 else if (values[index].Contains(
"%") || values[index].Contains(
"px")) {
507 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::GetNamedTypeAt(\"%s\",%d,%d,\"%s\") was transformed in %f",inputStr,status,index,propertyName, valF);
508 if (valF != -1.0) status = kTRUE;
511 else if (values[index].Contains(
"rgb") || values[index].Contains(
"#")) {
513 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::GetNamedTypeAt(\"%s\",%d,%d,\"%s\") was transformed in %d",inputStr,status,index,propertyName, valI);
514 if (valI != -1) status = kTRUE;
515 return (Float_t) valI;
519 if (verbose == 4) ::Error(
"AliDrawStyle",
"Something went wrong in AliDrawStyle::GetNamedTypeAt(\"%s\",%d,%d,\"%s\"). Result string is \"%s\"",inputStr,status,index,propertyName, values[index].Data());
540 TString valStr = TString(value);
541 TString optionT = TString(option);
542 Float_t val = (Float_t) -1.0;
544 if (optionT.Contains(
"marker")) {
545 val = (Float_t) TString(valStr(0, valStr.Length() - 2)).Atof() / 8;
547 ::Info(
"AliDrawStyle",
"AliDrawStyle::PixelsToFloat_t(\"%s\",\"%s\") transformed into %f.",value, option,val);
551 if (gPad ==
nullptr) {
552 ::Error(
"AliDrawStyle",
"AliDrawStyle::PixelsToFloat_t(\"%s\",\"%s\"). For converting of pixels you must have a TPad object.", value, option);
553 return (Float_t) -1.0;
556 if (optionT.Contains(
"top") || optionT.Contains(
"bottom")) {
557 val = (Float_t) TString(valStr(0, valStr.Length() - 2)).Atof() / gPad->GetWh();
558 }
else if (optionT.Contains(
"left") || optionT.Contains(
"right")) {
559 val = (Float_t) TString(valStr(0, valStr.Length() - 2)).Atof() / gPad->GetWw();
560 }
else if (optionT.Contains(
"border")) {
561 val = (Float_t) TString(valStr(0, valStr.Length() - 2)).Atof();
563 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::PixelsToFloat_t(\"%s\",\"%s\") transformed into %f. Calculations based on pad - %s", value, option, val, gPad->GetName());
574 TString valStr = TString(value);
575 Float_t val = (Float_t) TString(valStr(0, valStr.Length() - 1)).Atof() / 100;
576 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::PercentToFloat_t(%s) transformed into %f", valStr.Data(), val);
589 TString value = TString(inputValues);
590 if (value.Contains(
"px") && TString(option) != TString())
592 else if (value.Contains(
"%"))
594 else if (value.IsFloat())
return (Float_t) value.Atof();
595 if (verbose == 4) ::Error(
"AliDrawStyle",
"In AliDrawStyle::ConvertUnit(%s,%s) occured the error.", inputValues, option);
596 return (Float_t) -1.0;
613 TString rgbValuesStr =
"";
614 TPRegexp rgbPattern(
"[(].*[)]");
615 TString inputColor = TString(inputString);
616 if (inputColor.CountChar(
',') != 2) {
617 ::Error(
"AliDrawStyle",
"AliDrawStyle::RgbToColor_t(%s) - rgb should be rgb(Float_t, Float_t, Float_t)",
621 rgbValuesStr = TString(inputColor(rgbPattern)).ReplaceAll(
"(",
"");
622 rgbValuesStr = rgbValuesStr.ReplaceAll(
")",
"");
623 TObjArray *rgbValues = rgbValuesStr.Tokenize(
",");
624 if (TString(rgbValues->At(0)->GetName()).IsDec() && TString(rgbValues->At(1)->GetName()).IsDec() &&
625 TString(rgbValues->At(2)->GetName()).IsDec()) {
626 Int_t r = TString(rgbValues->At(0)->GetName()).Atoi();
627 Int_t g = TString(rgbValues->At(1)->GetName()).Atoi();
628 Int_t
b = TString(rgbValues->At(2)->GetName()).Atoi();
630 ::Info(
"AliDrawStyle",
"AliDrawStyle::RgbToColor_t(%s) transformed into " 631 "TColor::GetColor(%d, %d, %d) and returned %d", inputColor.Data(), r, g,
b,
632 TColor::GetColor(r, g, b));
633 return TColor::GetColor(r, g, b);
635 else if (TString(rgbValues->At(0)->GetName()).IsFloat() && TString(rgbValues->At(1)->GetName()).IsFloat() &&
636 TString(rgbValues->At(2)->GetName()).IsFloat()) {
637 Float_t r = (Float_t) TString(rgbValues->At(0)->GetName()).Atof();
638 Float_t g = (Float_t) TString(rgbValues->At(1)->GetName()).Atof();
639 Float_t
b = (Float_t) TString(rgbValues->At(2)->GetName()).Atof();
640 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::RgbToColor_t(%s) transformed into " 641 "TColor::GetColor(%f, %f, %f) and returned %d", inputColor.Data(),r,g,
b,
642 TColor::GetColor(r, g, b));
643 return TColor::GetColor(r, g, b);
646 ::Warning(
"AliDrawStyle",
"In AliDrawStyle::RgbToColor_t(%s) something went wrong", inputString);
655 TString inputColor = TString(inputString);
656 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::HexToColor_t(%s) transformed into " 657 "TColor::GetColor(%s) and returned %d", inputColor.Data(), inputColor.Data(),
658 TColor::GetColor(inputColor.Data()));
659 return TColor::GetColor(inputColor.Data());
680 TString value = TString(inputString);
682 if (value(0,3) == TString(
"rgb"))
684 else if (value(0) == TString(
"#"))
686 else if (value.IsDec())
687 color = value.Atoi();
689 ::Error(
"AliDrawStyle",
"AliDrawStyle::ConvertColor(%s) - something wrong with colors", value.Data());
692 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::ConvertColor(%s) transformed into " 693 "returned %d", inputString,color);
712 Float_t
AliDrawStyle::PrepareValue(
const char* styleName, TString propertyName, TString elementID, TString classID, TString objectID, TString localStyle, Bool_t &status, Int_t objNum, Int_t verbose) {
713 TString
property =
"";
714 TString cProperty =
"";
718 if (localStyle.Contains(propertyName.Data()) && (propertyName.Contains(
"size") || propertyName.Contains(
"margin"))) {
719 property = localStyle;
721 cProperty = propertyName;
723 else if (localStyle.Contains(propertyName.Data())) {
728 else if (propertyName.Contains(
"size") || propertyName.Contains(
"margin")) {
731 cProperty = propertyName +
":";
732 if (!property.Contains(cProperty)) {
737 property =
AliDrawStyle::GetValue(styleName, propertyName, elementID, classID, objectID, localStyle, verbose);
740 if (property == TString(
""))
return -1.;
745 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::PrepareValue(\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",%d) status is %d and returned value is %f", styleName, propertyName.Data(), elementID.Data(), classID.Data(), objectID.Data(), localStyle.Data(), objNum, status, value);
746 if (status)
return value;
758 while (inputCSS.Index(
"*/") > 0) {
759 inputCSS = TString(inputCSS(0, inputCSS.Index(
"/*"))) + TString(inputCSS(inputCSS.Index(
"*/")+2, inputCSS.Length()));
761 inputCSS.ReplaceAll(
"\n",
"");
762 TObjArray *tokenArray = inputCSS.Tokenize(
"{}");
763 Int_t entries = tokenArray->GetEntries();
764 if (cssArray==
nullptr) {
768 ::Info(
"AliDrawStyle::ReadCSSString",
"In input CSS string %s was parsed to:\n", inputCSS.Data());
769 for (Int_t i = 0; i < entries; i += 2) {
770 if (i + 1 >= entries)
continue;
771 TString selector = tokenArray->At(i)->GetName();
772 TString declaration = tokenArray->At(i + 1)->GetName();
774 ::Info(
"selector: %s\ndeclaration: %s\n", selector.Data(), declaration.Data());
775 cssArray->AddLast(
new TNamed(selector.Data(), declaration.Data()));
785 TString expInputName(inputName);
786 if (gSystem->ExpandPathName(expInputName)) {
787 ::Error(
"AliDrawStyle::ReadCSSFile",
"Cannot expand some variables in %s", inputName);
790 if (gSystem->AccessPathName(expInputName.Data())) {
791 ::Error(
"AliDrawStyle::ReadCSSFile",
"File %s doesn't exist", expInputName.Data());
794 std::ifstream cssFp(expInputName.Data());
795 std::stringstream buf;
796 buf << cssFp.rdbuf();
797 TString inputCSS = buf.str();
807 if (pCssOut ==
nullptr) {
808 pCssOut=
new std::fstream;
809 pCssOut->open(outputName, std::ios_base::out|std::ios_base::trunc);
811 std::fstream &cssOut = *pCssOut;
812 for (Int_t i=0;i<cssArray->GetEntries();i++) {
813 TObject *
object = cssArray->At(i);
814 if (object->InheritsFrom(
"TObjArray")) {
817 cssOut <<
object->GetName();
819 cssOut <<
object->GetTitle();
824 if (outputName!=
nullptr) {
836 if (selector == TString(
"")) {
837 ::Error(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\") selector should not be empty", selector.Data(), elementID.Data());
841 if (elementID == TString(
"")) {
843 ::Info(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\") elementID is empty, any element is fine", selector.Data(), elementID.Data());
846 TString elementFromSelector =
"";
848 if(selector.Index(
'#') >= 0) finish = selector.Index(
'#');
849 if(selector.Index(
'.') >= 0) finish = selector.Index(
'.');
851 if (finish == 0)
return kTRUE;
852 else if (finish > 0) elementFromSelector = selector(0, finish);
853 else elementFromSelector = selector;
854 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\"). Selector was transformed to %s", selector.Data(), elementID.Data(), elementFromSelector.Data());
856 if (elementFromSelector.Index(
'*') >= 0) {
857 elementFromSelector = elementFromSelector.ReplaceAll(
"*",
".*");
858 TPRegexp elemPattern(elementFromSelector);
859 if (elementID(elemPattern) == elementID || TClass(elementID.Data()).InheritsFrom(TString(elementFromSelector(0,elementFromSelector.Index(
"."))).Data())) {
861 ::Info(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\") was successful", selector.Data(), elementID.Data());
866 ::Info(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\") was unsuccessful", selector.Data(), elementID.Data());
871 if (elementFromSelector == elementID) {
873 ::Info(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\") was successful", selector.Data(), elementID.Data());
877 ::Info(
"AliDrawStyle",
"AliDrawStyle::ElementSearch(\"%s\", \"%s\") was unsuccessful", selector.Data(), elementID.Data());
887 if (selector == TString(
"")) {
888 ::Error(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\") selector should not be empty", selector.Data(), classID.Data());
891 if (classID == TString(
"")) {
893 ::Info(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\") classID is empty, any class is fine", selector.Data(), classID.Data());
897 TPRegexp classPattern(
"[.].*#|[.].*");
898 TString classFromSelector =
"";
900 classFromSelector = selector(classPattern);
901 if (classFromSelector == TString(
""))
904 if(classFromSelector.Index(
'#') >= 0) classFromSelector = classFromSelector(1,classFromSelector.Length() - 2);
905 else classFromSelector = classFromSelector(1,classFromSelector.Length());
906 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\"). Selector was transformed to %s", selector.Data(), classID.Data(), classFromSelector.Data());
909 TObjArray *classIDs = classID.Tokenize(
",");
910 Int_t nC = classIDs->GetEntriesFast();;
911 TString tempClassID =
"";
913 for (Int_t i = 0; i < nC; i++) {
914 tempClassID = classIDs->At(i)->GetName();
915 if (classFromSelector.Index(
'*') >= 0) {
916 classFromSelector = classFromSelector.ReplaceAll(
"*",
".*");
917 TPRegexp classSelPattern(classFromSelector);
918 if (tempClassID(classSelPattern) == tempClassID) {
920 ::Info(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\") was successful", selector.Data(), classID.Data());
924 ::Info(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\") was unsuccessful", selector.Data(), classID.Data());
929 if (classFromSelector == tempClassID) {
931 ::Info(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\") was successful", selector.Data(), classID.Data());
936 ::Info(
"AliDrawStyle",
"AliDrawStyle::ClassSearch(\"%s\", \"%s\") was unsuccessful", selector.Data(), classID.Data());
946 if (selector == TString(
"")) {
947 ::Error(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\") selector should not be empty", selector.Data(), objectID.Data());
950 if (objectID == TString(
"")) {
952 ::Info(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\") objectID is empty.", selector.Data(), objectID.Data());
956 TPRegexp objectPattern(
"[#].*");
957 TString objectFromSelector =
"";
959 objectFromSelector = selector(objectPattern);
960 if (objectFromSelector == TString(
""))
963 objectFromSelector = objectFromSelector(1,objectFromSelector.Length());
964 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\"). Selector was transformed to %s", selector.Data(), objectID.Data(), objectFromSelector.Data());
966 if (objectFromSelector.Index(
'*') >= 0) {
967 objectFromSelector = objectFromSelector.ReplaceAll(
"*",
".*");
968 TPRegexp objectSelPattern(objectFromSelector);
969 if (objectID(objectSelPattern) == objectID) {
971 ::Info(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\") was successful", selector.Data(), objectID.Data());
976 ::Info(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\") was unsuccessful", selector.Data(), objectID.Data());
981 if (objectFromSelector == objectID) {
983 ::Info(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\") was successful", selector.Data(), objectID.Data());
987 ::Info(
"AliDrawStyle",
"AliDrawStyle::ObjectSearch(\"%s\", \"%s\") was unsuccessful", selector.Data(), objectID.Data());
1006 Bool_t
AliDrawStyle::IsSelected(TString selectors,
const TString elementID,
const TString classID,
const TString objectID, Int_t verbose) {
1007 if (elementID == TString(
"") && classID == TString(
"") && objectID == TString(
"")) {
1009 ::Info(
"AliDrawStyle",
"AliDrawStyle::IsSelected(\"%s\", \"%s\", \"%s\", \"%s\") returned kFALSE. All elements are empty.", \
1010 selectors.Data(), elementID.Data(), classID.Data(), objectID.Data());
1013 Ssiz_t fromStart1 = 0;
1014 Ssiz_t fromStart = 0;
1015 TString subSelectors =
"";
1016 TString selector =
"";
1017 selectors = selectors.ReplaceAll(
"\n",
"");
1018 while (selectors.Tokenize(subSelectors, fromStart1,
" \t")) {
1020 while (subSelectors.Tokenize(selector, fromStart,
", ")) {
1021 selector = selector.Strip(TString::kBoth,
' ');
1024 ::Info(
"AliDrawStyle",
"AliDrawStyle::IsSelected(\"%s\", \"%s\", \"%s\", \"%s\") returned kTRUE", \
1025 selectors.Data(), elementID.Data(), classID.Data(), objectID.Data());
1031 ::Info(
"AliDrawStyle",
"AliDrawStyle::IsSelected(\"%s\", \"%s\", \"%s\", \"%s\") returned kFALSE", \
1032 selectors.Data(), elementID.Data(), classID.Data(), objectID.Data());
1070 TString
AliDrawStyle::GetValue(
const char *styleName, TString propertyName, TString elementID, TString classID, TString objectID, TString localStyle, Int_t verbose) {
1072 if (localStyle.Contains(propertyName.Data()) && propertyName != TString(
"")) {
1074 if (verbose == 4) ::Info(
"AliDrawStyle",
"AliDrawStyle::GetValue(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\") was found in local property and was transformed into \"%s\"", styleName, propertyName.Data(), elementID.Data(), classID.Data(), objectID.Data(), value.Data());
1078 if (
fCssStyleAlice[styleName] ==
nullptr || (elementID == TString(
"") && classID == TString(
"") && objectID == TString(
"")))
return "";
1080 TString actProperty =
"";
1082 TString declaration =
"";
1084 for(Int_t i = 0; i < entries; i++) {
1086 elementID, classID, objectID, verbose)) {
1087 if (propertyName ==
"") value =
fCssStyleAlice[styleName]->At(i)->GetTitle();
1089 if (value !=
"") actProperty = value.Strip(TString::kBoth,
' ');
1092 if (verbose == 4 && propertyName != TString(
"")) {
1093 if (value != TString(
"")) ::Info(
"AliDrawStyle",
"AliDrawStyle::GetValue(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\") was transformed into \"%s\"", styleName, propertyName.Data(), elementID.Data(), classID.Data(), objectID.Data(), actProperty.Data());
1094 else ::Info(
"AliDrawStyle",
"AliDrawStyle::GetValue(\"%s\", \"%s\", \"%s\", \"%s\", \"%s\") property not found in css file", styleName, propertyName.Data(), elementID.Data(), classID.Data(), objectID.Data());
1110 Bool_t status = kFALSE;
1111 TString elementID =
"";
1112 TString classID =
"";
1113 TString objectID =
"";
1114 TString
property =
"";
1115 TString localStyle =
"";
1121 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"axis-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1123 cGraph->GetXaxis()->SetAxisColor((Color_t) valueI);
1124 cGraph->GetYaxis()->SetAxisColor((Color_t) valueI);
1127 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1129 cGraph->GetXaxis()->SetNdivisions(valueI);
1130 cGraph->GetYaxis()->SetNdivisions(valueI);
1133 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x-ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1135 cGraph->GetXaxis()->SetNdivisions(valueI);
1137 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y-ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1139 cGraph->GetYaxis()->SetNdivisions(valueI);
1141 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1143 cGraph->GetXaxis()->SetLabelColor((Color_t) valueI);
1144 cGraph->GetYaxis()->SetLabelColor((Color_t) valueI);
1146 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1148 cGraph->GetXaxis()->SetLabelFont((Style_t) valueI);
1149 cGraph->GetYaxis()->SetLabelFont((Style_t) valueI);
1152 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"label-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1154 cGraph->GetXaxis()->SetLabelSize(valueF);
1155 cGraph->GetYaxis()->SetLabelSize(valueF);
1158 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"label-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1160 cGraph->GetXaxis()->SetLabelOffset(valueF);
1161 cGraph->GetYaxis()->SetLabelOffset(valueF);
1164 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"title-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1166 cGraph->GetXaxis()->SetTitleFont((Style_t) valueI);
1167 cGraph->GetYaxis()->SetTitleFont((Style_t) valueI);
1170 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"title-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1172 cGraph->GetXaxis()->SetTitleOffset(valueF);
1173 cGraph->GetYaxis()->SetTitleOffset(valueF);
1176 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"title-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1178 cGraph->GetXaxis()->SetTitleSize(valueF);
1179 cGraph->GetYaxis()->SetTitleSize(valueF);
1194 Bool_t status = kFALSE;
1195 TString elementID =
"";
1196 TString classID =
"";
1197 TString objectID =
"";
1198 TString
property =
"";
1199 TString localStyle =
"";
1205 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"axis-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1206 if (status) cHis->SetAxisColor((Color_t) valueI);
1208 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1210 cHis->GetXaxis()->SetNdivisions(valueI);
1211 cHis->GetYaxis()->SetNdivisions(valueI);
1214 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x-ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1216 cHis->GetXaxis()->SetNdivisions(valueI);
1218 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y-ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1220 cHis->GetYaxis()->SetNdivisions(valueI);
1222 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1223 if (status) cHis->SetLabelColor((Color_t) valueI,
"xyz");
1225 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"Xlabel-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1226 if (status) cHis->SetLabelColor((Color_t) valueI,
"X");
1228 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"Ylabel-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1229 if (status) cHis->SetLabelColor((Color_t) valueI,
"Y");
1231 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"Zlabel-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1232 if (status) cHis->SetLabelColor((Color_t) valueI,
"Y");
1234 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1235 if (status) cHis->SetLabelFont((Style_t) valueI,
"xyz");
1237 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"Xlabel-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1238 if (status) cHis->SetLabelFont((Style_t) valueI,
"X");
1240 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"Ylabel-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1241 if (status) cHis->SetLabelFont((Style_t) valueI,
"Y");
1243 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"Zlabel-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1244 if (status) cHis->SetLabelFont((Style_t) valueI,
"Z");
1246 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"label-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1247 if (status) cHis->SetLabelSize(valueF,
"xyz");
1249 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Xlabel-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1250 if (status) cHis->SetLabelSize(valueF,
"X");
1252 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Ylabel-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1253 if (status) cHis->SetLabelSize(valueF,
"Y");
1255 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Zlabel-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1256 if (status) cHis->SetLabelSize(valueF,
"Z");
1258 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"label-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1259 if (status) cHis->SetLabelOffset(valueF);
1261 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"title-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1262 if (status) cHis->SetTitleFont((Style_t) valueI);
1264 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"title-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1265 if (status) cHis->SetTitleOffset(valueF,
"xyz");
1267 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Xtitle-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1268 if (status) cHis->SetTitleOffset(valueF,
"X");
1270 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Ytitle-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1271 if (status) cHis->SetTitleOffset(valueF,
"Y");
1273 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Ztitle-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1274 if (status) cHis->SetTitleOffset(valueF,
"Z");
1276 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"title-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1277 if (status) cHis->SetTitleSize(valueF,
"xyz");
1279 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Xtitle-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1280 if (status) cHis->SetTitleSize(valueF,
"X");
1282 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Ytitle-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1283 if (status) cHis->SetTitleSize(valueF,
"Y");
1285 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"Ztitle-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1286 if (status) cHis->SetTitleSize(valueF,
"Z");
1289 for (Int_t i = 0; i < cHis->GetListOfFunctions()->GetEntries(); i++) {
1307 Bool_t status =
false;
1308 TString elementID =
"";
1309 TString classID =
"";
1310 TString objectID =
"";
1311 TString
property =
"";
1312 TString localStyle =
"";
1317 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"axis-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1319 cFunc->GetXaxis()->SetAxisColor((Color_t) valueI);
1320 cFunc->GetYaxis()->SetAxisColor((Color_t) valueI);
1321 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetAxisColor((Color_t) valueI);
1324 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1326 cFunc->GetXaxis()->SetNdivisions(valueI);
1327 cFunc->GetYaxis()->SetNdivisions(valueI);
1330 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x-ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1332 cFunc->GetXaxis()->SetNdivisions(valueI);
1334 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y-ndivisions"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1336 cFunc->GetYaxis()->SetNdivisions(valueI);
1338 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1340 cFunc->GetXaxis()->SetLabelFont((Style_t) valueI);
1341 cFunc->GetYaxis()->SetLabelFont((Style_t) valueI);
1342 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetLabelFont((Style_t) valueI);
1345 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1347 cFunc->GetXaxis()->SetLabelSize(valueI);
1348 cFunc->GetYaxis()->SetLabelSize(valueI);
1349 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetLabelSize(valueI);
1352 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"label-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1354 cFunc->GetXaxis()->SetLabelOffset(valueI);
1355 cFunc->GetYaxis()->SetLabelOffset(valueI);
1356 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetLabelOffset(valueI);
1359 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"title-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1361 cFunc->GetXaxis()->SetTitleFont((Style_t) valueI);
1362 cFunc->GetYaxis()->SetTitleFont((Style_t) valueI);
1363 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetTitleFont((Style_t) valueI);
1366 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"title-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1368 cFunc->GetXaxis()->SetTitleSize(valueI);
1369 cFunc->GetYaxis()->SetTitleSize(valueI);
1370 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetTitleSize(valueI);
1373 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"title-offset"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1375 cFunc->GetXaxis()->SetTitleOffset(valueI);
1376 cFunc->GetYaxis()->SetTitleOffset(valueI);
1377 if (cFunc->GetZaxis()) cFunc->GetZaxis()->SetTitleOffset(valueI);
1387 Bool_t status =
false;
1388 TString elementID =
"";
1389 TString classID =
"";
1390 TString objectID =
"";
1391 TString
property =
"";
1392 TString localStyle =
"";
1399 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"column-separation"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1400 if (status) cLegend->SetColumnSeparation(valueF);
1402 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"margin"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1403 if (status) cLegend->SetMargin(valueF);
1405 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"ncolumns"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1406 if (status) cLegend->SetNColumns(valueI);
1408 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"border-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1409 if (status) cLegend->SetBorderSize(valueI);
1411 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"corner-radius"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1412 if (status) cLegend->SetCornerRadius(valueD);
1414 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"shadow-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1415 if (status) cLegend->SetShadowColor(valueI);
1417 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x1-ndc"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1418 if (status) cLegend->SetX1NDC(valueD);
1420 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x2-ndc"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1421 if (status) cLegend->SetX2NDC(valueD);
1423 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y1-ndc"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1424 if (status) cLegend->SetY1NDC(valueD);
1426 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y2-ndc"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1427 if (status) cLegend->SetY2NDC(valueD);
1429 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x1"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1430 if (status) cLegend->SetX1(valueD);
1432 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"x2"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1433 if (status) cLegend->SetX2(valueD);
1435 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y1"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1436 if (status) cLegend->SetY1(valueD);
1438 valueD = (Double_t)
AliDrawStyle::PrepareValue(styleName, TString(
"y2"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1439 if (status) cLegend->SetY2(valueD);
1441 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"bbox-centerx"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1442 if (status) cLegend->SetBBoxCenterX(valueI);
1444 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"bbox-centery"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1445 if (status) cLegend->SetBBoxCenterY(valueI);
1447 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"bbox-x1"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1448 if (status) cLegend->SetBBoxX1(valueI);
1450 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"bbox-x2"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1451 if (status) cLegend->SetBBoxX2(valueI);
1453 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"bbox-y1"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1454 if (status) cLegend->SetBBoxY1(valueI);
1456 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"bbox-y2"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1457 if (status) cLegend->SetBBoxY2(valueI);
1459 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"line-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1460 if (status) cLegend->SetLineColor((Color_t) valueI);
1462 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"line-style"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1463 if (status) cLegend->SetLineStyle((Style_t) valueI);
1465 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"line-width"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1466 if (status) cLegend->SetLineWidth((Width_t) valueF);
1468 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"fill-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1469 if (status) cLegend->SetFillColor((Color_t) valueI);
1471 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"fill-style"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1472 if (status) cLegend->SetFillStyle((Style_t) valueI);
1474 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"text-align"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1475 if (status) cLegend->SetTextAlign((Short_t) valueI);
1477 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"text-angle"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1478 if (status) cLegend->SetTextAngle(valueF);
1480 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"text-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1481 if (status) cLegend->SetTextColor((Color_t) valueI);
1483 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"text-font"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1484 if (status) cLegend->SetTextFont((Font_t) valueI);
1487 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"text-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1488 if (status) cLegend->SetTextSize(valueF);
1498 template <
typename T>
1501 Bool_t status =
false;
1502 TString elementID =
"";
1503 TString classID =
"";
1504 TString objectID =
"";
1505 TString
property =
"";
1506 TString localStyle =
"";
1512 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"marker-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1513 if (status) cObj->SetMarkerColor((Color_t) valueI);
1515 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"marker-size"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1516 if (status) cObj->SetMarkerSize(valueF);
1518 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"marker-style"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1519 if (status) cObj->SetMarkerStyle((Style_t) valueI);
1521 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"line-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1522 if (status) cObj->SetLineColor((Color_t) valueI);
1524 valueF =
AliDrawStyle::PrepareValue(styleName, TString(
"line-width"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1525 if (status) cObj->SetLineWidth((Width_t) valueF);
1527 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"line-style"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1528 if (status) cObj->SetLineStyle((Style_t) valueI);
1530 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"fill-color"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1531 if (status) cObj->SetFillColor((Color_t) valueI);
1533 valueI = (Int_t)
AliDrawStyle::PrepareValue(styleName, TString(
"fill-style"), elementID, classID, objectID, localStyle, status, objNum, verbose);
1534 if (status) cObj->SetFillStyle((Style_t) valueI);
1546 Bool_t status =
false;
1547 TString elementID =
"";
1548 TString classID =
"";
1549 TString objectID =
"";
1550 TString
property =
"";
1551 TString localStyle =
"";
1558 if (status) cPad->SetFillColor((Color_t) valueI);
1562 cPad->SetBottomMargin(valueF);
1563 cPad->SetTopMargin(valueF);
1564 cPad->SetLeftMargin(valueF);
1565 cPad->SetRightMargin(valueF);
1568 if (status) cPad->SetBottomMargin(valueF);
1571 if (status) cPad->SetTopMargin(valueF);
1574 if (status) cPad->SetLeftMargin(valueF);
1577 if (status) cPad->SetRightMargin(valueF);
1580 if (status) cPad->SetBorderSize((Short_t) valueI);
1583 if (status) cPad->SetBorderMode((Short_t) valueI);
1586 if (status) cPad->SetGridx((Short_t) valueI);
1589 if (status) cPad->SetGridy((Short_t) valueI);
1592 if (status) cPad->SetTickx((Short_t) valueI);
1595 if (status) cPad->SetTicky((Short_t) valueI);
1598 if (status) cPad->SetLogx((Short_t) valueI);
1601 if (status) cPad->SetLogy((Short_t) valueI);
1604 if (status) cPad->SetLogz((Short_t) valueI);
1616 Bool_t status =
false;
1617 Bool_t status2 =
false;
1618 TString elementID =
"";
1619 TString classID =
"";
1620 TString objectID =
"";
1621 TString
property =
"";
1622 TString localStyle =
"";
1634 if (cWidth * cHeight > 0 && status && status2) cCanvas->SetWindowSize((UInt_t) cWidth, (UInt_t) cHeight);
1637 if (status) cCanvas->SetFillColor((Color_t) valueI);
1640 if (status) cCanvas->SetHighLightColor((Color_t) valueI);
1643 if (status) cCanvas->SetBottomMargin(valueF);
1646 if (status) cCanvas->SetTopMargin(valueF);
1649 if (status) cCanvas->SetLeftMargin(valueF);
1652 if (status) cCanvas->SetRightMargin(valueF);
1655 if (status) cCanvas->SetBorderSize((Short_t) valueI);
1658 if (status) cCanvas->SetBorderMode((Short_t) valueI);
1680 AliDrawStyle::GetIds(TObject *cObject, TString &elementID, TString &classID, TString &objectID, TString &localStyle, Int_t verbose) {
1682 elementID = cObject->ClassName();
1683 objectID = TString(cObject->GetName());
1684 TPRegexp classPat(
".class[(].*?[)]");
1685 TPRegexp stylePat(
".style[(].*?[)]");
1686 TString objPatStr =
"";
1687 if ((objectID.Index(
".class") < objectID.Index(
".style") || objectID.Index(
".style") == -1) && objectID.Index(
".class") > 0)
1688 objPatStr =
"^.*[[]|^.*?[.]class|.*";
1689 else if ((objectID.Index(
".class") > objectID.Index(
".style") || objectID.Index(
".class") == -1) && objectID.Index(
".style") > 0)
1690 objPatStr =
"^.*[[]|^.*?[.]style|.*";
1692 objPatStr =
"^.*[[]|.*";
1693 TPRegexp objPat(objPatStr);
1695 classID = objectID(classPat);
1696 localStyle = objectID(stylePat);
1697 Int_t classLength = classID.Index(
")") - classID.Index(
"(") - 1;
1698 Int_t styleLength = localStyle.Index(
")") - localStyle.Index(
"(") - 1;
1699 classID = classID(classID.Index(
"(") + 1, classLength);
1700 localStyle = localStyle(localStyle.Index(
"(") + 1, styleLength);
1701 objectID = objectID(objPat);
1702 objectID.ReplaceAll(
".class",
"");
1703 objectID.ReplaceAll(
".style",
"");
1704 if (objectID(objectID.Length() - 1) ==
'[')
1705 objectID = objectID(0,objectID.Length() - 1);
1707 ::Info(
"AliDrawStyle",
"Object with name \"%s\" was parsed via AliDrawStyle::GetIds() to elementID = \"%s\", classID = \"%s\", objectID = \"%s\", localStyle = \"%s\"", cObject->GetName(), elementID.Data(), classID.Data(), objectID.Data(), localStyle.Data());
1732 if (pad ==
nullptr) {
1733 ::Error(
"AliDrawStyle::ApplyCssStyle",
"Pad doesn't exist");
1737 TObject *cObj =
nullptr;
1738 TList *oList =
nullptr;
1739 TString elementID =
"";
1740 TString objectID =
"";
1741 TString classID =
"";
1742 TString localStyle =
"";
1743 TPRegexp numPat0(
"[[].*[]]");
1744 TPRegexp numPat1(
"[0-9]+");
1747 oList = pad->GetListOfPrimitives();
1748 GetIds(pad, elementID, classID, objectID, localStyle, verbose);
1750 if (elementID ==
"TCanvas") {
1753 for (Int_t c = 0; c < oList->GetEntries() && oList->At(c)->InheritsFrom(
"TPad"); c++) {
1759 if (elementID ==
"TPad") {
1760 padNumStr = TString(TString(pad->GetName())(numPat0))(numPat1);
1761 if (padNumStr != TString(
""))
1766 Int_t objNum = -1, hisCnt = 0, funcCnt = 0, graphCnt = 0, legendCnt = 0;
1767 for (Int_t k = 0; k < oList->GetEntries(); k++) {
1768 cObj = oList->At(k);
1769 if (TString(TString(cObj->GetName())(numPat0))(numPat1) != TString(
""))
1770 objNum = TString(TString(TString(cObj->GetName())(numPat0))(numPat1)).Atoi();
1771 if (cObj->InheritsFrom(
"TH1")) {
1772 if (objNum >= 0) hisCnt = objNum;
1776 if (cObj->InheritsFrom(
"TGraph")) {
1777 if (objNum >= 0) graphCnt = objNum;
1781 if (cObj->InheritsFrom(
"TF1")) {
1782 if (objNum >= 0) funcCnt = objNum;
1786 if (cObj->InheritsFrom(
"TLegend")) {
1787 if (objNum >= 0) legendCnt = objNum;
static Float_t PercentToFloat_t(const char *value, Int_t verbose)
converter from percents to float
static void ApplyStyle(const char *styleName)
static Float_t GetFloatAt(const char *format, Int_t index, const char *separator=";")
static Bool_t ElementSearch(const TString selectors, const TString elementID, Int_t verbose=0)
Checks element id in selector.
static void TF1ApplyStyle(const char *styleName, TF1 *cFunc, Int_t objNum=0, Int_t verbose=0)
static Bool_t IsSelected(TString selectors, const TString elementID, const TString classID, const TString objectID, Int_t verbose=0)
static std::map< TString, std::vector< int > > fMarkerColors
map of predefined colors arrays
static void TGraphApplyStyle(const char *styleName, TGraph *cGraph, Int_t objNum=0, Int_t verbose=0)
static void TH1ApplyStyle(const char *styleName, TH1 *cHis, Int_t objNum=0, Int_t verbose=0)
static void RegisterDefaultLatexSymbols()
initialize default LatexSymbols
static Int_t GetFillColor(const char *style, Int_t index)
static Int_t GetIntegerAt(const char *format, Int_t index, const char *separator=";")
static void RegisterDefaultMarkers()
initialize default Markers/Colors
static Int_t GetPadNumber()
static void TCanvasApplyCssStyle(const char *styleName, TCanvas *cCanvas, Int_t verbose=0)
static std::map< TString, std::vector< float > > fLineWidth
map of predefined line width
static TString GetValue(const char *styleName, TString propertyName, TString elementID, TString classID, TString objectID, TString localStyle=TString(""), Int_t verbose=0)
GetValue gets value from css file or local style.
static void SetPadNumber(Int_t num)
static TString ParseDeclaration(const char *inputDec, const char *propertyName)
static TString fDefaultTStyleID
ID of the default TStyle.
static Float_t GetNamedTypeAt(const char *inputStr, Bool_t &status, Int_t index=0, const char *propertyName="", Int_t verbose=0, const char sep=',', const char *ignoreBrackets="()")
static Bool_t ClassSearch(const TString selectors, const TString classID, Int_t verbose=0)
Checks class in selector.
static std::map< TString, std::vector< float > > fLineColor
map of predefined line color
static std::map< TString, std::vector< float > > fLineStyle
map of predefined line style
static Int_t ConvertColor(const char *inputString, Int_t verbose=0)
Defines what format of color user used and call appropriate converter Rules for values: *for rgb we a...
static void AddLatexSymbol(const char *symbolName, const char *symbolTitle)
static const std::vector< float > & GetMarkerSize(const char *style)
static void WriteCSSFile(TObjArray *cssArray, const char *outputName, std::fstream *cssOut=nullptr)
static std::map< TString, std::vector< int > > fMarkerStyles
map of predefined marker styles arrays
static Int_t GetLineColor(const char *style, Int_t index)
static const std::vector< float > & GetLineWidth(const char *style)
static std::map< TString, std::vector< float > > fMarkerSize
map of predefined marker sizes ()
static void RegisterDefaultStyle()
initialize default TStyles
static void SetDefaultStyles(const char *styleName, const char *arrayName)
static void TPadApplyStyle(const char *styleName, TPad *cPad, Int_t verbose=0)
static void SetDefaults()
SetDefault call RegisterDefaultLatexSymbols(), RegisterDefaultStyle(), RegisterDefaultMarkers();.
static Float_t PixelsToFloat_t(const char *value, const char *option="", Int_t verbose=0)
converter from pixels to float Pixels are relative units, it means that we should have something for ...
static void PrintStyles(Option_t *option, TPRegexp ®Exp)
static TObjArray * ReadCSSFile(const char *inputName, TObjArray *array=nullptr, Int_t verbose=0)
static void TObjectApplyStyle(const char *styleName, T *cObj, Int_t objNum=0, Int_t verbose=0)
Common part of TGraphApplyStyle(), TH1ApplyStyle(), TF1ApplyStyle()
static void PrintLatexSymbols(Option_t *option, TPRegexp ®Exp)
static Bool_t ObjectSearch(const TString selectors, const TString objectID, Int_t verbose=0)
TStyle * RegisterDefaultStyleFigTemplate(Bool_t grayScale)
Style source:
static Int_t HexToColor_t(const char *inputString, Int_t verbose=0)
converter from HEX to Int_t (root format of colors)
static Int_t GetLineStyle(const char *style, Int_t index)
static std::map< TString, TString > fLatexAlice
map of predefined latex symbols - formatted according ALICE rules
static Float_t ConvertUnit(const char *inputValues, const char *option="", Int_t verbose=0)
Defines what units user used and call appropriate converter Rules for values: *for pixels we are usin...
static TString GetLatexAlice(const char *symbol)
static void GetIds(TObject *cObj, TString &elementID, TString &classID, TString &objectID, TString &localStyle, Int_t verbose=0)
Method get IDs from the cObject->GetName() and parse it into input reference. Names of objects should...
static std::map< TString, TObjArray * > fCssStyleAlice
map of Alice predefined styles corresponding to css notation
static std::map< TString, TStyle * > fStyleAlice
map of Alice predefined styles (+user defined)
static void ApplyCssStyle(TPad *pad, const char *styleName, Int_t verbose=0)
Applies style from css to all objects from Pad or Canvas. In case if pad inherited from TCanvas will ...
static TObjArray * ReadCssString(TString cssString, TObjArray *array=nullptr, Int_t verbose=0)
static TString fDefaultArrayStyleID
ID of the default array styles.
static Float_t PrepareValue(const char *styleName, TString propertyName, TString elementID, TString classID, TString objectID, TString localStyle, Bool_t &status, Int_t objNum=0, Int_t verbose=0)
prepares value for applying. This method defines which value user specified (color, unit, number, etc) and return number with appropriate type Returning value will use in Set methods of objects. (TH1.SetMarkerColor(value)).
static Int_t GetMarkerColor(const char *style, Int_t index)
static Int_t GetMarkerStyle(const char *style, Int_t index)
static void TLegendApplyStyle(const char *styleName, TLegend *cLegend, Int_t objNum=0, Int_t verbose=0)
static Int_t RgbToColor_t(const char *inputString, Int_t verbose=0)
converter from RGB to Int_t (root format of colors)
static std::map< TString, std::vector< int > > fFillColors
map of predefined fill colors arrays