5#include "tpcclibConfig.h"
31 const char *region_name,
37 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
38 if(verbose>0) printf(
"%s()\n", __func__);
40 if(d==NULL || d->
tacNr<1) {
45 int ri, len, match_nr=0;
48 if(region_name==NULL) {
49 for(ri=0; ri<d->
tacNr; ri++) d->
r[ri].
sw=1;
54 if(reset!=0)
for(ri=0; ri<d->
tacNr; ri++) d->
r[ri].
sw=0;
57 len=strlen(region_name);
58 char local_name[len+1];
59 if(len>1) len=
strncpyClean(local_name, region_name, len+1);
60 else strcpy(local_name, region_name);
63 if(len<1 || strcmp(local_name,
".")==0) {
64 for(ri=0; ri<d->
tacNr; ri++) {
65 if(strlen(d->
r[ri].
name)==0) {d->
r[ri].
sw=1; match_nr++;
continue;}
72 for(ri=0; ri<d->
tacNr; ri++) {
77 if(match_nr>0)
return(match_nr);
83 for(
int i=0; i<li.
nr; i++) {
84 if(li.
i[i]<1)
continue;
85 if(li.
i[i]>d->
tacNr)
break;
86 d->
r[li.
i[i]-1].
sw=1; match_nr++;
107 if(d==NULL || d->
tacNr<1)
return(0);
109 for(ri=n=0; ri<d->
tacNr; ri++)
if(d->
r[ri].
sw!=0) n++;
127 const char *par_name,
133 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
134 if(verbose>0) printf(
"%s()\n", __func__);
136 if(d==NULL || d->
parNr<1) {
141 int pi, len, match_nr=0;
145 for(pi=0; pi<d->
parNr; pi++) d->
n[pi].
sw=1;
150 if(reset!=0)
for(pi=0; pi<d->
parNr; pi++) d->
n[pi].
sw=0;
153 len=strlen(par_name);
154 char local_name[len+1];
155 if(len>1) len=
strncpyClean(local_name, par_name, len+1);
156 else strcpy(local_name, par_name);
159 if(len<1 || strcmp(local_name,
".")==0) {
160 for(pi=0; pi<d->
parNr; pi++) {
161 if(strlen(d->
n[pi].
name)==0) {d->
n[pi].
sw=1; match_nr++;
continue;}
168 for(pi=0; pi<d->
parNr; pi++) {
170 if(strcasecmp(d->
n[pi].
name, local_name)==0) {
171 d->
n[pi].
sw=1; match_nr++;
continue;
175 if(match_nr>0)
return(match_nr);
181 for(
int i=0; i<li.
nr; i++) {
182 if(li.
i[i]<1)
continue;
183 if(li.
i[i]>d->
parNr)
break;
184 d->
n[li.
i[i]-1].
sw=1; match_nr++;
206 if(d==NULL || d->
parNr<1)
return(0);
208 for(pi=n=0; pi<d->
parNr; pi++)
if(d->
n[pi].
sw!=0) n++;
227 if(d==NULL || d->
parNr<1 || par_name==NULL)
return(-1);
229 for(
int i=0; i<d->
parNr; i++) {
230 if(strcasecmp(par_name, d->
n[i].
name)==0)
return(i);
247 const char *par_name,
253 if(d==NULL || d->
parNr<1 || ti<0 || ti>=d->
tacNr || par_name==NULL)
return(v);
255 for(
int pi=0; pi<d->
parNr; pi++)
256 if(strcasecmp(par_name, d->
n[pi].
name)==0) v=d->
r[ti].
p[pi];
275 if(d==NULL || d->
parNr<1 || par_name==NULL)
return(u);
277 for(
int pi=0; pi<d->
parNr; pi++)
if(strcasecmp(par_name, d->
n[pi].
name)==0) u=d->
n[pi].
unit;
297 if(pmin!=NULL) *pmin=nan(
"");
298 if(pmax!=NULL) *pmax=nan(
"");
299 if(d==NULL || i<0 || i>=d->
parNr || d->
tacNr<1)
return;
301 double mi, ma; mi=ma=d->
r[0].
p[i];
302 for(
int j=1; j<d->
tacNr; j++) {
303 if(d->
r[j].
p[i]<mi) mi=d->
r[j].
p[i];
304 else if(d->
r[j].
p[i]>ma) ma=d->
r[j].
p[i];
306 if(pmin!=NULL) *pmin=mi;
307 if(pmax!=NULL) *pmax=ma;
void intlistInit(INTLIST *l)
int intlistExpandFromString(const char *s1, const char *s2, INTLIST *l, const int ifnew)
void intlistFree(INTLIST *l)
void intlistSort(INTLIST *l)
int parSelectTACs(PAR *d, const char *region_name, int reset, TPCSTATUS *status)
int parSelectParameters(PAR *d, const char *par_name, int reset, TPCSTATUS *status)
double parGetParameter(PAR *d, const char *par_name, const int ti)
int parGetParameterUnit(PAR *d, const char *par_name)
void parValueRange(PAR *d, const int i, double *pmin, double *pmax)
int parFindParameter(PAR *d, const char *par_name)
int parSelectedTACs(PAR *d)
int parSelectedParameters(PAR *d)
int roinameMatch(const char *roiname, const char *test_str, TPCSTATUS *status)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
int strncpyClean(char *s1, const char *s2, int maxlen)
char name[MAX_PARNAME_LEN+1]
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
@ UNIT_UNKNOWN
Unknown unit.
@ TPCERROR_NO_DATA
File contains no data.
Header file for library libtpcift.
Header file for libtpcpar.