Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JGIZMO Namespace Reference

Auxiliary applications for use of ROOT and more. More...

Classes

struct  JOpera
 Auxiliary data structure for JOpera1D.cc and JOpera2D.cc applications. More...
 
class  JRootObject
 Auxiliary data structure for TObject with a user defined label. More...
 
class  JRootObjectID
 Auxiliary class to handle file name, ROOT directory and object name. More...
 

Functions

TFile * getFile (const std::string &file_name, const std::string &option="exist")
 Get TFile pointer corresponding to give file name.
 
TDirectory * getDirectory (const JRootObjectID &id)
 Get TDirectory pointer.
 
TObjectgetObject (const JRootObjectID &id)
 Get first TObject with given identifier.
 
bool isTAttLine (const TObject *object)
 Get drawing option of object.
 
bool isTAttFill (const TObject *object)
 Get drawing option of object.
 
Double_t getResult (const TString &text, TObject *object=NULL)
 Get result of given textual formula.
 
Double_t getResult (const std::string &text, TObject *object=NULL)
 Get result of given textual formula.
 
int getParameter (const std::string &text)
 Get parameter number from text string.
 
Double_t getValue (const std::string &text, TObject *object=NULL)
 Get parameter value from text string.
 
Double_t getValue (const std::string &text, const int index)
 Get parameter value from text string.
 
void setLogarithmic (TAxis *axis)
 Make histogram axis logarithmic (e.g. after using log10()).
 
TString getLogarithmic (const TString &formula, const char parameter)
 Make given parameter in formula logarithmic (e.g. after using log10()).
 
void copy (const TF1 &from, TF1 &to)
 Copy function parameters.
 
void copy (const TF2 &from, TF2 &to)
 Copy function parameters.
 
template<class T >
void setLogarithmicX (TList *list)
 Make x-axis of objects in list logarithmic (e.g. after using log10()).
 
template<class T >
void setLogarithmicY (TList *list)
 Make y-axis of objects in list logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TF1 *f1)
 Make x-axis of given function logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TF1 *f1)
 Make y-axis of given function logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TF2 *f2)
 Make x-axis of given function logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TF2 *f2)
 Make y-axis of given function logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TH1 *h1)
 Make x-axis and associated functions of given histogram logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TH1 *h1)
 Make y-axis and associated functions of given histogram logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TH2 *h2)
 Make x-axis and associated functions of given histogram logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TH2 *h2)
 Make y-axis and associated functions of given histogram logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TGraph *g1)
 Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TGraph *g1)
 Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TGraphErrors *g1)
 Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TGraphErrors *g1)
 Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TGraph2D *g2)
 Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TGraph2D *g2)
 Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TGraph2DErrors *g2)
 Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TGraph2DErrors *g2)
 Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TMultiGraph *gn)
 Make x-axis of given multi-graph logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TMultiGraph *gn)
 Make y-axis of given multi-graph logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TLine *line)
 Make x-axis of given line logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TLine *line)
 Make y-axis of given line logarithmic (e.g. after using log10()).
 
void setLogarithmicX (TEllipse *ellipse)
 Make x-axis of given ellipse logarithmic (e.g. after using log10()).
 
void setLogarithmicY (TEllipse *ellipse)
 Make y-axis of given ellipse logarithmic (e.g. after using log10()).
 
void convertToPDF (TH1 &h1, const std::string &option="NW", const double factor=1.0)
 Convert 1D histogram to PDF.
 
void convertToPDF (TH2 &h2, const std::string &option="NXYW", const double factor=1.0)
 Convert 2D histogram to PDF.
 
void convertToPDF (TH3 &h3, const std::string &option="NXYW", const double factor=1.0)
 Convert 3D histogram to PDF.
 
void setLimits (TGraph &g1)
 Set limits of TGraph.
 
void setLimits (TGraph2D &g2)
 Set limits of TGraph2D.
 
void setRange (double &xmin, double &xmax, const bool logx)
 Set axis range.
 
void setAxisLabels (TAxis *axis, const JModuleAddressMap &memo)
 Set axis with PMT address labels.
 
void setAxisLabels (TH1 &h1, const std::string axis, const JModuleAddressMap &memo)
 Set axis labels with PMT addresses.
 
bool isTObject (const TKey *key)
 Check if given key corresponds to a TObject.
 
TObjectgetObject (TList *ls, const char *const name)
 Get first object of which name matches given reguar expression.
 
TF1 * getFunction (TH1 *h1, const char *const fcn)
 Get function.
 
TF1 * getFunction (TGraph *g1, const char *const fcn)
 Get function.
 
TF1 * getFunction (TGraph2D *g2, const char *const fcn)
 Get function.
 

Variables

static const char *const TIMESTAMP = "#splitline{}{#splitline{%d:%m:%y}{ %H:%M}}%F1970-01-01 00:00:00"
 Time stamp of earliest UTC time.
 
static const char LABEL_TERMINATOR = '&'
 label terminator
 

Detailed Description

Auxiliary applications for use of ROOT and more.

Author
mdejong

Function Documentation

◆ getFile()

TFile * JGIZMO::getFile ( const std::string & file_name,
const std::string & option = "exist" )
inline

Get TFile pointer corresponding to give file name.

The TFile pointer of an already opened file is recovered, else a new file is opened.
Note that the closure of the opened files should be done by the caller of this method.

Parameters
file_namefile name
optionTFile::Open option
Returns
pointer to TFile

Definition at line 111 of file JGizmoToolkit.hh.

112 {
113 using namespace std;
114
115 gErrorIgnoreLevel = kError;
116
117 static map<string, TFile*> zmap;
118
119 map<string, TFile*>::iterator i = zmap.find(file_name);
120
121 if (i == zmap.end() || i->second == NULL || !i->second->IsOpen()) {
122
123 TFile* file = TFile::Open(file_name.c_str(), option.c_str());
124
125 zmap[file_name] = file;
126
127 return file;
128
129 } else {
130
131 return i->second;
132 }
133 }

◆ getDirectory()

TDirectory * JGIZMO::getDirectory ( const JRootObjectID & id)
inline

Get TDirectory pointer.

The TFile pointer of an already opened file is recovered, else a new file is opened.

Parameters
ididentifier
Returns
pointer to TDirectory

Definition at line 144 of file JGizmoToolkit.hh.

145 {
146 TFile* in = getFile(id.getFilename().c_str(), "exist");
147
148 if (in == NULL || !in->IsOpen()) {
149 return NULL;
150 }
151
152 if (id.getDirectory() != "")
153 return in->GetDirectory(id.getDirectory());
154 else
155 return in;
156 }
TFile * getFile(const std::string &file_name, const std::string &option="exist")
Get TFile pointer corresponding to give file name.

