ROOT logo
// runEMCalJetAnalysis.C
// =====================
// This macro can be used to run a jet analysis within the EMCal Jet Framework.
//
// Examples:
// -> Analyze ESDs from the pA pilot run on the AliEn grid with your task in AnaClass.cxx/.h
//     dataType = "ESD", useGrid = kTRUE, pattern = "*ESDs/pass2/*ESDs.root", addCXXs = "AnaClass.cxx", 
//     addHs = "AnaClass.h", gridDir = "/alice/data/2012/LHC12g", gridMode = "full", runNumbers = "188359 188362"
//     
// -> Analyze AODs (up to 96 files) locally given in files_aod.txt
//     dataType = "AOD", useGrid = kFALSE, numLocalFiles = 96
//
// MERGING ON ALIEN
// ++++++++++++++++
// If you run on the grid, you can monitor the jobs with alimonitor.cern.ch. When enough of them are in DONE state,
// you have to merge the output. This can be done automatically, if you just change the gridMode to "terminate" and
// give the EXACT name of the task whose output should be merged in uniqueName.
// 
//
// Authors: R. Haake, S. Aiola

#include <ctime>
#include "TGrid.h"

AliAnalysisGrid* CreateAlienHandler(const char* uniqueName, const char* gridDir, const char* gridMode, const char* runNumbers, 
                                     const char* pattern, TString additionalCode, TString additionalHeaders, Int_t maxFilesPerWorker, 
                                     Int_t workerTTL, Bool_t isMC);
                                    
