ROOT logo
/**
 * @file   MakeFMDMCHitTrain.C
 * @author Christian Holm Christensen <cholm@nbi.dk>
 * @date   Fri Jun  1 13:54:47 2012
 * 
 * @brief  
 * 
 * @ingroup pwglf_forward_trains_specific
 */
#include "TrainSetup.C"
// #include "ParUtilities.C"

//====================================================================
/**
 * Analysis train to make Forward and Central MC corrections
 * 
 *
 * @ingroup pwglf_forward_mc
 * @ingroup pwglf_forward_trains_specific
 */
class MakeFMDMCHitTrain : public TrainSetup
{
public:
  /** 
   * Constructor.  Date and time must be specified when running this
   * in Termiante mode on Grid
   * 
   * @param name     Name of train (free form)
   */
  MakeFMDMCHitTrain(const  char* name) 
    : TrainSetup(name)
  {
    fOptions.Add("use-tuple", "Whether to make an NTuple of hits");
    fOptions.Set("type", "ESD");
  }
protected:
  /** 
   * Create the tasks 
   * 
   * @param mgr  Analysis manager 
   */
  void CreateTasks(AliAnalysisManager* mgr)
  {
    // --- Output file name ------------------------------------------
    AliAnalysisManager::SetCommonFileName("forward_mchits.root");


    // --- Load libraries/pars ---------------------------------------
    fRailway->LoadLibrary("PWGLFforward2");
    fRailway->LoadLibrary("Proof");
    fRailway->LoadLibrary("Gui"); // Sigh! CDB depends on GUI!
    fRailway->LoadLibrary("CDB");
    fRailway->LoadLibrary("RAWDatabase");
    fRailway->LoadLibrary("STEER");
    fRailway->LoadLibrary("FMDbase");
    fRailway->LoadLibrary("FMDsim");
    fRailway->LoadLibrary("PWGLFforwardhit");
    
    // --- Set load path ---------------------------------------------
    gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2",
			     gROOT->GetMacroPath()));

    // --- Check if this is MC ---------------------------------------
    if (!mgr->GetMCtruthEventHandler()) 
      Fatal("CreateTasks", "No MC truth handler");
    
    TString args = TString::Format("%d,%d", 
				   fOptions.AsBool("use-tuple"),
				   fOptions.AsInt("verbose"));
    if (!CoupleCar("AddTaskFMDMCHit.C", args))
      Fatal("CreateTasks", "Couldn't add our task");
  }
  //__________________________________________________________________
  /** 
   * Create physics selection , and add to manager
   * 
   * @param mc Whether this is for MC 
   * @param mgr Manager 
   */
  void CreatePhysicsSelection(Bool_t mc,
			      AliAnalysisManager* mgr)
  {
    TrainSetup::CreatePhysicsSelection(mc, mgr);

    // --- Get input event handler -----------------------------------
    AliInputEventHandler* ih =
      dynamic_cast<AliInputEventHandler*>(mgr->GetInputEventHandler());
    if (!ih) 
      Fatal("CreatePhysicsSelection", "Couldn't get input handler (%p)", ih);
    
    // --- Get Physics selection -------------------------------------
    AliPhysicsSelection* ps = 
      dynamic_cast<AliPhysicsSelection*>(ih->GetEventSelection());
    if (!ps) 
      Fatal("CreatePhysicsSelection", "Couldn't get PhysicsSelection (%p)", ps);

    // --- Ignore trigger class when selecting events.  This means ---
    // --- that we get offline+(A,C,E) events too --------------------
    // ps->SetSkipTriggerClassSelection(true);
  }
  //__________________________________________________________________
  /** 
   * @return 0 - AOD disabled 
   */
  virtual AliVEventHandler* CreateOutputHandler(UShort_t) { return 0; }
  /** 
   * Do not the centrality selection
   */
  // void CreateCentralitySelection(Bool_t) {}
  //__________________________________________________________________
  const char* ClassName() const { return "MakeFMDMCHitTrain"; }
};

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