◆ getObject() [1/2]

TObject * JGIZMO::getObject ( const JRootObjectID & id)
inline

Get first TObject with given identifier.

Parameters
ididentifier
Returns
pointer to TObject (or NULL)

Definition at line 165 of file JGizmoToolkit.hh.

166 {
167 TDirectory* dir = getDirectory(id);
168
169 if (dir != NULL) {
170
171 const TRegexp regexp(id.getObjectName());
172
173 TIter iter(dir->GetListOfKeys());
174
175 for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
176
177 const TString tag(key->GetName());
178
179 // option match
180
181 if (tag.Index(regexp) != -1) {
182 return key->ReadObj();
183 }
184 }
185 }
186
187 return NULL;
188 }
TDirectory * getDirectory(const JRootObjectID &id)
Get TDirectory pointer.

◆ isTAttLine()

bool JGIZMO::isTAttLine ( const TObject * object)
inline

Get drawing option of object.

Parameters
objectpointer to TObject
Returns
true if object looks like a line; else false

Definition at line 197 of file JGizmoToolkit.hh.

198 {
199 {
200 if (dynamic_cast<const TH3*>(object) != NULL) {
201 return false;
202 }
203 }
204 {
205 if (dynamic_cast<const TH2*>(object) != NULL) {
206 return false;
207 }
208 }
209 {
210 const TH1* h1 = dynamic_cast<const TH1*>(object);
211
212 if (h1 != NULL) {
213
214 if (h1->GetSumw2N()) {
215 for (Int_t i = 1; i <= h1->GetNbinsX(); ++i) {
216 if (h1->GetBinError(i) != 0.0) {
217 return false;
218 }
219 }
220 }
221
222 return true;
223 }
224 }
225 {
226 const TGraphErrors* g1 = dynamic_cast<const TGraphErrors*>(object);
227
228 if (g1 != NULL) {
229
230 for (Int_t i = 0; i != g1->GetN(); ++i) {
231 if (g1->GetEY()[i] != 0.0) {
232 return false;
233 }
234 }
235
236 return g1->GetN() > 1;
237 }
238 }
239 {
240 const TGraphAsymmErrors* g1 = dynamic_cast<const TGraphAsymmErrors*>(object);
241
242 if (g1 != NULL) {
243
244 for (Int_t i = 0; i != g1->GetN(); ++i) {
245 if (g1->GetEYhigh()[i] != 0.0 ||
246 g1->GetEYlow() [i] != 0.0) {
247 return false;
248 }
249 }
250
251 return g1->GetN() > 1;
252 }
253 }
254 {
255 const TGraph* g1 = dynamic_cast<const TGraph*>(object);
256
257 if (g1 != NULL) {
258 return g1->GetN() > 1;
259 }
260 }
261
262 return true;
263 }
Double_t g1(const Double_t x)
Function.
Definition JQuantiles.cc:25

◆ isTAttFill()

bool JGIZMO::isTAttFill ( const TObject * object)
inline

Get drawing option of object.

Parameters
objectpointer to TObject
Returns
true if object looks like an area; else false

Definition at line 272 of file JGizmoToolkit.hh.

273 {
274 {
275 const TAttFill* t1 = dynamic_cast<const TAttFill*>(object);
276
277 if (t1 != NULL) {
278 return t1->GetFillColor() != 1 && t1->GetFillStyle() != 0;
279 }
280 }
281
282 return false;
283 }

◆ getResult() [1/2]

Double_t JGIZMO::getResult ( const TString & text,
TObject * object = NULL )
inline

Get result of given textual formula.

The formula may contain names of member methods of the object pointed to.
These methods should return a value that is compatible with Double_t and could have arguments.
For example:

        getResult("1.0 / GetEntries", TH1*);
Parameters
texttext
objectpointer to object
Returns
value

Definition at line 300 of file JGizmoToolkit.hh.

301 {
302 TString buffer(text);
303
304 if (object != NULL) {
305
306 TClass* p = TClass::GetClass(object->ClassName());
307
308 if (p != NULL) {
309
310 for ( ; ; ) {
311
312 TMethod* method = NULL;
313
314 for (std::unique_ptr<TIterator> iter(p->GetListOfAllPublicMethods()->MakeIterator()); TMethod* p = (TMethod*) iter->Next(); ) {
315 if (buffer.Index(p->GetName()) != -1) {
316 if (method == NULL || strlen(p->GetName()) > strlen(method->GetName())) {
317 method = p;
318 }
319 }
320 }
321
322 if (method == NULL) {
323 break;
324 }
325
326 for (Ssiz_t index; (index = buffer.Index(method->GetName())) != -1; ) {
327
328 const TRegexp fp(" *([^)]*)"); // function call
329
330 Ssiz_t len;
331 Ssiz_t pos = buffer.Index(fp, &len, index);
332
333 Double_t value;
334
335 if (pos == -1 || pos != index + (Ssiz_t) strlen(method->GetName())) {
336
337 TMethodCall(p, method->GetName(), NULL).Execute(object, value);
338
339 len = strlen(method->GetName());
340
341 } else {
342
343 TMethodCall(p, method->GetName(), NULL).Execute(object, TString(buffer(pos + 1, len - 2)), value);
344
345 len += strlen(method->GetName());
346 }
347
348 buffer.Replace(index, len, TString::Format("%20.10e", value));
349 }
350 }
351 }
352 }
353
354 return TFormula("/tmp", buffer.Data()).Eval(0.0);
355 }
char text[TEXT_SIZE]
Definition elog.cc:72

◆ getResult() [2/2]

Double_t JGIZMO::getResult ( const std::string & text,
TObject * object = NULL )
inline

Get result of given textual formula.

The formula may contain names of member methods of the object pointed to.
These methods should return a value that is compatible with Double_t and could have arguments.
For example:

        getResult("1.0 / GetEntries", TH1*);
Parameters
texttext
objectpointer to object
Returns
value

Definition at line 372 of file JGizmoToolkit.hh.

373 {
374 return getResult(TString(text.c_str()), object);
375 }
Double_t getResult(const TString &text, TObject *object=NULL)
Get result of given textual formula.

◆ getParameter()

int JGIZMO::getParameter ( const std::string & text)
inline

Get parameter number from text string.

The number corresponds to the value [0-9]* in the expression "p[0-9]* = ..".

Parameters
texttext
Returns
parameter number

Definition at line 386 of file JGizmoToolkit.hh.

