ROOT logo
void SetupAnalysis(TString mode,
		   TString analysisMode="full",
		   Bool_t useMC = kFALSE,
		   Int_t nEvents=1.0*1e9, 
		   Int_t nEventsSkip=0,
		   TString format="esd")
{
  
  // ALICE stuff
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) mgr = new AliAnalysisManager("CAF train");
  
  // Create and configure the alien handler plugin 
  gROOT->LoadMacro("CreateAnalysisPlugin.C"); 
  AliAnalysisGrid *alienHandler = CreateAnalysisPlugin(analysisMode);   
  if (!alienHandler) return;
  mgr->SetGridHandler(alienHandler);
  
  // input handler for esd or AOD, real or MC data
  InputHandlerSetup(format,useMC);

  // physics selection
  if(!format.CompareTo("esd")){
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
    AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kFALSE);
    if(useMC) physSelTask->GetPhysicsSelection()->SetAnalyzeMC();   
    AliPhysicsSelection* physSel = physSelTask->GetPhysicsSelection();
    physSel->AddBackgroundIdentification(new AliBackgroundSelection());
  }
  
  gROOT->ProcessLine(Form(".include %s/include",gSystem->ExpandPathName("$ALICE_ROOT")));
  
  gROOT->LoadMacro("AliAnalysisTaskEfficiency.cxx+g");
  
  // load and run AddTask macro
  gROOT->LoadMacro("AddTaskEfficiency.C");
  

  AliAnalysisTaskSE* task1 = AddTaskEfficiency(-1);
  if(!task1){
    Printf("AddTask could not be run.");
  }

  // Run analysis
  mgr->InitAnalysis();
  
  if ((!mode.CompareTo("proof")) ||(!mode.CompareTo("local"))) {
    mgr->StartAnalysis(mode.Data(),nEvents,nEventsSkip);
  }
  else {
    mgr->StartAnalysis(mode.Data());
    
  }
  
}


TString GetFormatFromDataSet(TString dataset) {
  
  TString dsTreeName;
  if (dataset.Contains("#")) {
    Info("runSKAF.C",Form("Detecting format from dataset name '%s' ...",dataset.Data()));
    dsTreeName=dataset(dataset.Last('#'),dataset.Length());
  } else {
    Info("runSKAF.C",Form("Detecting format from dataset '%s' (may take while, depends on network connection) ...",
			  dataset.Data()));
    TFileCollection *ds = gProof->GetDataSet(dataset.Data());
    if (!ds) {
      Error(Form("Dataset %s doesn't exist on proof cluster!!!!",dataset.Data()));
      return "";
    }
    dsTreeName = ds->GetDefaultTreeName();
  }
  
  if (dsTreeName.Contains("esdTree")) {
    Info("runSKAF.C","ESD input format detected ...");
    return "ESD";
  } else if (dsTreeName.Contains("aodTree"))  {
    Info("runSKAF.C","AOD input format detected ...");
    return "AOD";
  } else {
    Error("runSKAF.C",Form("Tree %s is not supported !!!",dsTreeName.Data()));
    Error("runSKAF.C",Form("Maybe set your DS to %s#esdTree or %s#aodTree",
			   dataset.Data(),dataset.Data()));
  }
  
  return "";
}

