ROOT logo
/**
 * @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
// 
 elossFitConfig.C:1
 elossFitConfig.C:2
 elossFitConfig.C:3
 elossFitConfig.C:4
 elossFitConfig.C:5
 elossFitConfig.C:6
 elossFitConfig.C:7
 elossFitConfig.C:8
 elossFitConfig.C:9
 elossFitConfig.C:10
 elossFitConfig.C:11
 elossFitConfig.C:12
 elossFitConfig.C:13
 elossFitConfig.C:14
 elossFitConfig.C:15
 elossFitConfig.C:16
 elossFitConfig.C:17
 elossFitConfig.C:18
 elossFitConfig.C:19
 elossFitConfig.C:20
 elossFitConfig.C:21
 elossFitConfig.C:22
 elossFitConfig.C:23
 elossFitConfig.C:24
 elossFitConfig.C:25
 elossFitConfig.C:26
 elossFitConfig.C:27
 elossFitConfig.C:28
 elossFitConfig.C:29
 elossFitConfig.C:30
 elossFitConfig.C:31
 elossFitConfig.C:32
 elossFitConfig.C:33
 elossFitConfig.C:34
 elossFitConfig.C:35
 elossFitConfig.C:36
 elossFitConfig.C:37
 elossFitConfig.C:38
 elossFitConfig.C:39
 elossFitConfig.C:40
 elossFitConfig.C:41
 elossFitConfig.C:42
 elossFitConfig.C:43
 elossFitConfig.C:44
 elossFitConfig.C:45
 elossFitConfig.C:46
 elossFitConfig.C:47
 elossFitConfig.C:48
 elossFitConfig.C:49
 elossFitConfig.C:50
 elossFitConfig.C:51
 elossFitConfig.C:52
 elossFitConfig.C:53
 elossFitConfig.C:54
 elossFitConfig.C:55
 elossFitConfig.C:56
 elossFitConfig.C:57
 elossFitConfig.C:58
 elossFitConfig.C:59
 elossFitConfig.C:60
 elossFitConfig.C:61
 elossFitConfig.C:62
 elossFitConfig.C:63
 elossFitConfig.C:64
 elossFitConfig.C:65
 elossFitConfig.C:66
 elossFitConfig.C:67
 elossFitConfig.C:68
 elossFitConfig.C:69
 elossFitConfig.C:70
 elossFitConfig.C:71
 elossFitConfig.C:72
 elossFitConfig.C:73
 elossFitConfig.C:74
 elossFitConfig.C:75
 elossFitConfig.C:76
 elossFitConfig.C:77
 elossFitConfig.C:78
 elossFitConfig.C:79
 elossFitConfig.C:80
 elossFitConfig.C:81
 elossFitConfig.C:82
 elossFitConfig.C:83
 elossFitConfig.C:84
 elossFitConfig.C:85
 elossFitConfig.C:86
 elossFitConfig.C:87
 elossFitConfig.C:88
 elossFitConfig.C:89
 elossFitConfig.C:90
 elossFitConfig.C:91
 elossFitConfig.C:92
 elossFitConfig.C:93
 elossFitConfig.C:94
 elossFitConfig.C:95