--- /dev/null
+/**
+ * @file elossFitConfig.C
+ * @author Christian Holm Christensen <cholm@nbi.dk>
+ * @date Thu Aug 14 15:25:13 2014
+ *
+ * @brief Configure Energy loss fitter
+ *
+ * @ingroup pwglf_forward_scripts_tasks
+ *
+ */
+/**
+ * Configure ther energy loss fitter task
+ *
+ * @param task Task to configure
+ *
+ * @ingroup pwglf_forward_eloss
+ */
+void
+elossFitConfig(AliFMDEnergyFitterTask* task)
+{
+ if (!task) return;
+
+ Info("elossFitConfig", "Setting up task %s (%p)", task->GetName(), task);
+
+ // --- Event inspector ---------------------------------------------
+ // Set the number of SPD tracklets for which we consider the event a
+ // low flux event
+ task->GetEventInspector().SetLowFluxCut(1000);
+ // Set the maximum error on v_z [cm]
+ task->GetEventInspector().SetMaxVzErr(0.2);
+ // How to tag events as pile-up. Bit pattern of
+ //
+ // - 0x1: SPD multi-vertex
+ // - 0x2: Track multi-vertex
+ // - 0x4: Out-of-bunch
+ //
+ task->GetEventInspector().SetPileupFlags(0x7);
+
+ // --- ESD Fixer ---------------------------------------------------
+ // IF the noise correction is bigger than this, flag strip as dead
+ task->GetESDFixer().SetMaxNoiseCorrection(0.04);
+ // Dead region in FMD2i
+ task->GetESDFixer().AddDeadRegion(2, 'I', 16, 17, 256, 511);
+
+ // --- Energy loss fitter ------------------------------------------
+ // Set the eta axis to use - note, this overrides whatever is used
+ // by the rest of the algorithms - but only for the energy fitter
+ // algorithm.
+ task->GetEnergyFitter().SetEtaAxis(200, -4, 6);
+ // Set maximum energy loss to consider
+ task->GetEnergyFitter().SetMaxE(15);
+ // Set number of energy loss bins
+ task->GetEnergyFitter().SetNEbins(500);
+ // Set whether to use increasing bin sizes
+ task->GetEnergyFitter().SetUseIncreasingBins(true);
+ // Set whether to do fit the energy distributions
+ task->GetEnergyFitter().SetDoFits(kTRUE);
+ // Set whether to make the correction object
+ task->GetEnergyFitter().SetDoMakeObject(kTRUE);
+ // Set the low cut used for energy
+ task->GetEnergyFitter().SetLowCut(0.4);
+ // Set the number of bins to subtract from maximum of distributions
+ // to get the lower bound of the fit range
+ task->GetEnergyFitter().SetFitRangeBinWidth(4);
+ // Set the maximum number of landaus to try to fit (max 5)
+ task->GetEnergyFitter().SetNParticles(5);
+ // Set the minimum number of entries in the distribution before
+ // trying to fit to the data - 10K seems the absolute minimum
+ task->GetEnergyFitter().SetMinEntries(10000);
+ // Set reqularization cut
+ task->GetEnergyFitter().SetRegularizationCut(1e8);
+ // Check if we're to store the residuals. This can be one of
+ // AliFMDEnergyFitter::EResidualMethod:
+ //
+ // - AliFMDEnergyFitter::kNoResiduals - no residuals calculated
+ // - AliFMDEnergyFitter::kResidualSquareDifference
+ // - AliFMDEnergyFitter::kResidualScaledDifference
+ // - AliFMDEnergyFitter::kResidualDifference
+ //
+ AliFMDEnergyFitter::EResidualMethod rm = AliFMDEnergyFitter::kNoResiduals;
+ task->GetEnergyFitter().SetStoreResiduals(rm);
+
+ // --- Set limits on fits the energy -------------------------------
+ // DO NOT CHANGE THESE UNLESS YOU KNOW WHAT YOU ARE DOING
+ // Maximum relative error on parameters
+ // AliFMDCorrELossFit::ELossFit::fgMaxRelError = .12;
+ // Least weight to use
+ // AliFMDCorrELossFit::ELossFit::fgLeastWeight = 1e-5;
+ // Maximum value of reduced chi^2
+ // AliFMDCorrELossFit::ELossFit::fgMaxChi2nu = 20;
+}
+//
+// EOF
+//