Bool_t InputHandlerSetup(TString format = "esd", Bool_t useKine = kTRUE)
{
  format.ToLower();

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();

  AliAnalysisDataContainer *cin = mgr->GetCommonInputContainer();

  if (cin) return;

  if (!format.CompareTo("esd"))
    {
      AliESDInputHandler *esdInputHandler = 
	dynamic_cast<AliESDInputHandler*>(AliAnalysisManager::GetAnalysisManager()->
					  GetInputEventHandler());

      if (!esdInputHandler)
	{
	  Info("CustomAnalysisTaskInputSetup", "Creating esdInputHandler ...");
	  esdInputHandler = new AliESDInputHandler();
	  mgr->SetInputEventHandler(esdInputHandler);
	}

      if (useKine)
	{
	  AliMCEventHandler* mcInputHandler = 
	    dynamic_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->
					     GetMCtruthEventHandler());

	  if (!mcInputHandler)
	    {
	      Info("CustomAnalysisTaskInputSetup", "Creating mcInputHandler ...");
	      AliMCEventHandler* mcInputHandler = new AliMCEventHandler();
	      mgr->SetMCtruthEventHandler(mcInputHandler);
	    }
	}

    }
  else if (!format.CompareTo("aod"))
    {
      AliAODInputHandler *aodInputHandler = 
	dynamic_cast<AliAODInputHandler*>(AliAnalysisManager::GetAnalysisManager()->
					  GetInputEventHandler());

      if (!aodInputHandler)
	{
	  Info("CustomAnalysisTaskInputSetup", "Creating aodInputHandler ...");
	  aodInputHandler = new AliAODInputHandler();
	  mgr->SetInputEventHandler(aodInputHandler);
	}
    }
  else
    {
      AliWarning("Wrong input format!!! Only ESD and AOD are supported. Skipping Task ...");
      return kFALSE;
    }

  return kTRUE;
}
 SetupAnalysis.C:1
 SetupAnalysis.C:2
 SetupAnalysis.C:3
 SetupAnalysis.C:4
 SetupAnalysis.C:5
 SetupAnalysis.C:6
 SetupAnalysis.C:7
 SetupAnalysis.C:8
 SetupAnalysis.C:9
 SetupAnalysis.C:10
 SetupAnalysis.C:11
 SetupAnalysis.C:12
 SetupAnalysis.C:13
 SetupAnalysis.C:14
 SetupAnalysis.C:15
 SetupAnalysis.C:16
 SetupAnalysis.C:17
 SetupAnalysis.C:18
 SetupAnalysis.C:19
 SetupAnalysis.C:20
 SetupAnalysis.C:21
 SetupAnalysis.C:22
 SetupAnalysis.C:23
 SetupAnalysis.C:24
 SetupAnalysis.C:25
 SetupAnalysis.C:26
 SetupAnalysis.C:27
 SetupAnalysis.C:28
 SetupAnalysis.C:29
 SetupAnalysis.C:30
 SetupAnalysis.C:31
 SetupAnalysis.C:32
 SetupAnalysis.C:33
 SetupAnalysis.C:34
 SetupAnalysis.C:35
 SetupAnalysis.C:36
 SetupAnalysis.C:37
 SetupAnalysis.C:38
 SetupAnalysis.C:39
 SetupAnalysis.C:40
 SetupAnalysis.C:41
 SetupAnalysis.C:42
 SetupAnalysis.C:43
 SetupAnalysis.C:44
 SetupAnalysis.C:45
 SetupAnalysis.C:46
 SetupAnalysis.C:47
 SetupAnalysis.C:48
 SetupAnalysis.C:49
 SetupAnalysis.C:50
 SetupAnalysis.C:51
 SetupAnalysis.C:52
 SetupAnalysis.C:53
 SetupAnalysis.C:54
 SetupAnalysis.C:55
 SetupAnalysis.C:56
 SetupAnalysis.C:57
 SetupAnalysis.C:58
 SetupAnalysis.C:59
 SetupAnalysis.C:60
 SetupAnalysis.C:61
 SetupAnalysis.C:62
 SetupAnalysis.C:63
 SetupAnalysis.C:64
 SetupAnalysis.C:65
 SetupAnalysis.C:66
 SetupAnalysis.C:67
 SetupAnalysis.C:68
 SetupAnalysis.C:69
 SetupAnalysis.C:70
 SetupAnalysis.C:71
 SetupAnalysis.C:72
 SetupAnalysis.C:73
 SetupAnalysis.C:74
 SetupAnalysis.C:75
 SetupAnalysis.C:76
 SetupAnalysis.C:77
 SetupAnalysis.C:78
 SetupAnalysis.C:79
 SetupAnalysis.C:80
 SetupAnalysis.C:81
 SetupAnalysis.C:82
 SetupAnalysis.C:83
 SetupAnalysis.C:84
 SetupAnalysis.C:85
 SetupAnalysis.C:86
 SetupAnalysis.C:87
 SetupAnalysis.C:88
 SetupAnalysis.C:89
 SetupAnalysis.C:90
 SetupAnalysis.C:91
 SetupAnalysis.C:92
 SetupAnalysis.C:93
 SetupAnalysis.C:94
 SetupAnalysis.C:95
 SetupAnalysis.C:96
 SetupAnalysis.C:97
 SetupAnalysis.C:98
 SetupAnalysis.C:99
 SetupAnalysis.C:100
 SetupAnalysis.C:101
 SetupAnalysis.C:102
 SetupAnalysis.C:103
 SetupAnalysis.C:104
 SetupAnalysis.C:105
 SetupAnalysis.C:106
 SetupAnalysis.C:107
 SetupAnalysis.C:108
 SetupAnalysis.C:109
 SetupAnalysis.C:110
 SetupAnalysis.C:111
 SetupAnalysis.C:112
 SetupAnalysis.C:113
 SetupAnalysis.C:114
 SetupAnalysis.C:115
 SetupAnalysis.C:116
 SetupAnalysis.C:117
 SetupAnalysis.C:118
 SetupAnalysis.C:119
 SetupAnalysis.C:120
 SetupAnalysis.C:121
 SetupAnalysis.C:122
 SetupAnalysis.C:123
 SetupAnalysis.C:124
 SetupAnalysis.C:125
 SetupAnalysis.C:126
 SetupAnalysis.C:127
 SetupAnalysis.C:128
 SetupAnalysis.C:129
 SetupAnalysis.C:130
 SetupAnalysis.C:131
 SetupAnalysis.C:132
 SetupAnalysis.C:133
 SetupAnalysis.C:134
 SetupAnalysis.C:135
 SetupAnalysis.C:136
 SetupAnalysis.C:137
 SetupAnalysis.C:138
 SetupAnalysis.C:139
 SetupAnalysis.C:140
 SetupAnalysis.C:141
 SetupAnalysis.C:142
 SetupAnalysis.C:143
 SetupAnalysis.C:144
 SetupAnalysis.C:145
 SetupAnalysis.C:146
 SetupAnalysis.C:147
 SetupAnalysis.C:148
 SetupAnalysis.C:149