387 {
388 const char* regexp("p[0-9]* *=");
389
390 TString buffer(text.c_str());
391
392 buffer = buffer(TRegexp(regexp));
393 buffer = buffer(1, buffer.Length() - 2);
394
395 if (!buffer.IsDigit()) {
396 THROW(JParseError, "Text is not a number " << text << ' ' << regexp);
397 }
398
399 return buffer.Atoi();
400 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Exception for parsing value.

◆ getValue() [1/2]

Double_t JGIZMO::getValue ( const std::string & text,
TObject * object = NULL )
inline

Get parameter value from text string.

The formula may contain names of member methods of the object pointed to.
These methods should return a value that is compatible with Double_t and could have arguments.
For example:

        getValue("p[..] = 2 * GetMaximum", TH1*);
Parameters
texttext
objectpointer to object
Returns
value

Definition at line 417 of file JGizmoToolkit.hh.

418 {
419 const char* regexp("=.*");
420
421 TString buffer(text.c_str());
422
423 buffer = buffer(TRegexp(regexp));
424 buffer = buffer(1, buffer.Length() - 1);
425
426 return getResult(std::string(buffer), object);
427 }

◆ getValue() [2/2]

Double_t JGIZMO::getValue ( const std::string & text,
const int index )
inline

Get parameter value from text string.

The formula may contain names of member methods of the object pointed to.
These methods should return a value that is compatible with Double_t and could have arguments.
For example:

        getValue("p[..] = 1.0 2.0 3.0", 1);

will return 2.0.

Parameters
texttext
indexindex
Returns
value

Definition at line 445 of file JGizmoToolkit.hh.

446 {
447 using namespace std;
448
449 const char* regexp("=.*");
450
451 TString buffer(text.c_str());
452
453 buffer = buffer(TRegexp(regexp));
454 buffer = buffer(1, buffer.Length() - 1);
455
456
457 istringstream is((std::string(buffer)));
458
459 Double_t value;
460
461 for (int i = index; is >> value && i > 0; --i) {}
462
463 if (is)
464 return value;
465 else
466 THROW(JParseError, "Text does not contain a number at given position " << buffer << ' ' << index);
467 }

◆ setLogarithmic()

void JGIZMO::setLogarithmic ( TAxis * axis)
inline

Make histogram axis logarithmic (e.g. after using log10()).

Parameters
axisaxis

Definition at line 475 of file JGizmoToolkit.hh.

476 {
477 if (axis != NULL) {
478
479 const Int_t N = axis->GetNbins();
480 Double_t buffer[N+1];
481
482 buffer[0] = TMath::Power(10.0, axis->GetBinLowEdge(1));
483
484 for (Int_t i = 1; i <= N; ++i) {
485 buffer[i] = TMath::Power(10.0, axis->GetBinLowEdge(i) + axis->GetBinWidth(i));
486 }
487
488 axis->Set(N, buffer);
489 /*
490 if (axis->TestBit(TAxis::kAxisRange)) {
491
492 const Int_t first = axis->GetFirst();
493 const Int_t last = axis->GetLast();
494
495 if (first != last) {
496
497 const Double_t xmin = axis->GetBinLowEdge(first);
498 const Double_t xmax = axis->GetBinLowEdge(last) + axis->GetBinWidth(last);
499
500 axis->SetRangeUser(TMath::Power(10.0, xmin), TMath::Power(10.0, xmax));
501 }
502 }
503 */
504 }
505 }

◆ getLogarithmic()

TString JGIZMO::getLogarithmic ( const TString & formula,
const char parameter )
inline

Make given parameter in formula logarithmic (e.g. after using log10()).

Parameters
formulaformula
parameterparameter
Returns
formula

Definition at line 515 of file JGizmoToolkit.hh.

516 {
517 const TRegexp regexp[] = {
518 TString("^") + TString(parameter) + TString("[^a-zA-Z_]"), // parameter at start of line
519 TString("[^a-zA-Z_]") + TString(parameter) + TString("[^a-zA-Z_]"), // parameter in middle of line
520 TString("[^a-zA-Z_]") + TString(parameter) + TString("$") // parameter at end of line
521 };
522
523 const TString replacement = TString("log10(") + TString(parameter) + TString(")");
524
525 TString buffer(formula);
526
527 if (buffer.Length() == 1 && buffer[0] == parameter) {
528
529 buffer = replacement;
530
531 } else {
532
533 for (Ssiz_t pos = 0, i; pos < buffer.Length(); pos += replacement.Length()) {
534 if ((i = buffer.Index(regexp[0], pos)) != -1) { buffer.Replace((pos = i + 0), 1, replacement); }
535 else if ((i = buffer.Index(regexp[1], pos)) != -1) { buffer.Replace((pos = i + 1), 1, replacement); }
536 else if ((i = buffer.Index(regexp[2], pos)) != -1) { buffer.Replace((pos = i + 1), 1, replacement); }
537 else { break; }
538 }
539 }
540
541 return buffer;
542 }

◆ copy() [1/2]

void JGIZMO::copy ( const TF1 & from,
TF1 & to )
inline

Copy function parameters.

Parameters
fromfunction
tofunction

Definition at line 551 of file JGizmoToolkit.hh.

552 {
553 static_cast<TAttLine&> (to) = static_cast<const TAttLine&> (from);
554 static_cast<TAttFill&> (to) = static_cast<const TAttFill&> (from);
555 static_cast<TAttMarker&>(to) = static_cast<const TAttMarker&>(from);
556
557 to.SetParameters(from.GetParameters());
558
559 to.SetNpx(from.GetNpx());
560 }

◆ copy() [2/2]

void JGIZMO::copy ( const TF2 & from,
TF2 & to )
inline

Copy function parameters.

Parameters
fromfunction
tofunction

Definition at line 569 of file JGizmoToolkit.hh.

570 {
571 copy(static_cast<const TF1&>(from), static_cast<TF1&>(to));
572
573 to.SetNpy(from.GetNpy());
574 }

◆ setLogarithmicX() [1/12]

template<class T >
void JGIZMO::setLogarithmicX ( TList * list)
inline

Make x-axis of objects in list logarithmic (e.g. after using log10()).

Parameters
listlist

Definition at line 996 of file JGizmoToolkit.hh.

997 {
998 for (TIter i(list); T* p = dynamic_cast<T*>(i.Next()); ) {
1000 }
1001 }
void setLogarithmicX(TList *list)
Make x-axis of objects in list logarithmic (e.g. after using log10()).

◆ setLogarithmicY() [1/12]

template<class T >
void JGIZMO::setLogarithmicY ( TList * list)
inline

Make y-axis of objects in list logarithmic (e.g. after using log10()).

Parameters
listlist

Definition at line 1010 of file JGizmoToolkit.hh.

1011 {
1012 for (TIter i(list); T* p = dynamic_cast<T*>(i.Next()); ) {
1013 setLogarithmicY(p);
1014 }
1015 }
void setLogarithmicY(TList *list)
Make y-axis of objects in list logarithmic (e.g. after using log10()).

◆ setLogarithmicX() [2/12]

void JGIZMO::setLogarithmicX ( TF1 * f1)
inline

Make x-axis of given function logarithmic (e.g. after using log10()).

Parameters
f1function

Definition at line 600 of file JGizmoToolkit.hh.

601 {
602 if (f1 != NULL) {
603
604 TF1 fn(f1->GetName(), getLogarithmic(f1->GetExpFormula(), 'x'));
605
606 copy(*f1, fn);
607
608 fn.SetRange(TMath::Power(10.0,f1->GetXmin()),
609 TMath::Power(10.0,f1->GetXmax()));
610
611 *f1 = fn;
612 }
613 }
TString getLogarithmic(const TString &formula, const char parameter)
Make given parameter in formula logarithmic (e.g. after using log10()).

◆ setLogarithmicY() [2/12]

void JGIZMO::setLogarithmicY ( TF1 * f1)
inline

Make y-axis of given function logarithmic (e.g. after using log10()).

Parameters
f1function

Definition at line 621 of file JGizmoToolkit.hh.

622 {
623 if (f1 != NULL) {
624
625 TString buffer = f1->GetExpFormula();
626
627 buffer = "pow(10.0, " + buffer + ")";
628
629 TF1 fn(f1->GetName(), buffer);
630
631 copy(*f1, fn);
632
633 fn.SetRange(f1->GetXmin(),
634 f1->GetXmax());
635
636 *f1 = fn;
637 }
638 }

◆ setLogarithmicX() [3/12]

void JGIZMO::setLogarithmicX ( TF2 * f2)
inline

Make x-axis of given function logarithmic (e.g. after using log10()).

Parameters
f2function

Definition at line 646 of file JGizmoToolkit.hh.

647 {
648 if (f2 != NULL) {
649
650 TF2 fn(f2->GetName(), getLogarithmic(f2->GetExpFormula(), 'x'));
651
652 copy(*f2, fn);
653
654 fn.SetRange(f2->GetXmin(),
655 f2->GetYmin(),
656 f2->GetXmax(),
657 f2->GetYmax());
658
659 *f2 = fn;
660
661 f2->SetRange(TMath::Power(10.0,f2->GetXmin()),
662 f2->GetYmin(),
663 TMath::Power(10.0,f2->GetXmax()),
664 f2->GetYmax());
665 }
666 }

◆ setLogarithmicY() [3/12]

void JGIZMO::setLogarithmicY ( TF2 * f2)
inline

Make y-axis of given function logarithmic (e.g. after using log10()).

Parameters
f2function

Definition at line 674 of file JGizmoToolkit.hh.

675 {
676 if (f2 != NULL) {
677
678 TF2 fn(f2->GetName(), getLogarithmic(f2->GetExpFormula(), 'y'));
679
680 copy(*f2, fn);
681
682 fn.SetRange(f2->GetXmin(),
683 f2->GetYmin(),
684 f2->GetXmax(),
685 f2->GetYmax());
686
687 *f2 = fn;
688
689 f2->SetRange(f2->GetXmin(),
690 TMath::Power(10.0,f2->GetYmin()),
691 f2->GetXmax(),
692 TMath::Power(10.0,f2->GetYmax()));
693 }
694 }

◆ setLogarithmicX() [4/12]

void JGIZMO::setLogarithmicX ( TH1 * h1)
inline

Make x-axis and associated functions of given histogram logarithmic (e.g. after using log10()).

Parameters
h1histogram

Definition at line 702 of file JGizmoToolkit.hh.

703 {
704 if (h1 != NULL) {
705
706 setLogarithmicX<TF1>(h1->GetListOfFunctions());
707
708 setLogarithmic(h1->GetXaxis());
709 }
710 }
void setLogarithmic(TAxis *axis)
Make histogram axis logarithmic (e.g. after using log10()).

◆ setLogarithmicY() [4/12]

void JGIZMO::setLogarithmicY ( TH1 * h1)
inline

Make y-axis and associated functions of given histogram logarithmic (e.g. after using log10()).

Parameters
h1histogram

Definition at line 718 of file JGizmoToolkit.hh.

719 {
720 if (h1 != NULL) {
721
722 setLogarithmicY<TF1>(h1->GetListOfFunctions());
723
724 for (Int_t ix = 1; ix <= h1->GetXaxis()->GetNbins(); ++ix) {
725
726 const Double_t y = h1->GetBinContent(ix);
727
728 h1->SetBinContent(ix, pow(10.0,y));
729 }
730 }
731 }

◆ setLogarithmicX() [5/12]

void JGIZMO::setLogarithmicX ( TH2 * h2)
inline

Make x-axis and associated functions of given histogram logarithmic (e.g. after using log10()).

Parameters
h2histogram

Definition at line 739 of file JGizmoToolkit.hh.

740 {
741 if (h2 != NULL) {
742
743 setLogarithmicX<TF2>(h2->GetListOfFunctions());
744
745 setLogarithmic(h2->GetXaxis());
746 }
747 }

◆ setLogarithmicY() [5/12]

void JGIZMO::setLogarithmicY ( TH2 * h2)
inline

Make y-axis and associated functions of given histogram logarithmic (e.g. after using log10()).

Parameters
h2histogram

Definition at line 755 of file JGizmoToolkit.hh.

756 {
757 if (h2 != NULL) {
758
759 setLogarithmicY<TF2>(h2->GetListOfFunctions());
760
761 setLogarithmic(h2->GetYaxis());
762 }
763 }

◆ setLogarithmicX() [6/12]

void JGIZMO::setLogarithmicX ( TGraph * g1)
inline

Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g1graph

Definition at line 771 of file JGizmoToolkit.hh.

772 {
773 if (g1 != NULL) {
774
775 setLogarithmicX<TF1>(g1->GetListOfFunctions());
776
777 for (Int_t i = 0; i != g1->GetN(); ++i) {
778 g1->GetX()[i] = pow(10.0, g1->GetX()[i]);
779 }
780 }
781 }

◆ setLogarithmicY() [6/12]

void JGIZMO::setLogarithmicY ( TGraph * g1)
inline

Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g1graph

Definition at line 789 of file JGizmoToolkit.hh.

790 {
791 if (g1 != NULL) {
792
793 setLogarithmicY<TF1>(g1->GetListOfFunctions());
794
795 for (Int_t i = 0; i != g1->GetN(); ++i) {
796 g1->GetY()[i] = pow(10.0, g1->GetY()[i]);
797 }
798 }
799 }

◆ setLogarithmicX() [7/12]

void JGIZMO::setLogarithmicX ( TGraphErrors * g1)
inline

Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g1graph

Definition at line 807 of file JGizmoToolkit.hh.

808 {
809 if (g1 != NULL) {
810
811 setLogarithmicX<TF1>(g1->GetListOfFunctions());
812
813 for (Int_t i = 0; i != g1->GetN(); ++i) {
814 g1->GetEX()[i] = pow(10.0, g1->GetX()[i] + g1->GetEX()[i]) - pow(10.0, g1->GetX()[i]);
815 g1->GetX() [i] = pow(10.0, g1->GetX()[i]);
816 }
817 }
818 }

◆ setLogarithmicY() [7/12]

void JGIZMO::setLogarithmicY ( TGraphErrors * g1)
inline

Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g1graph

Definition at line 826 of file JGizmoToolkit.hh.

827 {
828 if (g1 != NULL) {
829
830 setLogarithmicY<TF1>(g1->GetListOfFunctions());
831
832 for (Int_t i = 0; i != g1->GetN(); ++i) {
833 g1->GetEY()[i] = pow(10.0, g1->GetY()[i] + g1->GetEY()[i]) - pow(10.0, g1->GetY()[i]);
834 g1->GetY() [i] = pow(10.0, g1->GetY()[i]);
835 }
836 }
837 }

◆ setLogarithmicX() [8/12]

void JGIZMO::setLogarithmicX ( TGraph2D * g2)
inline

Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g2graph

Definition at line 845 of file JGizmoToolkit.hh.

846 {
847 if (g2 != NULL) {
848
849 setLogarithmicX<TF2>(g2->GetListOfFunctions());
850
851 for (Int_t i = 0; i != g2->GetN(); ++i) {
852 g2->GetX()[i] = pow(10.0, g2->GetX()[i]);
853 }
854 }
855 }

◆ setLogarithmicY() [8/12]

void JGIZMO::setLogarithmicY ( TGraph2D * g2)
inline

Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g2graph

Definition at line 863 of file JGizmoToolkit.hh.

864 {
865 if (g2 != NULL) {
866
867 setLogarithmicY<TF2>(g2->GetListOfFunctions());
868
869 for (Int_t i = 0; i != g2->GetN(); ++i) {
870 g2->GetY()[i] = pow(10.0, g2->GetY()[i]);
871 }
872 }
873 }

◆ setLogarithmicX() [9/12]

void JGIZMO::setLogarithmicX ( TGraph2DErrors * g2)
inline

Make x-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g2graph

Definition at line 881 of file JGizmoToolkit.hh.

882 {
883 if (g2 != NULL) {
884
885 setLogarithmicX<TF2>(g2->GetListOfFunctions());
886
887 for (Int_t i = 0; i != g2->GetN(); ++i) {
888 g2->GetEX()[i] = pow(10.0, g2->GetX()[i] + g2->GetEX()[i]) - pow(10.0, g2->GetX()[i]);
889 g2->GetX() [i] = pow(10.0, g2->GetX()[i]);
890 }
891 }
892 }

◆ setLogarithmicY() [9/12]

void JGIZMO::setLogarithmicY ( TGraph2DErrors * g2)
inline

Make y-axis and associated functions of given graph logarithmic (e.g. after using log10()).

Parameters
g2graph

Definition at line 900 of file JGizmoToolkit.hh.

901 {
902 if (g2 != NULL) {
903
904 setLogarithmicY<TF2>(g2->GetListOfFunctions());
905
906 for (Int_t i = 0; i != g2->GetN(); ++i) {
907 g2->GetEY()[i] = pow(10.0, g2->GetY()[i] + g2->GetEY()[i]) - pow(10.0, g2->GetY()[i]);
908 g2->GetY() [i] = pow(10.0, g2->GetY()[i]);
909 }
910 }
911 }

◆ setLogarithmicX() [10/12]

void JGIZMO::setLogarithmicX ( TMultiGraph * gn)
inline

Make x-axis of given multi-graph logarithmic (e.g. after using log10()).

Parameters
gnmulti graph

Definition at line 919 of file JGizmoToolkit.hh.

920 {
921 if (gn != NULL) {
922 setLogarithmicX<TGraph>(gn->GetListOfGraphs());
923 }
924 }

◆ setLogarithmicY() [10/12]

void JGIZMO::setLogarithmicY ( TMultiGraph * gn)
inline

Make y-axis of given multi-graph logarithmic (e.g. after using log10()).

Parameters
gnmulti graph

Definition at line 932 of file JGizmoToolkit.hh.

933 {
934 if (gn != NULL) {
935 setLogarithmicY<TGraph>(gn->GetListOfGraphs());
936 }
937 }

◆ setLogarithmicX() [11/12]

void JGIZMO::setLogarithmicX ( TLine * line)
inline

Make x-axis of given line logarithmic (e.g. after using log10()).

Parameters
lineline

Definition at line 945 of file JGizmoToolkit.hh.

946 {
947 if (line != NULL) {
948 line->SetX1(pow(10.0, line->GetX1()));
949 line->SetX2(pow(10.0, line->GetX2()));
950 }
951 }

◆ setLogarithmicY() [11/12]

void JGIZMO::setLogarithmicY ( TLine * line)
inline

Make y-axis of given line logarithmic (e.g. after using log10()).

Parameters
lineline

Definition at line 959 of file JGizmoToolkit.hh.

960 {
961 if (line != NULL) {
962 line->SetY1(pow(10.0, line->GetY1()));
963 line->SetY2(pow(10.0, line->GetY2()));
964 }
965 }

◆ setLogarithmicX() [12/12]

void JGIZMO::setLogarithmicX ( TEllipse * ellipse)
inline

Make x-axis of given ellipse logarithmic (e.g. after using log10()).

Parameters
ellipseellipse

Definition at line 973 of file JGizmoToolkit.hh.

974 {
975 THROW(JFunctionalException, "Operation setLogarithmicX on TEllipse not allowed.");
976 }
Exception for a functional operation.

◆ setLogarithmicY() [12/12]

void JGIZMO::setLogarithmicY ( TEllipse * ellipse)
inline

Make y-axis of given ellipse logarithmic (e.g. after using log10()).

Parameters
ellipseellipse

Definition at line 984 of file JGizmoToolkit.hh.

985 {
986 THROW(JFunctionalException, "Operation setLogarithmicY on TEllipse not allowed.");
987 }

◆ convertToPDF() [1/3]

void JGIZMO::convertToPDF ( TH1 & h1,
const std::string & option = "NW",
const double factor = 1.0 )
inline

Convert 1D histogram to PDF.

Possible options are:

  • N normalise to histogram contents;
  • W divide by bin width;
  • E convert also bin errors.
Parameters
h1histogram
optionoption
factorscaling factor

Definition at line 1030 of file JGizmoToolkit.hh.

1031 {
1032 using namespace std;
1033
1034 const bool normalise = (option.find('N') != string::npos || option.find('n') != string::npos);
1035 const bool bin_width = (option.find('W') != string::npos || option.find('w') != string::npos);
1036 const bool use_error = (option.find('E') != string::npos || option.find('e') != string::npos);
1037
1038 Double_t W = 1.0;
1039
1040 if (normalise) {
1041
1042 W = 0.0;
1043
1044 for (Int_t i = 1; i <= h1.GetXaxis()->GetNbins(); ++i) {
1045 W += h1.GetBinContent(i);
1046 }
1047 }
1048
1049 if (W != 0.0) {
1050
1051 for (Int_t i = 1; i <= h1.GetXaxis()->GetNbins(); ++i) {
1052
1053 const Double_t w = W * (bin_width ? h1.GetXaxis()->GetBinWidth(i) : 1.0);
1054
1055 h1.SetBinContent(i, h1.GetBinContent(i) * factor / w);
1056
1057 if (use_error) {
1058 h1.SetBinError(i, h1.GetBinError(i) * factor / w);
1059 }
1060 }
1061 }
1062 }

◆ convertToPDF() [2/3]

void JGIZMO::convertToPDF ( TH2 & h2,
const std::string & option = "NXYW",
const double factor = 1.0 )
inline

Convert 2D histogram to PDF.

Possible options are:

  • N normalise to histogram contents;
  • X convert x-axis to PDF;
  • Y convert y-axis to PDF;
  • W divide by bin width;
  • E convert also bin errors.
Parameters
h2histogram
optionoption
factorscaling factor

Definition at line 1079 of file JGizmoToolkit.hh.

1080 {
1081 using namespace std;
1082
1083 const bool normalise = (option.find('N') != string::npos || option.find('n') != string::npos);
1084 const bool X = (option.find('X') != string::npos || option.find('x') != string::npos);
1085 const bool Y = (option.find('Y') != string::npos || option.find('y') != string::npos);
1086 const bool bin_width = (option.find('W') != string::npos || option.find('w') != string::npos);
1087 const bool use_error = (option.find('E') != string::npos || option.find('e') != string::npos);
1088
1089 Double_t W = 1.0;
1090
1091 if (X && Y) {
1092
1093 if (normalise) {
1094
1095 W = 0.0;
1096
1097 for (Int_t ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
1098 for (Int_t iy = 1; iy <= h2.GetYaxis()->GetNbins(); ++iy) {
1099 W += h2.GetBinContent(ix,iy);
1100 }
1101 }
1102 }
1103
1104 if (W != 0.0) {
1105
1106 for (Int_t ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
1107 for (Int_t iy = 1; iy <= h2.GetYaxis()->GetNbins(); ++iy) {
1108
1109 const Double_t w = W * (bin_width ? h2.GetXaxis()->GetBinWidth(ix) * h2.GetYaxis()->GetBinWidth(iy) : 1.0);
1110
1111 h2.SetBinContent(ix, iy, h2.GetBinContent(ix,iy) * factor / w);
1112
1113 if (use_error) {
1114 h2.SetBinError(ix, iy, h2.GetBinError(ix,iy) * factor / w);
1115 }
1116 }
1117 }
1118 }
1119
1120 } else if (X) {
1121
1122 for (Int_t iy = 1; iy <= h2.GetYaxis()->GetNbins(); ++iy) {
1123
1124 if (normalise) {
1125
1126 W = 0.0;
1127
1128 for (Int_t ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
1129 W += h2.GetBinContent(ix,iy);
1130 }
1131 }
1132
1133 if (W != 0.0) {
1134
1135 for (Int_t ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
1136
1137 const Double_t w = W * (bin_width ? h2.GetXaxis()->GetBinWidth(ix) : 1.0);
1138
1139 h2.SetBinContent(ix, iy, h2.GetBinContent(ix,iy) * factor / w);
1140
1141 if (use_error) {
1142 h2.SetBinError(ix, iy, h2.GetBinError(ix,iy) * factor / w);
1143 }
1144 }
1145 }
1146 }
1147
1148 } else if (Y) {
1149
1150 for (Int_t ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
1151
1152 if (normalise) {
1153
1154 W = 0.0;
1155
1156 for (Int_t iy = 1; iy <= h2.GetYaxis()->GetNbins(); ++iy) {
1157 W += h2.GetBinContent(ix,iy);
1158 }
1159 }
1160
1161 if (W != 0.0) {
1162
1163 for (Int_t iy = 1; iy <= h2.GetYaxis()->GetNbins(); ++iy) {
1164
1165 const Double_t w = W * (bin_width ? h2.GetYaxis()->GetBinWidth(iy) : 1.0);
1166
1167 h2.SetBinContent(ix, iy, h2.GetBinContent(ix,iy) / w);
1168
1169 if (use_error) {
1170 h2.SetBinError(ix, iy, h2.GetBinError(ix,iy) / w);
1171 }
1172 }
1173 }
1174 }
1175 }
1176 }

◆ convertToPDF() [3/3]

void JGIZMO::convertToPDF ( TH3 & h3,
const std::string & option = "NXYW",
const double factor = 1.0 )
inline

Convert 3D histogram to PDF.

Possible options are:

  • N normalise to histogram contents;
  • X convert x-axis to PDF;
  • Y convert y-axis to PDF;
  • Z convert z-axis to PDF;
  • W divide by bin width;
  • E convert also bin errors.
Parameters
h3histogram
optionoption
factorscaling factor

Definition at line 1194 of file JGizmoToolkit.hh.

1195 {
1196 using namespace std;
1197
1198 const bool normalise = (option.find('N') != string::npos || option.find('n') != string::npos);
1199 const bool X = (option.find('X') != string::npos || option.find('x') != string::npos);
1200 const bool Y = (option.find('Y') != string::npos || option.find('y') != string::npos);
1201 const bool Z = (option.find('Z') != string::npos || option.find('z') != string::npos);
1202 const bool bin_width = (option.find('W') != string::npos || option.find('w') != string::npos);
1203 const bool use_error = (option.find('E') != string::npos || option.find('e') != string::npos);
1204
1205 Double_t W = 1.0;
1206
1207 if (X && Y && Z) {
1208
1209 if (normalise) {
1210
1211 W = 0.0;
1212
1213 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1214 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1215 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1216 W += h3.GetBinContent(ix,iy,iz);
1217 }
1218 }
1219 }
1220 }
1221
1222 if (W != 0.0) {
1223
1224 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1225 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1226 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1227
1228 const Double_t w = W * (bin_width ? h3.GetXaxis()->GetBinWidth(ix) * h3.GetYaxis()->GetBinWidth(iy) * h3.GetZaxis()->GetBinWidth(iz) : 1.0);
1229
1230 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) * factor / w);
1231
1232 if (use_error) {
1233 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) * factor / w);
1234 }
1235 }
1236 }
1237 }
1238 }
1239
1240 } else if (X && Z) {
1241
1242 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1243
1244 if (normalise) {
1245
1246 W = 0.0;
1247
1248 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1249 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1250 W += h3.GetBinContent(ix,iy,iz);
1251 }
1252 }
1253 }
1254
1255 if (W != 0.0) {
1256
1257 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1258 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1259
1260 const Double_t w = W * (bin_width ? h3.GetXaxis()->GetBinWidth(ix) * h3.GetZaxis()->GetBinWidth(iz) : 1.0);
1261
1262 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) * factor / w);
1263
1264 if (use_error) {
1265 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) * factor / w);
1266 }
1267 }
1268 }
1269 }
1270 }
1271
1272 } else if (Y && Z) {
1273
1274 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1275
1276 if (normalise) {
1277
1278 W = 0.0;
1279
1280 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1281 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1282 W += h3.GetBinContent(ix,iy,iz);
1283 }
1284 }
1285 }
1286
1287 if (W != 0.0) {
1288
1289 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1290 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1291
1292 const Double_t w = W * (bin_width ? h3.GetYaxis()->GetBinWidth(iy) * h3.GetZaxis()->GetBinWidth(iz) : 1.0);
1293
1294 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) * factor / w);
1295
1296 if (use_error) {
1297 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) * factor / w);
1298 }
1299 }
1300 }
1301 }
1302 }
1303
1304 } else if (X && Y) {
1305
1306 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1307
1308 if (normalise) {
1309
1310 W = 0.0;
1311
1312 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1313 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1314 W += h3.GetBinContent(ix,iy,iz);
1315 }
1316 }
1317 }
1318
1319 if (W != 0.0) {
1320
1321 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1322 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1323
1324 const Double_t w = W * (bin_width ? h3.GetXaxis()->GetBinWidth(ix) * h3.GetYaxis()->GetBinWidth(iy) : 1.0);
1325
1326 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) * factor / w);
1327
1328 if (use_error) {
1329 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) * factor / w);
1330 }
1331 }
1332 }
1333 }
1334 }
1335
1336 } else if (X) {
1337
1338 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1339 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1340
1341 if (normalise) {
1342
1343 W = 0.0;
1344
1345 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1346 W += h3.GetBinContent(ix,iy,iz);
1347 }
1348 }
1349
1350 if (W != 0.0) {
1351
1352 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1353
1354 const Double_t w = W * (bin_width ? h3.GetXaxis()->GetBinWidth(ix) : 1.0);
1355
1356 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) * factor / w);
1357
1358 if (use_error) {
1359 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) * factor / w);
1360 }
1361 }
1362 }
1363 }
1364 }
1365
1366 } else if (Y) {
1367
1368 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1369 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1370
1371 if (normalise) {
1372
1373 W = 0.0;
1374
1375 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1376 W += h3.GetBinContent(ix,iy,iz);
1377 }
1378 }
1379
1380 if (W != 0.0) {
1381
1382 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1383
1384 const Double_t w = W * (bin_width ? h3.GetYaxis()->GetBinWidth(iy) : 1.0);
1385
1386 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) / w);
1387
1388 if (use_error) {
1389 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) / w);
1390 }
1391 }
1392 }
1393 }
1394 }
1395
1396 } else if (Z) {
1397
1398 for (Int_t ix = 1; ix <= h3.GetXaxis()->GetNbins(); ++ix) {
1399 for (Int_t iy = 1; iy <= h3.GetYaxis()->GetNbins(); ++iy) {
1400
1401 if (normalise) {
1402
1403 W = 0.0;
1404
1405 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1406 W += h3.GetBinContent(ix,iy,iz);
1407 }
1408 }
1409
1410 if (W != 0.0) {
1411
1412 for (Int_t iz = 1; iz <= h3.GetZaxis()->GetNbins(); ++iz) {
1413
1414 const Double_t w = W * (bin_width ? h3.GetZaxis()->GetBinWidth(iz) : 1.0);
1415
1416 h3.SetBinContent(ix, iy, iz, h3.GetBinContent(ix,iy,iz) / w);
1417
1418 if (use_error) {
1419 h3.SetBinError(ix, iy, iz, h3.GetBinError(ix,iy,iz) / w);
1420 }
1421 }
1422 }
1423 }
1424 }
1425 }
1426 }

