]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Configuration script for energy loss fitter task
authorcholm <Christian.Holm.Christensen@cern.ch>
Mon, 22 Sep 2014 13:14:52 +0000 (15:14 +0200)
committercholm <Christian.Holm.Christensen@cern.ch>
Mon, 22 Sep 2014 13:14:52 +0000 (15:14 +0200)
PWGLF/FORWARD/analysis2/elossFitConfig.C [new file with mode: 0644]

diff --git a/PWGLF/FORWARD/analysis2/elossFitConfig.C b/PWGLF/FORWARD/analysis2/elossFitConfig.C
new file mode 100644 (file)
index 0000000..a2b13bb
--- /dev/null
@@ -0,0 +1,94 @@
+/**
+ * @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
+//