ROOT logo
/**
 * @file   AddTaskFMDELoss.C
 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
 * @date   Wed Mar 23 12:14:03 2011
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_scripts_tasks
 */
/**
 * @defgroup pwglf_forward_eloss Energy Loss Fits
 *
 * Fitting the energy loss @f$\Delta/\Delta_{mip}@f$ spectra 
 *
 * @ingroup pwglf_forward_topical
 */

/**
 * This is the macro to include the FMD energy fitter in a train.  
 * 
 * @param useTuple  If true, create NTuple of hits
 * @param debug     Debug level
 *
 * @return Newly created task 
 *
 * @ingroup pwglf_forward_eloss
 */
AliAnalysisTask*
AddTaskFMDMCTracks(Bool_t   useTuple=false, 
		   UShort_t maxStrips=2,
		   Int_t    debug=0)
{
  // --- Load libraries ----------------------------------------------
  gROOT->LoadClass("AliFMDMCTrackELoss", "PWGLFforward2");

  // --- Get analysis manager ----------------------------------------
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskFMDELoss", "No analysis manager to connect to.");
    return NULL;
  }   

  // --- Make the task and add it to the manager ---------------------
  AliFMDMCTrackInspectorTask* task = 
    new AliFMDMCTrackInspectorTask("ForwardTracks", 
				     useTuple);
  // --- Set parameters on the algorithms ----------------------------
  // 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);
  // 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->GetTrackInspector().SetEtaAxis(100, -4, 6);
  // Set maximum energy loss to consider 
  task->GetTrackInspector().SetMaxE(15); 
  // Set number of energy loss bins 
  task->GetTrackInspector().SetNEbins(500);
  // Set whether to use increasing bin sizes 
  task->GetTrackInspector().SetUseIncreasingBins(true);
  // Set whether to do fit the energy distributions 
  task->GetTrackInspector().SetDoFits(kTRUE);
  // Set whether to make the correction object 
  // task->GetTrackInspector().SetDoMakeObject(kTRUE);
  // Set the low cut used for energy
  task->GetTrackInspector().SetLowCut(0.05);
  // Set the number of bins to subtract from maximum of distributions
  // to get the lower bound of the fit range
  task->GetTrackInspector().SetFitRangeBinWidth(4);
  // Set the maximum number of landaus to try to fit (max 5)
  task->GetTrackInspector().SetNParticles(1);
  // Set the minimum number of entries in the distribution before
  // trying to fit to the data - 10K seems the absolute minimum
  task->GetTrackInspector().SetMinEntries(3000 /*10000*/);
  // Set maximum number of strips per 'cluster' 
  task->GetTrackInspector().GetTracker().SetMaxConsequtiveStrips(maxStrips);
  // If set, only collect statistics for MB.  This is to prevent a
  // bias when looping over data where the MB trigger is downscaled.
  // task->SetOnlyMB(onlyMB);
  // Debug
  task->SetDebug(debug);

  // --- 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;
  
  // --- Make the output container and connect it --------------------
  task->Connect(0,0);
  if (useTuple) { 
    AliAnalysisDataContainer* tuple = 
      mgr->CreateContainer("tuple", TTree::Class(), 
			   AliAnalysisManager::kOutputContainer,
			   "forward_tuple.root"
			   /*AliAnalysisManager::GetCommonFileName()*/);
    mgr->ConnectOutput(task, 3, tuple);
  }

  Printf("Returning task %p", task);
  return task;
}
//
// EOF
//
 AddTaskFMDMCTracks.C:1
 AddTaskFMDMCTracks.C:2
 AddTaskFMDMCTracks.C:3
 AddTaskFMDMCTracks.C:4
 AddTaskFMDMCTracks.C:5
 AddTaskFMDMCTracks.C:6
 AddTaskFMDMCTracks.C:7
 AddTaskFMDMCTracks.C:8
 AddTaskFMDMCTracks.C:9
 AddTaskFMDMCTracks.C:10
 AddTaskFMDMCTracks.C:11
 AddTaskFMDMCTracks.C:12
 AddTaskFMDMCTracks.C:13
 AddTaskFMDMCTracks.C:14
 AddTaskFMDMCTracks.C:15
 AddTaskFMDMCTracks.C:16
 AddTaskFMDMCTracks.C:17
 AddTaskFMDMCTracks.C:18
 AddTaskFMDMCTracks.C:19
 AddTaskFMDMCTracks.C:20
 AddTaskFMDMCTracks.C:21
 AddTaskFMDMCTracks.C:22
 AddTaskFMDMCTracks.C:23
 AddTaskFMDMCTracks.C:24
 AddTaskFMDMCTracks.C:25
 AddTaskFMDMCTracks.C:26
 AddTaskFMDMCTracks.C:27
 AddTaskFMDMCTracks.C:28
 AddTaskFMDMCTracks.C:29
 AddTaskFMDMCTracks.C:30
 AddTaskFMDMCTracks.C:31
 AddTaskFMDMCTracks.C:32
 AddTaskFMDMCTracks.C:33
 AddTaskFMDMCTracks.C:34
 AddTaskFMDMCTracks.C:35
 AddTaskFMDMCTracks.C:36
 AddTaskFMDMCTracks.C:37
 AddTaskFMDMCTracks.C:38
 AddTaskFMDMCTracks.C:39
 AddTaskFMDMCTracks.C:40
 AddTaskFMDMCTracks.C:41
 AddTaskFMDMCTracks.C:42
 AddTaskFMDMCTracks.C:43
 AddTaskFMDMCTracks.C:44
 AddTaskFMDMCTracks.C:45
 AddTaskFMDMCTracks.C:46
 AddTaskFMDMCTracks.C:47
 AddTaskFMDMCTracks.C:48
 AddTaskFMDMCTracks.C:49
 AddTaskFMDMCTracks.C:50
 AddTaskFMDMCTracks.C:51
 AddTaskFMDMCTracks.C:52
 AddTaskFMDMCTracks.C:53
 AddTaskFMDMCTracks.C:54
 AddTaskFMDMCTracks.C:55
 AddTaskFMDMCTracks.C:56
 AddTaskFMDMCTracks.C:57
 AddTaskFMDMCTracks.C:58
 AddTaskFMDMCTracks.C:59
 AddTaskFMDMCTracks.C:60
 AddTaskFMDMCTracks.C:61
 AddTaskFMDMCTracks.C:62
 AddTaskFMDMCTracks.C:63
 AddTaskFMDMCTracks.C:64
 AddTaskFMDMCTracks.C:65
 AddTaskFMDMCTracks.C:66
 AddTaskFMDMCTracks.C:67
 AddTaskFMDMCTracks.C:68
 AddTaskFMDMCTracks.C:69
 AddTaskFMDMCTracks.C:70
 AddTaskFMDMCTracks.C:71
 AddTaskFMDMCTracks.C:72
 AddTaskFMDMCTracks.C:73
 AddTaskFMDMCTracks.C:74
 AddTaskFMDMCTracks.C:75
 AddTaskFMDMCTracks.C:76
 AddTaskFMDMCTracks.C:77
 AddTaskFMDMCTracks.C:78
 AddTaskFMDMCTracks.C:79
 AddTaskFMDMCTracks.C:80
 AddTaskFMDMCTracks.C:81
 AddTaskFMDMCTracks.C:82
 AddTaskFMDMCTracks.C:83
 AddTaskFMDMCTracks.C:84
 AddTaskFMDMCTracks.C:85
 AddTaskFMDMCTracks.C:86
 AddTaskFMDMCTracks.C:87
 AddTaskFMDMCTracks.C:88
 AddTaskFMDMCTracks.C:89
 AddTaskFMDMCTracks.C:90
 AddTaskFMDMCTracks.C:91
 AddTaskFMDMCTracks.C:92
 AddTaskFMDMCTracks.C:93
 AddTaskFMDMCTracks.C:94
 AddTaskFMDMCTracks.C:95
 AddTaskFMDMCTracks.C:96
 AddTaskFMDMCTracks.C:97
 AddTaskFMDMCTracks.C:98
 AddTaskFMDMCTracks.C:99
 AddTaskFMDMCTracks.C:100
 AddTaskFMDMCTracks.C:101
 AddTaskFMDMCTracks.C:102
 AddTaskFMDMCTracks.C:103
 AddTaskFMDMCTracks.C:104
 AddTaskFMDMCTracks.C:105
 AddTaskFMDMCTracks.C:106
 AddTaskFMDMCTracks.C:107
 AddTaskFMDMCTracks.C:108
 AddTaskFMDMCTracks.C:109
 AddTaskFMDMCTracks.C:110
 AddTaskFMDMCTracks.C:111
 AddTaskFMDMCTracks.C:112