◆ setLimits() [1/2]

void JGIZMO::setLimits ( TGraph & g1)
inline

Set limits of TGraph.

Parameters
g1graph

Definition at line 1434 of file JGizmoToolkit.hh.

1435 {
1436 using namespace std;
1437
1438 Double_t ymin = numeric_limits<Double_t>::max();
1439 Double_t ymax = numeric_limits<Double_t>::lowest();
1440
1441 for (Int_t i = 0; i != g1.GetN(); ++i) {
1442
1443 const Double_t y = g1.GetY()[i];
1444
1445 if (y > ymax) { ymax = y; }
1446 if (y < ymin) { ymin = y; }
1447 }
1448
1449 g1.SetMinimum(ymin);
1450 g1.SetMaximum(ymax);
1451 }

◆ setLimits() [2/2]

void JGIZMO::setLimits ( TGraph2D & g2)
inline

Set limits of TGraph2D.

Parameters
g2graph

Definition at line 1459 of file JGizmoToolkit.hh.

1460 {
1461 using namespace std;
1462
1463 Double_t zmin = numeric_limits<Double_t>::max();
1464 Double_t zmax = numeric_limits<Double_t>::lowest();
1465
1466 for (Int_t i = 0; i != g2.GetN(); ++i) {
1467
1468 const Double_t z = g2.GetZ()[i];
1469
1470 if (z > zmax) { zmax = z; }
1471 if (z < zmin) { zmin = z; }
1472 }
1473
1474 g2.SetMinimum(zmin);
1475 g2.SetMaximum(zmax);
1476 }

