#include "TString.h" // ======================================================== // ======================================================== // * simple routine to convert integer to character // ******************************************************** TH1F* h(int val,TFile &fx) { char* num=ConvertInteger(val); TString nums(num); TString name="h" + nums ; TH1F* hxx=(TH1F*) fx.Get(name); return hxx; } char* ConvertInteger(int val){ char c[30]; //temporaty character int count=0; // check positive if (val < 0) val = -val; bool EXIT = false; while( EXIT == false ) { int digit = val- int((double)val/10.)*10; // choose character switch(digit) { case 0: c[count]= '0'; break; case 1: c[count]= '1'; break; case 2: c[count]= '2'; break; case 3: c[count]= '3'; break; case 4: c[count]= '4'; break; case 5: c[count]= '5'; break; case 6: c[count]= '6'; break; case 7: c[count]= '7'; break; case 8: c[count]= '8'; break; case 9: c[count]= '9'; break; } count++; val = val/10; if(val == 0) EXIT = true; } char* res = new char[count]; // sort characters int the right direction for( int i=0; i < count; i++){ *(res + count-i-1) = c[i]; } *(res + count)= '\0'; // C-string return res; } // ======================================================== // ======================================================== // * simple routine to convert double to character // ******************************************************** char* ConvertDouble(double val, int precision){ //special case if (val == 0.) return ConvertInteger(0); //------ check sign ---------------------------------------- char* res = new char[20]; res[0] = '\0'; // initial initializtion if (val < 0.) { char sign[3] = "-"; strcpy(res,sign); val *= -1.; } int digit_left = (int)(val); char* int_part_nosign = ConvertInteger(digit_left); strcat(res, int_part_nosign); //------ define right part ------------------------- double val_right = val - digit_left; if(val_right == 0.) return res; // pure integer double char* dot = "."; strcat(res, dot); bool EXIT = false; int count = 0; while( EXIT == false ) { if((val_right == (int)(val_right)) || (count == precision)) EXIT = true; else val_right *=10.; count++; } int val_right_int = (int) (val_right); char* dec_part = ConvertInteger(val_right_int); strcat(res, dec_part); return res; }