global = (TGlobal*)gROOT->GetGlobal(
"gPOINTER",
true);
\
else sprintf(cmdline,"gPOINTER = (void*)&%s;",#VAR); \
gROOT->ProcessLine(cmdline); \
global = (TGlobal*)gROOT->GetGlobal("gPOINTER",true); \
if(global!=NULL) { \
void* gPOINTER=NULL; \
memcpy((void*)&gPOINTER,(void*)global->GetAddress(),sizeof(void*)); \
memcpy((void*)&VAR,(void*)gPOINTER,SIZE1*SIZE2*sizeof(TYPE)); \
} \
} else { \
global = (TGlobal*)gROOT->GetListOfGlobals()->FindObject(#VAR); \
if(global==NULL) { \
if(SIZE1==1 && SIZE2==1) strcpy(cmdline,#TYPE" "#VAR";"); \
if(SIZE1>1 && SIZE2==1) strcpy(cmdline,#TYPE" "#VAR"["#SIZE1"];"); \
if(SIZE1>1 && SIZE2>1) strcpy(cmdline,#TYPE" "#VAR"["#SIZE1"]["#SIZE2"];"); \
gROOT->ProcessLine(cmdline); \
global = (TGlobal*)gROOT->GetGlobal(#VAR,true); \
} \
sprintf(cmdline,"memcpy((void*)%p,(void*)%p,"#SIZE1"*"#SIZE2"*sizeof("#TYPE"));", \
(void*)global->GetAddress(),(void*)&VAR); \
gROOT->ProcessLine(cmdline); \
}}
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)