◆ setRange()

void JGIZMO::setRange ( double & xmin,
double & xmax,
const bool logx )
inline

Set axis range.

Parameters
xminlower limit (I/O)
xmaxupper limit (I/O)
logxlogarithmic

Definition at line 1486 of file JGizmoToolkit.hh.

1489 {
1490 if (logx) {
1491 xmin = log(xmin);
1492 xmax = log(xmax);
1493 }
1494
1495 double dx = (xmax - xmin) * 0.1;
1496
1497 if (logx || xmin >= dx || xmin < 0.0)
1498 xmin -= dx;
1499 else
1500 xmin = 0.0;
1501
1502 xmax += dx;
1503
1504 if (logx) {
1505 xmin = exp(xmin);
1506 xmax = exp(xmax);
1507 }
1508 }

◆ setAxisLabels() [1/2]

void JGIZMO::setAxisLabels ( TAxis * axis,
const JModuleAddressMap & memo )
inline

Set axis with PMT address labels.

This methods sets the labels of the given axis to the sorted values of the PMT ring and position.
It should normally be called before filling of the corresponding histogram.
The filling should then be made with the textual representation of the PMT ring and position (i.e. JDETECTOR::JPMTPhysicalAddress::toString).

Alternatively, the filling can be made with the index of the PMT in the address map of the corresponding module (i.e. JDETECTOR::JModuleAddressMap::getIndex).
In that case, the method can be called before or after filling of the histogram.

