/** @brief Get the relevant information for a correction function parameter from the given conf file
* @param env The given TEnv, which is used to read out the current conf file
* @param parameter_number The parameter number with respect to the m_correctionFunctionTF1
...
...
@@ -188,7 +195,7 @@ private:
* @details The relevant information for the parameter with the given parameter number and given parameter type is retrieved from the current configuration
* file, and saved in the according member variables of the class, i.e. m_graphCopies, m_binValues, m_etaBins, m_ptBins
/** @brief Get the actual parameters entering the correction TF1 for the current e/y object to be corrected
* @param properties The vector where the values of the correction TF1 parameters will be saved in
...
...
@@ -197,7 +204,7 @@ private:
* @details As every electron/photon has different values of pT/eta, the correction function must be adapted accordingly for every e/y. The according values of
* each of the correction function parameters are updated with this function.
/** @brief Get the correction function parameter value if its type is eta- or pT-binned
* @param return_parameter_value The respective correction function parameter value is saved in this parameter
...
...
@@ -205,7 +212,7 @@ private:
* @param binning The eta or pT binning
* @param parameter_number The number of the parameter with respect to the correction TF1. Needed in order to retrieve the correct values matching this parameter.
/** @brief Get the correction function parameter value if its type is eta- and pT-binned
* @param return_parameter_value The respective correction function parameter value is saved in this parameter
...
...
@@ -213,20 +220,20 @@ private:
* @param ptEvalPoint pT evaluation point - i.e., the pT value of the current e/y object to be corrected. Used to find the correct pT bin to use for the correction
* @param parameter_number The number of the parameter with respect to the correction TF1. Needed in order to retrieve the correct values matching this parameter.
/** @brief Given a point x, approximates the value via linear interpolation based on the two nearest bin centers. Re-implementation of Double_t TH1::Interpolate( Double_t x) const.
* @param return_parameter_value The interpolated parameter value is saved in this parameter
...
...
@@ -235,14 +242,14 @@ private:
* @param binning The binning based on which the interpolation should be done
* @param binValues The bin values according to the binning given in binning
@@ -145,6 +145,12 @@ The correction values for each respective bin are given to the tool using the fl
Parameter2Values: 1.; 0.9; 0.7; 0.45; 0.6; 1.1
```
If wanted, a partwise linear interpolation between the given pT bin values can be used. For this, simply set the flag `Parameter*Interpolate` to `TRUE` if `Parameter*` is a parameter binned in pT. If the flag is not set, it is assumed to be `FALSE`, however, the code does not complain if you explicitly set the flag to `FALSE`. The implemented method mostly follows the [interpolation method implemented in the ROOT TH1 class](https://root.cern.ch/doc/master/classTH1.html#a8ca269364ca55ea1e7fb65f9d3b21722). For interpolation into the last pt bin, whose upper boundary is infinity, we treat the bin as having the width "w" of the next-to-last bin. Thus, we interpolate a distance w/2 into the last bin, and after this distance the value is constant. For example, this would look like this:
```bash
Parameter2Interpolate: TRUE
```
For the **event density**, no further information must be given to the tool. The tool will extract the event density from the event and use it as the respective parameter.
If you want to include parameters depending on other quantities, please read the [developer manual](#how-to-change-and-adapt-the-tool-developer-manual) or [contact the developers](mailto:nils.gillwald@desy.de).
...
...
@@ -159,6 +165,14 @@ In order to check whether the passed object in e.g. `applyCorrection` is intende
The tool will then check if the passed object is compatible with the `ApplyTo` flag provided, and will fail with a `CP::CorrectionCode::Error` if the object type is not as expected.
If there are **discrete parameter values which should be left uncorrected**, you can use the flag `UncorrectedDiscontinuities`. You should pass all values which should not be corrected to it as a list, like this:
```bash
UncorrectedDiscontinuities: 0.0; 1.0
```
Note that this will work fine for integer-like floats! It will probably fail for longer floats because of the internal floating point precision of C++ (i.e. the code checks equality using `==`, and does not check if the difference between the variable value and the values which should be skipped is smaller than some epsilon). If you need this to work for all floats, contact the maintainers and we'll see what we can do.
An **example configuration file** containing examples for all possible flags can be found in `./data/ElectronPhotonVariableCorrectionBase_ExampleConf.conf`. The complete list of example configuration files is (all in `./data/`):
-`ElectronPhotonVariableCorrectionBase_ExampleConvertedPhotonConf.conf` for converted photons,
...
...
@@ -167,7 +181,7 @@ An **example configuration file** containing examples for all possible flags can
-`ElectronPhotonVariableCorrectionBase_ExampleIsoCorrectionConf.conf` for the isolation correction,
-`ElectronPhotonVariableCorrectionBase_ExampleConf.conf` general example showing what the tool can do and how all different possible parameters can be handled.
The .root file currently used for testing is `/pnfs/desy.de/atlas/dq2/atlaslocalgroupdisk/rucio/mc16_13TeV/da/80/DAOD_HIGG1D2.18400890._000001.pool.root.1`.
The .root file currently used for testing is `/pnfs/desy.de/atlas/dq2/atlaslocalgroupdisk/rucio/mc16_13TeV/3b/36/DAOD_HIGG1D2.20317301._000001.pool.root.1`.