22 #include "TObjString.h"
23 #include "TObjArray.h"
24 #include "Riostream.h"
93 const
char*
AliMUONPainterEnv::fgkDisableAutoPedCanvasKey = "disableAutoPedCanvas";
100 : fEnv(new TEnv(resourceFile))
104 if ( String(fgkDisableAutoPedCanvasKey,
"").Length()==0 )
107 Set(fgkDisableAutoPedCanvasKey,1);
110 if ( String(fgkDefaultRangeKey,
"").Length()==0 )
114 AliInfo(
"No default ranges defined in the resource file, generating a few...");
116 SetDefaultRange(
"PED",
"Mean",0.0,500.0);
117 SetDefaultRange(
"PED",
"Sigma",0.0,5.0);
118 SetDefaultRange(
"OCC",
"occ",0.0,0.01);
119 SetDefaultRange(
"HV",
"Mean of HV",0,1650);
139 TString uri =
ID2URI(sid);
145 TString urii =
ID2URI(sid);
151 return dataSourceDescriptor;
231 if ( a->GetLast() >= 1 )
233 rv =
static_cast<TObjString*
>(a->At(1))->
String();
262 return fEnv->GetValue(resourceName,defaultValue);
270 if ( desc.Length()==0 )
272 AliError(Form(
"Could not find data source named : %s",dataSourceName));
278 assert(dsname==dataSourceName);
285 newDescriptor += dsname;
293 if ( strlen(dimensionName) == 0 )
297 newDescriptor += defaultRange;
307 for ( Int_t i = 0; i <= r->GetLast(); ++i )
309 TObjString* sr =
static_cast<TObjString*
>(r->At(i));
311 TString val = sr->String();
315 if ( defaultRange.Length() )
321 newDescriptor += val;
360 for ( Int_t ir = 0; ir <= r->GetLast(); ++ir )
362 TObjString* s =
static_cast<TObjString*
>(r->At(ir));
365 if ( a->GetLast() != 3 )
371 TString typeName =
static_cast<TObjString*
>(a->At(0))->
String();
373 if (typeName==dataSourceType)
375 TString dimName =
static_cast<TObjString*
>(a->At(1))->
String();
377 if ( dimName == dimensionName || strlen(dimensionName) == 0 )
379 for ( Int_t i = 1; i <= 3; ++i )
381 rv +=
static_cast<TObjString*
>(a->At(i))->
String();
387 if ( ir < r->GetLast() )
428 return fEnv->GetValue(resourceName,defaultValue);
447 const char* dimensionName,
451 xmin = std::numeric_limits<double>::max();
452 xmax = std::numeric_limits<double>::min();
458 for ( Int_t i = 0; i <= a->GetLast(); ++i )
460 TString drange =
static_cast<TObjString*
>(a->At(i))->
String();
465 if ( bname == dimensionName )
481 fEnv->WriteFile(gSystem->ExpandPathName(Form(
"$HOME/%s",
fEnv->GetRcName())));
489 fEnv->SetValue(resourceName,Form(
"%d",value));
497 fEnv->SetValue(resourceName,value);
506 fEnv->SetValue(resourceName,Form(
"%g",value));
511 Double_t xmin, Double_t xmax)
519 TString def = Form(
"%s%s%s%s%g%s%g",
524 Bool_t replace(kFALSE);
526 for ( Int_t i = 0 ; i<= a->GetLast(); ++i )
528 TObjString* s =
static_cast<TObjString*
>(a->At(i));
532 if ( dim == dimensionName )
535 newRange += Form(
"%s%s%s%s%g%s%g",
543 newRange += s->String();
572 for ( Int_t i = 0; i <= a->GetLast(); ++i )
574 TString drange =
static_cast<TObjString*
>(a->At(i))->
String();
579 if ( bname == dimensionName )
588 if ( i < a->GetLast() )
596 AliInfo(Form(
"oldRanges=%s desc=%s newRanges=%s",oldRanges.Data(),desc.Data(),newRanges.Data()));
611 return fEnv->GetValue(resourceName,defaultValue);
618 Ssiz_t index = tuple.First(sep[0]);
619 return tuple(0,index);
633 Ssiz_t i1 = tuple.First(sep[0]);
634 Ssiz_t i2 = tuple.Last(sep[0]);
635 return tuple(i1+1,i2-1);
642 Ssiz_t index = tuple.Last(sep[0]);
643 return tuple(index+1,tuple.Length()-index-1);
Double_t Double(const char *resourceName, Double_t defaultValue=0.0) const
static TString TupleMiddle(const TString &tuple, const char *sep)
Int_t NumberOfDataSources() const
static TString ID2Type(const char *dataSourceID)
static const char * fgkSeparatorWithinRange
static const char * fgkDefaultRangeKey
key used to specify the default ranges for data representation
static TString TupleSecond(const TString &tuple, const char *sep)
static const char * fgkSeparatorWithinPart
TString AddDataSource(const char *dataSourceDescriptor)
TString String(const char *resourceName, const char *defaultValue="") const
void SetDefaultRange(const char *dataSourceType, const char *dimensionName, Double_t xmin, Double_t xmax)
TString DataSourceType(const char *dataSourceName) const
static TString TupleLast(const TString &tuple, const char *sep)
static TString Descriptor2Ranges(const char *dataSourceDescriptor)
static const char * fgkNumberOfDataSourcesKey
key used to store the # of data sources in the resource file
static TString TupleFirst(const TString &tuple, const char *sep)
Int_t Integer(const char *resourceName, Int_t defaultValue=0) const
Int_t GetDataSourceIndex(const char *dataSourceName) const
void SetDimensionRange(const char *dataSourceName, const char *dimensionName, Double_t xmin, Double_t xmax)
static TString ID2Origin(const char *dataSourceID)
TString DataSourceID(const char *dataSourceName) const
virtual ~AliMUONPainterEnv()
TString DataSourceURI(const char *dataSourceName) const
TString DataSourceDescriptor(const char *dataSourceName) const
TString GetDefaultRange(const char *dataSourceType, const char *dimensionName) const
static TString Descriptor2Name(const char *dataSourceDescriptor)
TString DataSourceName(const char *dataSourceName) const
void Print(Option_t *opt="") const
TString DataSourceRanges(const char *dataSourceName) const
TEnv * fEnv
the worker class
static Bool_t Ranges2DimensionRange(const char *ranges, const char *dimensionName, Double_t &xmin, Double_t &xmax)
static TString ID2URI(const char *dataSourceID)
static const char * fgkDataSourceKey
key used to store the data source URIs in the resource file
static const char * fgkSeparatorBetweenDescriptorParts
TString DataSourceOrigin(const char *dataSourceName) const
void Set(const char *resourceName, Int_t value)
static TString Descriptor2ID(const char *dataSourceDescriptor)
void ForceDataSourceToDefaultRange(const char *dataSourceName, const char *dim="")