ROOT logo

/* $Id: AliAnalysisTaskDiJetCorrelations.cxx */
class AliAnalysisGrid;
class AliAnalysisAlien;

void RunDiJetCorrelations()
{
  
  gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/STEER/ESD -I$ALICE_ROOT/STEER/AOD -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS  -I$ALICE_ROOT/OADB -I$ALICE_ROOT/PWGCF -I$ALICE_ROOT/PWG/FLOW/Tasks -g");
  
  //TString mySE=" ALICE::CERN::SE";
  //gSystem->Setenv("alien_CLOSE_SE",mySE.Data());
  //Use AliRoot includes to compile our task
  //gROOT->ProcessLine(".include $ALICE_ROOT/include");
  //gROOT->ProcessLine(".include $PWD/.");
    
  // Seeting for analysis run
  TString      analysisMode = "grid"; // "local", "grid", or "proof"
  TString        pluginmode = "terminate"; // full terminate or test mode
  Bool_t     useAlienPlugin =  kTRUE;
  TString         inputMode = "list"; // "list", "xml", or "dataset"
  Long64_t         nentries =  123567890,  firstentry=0;
  TString testfileslistWithPlugin = "/Users/varmaraghava/Greeshma_Analysis/MECheck/filesAOD.txt";
    
  // Setting the AddTaskOptions but NOT Used for the moment
  Bool_t             readMC =  kFALSE; // DATA or MC data set ON<->OFF
  Bool_t              genMC =  kFALSE; // MC Generation ON<->OFF
  Bool_t             tracks =  kTRUE; // DATA or MC Reco ON<->OFF
  Bool_t             mixing =  kFALSE; // Event Mixing ON<->OFF
  Bool_t           trackEff =  kTRUE; //  track eff ON<->OFF
  Bool_t               Cent =  kFALSE; //system kTRUE means pA/PbPb
  
  
  if(analysisMode=="grid") {
    TGrid::Connect("alien://");
  } 
  
  // AliRoot libraries
  if(analysisMode=="local" || analysisMode=="grid") {
    TString loadLibraries="./LoadLibraries.C"; //loadLibraries.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(loadLibraries.Data());
    LoadLibraries();
  }
  
   
  // Create Alien plugin, if requested 
  // Prepare input
  TChain *chainAOD = 0;  
  if(useAlienPlugin) {  
    //if(analysisMode!="grid") {printf("Analysis mode must be grid, to use alien plugin\n"); return;}
    AliAnalysisGrid *alienHandler = CreateAlienHandler(pluginmode,testfileslistWithPlugin.Data());
    if(!alienHandler) return;
  }  else{
    TString makeAODInputChain="../MakeAODInputChain.C"; makeAODInputChain.Prepend(loadMacroPath.Data());
    if(inputMode=="list") {
      // Local files
      gROOT->LoadMacro(makeAODInputChain.Data());
      chainAOD = MakeAODInputChain();// with this it reads ./AliAOD.root and ./AliAOD.VertexingHF.root
      printf("ENTRIES %d\n",chainAOD->GetEntries());
    } else if(inputMode=="xml") {
      // xml
      gROOT->LoadMacro(makeAODInputChain.Data());
      chainAOD = MakeAODInputChain("collection_aod.xml","collection_aodHF.xml");
    } 
  }
  
    
  // Create the analysis manager
  AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager","My Manager");
  mgr->SetDebugLevel(10);
  if(useAlienPlugin) mgr->SetGridHandler(alienHandler);
  
  // Input
  AliAODInputHandler *inputHandler = new AliAODInputHandler("handler","handler for Di-Jets Correlatiosn");
  mgr->SetInputEventHandler(inputHandler);
  

  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
  gROOT->LoadMacro("AliAnalysisTaskDiJetCorrelations.cxx++g");   
  gROOT->LoadMacro("AddTaskDiJetCorrelations.C");
  AliAnalysisTaskDiJetCorrelations *taskSE1  = AddTaskDiJetCorrelations("SE", kFALSE, kTRUE, 12.0, 16.0, 5.0, 8.0);
  AliAnalysisTaskDiJetCorrelations *taskME1  = AddTaskDiJetCorrelations("ME", kTRUE,  kTRUE, 12.0, 16.0, 5.0, 8.0);

  //AliAnalysisTaskDiJetCorrelations *taskSE3  = AddTaskDiJetCorrelations("SE_3", kFALSE, kTRUE, 12.0, 30.0, 5.0, 10.0);
  //AliAnalysisTaskDiJetCorrelations *taskME4  = AddTaskDiJetCorrelations("ME_4", kTRUE,  kTRUE, 12.0, 30.0, 5.0, 10.0);

  // Run the analysis   
  if(chainAOD) printf("CHAIN HAS %d ENTRIES\n",(Int_t)chainAOD->GetEntries());
  
  if(!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
    
  
  if(analysisMode=="grid" && !useAlienPlugin) analysisMode="local";
 
  if(analysisMode!="proof") {
    mgr->StartAnalysis(analysisMode.Data(),chainAOD,nentries,firstentry);
  } else {
    mgr->StartAnalysis(analysisMode.Data(),dataset.Data(),nentries,firstentry);
  }
  
  return;
  
}

//___________________________________| Alien Handler function and plugin|______________________________________
AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test", TString testfileslistWithPlugin="")
{
  
  AliAnalysisAlien *plugin = new AliAnalysisAlien();
  // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
  plugin->SetRunMode(pluginmode.Data());
  plugin->SetUser("rvarma");
  // Set versions of used packages
  plugin->SetAPIVersion("V1.1x");
  plugin->SetROOTVersion("v5-34-08-6");
  plugin->SetAliROOTVersion("vAN-20140702");
  plugin->SetFileForTestMode(testfileslistWithPlugin.Data());
  plugin->SetNtestFiles(1); // if "test mode"
  
  
  //________________________Set data search pattern for DATA and MC
  //Method 1: To create automatically xml through plugin
  gROOT->LoadMacro("./AddGoodRuns.C");
  plugin->SetGridDataDir("/alice/data/2010/LHC10h/"); // specify LHC period
  plugin->SetDataPattern("*/AOD086/*/AliAOD.root"); // specify reco pass and AOD set
  Int_t totruns=0;
  totruns += AddGoodRuns(plugin,"LHC10h_Gir",""); // specify LHC period
  plugin->SetNrunsPerMaster(totruns);    
  
  plugin->SetGridWorkingDir("TEST/Dcorr/Dec8/");
  plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
  plugin->SetExecutable("AnalysisDiJetCorr.sh");
  plugin->SetAnalysisSource("AliAnalysisTaskDiJetCorrelations.cxx");

  // Declare all addtional libraries  here.  
  plugin->SetAdditionalLibs("AliAnalysisTaskDiJetCorrelations.h AliAnalysisTaskDiJetCorrelations.cxx libCORRFW.so libEMCALUtils.so libJETAN.so THnEfficiency.root"); 
  plugin->AddIncludePath("-I. -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/CORRFW -I$ALICE_ROOT/EMCAL -I$ALICE_ROOT/JETAN -I$ALICE_ROOT/PWG4");

  plugin->SetDefaultOutputs(kTRUE);
  plugin->SetSplitMaxInputFileNumber(10);
  
  // merging via jdl
  plugin->SetMergeViaJDL(kTRUE);
  plugin->SetOneStageMerging(kFALSE);
  plugin->SetMaxMergeStages(2);
  plugin->SetMaxMergeFiles(10);
  plugin->SetTTL(70000);
  plugin->SetKeepLogs();
  plugin->SetAnalysisMacro("AnalysisDiJetCorr.C");
  plugin->SetJDLName("DiJetCorr.jdl");
  
  return plugin;

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