Parameters
axisaxis
memomodule address map

Definition at line 1525 of file JGizmoToolkit.hh.

1526 {
1527 using namespace JPP;
1528
1529 if (axis->GetNbins() == (int) memo.size()) {
1530
1531 for (int i = 0; i != axis->GetNbins(); ++i) {
1532
1533 const JPMTPhysicalAddress& address = memo[i];
1534
1535 axis->SetBinLabel(i + 1, address.toString().c_str());
1536 }
1537
1538 } else {
1539
1540 THROW(JValueOutOfRange, "Number of bins " << axis->GetNbins() << " != " << memo.size());
1541 }
1542 }
Data structure for PMT physical address.
std::string toString() const
Convert PMT physical address to string.
Exception for accessing a value in a collection that is outside of its range.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

◆ setAxisLabels() [2/2]

void JGIZMO::setAxisLabels ( TH1 & h1,
const std::string axis,
const JModuleAddressMap & memo )
inline

Set axis labels with PMT addresses.

This methods sets the labels of the given axis to the sorted values of the PMT ring and position.
It should be called after filling of the corresponding histogram.
The filling should have been made with the PMT number (e.g. KM3NETDAQ::JDAQHit::getPMT).

Parameters
h1histogram
axisaxis (x, X, y, Y, z, Z)
memomodule address map

