SND@LHC Software
Loading...
Searching...
No Matches
ecalDrawer.h File Reference
#include "FairTask.h"
#include "TString.h"
#include <math.h>
#include <list>
Include dependency graph for ecalDrawer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  ecalDrawer
 

Functions

void LabToRGB (Float_t L, Float_t a, Float_t b, Float_t &R, Float_t &G, Float_t &B)
 
Float_t Hue_2_RGB (Float_t v1, Float_t v2, Float_t h)
 
void HSLToRGB (Float_t h, Float_t s, Float_t l, Float_t &R, Float_t &G, Float_t &B)
 

Function Documentation

◆ HSLToRGB()

void HSLToRGB ( Float_t  h,
Float_t  s,
Float_t  l,
Float_t &  R,
Float_t &  G,
Float_t &  B 
)
inline

Definition at line 165 of file ecalDrawer.h.

166{
167 if (s==0)
168 {
169 R=G=B=l;
170 return;
171 }
172 Float_t v2;
173 Float_t v1;
174 if (l<0.5) v2=l*(1+s); else v2=(l+s)-(s*l);
175 v1=2*l-v2;
176 R=Hue_2_RGB(v1, v2, h+(1.0/3));
177 G=Hue_2_RGB(v1, v2, h);
178 B=Hue_2_RGB(v1, v2, h-(1.0/3));
179}
Float_t Hue_2_RGB(Float_t v1, Float_t v2, Float_t h)
Definition ecalDrawer.h:154

◆ Hue_2_RGB()

Float_t Hue_2_RGB ( Float_t  v1,
Float_t  v2,
Float_t  h 
)
inline

Definition at line 154 of file ecalDrawer.h.

155{
156 Float_t vh=h;
157 if (vh<0) vh+=1;
158 if (vh>1) vh-=1;
159 if (6*vh<1) return v1+(v2-v1)*6*vh;
160 if (2*vh<1) return v2;
161 if (3*vh<2) return (v1+(v2-v1)*(2.0/3.0-vh)*6);
162 return v1;
163}

◆ LabToRGB()

void LabToRGB ( Float_t  L,
Float_t  a,
Float_t  b,
Float_t &  R,
Float_t &  G,
Float_t &  B 
)
inline

Convert Lab color to RGB. Formulas taken from www.easyrgb.com ** L[0.0, 1.0], a[-0.5, 0.5], b[-0.5, 0.5]

Definition at line 129 of file ecalDrawer.h.

130{
131 Float_t vY=(L+0.16)/1.16;
132 Float_t vX=a/5.00+vY;
133 Float_t vZ=vY-b/2.0;
134 if (vY*vY*vY>0.008856) vY=vY*vY*vY; else vY=(vY-16.0/116.0)/7.787;
135 if (vX*vX*vX>0.008856) vX=vX*vX*vX; else vX=(vX-16.0/116.0)/7.787;
136 if (vZ*vZ*vZ>0.008856) vZ=vZ*vZ*vZ; else vZ=(vZ-16.0/116.0)/7.787;
137 vX*=0.95047; vZ*=1.08883;
138 R= vX*3.2406-vY*1.5372-vZ*0.4986;
139 G=-vX*0.9689+vY*1.8758+vZ*0.0415;
140 B= vX*0.0557-vY*0.2040+vZ*1.0570;
141 if (R>0.0031308) R=1.055*powf(R, 1.0/2.4)-0.055; else R*=12.92;
142 if (G>0.0031308) G=1.055*powf(G, 1.0/2.4)-0.055; else G*=12.92;
143 if (B>0.0031308) B=1.055*powf(B, 1.0/2.4)-0.055; else B*=12.92;
144 if (R<0.0) R=0.0;
145 if (G<0.0) G=0.0;
146 if (B<0.0) B=0.0;
147 Float_t Ln=R*0.3+G*0.6+0.1*B;
148 if (Ln>L) { R*=L/Ln; G*=L/Ln; B*=L/Ln; }
149 if (R>1.0) { G/=R; B/=R; R=1.0; }
150 if (G>1.0) { R/=G; B/=G; G=1.0; }
151 if (B>1.0) { R/=B; G/=B; B=1.0; }
152}