Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
BEGIN{
    n=0;
    endedParsing=0;
    selfArrange=0;
    min=99999999999;
    max=-1*min;
    selfArrange=2;
}
function getcolor(val){
    red=0;green=0;blue=0;
    delta=(max-min);
    x =(val-min);
    if(val<min){red=0;green=0;blue=255;}
    if(val>max){red=255;green=0;blue=0;}
    if(val>=min&&val<=max){ 
	red = int ( x<(delta/2) ? 0 : ( x > ((3./4.)*delta) ?  255 : 255/(delta/4) * (x-(2./4.)*delta)  ) );
	green= int ( x<delta/4 ? (x*255/(delta/4)) : ( x > ((3./4.)*delta) ?  255-255/(delta/4) *(x-(3./4.)*delta) : 255 ) );
	blue = int ( x<delta/4 ? 255 : ( x > ((1./2.)*delta) ?  0 : 255-255/(delta/4) * (x-(1./4.)*delta) ) );
    }
    color=sprintf("%d,%d,%d",red,green,blue);
    return color; 
}
function parseSource(){
    value[$1]=$2;
    print min " " max;
    if(selfArrange==1){   
	if($2<min)
	    min=$2;
	if($2>max)
	    max=$2;
    }
}
function fillTkMap(){
    if(match($2,"detid")){
	det=substr($2,8,9);
	if(det in value){
	    tmp=$0
	    stringVal=sprintf("value=\"%f\"",value[det]);
	    sub("255,255,255", getcolor(value[det]), tmp);
	    sub("value=\"0\"", stringVal, tmp);
	    print tmp
	} else 
	    print $0
    } else
	print $0
}
{
    if(selfArrange==2){
	selfArrange=1;
	if(vmin!=vmax){
	    min=vmin;
	    max=vmax;
	    selfArrange=0;
	}
    }
    if(!match(FILENAME,"tkmap_white.xml")) parseSource();
    
    if(match(FILENAME,"tkmap_white.xml")) fillTkMap();
}