Definition at line 1556 of file JGizmoToolkit.hh.

1557 {
1558 using namespace JPP;
1559
1560 TAxis* pax = NULL;
1561
1562 if (axis == "x" || axis == "X")
1563 pax = h1.GetXaxis();
1564 else if (axis == "y" || axis == "Y")
1565 pax = h1.GetYaxis();
1566 else if (axis == "z" || axis == "Z")
1567 pax = h1.GetZaxis();
1568 else
1569 THROW(JValueOutOfRange, "Invalid axis " << axis);
1570
1571 if (pax->GetNbins() == (int) memo.size()) {
1572
1573 for (int i = 0; i != pax->GetNbins(); ++i) {
1574
1575 const JPMTPhysicalAddress& address = memo.getAddressTranslator(i);
1576
1577 pax->SetBinLabel(i + 1, address.toString().c_str());
1578 }
1579
1580 h1.LabelsOption("a", axis.c_str()); // sort labels
1581
1582 } else {
1583
1584 THROW(JValueOutOfRange, "Number of bins " << pax->GetNbins() << " != " << memo.size());
1585 }
1586 }
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.

◆ isTObject()

bool JGIZMO::isTObject ( const TKey * key)
inline

Check if given key corresponds to a TObject.

Parameters
keyROOT key
Returns
true if given key corresponds to a TObject; else false

