How To combine data from multiple integer textures

Hello I am trying to combine data from main Computer tomography image with multiple masks - when I tried to use it with single mask all worked well - with multiple id do not. Basically I bind multiple integer textures to usamplers for unsigned int and isampler for integer
Then on the basis of the value of the main CT image I set the gray value - in case of mask it should give color when isvisibile is set to true and associated mask value is >0

is visible and color uniforms set on runtime

Below Fragment shader

#extension GL_EXT_gpu_shader4 : enable    //Include support for this extension, which defines usampler2D
  out vec4 FragColor;    
  in vec3 ourColor;
  smooth in vec2 TexCoord0;
  uniform int  min_shown_white = 400;//400 ;// value of cut off  - all values above will be shown as white 
  uniform int  max_shown_black = -200;//value cut off - all values below will be shown as black
  uniform float displayRange = 600.0;
  uniform isampler2D CTIm; // main image sampler
  uniform int CTImisVisible = 1; // controllin main texture visibility
  //in case of int texture  controlling color display of main image we keep all above some value as white and all below some value as black
  vec4 mainColor(in int texel)
          return vec4(0.0, 0.0, 0.0, 1.0);
      else if(texel >min_shown_white){
          return vec4(1.0, 1.0, 1.0, 1.0);
      else if (texel< max_shown_black){
          return vec4(0.0, 0.0, 0.0, 1.0);
        float fla = float(texel-max_shown_black) ;
        float fl = fla/displayRange ;
       return vec4(fl, fl, fl, 1.0);
  uniform usampler2D mainLab; // mask image sampler
  uniform vec4 mainLabColorMask= vec4(0.4,0.7,0.8,0.9); //controlling colors
  uniform int mainLabisVisible= 1; // controlling visibility
  uniform usampler2D testLab1; // mask image sampler
  uniform vec4 testLab1ColorMask= vec4(0.4,0.7,0.8,0.9); //controlling colors
  uniform int testLab1isVisible= 1; // controlling visibility
      void main()
  uint mainLabRes = texture2D(mainLab, TexCoord0).r * mainLabisVisible  ; // is visible is 0 texture2D also evaluates to either 0 or 1
  uint testLab1Res = texture2D(testLab1, TexCoord0).r * testLab1isVisible  ;
   vec4 CTImRes = mainColor(texture2D(CTIm, TexCoord0).r);
    FragColor = vec4(( (mainLabColorMask.r *  mainLabRes)  +  (testLab1ColorMask.r *  testLab1Res) 
    +CTImRes.r )/3  ,( (mainLabColorMask.g  * mainLabRes)  +  (testLab1ColorMask.g  * testLab1Res) 
    +CTImRes.g) /3, ( (mainLabColorMask.b  * mainLabRes)  +  (testLab1ColorMask.b  * testLab1Res) 
    +CTImRes.b ) /3, 1.0  ); //long  product, if mask is invisible it just has full transparency

Here is how I initialize each texture

glGenTextures(1, texture);
glBindTexture(GL_TEXTURE_2D, texture[]); 


glTexStorage2D(GL_TEXTURE_2D, 1, GL_RType, width, height);

and I update by

	glBindTexture(GL_TEXTURE_2D, textSpec.ID); 
	glTexSubImage2D(GL_TEXTURE_2D,0,xoffset,yoffset, widthh, 
    heightt, GL_RED_INTEGER, textSpec.OpGlType, data)
    glBindTexture(GL_TEXTURE_2D, 0)

So after initializing all textures to random values (in case of masks it is 0 or 1 ) and get sth like below ( clearly there should be multiple colors as some values of the integer textures are 1 in some texels and in others not , as random generator will output 1 in different places in different textures)

Thanks for help !

I messed up with glactive texture after I activeted those textures that I assigned all work well