Add possibility to skip discontinuous variable values in the correction to ElectronPhotonVariableCorrectionBase class
There was a request to add the possibility to not correct a variable in the ElectronPhotonVariableCorrectionTool if it has one of some specific values. This has the following reason (from the discussion where this came up):
"When we make Likelihood pdfs (at least I think we still do it this way), we basically kept a list of "special bins" (see here) that should not be (1) smoothed or (2) shifted, because they are basically discontinuous. (This can be because some information was missing, e.g. no TRT hits, or you are at the edge of the calorimeter so particular calo layers are missing, or there is no 2nd maximum for e.g. ERatio.)
What this means is, if the value of the variable is exactly VAL (see below for each variable), then this value was removed from any histogram that was used for smoothing / shifting, but then added back into the distribution after the smoothing or shifting was performed. Or, if you are applying the final shifting, you would simply not shift or smear this exact value.
These variables are:
['el_f1', 'el_f3', 'el_DeltaPoverP', 'el_TRTHighTHitsRatio', 'el_TRT_PID (the transformed version)']: VAL = 0.0 ['el_rphi','el_reta']: VAL = 1.0 ['el_eratio']: VAL = 0.0 or VAL = 1.0
For the particular case of the TRT PID variable, the un-transformed discontinuity is at 0.5 (which makes sense -- it means "we have no info, so it's 50/50 ele or non-ele"). When you transform 0.5 using the transformation formula, the result is 0.0, so 0.0 is the discontinuity value that we remove/re-add/don't correct when constructing pdfs for the transformed TRT PID. (Because remember, we always use the transformed version of the TRT PID in the LH.)
So [...] we need to provide the option to not correct a specific float, if it is one of these special, discontinuous values [...]."
The code was adapted accordingly, and explanations and examples added to the README and example conf files.