//______________________________________________________________________________
void runEMCalJetAnalysis(
         Bool_t         useGrid             = kTRUE,                      // local or grid
         const char*    gridMode            = "test",                      // set the grid run mode (can be "full", "test", "offline", "submit" or "terminate")
         const char*    dataType            = "AOD",                       // set the analysis type, AOD, ESD or sESD
         const char*    pattern             = "*ESDs/pass2/AOD145/*AOD.root",    // file pattern (here one can specify subdirs like passX etc.) (used on grid)
         const char*    gridDir             = "/alice/data/2011/LHC11h_2",   // dir on alien, where the files live (used on grid)
         const char*    runNumbers          = "167903 167915",             // considered run numbers (used on grid)
         UInt_t         numLocalFiles       = 50,                          // number of files analyzed locally  
         const char*    runPeriod           = "LHC11h",                    // set the run period (used on grid)
         const char*    uniqueName          = "EMCalJF_LEGOTrainTest",     // sets base string for the name of the train on the grid
         UInt_t         pSel                = AliVEvent::kAny,             // used event selection for every task
         Bool_t         useTender           = kTRUE,                       // trigger, if tender, track and cluster selection should be used (always)
         Bool_t         isMC                = kFALSE,                      // trigger, if MC handler should be used
         Bool_t         doBkg               = kTRUE,
         // Here you have to specify additional code files you want to use but that are not in aliroot
         const char*    addCXXs             = "",
         const char*    addHs               = "",

         // These two settings depend on the dataset and your quotas on the AliEN services
         Int_t          maxFilesPerWorker   = 4,
         Int_t          workerTTL           = 7200

         )
{

  // Some pre-settings and constants
  enum AlgoType {kKT, kANTIKT};
  enum JetType  {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
  gSystem->SetFPEMask();
  gSystem->Setenv("ETRAIN_ROOT", ".");
  gSystem->Setenv("ETRAIN_PERIOD", runPeriod);
  // change this objects to strings
  TString usedData(dataType);
  TString additionalCXXs(addCXXs);
  TString additionalHs(addHs);
  cout << dataType << " analysis chosen" << endl;
  if (useGrid)  
  {
    cout << "-- using AliEn grid.\n";
    if (usedData == "sESD") 
    {
      cout << "Skimmed ESD analysis not available on the grid!" << endl;
      return;
    }
  }
  else
    cout << "-- using local analysis.\n";
  

  // Load necessary libraries
  LoadLibs();

  // Create analysis manager
  AliAnalysisManager* mgr = new AliAnalysisManager(uniqueName);

  // Check type of input and create handler for it
  TString localFiles("-1");
  if(usedData == "AOD")
  {
    localFiles = "files_aod.txt";
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddAODHandler.C");
    AliAODInputHandler* aodH = AddAODHandler();
  }
  else if((usedData == "ESD") || (usedData == "sESD"))
  {
    if (usedData == "ESD")
      localFiles = "files_esd.txt";
    else
      localFiles = "files_sesd.txt";
    
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/train/AddESDHandler.C");
    AliESDInputHandler* esdH = AddESDHandler();
  }
  else
  {
    cout << "Data type not recognized! You have to specify ESD, AOD, or sESD!\n";
  }

  if(!useGrid)
    cout << "Using " << localFiles.Data() << " as input file list.\n";

  // Create MC handler, if MC is demanded
  if (isMC && (usedData != "AOD"))
  {
    AliMCEventHandler* mcH = new AliMCEventHandler();
    mcH->SetPreReadMode(AliMCEventHandler::kLmPreRead);
    mcH->SetReadTR(kTRUE);
    mgr->SetMCtruthEventHandler(mcH); 
  }
  
  // ################# Now: Add some basic tasks

  // Physics selection task
  if(!isMC) {
    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPhysicsSelection.C");
    AliPhysicsSelectionTask *physSelTask = AddTaskEmcalPhysicsSelection(kTRUE, kTRUE, pSel, 5, 5, 10, kTRUE, -1, -1, -1, -1);
    if (!physSelTask) {
      cout << "no physSelTask but running on data" << endl; 
      return; 
    }
  }

  // Centrality task
  if (usedData == "ESD") {
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
    AliCentralitySelectionTask *centralityTask = AddTaskCentrality(kTRUE);
  }

  // Compatibility task, only needed for skimmed ESD
  if (usedData == "sESD") {
    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalCompat.C");
    AliEmcalCompatTask *comptask = AddTaskEmcalCompat();
  }

  // Setup task
  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalSetup.C");
  AliEmcalSetupTask *setupTask = AddTaskEmcalSetup();
  setupTask->SetGeoPath("$ALICE_ROOT/OADB/EMCAL");
  
  // Tender Supplies
  if (useTender) {
    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPreparation.C");
    //adjust pass when running locally. On grid give empty string, will be picked up automatically from path to ESD/AOD file
    AliAnalysisTaskSE *clusm = AddTaskEmcalPreparation(runPeriod,"pass1"); 
  }

  // Names of the different objects passed around; these are the default names; added here mostly for documentation purposes
  // rhoName is only set if the background calculation is switched on (doBkg)
  TString tracksName = "PicoTracks";
  TString clustersName = "EmcCaloClusters";
  TString clustersCorrName = "CaloClustersCorr";
  TString rhoName = "";

  // ################# Now: Call jet preparation macro (picotracks, hadronic corrected caloclusters, ...) 
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskJetPreparation.C");
  TString particlesMCName = "";
  if(isMC) particlesMCName = "MCParticlesSelected";
  AddTaskJetPreparation(runPeriod, tracksName, particlesMCName.Data(), clustersName, clustersCorrName);

  // ################# Now: Add jet finders+analyzers
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
  AliEmcalJetTask* jetFinderTask = AddTaskEmcalJet(tracksName, clustersCorrName, kANTIKT, 0.2, kCHARGEDJETS, 0.150, 0.300);

  if (doBkg) {
    rhoName = "Rho";
    AliEmcalJetTask* jetFinderTaskKT = AddTaskEmcalJet(tracksName, clustersCorrName, kKT, 0.2, kCHARGEDJETS, 0.150, 0.300);

    TString kTpcKtJetsName = jetFinderTaskKT->GetName();
    gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
    rhotask = (AliAnalysisTaskRho*) AddTaskRho(kTpcKtJetsName, tracksName, clustersCorrName, rhoName, 0.2, "TPC", 0.01, 0, 0, 2, kTRUE);
    //rhotask__->SetScaleFunction(sfunc);
    //rhotask->SelectCollisionCandidates(kPhysSel);
    rhotask->SetHistoBins(100,0,250);
  }
  // Here you can put in your AddTaskMacro for your task
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetSample.C");
  AliAnalysisTaskEmcalJetSample* anaTask = 0;
  AddTaskEmcalJetSample(tracksName, clustersCorrName, jetFinderTask->GetName(), rhoName, 4);

  // Set the physics selection for all given tasks
  TObjArray *toptasks = mgr->GetTasks();
  for (Int_t i=0; i<toptasks->GetEntries(); ++i) 
  {
    AliAnalysisTaskSE *task = dynamic_cast<AliAnalysisTaskSE*>(toptasks->At(i));
    if (!task)
      continue;
    if (task->InheritsFrom("AliPhysicsSelectionTask"))
      continue;
    ::Info("setPSel", "Set physics selection for %s (%s)", task->GetName(), task->ClassName());
    task->SelectCollisionCandidates(pSel);
  }

  mgr->SetUseProgressBar(1, 25);
        
  if (!mgr->InitAnalysis()) 
    return;
  mgr->PrintStatus();

  if (useGrid) 
  {  // GRID CALCULATION

    AliAnalysisGrid *plugin = CreateAlienHandler(uniqueName, gridDir, gridMode, runNumbers, pattern, additionalCXXs, additionalHs, maxFilesPerWorker, workerTTL, isMC);
    mgr->SetGridHandler(plugin);

    // start analysis
    cout << "Starting GRID Analysis...";
    mgr->SetDebugLevel(0);
    mgr->StartAnalysis("grid");
  }
  else
  {  // LOCAL CALCULATION

    TChain* chain = 0;
    if (usedData == "AOD") 
    {
      gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/CreateAODChain.C");
      chain = CreateAODChain(localFiles.Data(), numLocalFiles);
    }
    else
    {  // ESD or skimmed ESD
      gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/CreateESDChain.C");
      chain = CreateESDChain(localFiles.Data(), numLocalFiles);
    }
    
    // start analysis
    cout << "Starting LOCAL Analysis...";
    mgr->SetDebugLevel(2);
    mgr->StartAnalysis("local", chain);
  }
}

//______________________________________________________________________________
void LoadLibs()
{
  // Load common libraries (better too many than too few)
  gSystem->Load("libTree");
  gSystem->Load("libVMC");
  gSystem->Load("libGeom");
  gSystem->Load("libGui");
  gSystem->Load("libXMLParser");
  gSystem->Load("libMinuit");
  gSystem->Load("libMinuit2");
  gSystem->Load("libProof");
  gSystem->Load("libPhysics");
  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libAOD");
  gSystem->Load("libOADB");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libCDB");
  gSystem->Load("libRAWDatabase");
  gSystem->Load("libSTEER");
  gSystem->Load("libEVGEN");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");
  gSystem->Load("libTOFbase");
  //gSystem->Load("libTOFrec");
  gSystem->Load("libRAWDatabase.so");
  gSystem->Load("libRAWDatarec.so");
  gSystem->Load("libTPCbase.so");
  gSystem->Load("libTPCrec.so");
  gSystem->Load("libITSbase.so");
  gSystem->Load("libITSrec.so");
  gSystem->Load("libTRDbase.so");
  gSystem->Load("libTENDER.so");
  gSystem->Load("libSTAT.so");
  gSystem->Load("libTRDrec.so");
  gSystem->Load("libHMPIDbase.so");
  gSystem->Load("libPWGPP.so");
  gSystem->Load("libPWGHFbase");
  gSystem->Load("libPWGDQdielectron");
  gSystem->Load("libPWGHFhfe");
  gSystem->Load("libEMCALUtils");
  gSystem->Load("libPHOSUtils");
  gSystem->Load("libPWGCaloTrackCorrBase");
  gSystem->Load("libEMCALraw");
  gSystem->Load("libEMCALbase");
  gSystem->Load("libEMCALrec");
  gSystem->Load("libTRDbase");
  gSystem->Load("libVZERObase");
  gSystem->Load("libVZEROrec");
  gSystem->Load("libTENDER");
  gSystem->Load("libTENDERSupplies");
  gSystem->Load("libPWGTools");
  gSystem->Load("libPWGEMCAL");
  gSystem->Load("libESDfilter");
  gSystem->Load("libPWGGAEMCALTasks");
  gSystem->Load("libPWGCFCorrelationsBase");
  gSystem->Load("libPWGCFCorrelationsDPhi");

  //load CGAL, Fastjet and SISCone
  gSystem->Load("libCGAL");
  gSystem->Load("libfastjet");
    //For FastJet 3.x use siscon*,fastjetplugins for 2.x use SISConePlugin
  //  gSystem->Load("libSISConePlugin");
  // gSystem->Load("libCDFConesPlugin");
  gSystem->Load("libsiscone");
  gSystem->Load("libsiscone_spherical");
  gSystem->Load("libfastjetplugins");
  gSystem->Load("libfastjettools");
  gSystem->Load("libfastjetcontribfragile");
  //
  gSystem->Load("libJETAN");
//  gSystem->Load("libFASTJETAN");
  gSystem->Load("libPWGJEEMCALJetTasks");


  // include paths
  gSystem->AddIncludePath("-Wno-deprecated");
  gSystem->AddIncludePath("-I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/EMCAL");
  gSystem->AddIncludePath("-I$ALICE_ROOT/PWGDQ/dielectron -I$ALICE_ROOT/PWGHF/hfe");
  gSystem->AddIncludePath("-I$ALICE_ROOT/JETAN -I$ALICE_ROOT/JETAN/fastjet");
}

AliAnalysisGrid* CreateAlienHandler(const char* uniqueName, const char* gridDir, const char* gridMode, const char* runNumbers, 
                                     const char* pattern, TString additionalCode, TString additionalHeaders, Int_t maxFilesPerWorker, 
                                     Int_t workerTTL, Bool_t isMC)
{
  TDatime currentTime;
  TString tmpName(uniqueName);

  // Only add current date and time when not in terminate mode! In this case the exact name has to be supplied by the user
  if(strcmp(gridMode, "terminate"))
  {
    tmpName += "_";
    tmpName += currentTime.GetDate();
    tmpName += "_";
    tmpName += currentTime.GetTime();
  }

  TString tmpAdditionalLibs("");
  tmpAdditionalLibs = Form("libTree.so libVMC.so libGeom.so libGui.so libXMLParser.so libMinuit.so libMinuit2.so libProof.so libPhysics.so libSTEERBase.so libESD.so libAOD.so libOADB.so libANALYSIS.so libCDB.so libRAWDatabase.so libSTEER.so libANALYSISalice.so libCORRFW.so libTOFbase.so libRAWDatabase.so libRAWDatarec.so libTPCbase.so libTPCrec.so libITSbase.so libITSrec.so libTRDbase.so libTENDER.so libSTAT.so libTRDrec.so libHMPIDbase.so libPWGPP.so libPWGHFbase.so libPWGDQdielectron.so libPWGHFhfe.so libEMCALUtils.so libPHOSUtils.so libPWGCaloTrackCorrBase.so libEMCALraw.so libEMCALbase.so libEMCALrec.so libTRDbase.so libVZERObase.so libVZEROrec.so libTENDER.so libTENDERSupplies.so libESDfilter.so libPWGTools.so libPWGEMCAL.so libPWGGAEMCALTasks.so libPWGCFCorrelationsBase.so libPWGCFCorrelationsDPhi.so  libCGAL.so libJETAN.so libfastjet.so libsiscone.so libsiscone_spherical.so libfastjetplugins.so libfastjettools.so libfastjetcontribfragile.so libPWGJE.so libPWGmuon.so libPWGJEEMCALJetTasks.so %s %s",additionalCode.Data(),additionalHeaders.Data());


  TString macroName("");
  TString execName("");
  TString jdlName("");
  macroName = Form("%s.C", tmpName.Data());
  execName = Form("%s.sh", tmpName.Data());
  jdlName = Form("%s.jdl", tmpName.Data());

  AliAnalysisAlien *plugin = new AliAnalysisAlien();
  plugin->SetOverwriteMode();
  plugin->SetRunMode(gridMode);
     
  // Here you can set the (Ali)ROOT version you want to use
  plugin->SetAPIVersion("V1.1x");
  plugin->SetROOTVersion("v5-34-08-6");
  plugin->SetAliROOTVersion("vAN-20140525");

  plugin->SetGridDataDir(gridDir); // e.g. "/alice/sim/LHC10a6"
  plugin->SetDataPattern(pattern); //dir structure in run directory
  if (!isMC)
   plugin->SetRunPrefix("000");

  plugin->AddRunList(runNumbers);

  plugin->SetGridWorkingDir(Form("work/%s",tmpName.Data()));
  plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output

  plugin->SetAnalysisSource(additionalCode.Data());
  plugin->SetAdditionalLibs(tmpAdditionalLibs.Data());
  plugin->AddExternalPackage("boost::v1_43_0");
  plugin->AddExternalPackage("cgal::v3.6");
  plugin->AddExternalPackage("fastjet::v2.4.2");

  plugin->SetDefaultOutputs(kTRUE);
  //plugin->SetMergeExcludes("");
  plugin->SetAnalysisMacro(macroName.Data());
  plugin->SetSplitMaxInputFileNumber(maxFilesPerWorker);
  plugin->SetExecutable(execName.Data());
  plugin->SetTTL(workerTTL);
  plugin->SetInputFormat("xml-single");
  plugin->SetJDLName(jdlName.Data());
  plugin->SetPrice(1);      
  plugin->SetSplitMode("se");

  return plugin;
}
 runEMCalJetAnalysis.C:1
 runEMCalJetAnalysis.C:2
 runEMCalJetAnalysis.C:3
 runEMCalJetAnalysis.C:4
 runEMCalJetAnalysis.C:5
 runEMCalJetAnalysis.C:6
 runEMCalJetAnalysis.C:7
 runEMCalJetAnalysis.C:8
 runEMCalJetAnalysis.C:9
 runEMCalJetAnalysis.C:10
 runEMCalJetAnalysis.C:11
 runEMCalJetAnalysis.C:12
 runEMCalJetAnalysis.C:13
 runEMCalJetAnalysis.C:14
 runEMCalJetAnalysis.C:15
 runEMCalJetAnalysis.C:16
 runEMCalJetAnalysis.C:17
 runEMCalJetAnalysis.C:18
 runEMCalJetAnalysis.C:19
 runEMCalJetAnalysis.C:20
 runEMCalJetAnalysis.C:21
 runEMCalJetAnalysis.C:22
 runEMCalJetAnalysis.C:23
 runEMCalJetAnalysis.C:24
 runEMCalJetAnalysis.C:25
 runEMCalJetAnalysis.C:26
 runEMCalJetAnalysis.C:27
 runEMCalJetAnalysis.C:28
 runEMCalJetAnalysis.C:29
 runEMCalJetAnalysis.C:30
 runEMCalJetAnalysis.C:31
 runEMCalJetAnalysis.C:32
 runEMCalJetAnalysis.C:33
 runEMCalJetAnalysis.C:34
 runEMCalJetAnalysis.C:35
 runEMCalJetAnalysis.C:36
 runEMCalJetAnalysis.C:37
 runEMCalJetAnalysis.C:38
 runEMCalJetAnalysis.C:39
 runEMCalJetAnalysis.C:40
 runEMCalJetAnalysis.C:41
 runEMCalJetAnalysis.C:42
 runEMCalJetAnalysis.C:43
 runEMCalJetAnalysis.C:44
 runEMCalJetAnalysis.C:45
 runEMCalJetAnalysis.C:46
 runEMCalJetAnalysis.C:47
 runEMCalJetAnalysis.C:48
 runEMCalJetAnalysis.C:49
 runEMCalJetAnalysis.C:50
 runEMCalJetAnalysis.C:51
 runEMCalJetAnalysis.C:52
 runEMCalJetAnalysis.C:53
 runEMCalJetAnalysis.C:54
 runEMCalJetAnalysis.C:55
 runEMCalJetAnalysis.C:56
 runEMCalJetAnalysis.C:57
 runEMCalJetAnalysis.C:58
 runEMCalJetAnalysis.C:59
 runEMCalJetAnalysis.C:60
 runEMCalJetAnalysis.C:61
 runEMCalJetAnalysis.C:62
 runEMCalJetAnalysis.C:63
 runEMCalJetAnalysis.C:64
 runEMCalJetAnalysis.C:65
 runEMCalJetAnalysis.C:66
 runEMCalJetAnalysis.C:67
 runEMCalJetAnalysis.C:68
 runEMCalJetAnalysis.C:69
 runEMCalJetAnalysis.C:70
 runEMCalJetAnalysis.C:71
 runEMCalJetAnalysis.C:72
 runEMCalJetAnalysis.C:73
 runEMCalJetAnalysis.C:74
 runEMCalJetAnalysis.C:75
 runEMCalJetAnalysis.C:76
 runEMCalJetAnalysis.C:77
 runEMCalJetAnalysis.C:78
 runEMCalJetAnalysis.C:79
 runEMCalJetAnalysis.C:80
 runEMCalJetAnalysis.C:81
 runEMCalJetAnalysis.C:82
 runEMCalJetAnalysis.C:83
 runEMCalJetAnalysis.C:84
 runEMCalJetAnalysis.C:85
 runEMCalJetAnalysis.C:86
 runEMCalJetAnalysis.C:87
 runEMCalJetAnalysis.C:88
 runEMCalJetAnalysis.C:89
 runEMCalJetAnalysis.C:90
 runEMCalJetAnalysis.C:91
 runEMCalJetAnalysis.C:92
 runEMCalJetAnalysis.C:93
 runEMCalJetAnalysis.C:94
 runEMCalJetAnalysis.C:95
 runEMCalJetAnalysis.C:96
 runEMCalJetAnalysis.C:97
 runEMCalJetAnalysis.C:98
 runEMCalJetAnalysis.C:99
 runEMCalJetAnalysis.C:100
 runEMCalJetAnalysis.C:101
 runEMCalJetAnalysis.C:102
 runEMCalJetAnalysis.C:103
 runEMCalJetAnalysis.C:104
 runEMCalJetAnalysis.C:105
 runEMCalJetAnalysis.C:106
 runEMCalJetAnalysis.C:107
 runEMCalJetAnalysis.C:108
 runEMCalJetAnalysis.C:109
 runEMCalJetAnalysis.C:110
 runEMCalJetAnalysis.C:111
 runEMCalJetAnalysis.C:112
 runEMCalJetAnalysis.C:113
 runEMCalJetAnalysis.C:114
 runEMCalJetAnalysis.C:115
 runEMCalJetAnalysis.C:116
 runEMCalJetAnalysis.C:117
 runEMCalJetAnalysis.C:118
 runEMCalJetAnalysis.C:119
 runEMCalJetAnalysis.C:120
 runEMCalJetAnalysis.C:121
 runEMCalJetAnalysis.C:122
 runEMCalJetAnalysis.C:123
 runEMCalJetAnalysis.C:124
 runEMCalJetAnalysis.C:125
 runEMCalJetAnalysis.C:126
 runEMCalJetAnalysis.C:127
 runEMCalJetAnalysis.C:128
 runEMCalJetAnalysis.C:129
 runEMCalJetAnalysis.C:130
 runEMCalJetAnalysis.C:131
 runEMCalJetAnalysis.C:132
 runEMCalJetAnalysis.C:133
 runEMCalJetAnalysis.C:134
 runEMCalJetAnalysis.C:135
 runEMCalJetAnalysis.C:136
 runEMCalJetAnalysis.C:137
 runEMCalJetAnalysis.C:138
 runEMCalJetAnalysis.C:139
 runEMCalJetAnalysis.C:140
 runEMCalJetAnalysis.C:141
 runEMCalJetAnalysis.C:142
 runEMCalJetAnalysis.C:143
 runEMCalJetAnalysis.C:144
 runEMCalJetAnalysis.C:145
 runEMCalJetAnalysis.C:146
 runEMCalJetAnalysis.C:147
 runEMCalJetAnalysis.C:148
 runEMCalJetAnalysis.C:149
 runEMCalJetAnalysis.C:150
 runEMCalJetAnalysis.C:151
 runEMCalJetAnalysis.C:152
 runEMCalJetAnalysis.C:153
 runEMCalJetAnalysis.C:154
 runEMCalJetAnalysis.C:155
 runEMCalJetAnalysis.C:156
 runEMCalJetAnalysis.C:157
 runEMCalJetAnalysis.C:158
 runEMCalJetAnalysis.C:159
 runEMCalJetAnalysis.C:160
 runEMCalJetAnalysis.C:161
 runEMCalJetAnalysis.C:162
 runEMCalJetAnalysis.C:163
 runEMCalJetAnalysis.C:164
 runEMCalJetAnalysis.C:165
 runEMCalJetAnalysis.C:166
 runEMCalJetAnalysis.C:167
 runEMCalJetAnalysis.C:168
 runEMCalJetAnalysis.C:169
 runEMCalJetAnalysis.C:170
 runEMCalJetAnalysis.C:171
 runEMCalJetAnalysis.C:172
 runEMCalJetAnalysis.C:173
 runEMCalJetAnalysis.C:174
 runEMCalJetAnalysis.C:175
 runEMCalJetAnalysis.C:176
 runEMCalJetAnalysis.C:177
 runEMCalJetAnalysis.C:178
 runEMCalJetAnalysis.C:179
 runEMCalJetAnalysis.C:180
 runEMCalJetAnalysis.C:181
 runEMCalJetAnalysis.C:182
 runEMCalJetAnalysis.C:183
 runEMCalJetAnalysis.C:184
 runEMCalJetAnalysis.C:185
 runEMCalJetAnalysis.C:186
 runEMCalJetAnalysis.C:187
 runEMCalJetAnalysis.C:188
 runEMCalJetAnalysis.C:189
 runEMCalJetAnalysis.C:190
 runEMCalJetAnalysis.C:191
 runEMCalJetAnalysis.C:192
 runEMCalJetAnalysis.C:193
 runEMCalJetAnalysis.C:194
 runEMCalJetAnalysis.C:195
 runEMCalJetAnalysis.C:196
 runEMCalJetAnalysis.C:197
 runEMCalJetAnalysis.C:198
 runEMCalJetAnalysis.C:199
 runEMCalJetAnalysis.C:200
 runEMCalJetAnalysis.C:201
 runEMCalJetAnalysis.C:202
 runEMCalJetAnalysis.C:203
 runEMCalJetAnalysis.C:204
 runEMCalJetAnalysis.C:205
 runEMCalJetAnalysis.C:206
 runEMCalJetAnalysis.C:207
 runEMCalJetAnalysis.C:208
 runEMCalJetAnalysis.C:209
 runEMCalJetAnalysis.C:210
 runEMCalJetAnalysis.C:211
 runEMCalJetAnalysis.C:212
 runEMCalJetAnalysis.C:213
 runEMCalJetAnalysis.C:214
 runEMCalJetAnalysis.C:215
 runEMCalJetAnalysis.C:216
 runEMCalJetAnalysis.C:217
 runEMCalJetAnalysis.C:218
 runEMCalJetAnalysis.C:219
 runEMCalJetAnalysis.C:220
 runEMCalJetAnalysis.C:221
 runEMCalJetAnalysis.C:222
 runEMCalJetAnalysis.C:223
 runEMCalJetAnalysis.C:224
 runEMCalJetAnalysis.C:225
 runEMCalJetAnalysis.C:226
 runEMCalJetAnalysis.C:227
 runEMCalJetAnalysis.C:228
 runEMCalJetAnalysis.C:229
 runEMCalJetAnalysis.C:230
 runEMCalJetAnalysis.C:231
 runEMCalJetAnalysis.C:232
 runEMCalJetAnalysis.C:233
 runEMCalJetAnalysis.C:234
 runEMCalJetAnalysis.C:235
 runEMCalJetAnalysis.C:236
 runEMCalJetAnalysis.C:237
 runEMCalJetAnalysis.C:238
 runEMCalJetAnalysis.C:239
 runEMCalJetAnalysis.C:240
 runEMCalJetAnalysis.C:241
 runEMCalJetAnalysis.C:242
 runEMCalJetAnalysis.C:243
 runEMCalJetAnalysis.C:244
 runEMCalJetAnalysis.C:245
 runEMCalJetAnalysis.C:246
 runEMCalJetAnalysis.C:247
 runEMCalJetAnalysis.C:248
 runEMCalJetAnalysis.C:249
 runEMCalJetAnalysis.C:250
 runEMCalJetAnalysis.C:251
 runEMCalJetAnalysis.C:252
 runEMCalJetAnalysis.C:253
 runEMCalJetAnalysis.C:254
 runEMCalJetAnalysis.C:255
 runEMCalJetAnalysis.C:256
 runEMCalJetAnalysis.C:257
 runEMCalJetAnalysis.C:258
 runEMCalJetAnalysis.C:259
 runEMCalJetAnalysis.C:260
 runEMCalJetAnalysis.C:261
 runEMCalJetAnalysis.C:262
 runEMCalJetAnalysis.C:263
 runEMCalJetAnalysis.C:264
 runEMCalJetAnalysis.C:265
 runEMCalJetAnalysis.C:266
 runEMCalJetAnalysis.C:267
 runEMCalJetAnalysis.C:268
 runEMCalJetAnalysis.C:269
 runEMCalJetAnalysis.C:270
 runEMCalJetAnalysis.C:271
 runEMCalJetAnalysis.C:272
 runEMCalJetAnalysis.C:273
 runEMCalJetAnalysis.C:274
 runEMCalJetAnalysis.C:275
 runEMCalJetAnalysis.C:276
 runEMCalJetAnalysis.C:277
 runEMCalJetAnalysis.C:278
 runEMCalJetAnalysis.C:279
 runEMCalJetAnalysis.C:280
 runEMCalJetAnalysis.C:281
 runEMCalJetAnalysis.C:282
 runEMCalJetAnalysis.C:283
 runEMCalJetAnalysis.C:284
 runEMCalJetAnalysis.C:285
 runEMCalJetAnalysis.C:286
 runEMCalJetAnalysis.C:287
 runEMCalJetAnalysis.C:288
 runEMCalJetAnalysis.C:289
 runEMCalJetAnalysis.C:290
 runEMCalJetAnalysis.C:291
 runEMCalJetAnalysis.C:292
 runEMCalJetAnalysis.C:293
 runEMCalJetAnalysis.C:294
 runEMCalJetAnalysis.C:295
 runEMCalJetAnalysis.C:296
 runEMCalJetAnalysis.C:297
 runEMCalJetAnalysis.C:298
 runEMCalJetAnalysis.C:299
 runEMCalJetAnalysis.C:300
 runEMCalJetAnalysis.C:301
 runEMCalJetAnalysis.C:302
 runEMCalJetAnalysis.C:303
 runEMCalJetAnalysis.C:304
 runEMCalJetAnalysis.C:305
 runEMCalJetAnalysis.C:306
 runEMCalJetAnalysis.C:307
 runEMCalJetAnalysis.C:308
 runEMCalJetAnalysis.C:309
 runEMCalJetAnalysis.C:310
 runEMCalJetAnalysis.C:311
 runEMCalJetAnalysis.C:312
 runEMCalJetAnalysis.C:313
 runEMCalJetAnalysis.C:314
 runEMCalJetAnalysis.C:315
 runEMCalJetAnalysis.C:316
 runEMCalJetAnalysis.C:317
 runEMCalJetAnalysis.C:318
 runEMCalJetAnalysis.C:319
 runEMCalJetAnalysis.C:320
 runEMCalJetAnalysis.C:321
 runEMCalJetAnalysis.C:322
 runEMCalJetAnalysis.C:323
 runEMCalJetAnalysis.C:324
 runEMCalJetAnalysis.C:325
 runEMCalJetAnalysis.C:326
 runEMCalJetAnalysis.C:327
 runEMCalJetAnalysis.C:328
 runEMCalJetAnalysis.C:329
 runEMCalJetAnalysis.C:330
 runEMCalJetAnalysis.C:331
 runEMCalJetAnalysis.C:332
 runEMCalJetAnalysis.C:333
 runEMCalJetAnalysis.C:334
 runEMCalJetAnalysis.C:335
 runEMCalJetAnalysis.C:336
 runEMCalJetAnalysis.C:337
 runEMCalJetAnalysis.C:338
 runEMCalJetAnalysis.C:339
 runEMCalJetAnalysis.C:340
 runEMCalJetAnalysis.C:341
 runEMCalJetAnalysis.C:342
 runEMCalJetAnalysis.C:343
 runEMCalJetAnalysis.C:344
 runEMCalJetAnalysis.C:345
 runEMCalJetAnalysis.C:346
 runEMCalJetAnalysis.C:347
 runEMCalJetAnalysis.C:348
 runEMCalJetAnalysis.C:349
 runEMCalJetAnalysis.C:350
 runEMCalJetAnalysis.C:351
 runEMCalJetAnalysis.C:352
 runEMCalJetAnalysis.C:353
 runEMCalJetAnalysis.C:354
 runEMCalJetAnalysis.C:355
 runEMCalJetAnalysis.C:356
 runEMCalJetAnalysis.C:357
 runEMCalJetAnalysis.C:358
 runEMCalJetAnalysis.C:359
 runEMCalJetAnalysis.C:360
 runEMCalJetAnalysis.C:361
 runEMCalJetAnalysis.C:362
 runEMCalJetAnalysis.C:363
 runEMCalJetAnalysis.C:364
 runEMCalJetAnalysis.C:365
 runEMCalJetAnalysis.C:366
 runEMCalJetAnalysis.C:367
 runEMCalJetAnalysis.C:368
 runEMCalJetAnalysis.C:369
 runEMCalJetAnalysis.C:370
 runEMCalJetAnalysis.C:371
 runEMCalJetAnalysis.C:372
 runEMCalJetAnalysis.C:373
 runEMCalJetAnalysis.C:374
 runEMCalJetAnalysis.C:375
 runEMCalJetAnalysis.C:376
 runEMCalJetAnalysis.C:377
 runEMCalJetAnalysis.C:378
 runEMCalJetAnalysis.C:379
 runEMCalJetAnalysis.C:380
 runEMCalJetAnalysis.C:381
 runEMCalJetAnalysis.C:382
 runEMCalJetAnalysis.C:383
 runEMCalJetAnalysis.C:384
 runEMCalJetAnalysis.C:385
 runEMCalJetAnalysis.C:386
 runEMCalJetAnalysis.C:387
 runEMCalJetAnalysis.C:388
 runEMCalJetAnalysis.C:389