Definition at line 1595 of file JGizmoToolkit.hh.

1596 {
1597 return (key != NULL && TClass::GetClass(key->GetClassName())->IsTObject());
1598 }

◆ getObject() [2/2]

TObject * JGIZMO::getObject ( TList * ls,
const char *const name )
inline

Get first object of which name matches given reguar expression.

Parameters
lspointer to list of objects
nameregular expression
Returns
pointer to object (maybe NULL)

Definition at line 1608 of file JGizmoToolkit.hh.

1609 {
1610 const TRegexp regexp(name);
1611
1612 TIter iter(ls);
1613
1614 for (TObject* p1; (p1 = (TObject*) iter.Next()) != NULL; ) {
1615
1616 const TString tag(p1->GetName());
1617
1618 if (tag.Contains(regexp)) {
1619 return p1;
1620 }
1621 }
1622
1623 return NULL;
1624 }
TPaveText * p1

◆ getFunction() [1/3]

TF1 * JGIZMO::getFunction ( TH1 * h1,
const char *const fcn )
inline

Get function.

Parameters
h1histogram
fcnfunction name
Returns
pointer to function (maybe NULL)

Definition at line 1634 of file JGizmoToolkit.hh.

1635 {
1636 return (TF1*) getObject(h1->GetListOfFunctions(), fcn);
1637 }
TObject * getObject(const JRootObjectID &id)
Get first TObject with given identifier.

◆ getFunction() [2/3]

TF1 * JGIZMO::getFunction ( TGraph * g1,
const char *const fcn )
inline

Get function.

Parameters
g1graph
fcnfunction name
Returns
pointer to function (maybe NULL)

Definition at line 1647 of file JGizmoToolkit.hh.

1648 {
1649 return (TF1*) getObject(g1->GetListOfFunctions(), fcn);
1650 }

◆ getFunction() [3/3]

TF1 * JGIZMO::getFunction ( TGraph2D * g2,
const char *const fcn )
inline

Get function.

Parameters
g2graph
fcnfunction name
Returns
pointer to function (maybe NULL)

Definition at line 1660 of file JGizmoToolkit.hh.

1661 {
1662 return (TF1*) getObject(g2->GetListOfFunctions(), fcn);
1663 }

Variable Documentation

◆ TIMESTAMP

const char* const JGIZMO::TIMESTAMP = "#splitline{}{#splitline{%d:%m:%y}{ %H:%M}}%F1970-01-01 00:00:00"
static

Time stamp of earliest UTC time.

Definition at line 98 of file JGizmoToolkit.hh.

◆ LABEL_TERMINATOR

const char JGIZMO::LABEL_TERMINATOR = '&'
static

label terminator

Definition at line 23 of file JRootObject.hh.