ROOT logo
//===================== ANALYSIS TRAIN =========================================
// To use: copy this macro to your work directory, modify the global part to match
// your needs, then run root.
//    root[0] .L AnalysisTrain.C
// Grid full mode as below (other modes: test, offline, submit, terminate)
//    root[1] AnalysisTrainPWG-244Jets("grid", "full")
// CAF mode (requires root v5-23-02 + aliroot v4-16-Rev08)
//    root[2] AnalysisTrainPWG4Jets("proof")
// Local mode requires AliESds.root or AliAOD.root in ./data directory
//    root[3] AnalysisTrainPWG4Jets("local")
// In proof and grid modes, a token is needed and sourcing the produced environment file.
//
// If 'saveTrain' flag is set, the train will generate a directory name and run
// in this directory. A configuration file 'ConfigTrain.C' will be generated. 
// One can replay at any time the train via:
//    root[1] AnalysisTrainPWG4Jets(ana_mode, plugin_mode, "train_default_<date>/ConfigTrain.C")

// For Usage with fastjet run in "offline" first and then "submit"
// jdl and analysismacro are automatically patched after "offline" mode

// =============================================================================
// ### General Steering variables
// =============================================================================
//== general setup variables
Int_t       iRunFlag = 0;
TString     kTrainName         = "testAnalysis"; // *CHANGE ME* (no blancs or special characters)
TString     kJobTag            = "PWGJE Jet Tasks analysis train configured"; // *CHANGE ME*

// Usage of par files ONLY in grid mode and ONLY if the code is not available
// in the deployed AliRoot versions. Par file search path: local dir, if not there $ALICE_ROOT.
// To refresh par files, remove the ones in the workdir, then do "make <target.par>" in 
// AliRoot.
Bool_t      kUsePAR             = kFALSE;  // use par files for extra libs
Bool_t      kUseCPAR            = kFALSE;  // use par files for common libs
Bool_t      kFillAOD = kTRUE;  // switch of AOD filling for on the fly analysis
Bool_t      kFilterAOD = kTRUE;
Float_t     kJetTriggerPtCut = 20; // pT for jet trigger in case of iFilter==2
Int_t       kSaveAOD = 8;        // Bit switch 1 = Full AOD 2 = Jet AOD , 4 = PartCorr, 8 = JCORRAN 
//== general input and output variables

Int_t       iAODanalysis       = 1;      // Analysis on input AOD's
Int_t       iFilterAnalysis       = 0;      // Analysis on input AOD's
Int_t       iAODhandler        = 1;      // Analysis produces an AOD or dAOD's
Int_t       iCentralitySelection  = 0;      // Use the centrality
Int_t       iESDfilter         = 1;      // ESD to AOD filter (barrel + muon tracks)
Int_t       iPhysicsSelection  = 1;      // ESD to AOD filter (barrel + muon tracks)
UInt_t      iPhysicsSelectionFlag = 1; // set by pyshics selection and passed to the task, kMB, kUserDefined etc
Bool_t      useTender           = kFALSE; // use tender wagon 
Bool_t      kUseKinefilter     = kFALSE; // use Kinematics filter
Bool_t      kUseMuonfilter     = kFALSE; // use Kinematics filter
TString     kCommonOutputFileName = "PWGJE_JetTasksOutput.root";
TString     kCaloQAOutputFileName = "PWGJE_CaloQAOutput.root";


//== general process variables

// ### Other flags to steer the analysis
//==============================================================================
Bool_t      kSkipTerminate      = kTRUE; // Do not call Teminate
Bool_t      kUseDate            = kFALSE; // use date in train name
Bool_t      kUseDebug           = kTRUE; // activate debugging
Int_t         kErrorIgnoreLevel = -1; // takes the errror print level from .rootrc 
// From TError.h:
// const Int_t kUnset    =  -1;
// const Int_t kPrint    =   0;
// const Int_t kInfo     =   1000;
// const Int_t kWarning  =   2000;
// const Int_t kError    =   3000;
// const Int_t kBreak    =   4000;
// const Int_t kSysError =   5000;
// const Int_t kFatal    =   6000; 
Int_t         kUseSysInfo         = 0; // activate debugging
Long64_t    kNumberOfEvents     = 1234567890; // Number of events to process from the chain
Bool_t      kUseMC              = kTRUE;  // use MC info
Bool_t      kIsMC               = kTRUE;  // is MC info, if false it overwrites Use(AOD)MC
Bool_t      kUseAODMC           = kTRUE;  // use MC infA
Bool_t      kUseESDTags         = kFALSE; // use ESD tags for selection
Bool_t      kUseTR              = kFALSE;  // use track references
Bool_t      kUseAODTags         = kFALSE;  // use AOD tags
Bool_t      kSaveTrain          = kFALSE;  // save train configuration as: 
Bool_t      kIsPbPb             = kFALSE;  // Pb+Pb


// ### Analysis modules to be included. Some may not be yet fully implemented.
//==============================================================================
Int_t       iJETAN             = 1;      // Jet analysis  // 1 write standard 2 write non-standard jets, 3 wrtie both
Int_t       iJETANReader       = 0;      // Jet analysis  // DEV
Int_t       iJETANFinder       = 0;      // Jet analysis  // DEV
Int_t       iJETSUBTRACT        = 1;      // Jet background subtration
TList       kJetListSpectrum;             // list of jets contains TObjString of possible jet finder names
TExMap      kJetMapSpectrum;             // Maps the jet finder pairs to be used in the spectrum task second number negative no pair other wise (j1+1) + (1000 * (j2+1)) +10000 * (j3+1)
TExMap      kJetBackMapSpectrum;             // Maps the jet finder pairs with the background branch used, just for countint of trackrefs
Int_t       kJetMapOffset[3] = {10000,100,1};
TString     kDefaultJetBranch     = "";      // is currently set when filled (iJETAN or clusters) or from config macro 
TString     kDefaultJetBackgroundBranch            = "";      // is currently set when filled (jet clsuters  
TString     kDefaultJetBackgroundBranchCut1        = "";      // is currently set when filled (jet clsuters  
TString     kDefaultJetBackgroundBranchCut2        = "";      // is currently set when filled (jet clsuters  
TString     kDefaultJetBackgroundBranch_extra     = "";      // is currently set when filled (jet clsuters) 
TString     kJetSubtractBranches     = "";      // is currently set when filled (jet clsuters  
TString     kJetSubtractBranchesCut1     = "";      // is currently set when filled (jet clsuters  
TString     kJetSubtractBranchesCut2     = "";      // is currently set when filled (jet clsuters  
TString     kJetSubtractBranches_extra     = "";      // is currently set when filled (jet clsuters  

TString     kDefaultJetBranchMC     = "";      // is currently set when filled (iJETAN or clusters) or from config macro 
TString     kDefaultJetBackgroundBranchMC     = "";      // is currently set when filled (jet clsuters  
TString     kDefaultJetBranchMC2     = "";      // is currently set when filled (iJETAN or clusters) or from config macro 
TString     kDefaultJetBackgroundBranchMC2     = "";      // is currently set when filled (jet clsuters  
TString     kJetSubtractMask1 = "B0";
TString     kJetSubtractMask2 = "B%d";
Int_t       iDIJETAN           = 1;
Int_t       iJETANLib          = 1;
Int_t       iJETANdevLib       = 0;
Int_t       iPWGPPQASym         = 0;      // Eva's QA task compiled on the fly...
Int_t       iPWG4FastEmbedding = 0;      // Generate non-standard AOD for embedding
Int_t       iPWG4JetTasks      = 0;      // all jet tasks flag for lib laoding
Int_t       iPWG4JetServices   = 0;      // jet spectrum analysis
Int_t       iPWG4JetSpectrum   = 0;      // jet spectrum analysis
Int_t       iPWG4JetResponse   = 0;      // jet response matrix
Int_t       iPWG4JCORRAN       = 0;      // JCORRAN module
Int_t       iPWG4UE            = 0;      // Underlying Event analysis
Int_t       iPWG4LeadingUE     = 0;      // Underlying Event analysis
Int_t       iPWG4CorrectionsUE = 0;      // Underlying Event analysis
Int_t       iPWG4TmpSourceSara = 0;      // Underlying Event analysis not in svn
Int_t       iPWG4Fragmentation = 1;      // Official Fragmentation
Int_t       iPWG4JetChem       = 0;      // Jet chemistry 
Int_t       iPWG4PtQAMC        = 0;      // Marta's QA tasks 
Int_t       iPWG4PtTrackQA     = 0;      // Marta's QA tasks  
Int_t       iPWG4PtSpectra     = 0;      // Marta's QA tasks 
Int_t       iPWG4PtQATPC       = 0;      // Marta's QA tasks 
Int_t       iPWG4Cosmics     = 0;      // Marta's Cosmics Taks 
Int_t       iPWG4ThreeJets     = 0;      // Sona's thrust task
Int_t       iPWG4QGSep     = 0;          // Sona's QG Separation task
Int_t       iPWG4Minijet       = 0;      // Eva's Mini Jet Task cluster task 
Int_t       iPWG4KMeans        = 0;      // Andreas' KMeans task 
Int_t       iPWG4Cluster       = 0;      // CKB cluster task 
Int_t       iEMCUtilLibs       = 0;      // Flag to satisfy dependence on EMC utils
Int_t       iPWG4PartCorrLibs  = 0;      // Gustavo's part corr analysis
Int_t       iPWG4PartCorr      = 0;      // Gustavo's part corr analysis
Int_t       iPWG4CaloQA        = 0;      // Gustavo's part corr analysis
Int_t       iPWG4JetCorr       = 0;     // Paul's jet corr analysis
Int_t       iPWG4Tagged        = 0;      // Gustavo's part corr analysis
Int_t       iPWG4omega3pi      = 0;      // Omega to 3 pi analysis (PWG4) 
Int_t       iPWG4GammaConvLib     = 0;      // Gamma Conversio
Int_t       iPWG4GammaConv     = 0;      // Gamma Conversio
Int_t       iPWG4CaloConv     = 0;      // Gamma Conversio
Int_t       kHighPtFilterMask  = 32;     // change depending on the used AOD Filter
TString     kDeltaAODJetName   = "AliAOD.Jets.root";     
TString     kDeltaAODJetNameInput   = "";     
TString     kDeltaAODJCORRANName   = "AliAOD.JCORRAN.root";     
TString     kDeltaAODPartCorrName   = "AliAOD.PartCorr.root";     
TString     kFastEmbeddingAOD  = "emb/AliAOD.root";
TString     kFastEmbAODList    = "";

//==============================================================================
// ### PROOF Steering varibales
//==============================================================================
//== proof setup variables
TString     kProofCluster      = "alicecaf.cern.ch";
Bool_t      kProofUseAFPAR     = kFALSE;  // use AF special par file
TString     kProofAFversion          = "AF-v4-17";
//== proof input and output variables
TString     kProofDataSet      = "/COMMON/COMMON/LHC09a4_run8100X#/esdTree";
Bool_t      kProofSaveToAlien   = kFALSE; // save proof outputs in AliEn train_[trainName]_ddMonthyyyy_time.C
TString     kProofOutdir       = "";
Bool_t      kProofClearPackages = kFALSE;
Int_t       kProofEvents = 10000;
Int_t       kProofOffset = 0;
//== proof process variables


//==============================================================================
// ### Grid plugin Steering varibiables
//==============================================================================
//== grid plugin setup variables
Bool_t      kPluginUse         = kTRUE;   // do not change
Bool_t      kPluginUseProductionMode  = kFALSE;   // use the plugin in production mode
TString     kPluginRootVersion       = "v5-30-02";  // *CHANGE ME IF MORE RECENT IN GRID*
TString     kPluginAliRootVersion    = "v4-21-01a-AN";  // *CHANGE ME IF MORE RECENT IN GRID*                                          
Bool_t      kPluginMergeViaJDL       = kTRUE;  // merge via JDL
Bool_t      kPluginFastReadOption   = kFALSE;  // use xrootd tweaks
Bool_t      kPluginOverwriteMode    = kTRUE;  // overwrite existing collections
Int_t       kPluginOutputToRunNumber = 1;     // write the output to subdirs named after run number
// TString kPluginExecutableCommand = "root -b -q";
TString     kPluginExecutableCommand = "source /Users/kleinb/setup_32bit_aliroot_trunk_clean_root_trunk.sh; alienroot -b -q ";

// == grid plugin input and output variables
TString     kGridDatadir      = "/alice/sim/PDC_08b/LHC09a1/AOD/";
Int_t         kGridMaxRunsFromList = 999999999;
Int_t         kGridOffsetRunFromList = 0; // skip the first n runs from the list
TString     kGridLocalRunList = "";
TString     kGridOutdir       = ""; // AliEn output directory. If blank will become output_<kTrainName>
TString     kGridDataSet      = ""; // sub working directory not to confuse different run xmls 
TString     kGridExtraAliendirLevel = ""; // sub working directory not to confuse different run xmls 
Int_t         kGridRunRange[2]       =  {0, -1}; // Set the run range
TString     kGridRunPattern        = "%03d"; // important for leading zeroes!!
TString     kGridPassPattern       = "";
TString     kGridExtraFiles        = ""; // files that will be added to the input list in the JDL...
Int_t         kGridMaxMergeFiles      = 25; // Number of files merged in a chunk grid run range
TString     kGridMergeExclude       = "AliAOD.root"; // Files that should not be merged
TString     kGridOutputStorages      = "disk=2"; // Make replicas on the storages
// == grid process variables
Int_t       kGridRunsPerMaster     = 100; // Number of runs per master job
Int_t       kGridFilesPerJob       = 100; // Maximum number of files per job (gives size of AOD)

//==============================================================================
// ### Local Steering variables
//==============================================================================
//== local setup variables
//== local input and output variables
TString     kLocalXMLDataset   = ""; // Change local xml dataset for local interactive analysis
TString     kLocalDataList   = "local_deltaaod.txt"; // Change local xml dataset for local interactive analysis
// == local process variables

TString kPluginMode = "";
TString kAnalysisMode = "";


// Temporaries.
TString anaPars = "";
TString anaLibs = "";
TString anaLibsExtra = "";
TString anaSources = "";
// Function signatures
class AliAnalysisAlien;
class AliAnalysisManager;

//______________________________________________________________________________
void AnalysisTrainPWGJets(const char *analysis_mode="local", 
			   const char *plugin_mode="",
			   const char *config_file="",Int_t iOffset = 0,Int_t iTotal = 0)
{
// Main analysis train macro. If a configuration file is provided, all parameters
// are taken from there but may be altered by CheckModuleFlags.

  // these flag may be needed by the config file
  kPluginMode   = plugin_mode;
  kAnalysisMode = analysis_mode;
  
  if (strlen(config_file) && !LoadConfig(config_file)) return;
  if(iTotal>0)kGridMaxRunsFromList = iTotal; // overwrites the settings from config file
  if(iOffset)kGridOffsetRunFromList = iOffset;
  if(iOffset)kProofOffset = iOffset;


   TString smode(analysis_mode);
   smode.ToUpper();
   if (kSaveTrain)WriteConfig();
   // Check compatibility of selected modules 
   CheckModuleFlags(smode);
   //     gROOT->ProcessLine(".trace");

   printf("==================================================================\n");
   printf("===========    RUNNING ANALYSIS TRAIN %s IN %s MODE   ==========\n", kTrainName.Data(),smode.Data());
   printf("==================================================================\n");
                              printf("=  Configuring analysis train for:                               =\n");
   if (iAODanalysis) printf("=  AOD analysis                                                  =\n");
   else                     printf("=  ESD analysis                                                  =\n");
   if (iPhysicsSelection)   printf("=  Physics selection                                                =\n");
   if(iCentralitySelection)printf("=  Centrality selection                                                =\n");
   if (useTender)   printf("=  Using tender                                                =\n");
   if (iESDfilter)   printf("=  ESD filter                                                    =\n");
   if (iJETAN)       printf("=  Jet analysis                                                  =\n");
   if (iJETANReader)       printf("=  Jet analysis Reader (DEV)                              =\n");
   if (iJETANFinder)       printf("=  Jet analysis Finder (DEV)                              =\n");
   printf("==================================================================\n");

   char *printMask = ":: %20s  %10d\n";
   printf(printMask,"Fill AOD",(UInt_t)kFillAOD);
   printf(printMask,"Save AOD", (UInt_t)kSaveAOD);
   printf(printMask,"MC truth", (UInt_t)kUseMC);
   printf(printMask,"KINE filter", (UInt_t)kUseKinefilter);
   printf(printMask,"track refs", (UInt_t)kUseTR);
   printf(printMask,"tags", (UInt_t)kUseESDTags);
   printf(printMask,"AOD tags", (UInt_t)kUseAODTags);
   printf(printMask,"debugging", (UInt_t)kUseDebug);
   printf(printMask,"PAR files", (UInt_t)kUsePAR);
   printf(printMask,"AliEn plugin", (UInt_t)kPluginUse);
   printf(printMask,"JETAN subtract", (UInt_t)iJETSUBTRACT);
   printf(printMask,"PWGPP QA sym", iPWGPPQASym);
   printf(printMask,"PWG4 Source Sara",iPWG4TmpSourceSara);
   printf(printMask,"PWG4 Fragmentation",iPWG4Fragmentation);
   printf(printMask,"PWG4 Jet Chem",iPWG4JetChem);
   printf(printMask,"PWG4 Jet tasks",iPWG4JetTasks);
   printf(printMask,"PWG4 Jet Services",iPWG4JetServices);     
   printf(printMask,"PWG4 Jet Spectrum",iPWG4JetSpectrum);
   printf(printMask,"PWG4 JCORRAN",iPWG4JCORRAN);
   printf(printMask,"PWG4 UE",iPWG4UE); 
   printf(printMask,"PWG4 Leading UE",iPWG4LeadingUE); 
   printf(printMask,"PWG4 Corrections UE",iPWG4CorrectionsUE); 
   printf(printMask,"PWG4 Pt QA MC",iPWG4PtQAMC);
   printf(printMask,"PWG4 Pt QA track",iPWG4PtTrackQA);
   printf(printMask,"PWG4 Pt Spectra",iPWG4PtSpectra);
   printf(printMask,"PWG4 Pt QA TPC",iPWG4PtQATPC);     
   printf(printMask,"PWG4 Cosmics",iPWG4Cosmics);     
   printf(printMask,"PWG4 Three Jets",iPWG4ThreeJets);
   printf(printMask,"PWG4 QGSep",iPWG4QGSep);
   printf(printMask,"PWG4 Minijet",iPWG4Minijet);
   printf(printMask,"PWG4 KMeans",iPWG4KMeans);
   printf(printMask,"PWG4 Cluster",iPWG4Cluster);
   printf(printMask,"PWG4 Part Corr",iPWG4PartCorr);
   printf(printMask,"PWG4 Calo QA",iPWG4CaloQA);
   printf(printMask,"PWG4 Jet Corr",iPWG4JetCorr);
   printf(printMask,"PWG4 JCORRAN",iPWG4JCORRAN);
   printf(printMask,"PWG4 Tagged",iPWG4Tagged);
   printf(printMask,"PWG4 omega to 3 pi ",iPWG4omega3pi);
   printf(printMask,"PWG4 Gamma Conv",iPWG4GammaConv);
   printf(printMask,"PWG4 Calo Conv",iPWG4CaloConv);
   printf(printMask,"HighPt FilterMask",kHighPtFilterMask);    
   
   //==========================================================================
   // Connect to back-end system
   if (!Connect(smode)) {
      ::Error("AnalysisTrain", "Could not connect to %s back-end", analysis_mode);
      return;
   }   

   // Load common libraries and set include path
   if (!LoadCommonLibraries(smode)) {
      ::Error("AnalysisTrain", "Could not load common libraries");
      return;
   }


   


   // Make the analysis manager and connect event handlers
   AliAnalysisManager *mgr  = new AliAnalysisManager("PWG4Train", "pwg4 mini train");
   if (kCommonOutputFileName.Length()>0)mgr->SetCommonFileName(kCommonOutputFileName.Data());
   if (kProofSaveToAlien) mgr->SetSpecialOutputLocation(kProofOutdir);
   mgr->SetNSysInfo(0);
   if (!strcmp(plugin_mode, "test")) mgr->SetNSysInfo(1);
   if (kUseSysInfo)mgr->SetNSysInfo(kUseSysInfo);
   mgr->SetSkipTerminate(kSkipTerminate);

   // Load analysis specific libraries
   if (!LoadAnalysisLibraries(smode)) {
      ::Error("AnalysisTrain", "Could not load analysis libraries");
     return;
   }   

   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/ConfigLegoTrainPWGJE.C");
   ConfigLegoTrainPWGJE(1008);
   // Create input handler (input container created automatically)
   if (iAODanalysis) {
   // AOD input handler
      AliAODInputHandler *aodH = new AliAODInputHandler();
      mgr->SetInputEventHandler(aodH);
      if (kDeltaAODJetNameInput.Length()){
	Printf("Adding Friend %s",kDeltaAODJetNameInput.Data());
	aodH->AddFriend(kDeltaAODJetNameInput.Data());
      }
      //      if (iPWG4PartCorr) aodH->AddFriend(Form("deltas/%s"kDeltaAODJetName.Data()));
   } else {   
   // ESD input handler
      AliESDInputHandler *esdHandler = new AliESDInputHandler();
      if (kUseESDTags) esdHandler->SetReadTags();
      esdHandler->SetReadFriends(kFALSE);
      mgr->SetInputEventHandler(esdHandler);       
      //      if(iPWG4PtQATPC&& !kTrainName.Contains("pass5"))esdHandler->SetActiveBranches("ESDfriend");

   }



   // Monte Carlo handler
   if (kUseMC && !iAODanalysis) {
      AliMCEventHandler* mcHandler = new AliMCEventHandler();
      mgr->SetMCtruthEventHandler(mcHandler);
      mcHandler->SetReadTR(kUseTR); 
   }   
   // AOD output container, created automatically when setting an AOD handler
   if (iAODhandler) {
      // AOD output handler
      AliAODHandler* aodHandler   = new AliAODHandler();
      aodHandler->SetOutputFileName("AliAOD.root");
      aodHandler->SetFillAODforRun(kFillAOD);
      //
      mgr->SetOutputEventHandler(aodHandler);
      AliAnalysisDataContainer * cout_aod = mgr->GetCommonOutputContainer();
      cout_aod->SetSpecialOutput();
   }
   // Debugging if needed

   if (kUseDebug){
     mgr->SetDebugLevel(3);
   }
   if(kUseSysInfo>0){
     mgr->RegisterExtraFile("syswatch.root");
     if(kGridMergeExclude.Length())kGridMergeExclude += " ";
     kGridMergeExclude += "syswatch.root";
   }
   else{
     AliLog::SetGlobalLogLevel(AliLog::kError);
   }


   //==========================================================================
   // Create the chain. In this example it is created only from ALIEN files but
   // can be done to work in batch or grid mode as well.
   TChain *chain = CreateChain(smode, plugin_mode);
        
   //==========================================================================
   // Load the tasks configuration macros for all wagons. These files are supposed now to be
   // in the current workdir, but in AliEn they will be in the file catalog, 
   // mapped from AliRoot and pecified in the jdl input list.
    
   // For now connection to top input container and common AOD output container
   // is done in this macro, but in future these containers will be connected
   // from each task configuration macro.
   
   //                                                                                                                              
   // Tender and supplies. Needs to be called for every event.                                                                     
   //                                                                                                                              

   if (useTender) {
      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/TenderSupplies/AddTaskTender.C");
      AliAnalysisTaskSE *tender = AddTaskTender(kTRUE);
      //      tender->SelectCollisionCandidates();                                                                                      
      tender->SetDebugLevel(2);
   }

   
   Float_t fTrackEtaWindow = 0.9;
   Float_t fJetEtaWindow   = 0.5;
   Float_t fVertexWindow =  10;
   /*
   if(kIsPbPb){// for pass1
     Float_t fTrackEtaWindow = 0.8;
     Float_t fJetEtaWindow   = 0.4;
   }
   */


   if(iPhysicsSelection && !iAODanalysis){
     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
     Int_t iTriggerHIC = 0;
     Bool_t rejectBkg = true;
     if(kIsPbPb){
       iTriggerHIC = 2;
       rejectBkg = false; // for the moment...
     }
     AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kIsMC,true,rejectBkg);  

     //     mgr->RegisterExtraFile("event_stat.root");
     mgr->AddStatisticsTask();
   }
   else{
     iPhysicsSelectionFlag = AliVEvent::kMB;
   }
   
   if(kIsPbPb&&!iAODanalysis){

     // has to run before AOD filter
     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
     AliCentralitySelectionTask *taskC = AddTaskCentrality();
      if (!taskC) ::Warning("AnalysisTrainPWG4Jets", "AliCentralitySelectionTask cannot run for this train conditions - EXCLUDED");


     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskEventplane.C");
     AliEPSelectionTask *taskEP = AddTaskEventplane();
     if (!taskEP) ::Warning("AnalysisTrainPWG4Jets", "AliEventplan cannot run for this train conditions - EXCLUDED");
   }
   
   if (iESDfilter && !iAODanalysis) {
      //  ESD filter task configuration.
      gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskESDFilterPWGJETrain.C");
      // switch on centrality make for PbPb
      AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilterPWGJETrain(kUseKinefilter); // carefull, if physics selection is enabled you may get not primary vertex pointer later on...
      taskesdfilter->SetEnableFillAOD(!kFilterAOD);
      taskesdfilter->DisableV0s();
      taskesdfilter->DisableCascades();
      taskesdfilter->DisableKinks();
      taskesdfilter->DisablePmdClusters();
      taskesdfilter->DisableCaloClusters();
      taskesdfilter->DisableCells();

      if(kIsMC){
	mgr->RegisterExtraFile("pyxsec_hists.root");
	if(kGridMergeExclude.Length())kGridMergeExclude += " ";
	kGridMergeExclude += "pyxsec_hists.root";

      }
   }   

   // AOD tags
   if (kUseAODTags) {
      AliAnalysisTaskTagCreator* tagTask = new AliAnalysisTaskTagCreator("AOD Tag Creator");
      mgr->AddTask(tagTask);
      AliAnalysisDataContainer *coutTags = mgr->CreateContainer("cTag",  TTree::Class(), 
                                           AliAnalysisManager::kOutputContainer, "AOD.tag.root");
      mgr->ConnectInput (tagTask, 0, mgr->GetCommonInputContainer());
      mgr->ConnectOutput(tagTask, 1, coutTags);
   }   

   if (iPWG4FastEmbedding) {
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskFastEmbedding.C");
     AliAnalysisTaskFastEmbedding *taskEmbedding = 0;
     if(kFastEmbAODList.Length()) taskEmbedding = AddTaskFastEmbedding(kFastEmbAODList, 1);
     else                         taskEmbedding = AddTaskFastEmbedding(kFastEmbeddingAOD, 0);
     taskEmbedding->SetJetBranch("jetsAOD_UA104_B0_Filter00256_Cut01000");
     // taskEmbedding->SetEvtSelecMode(AliAnalysisTaskFastEmbedding::kEventsAll);
     // taskEmbedding->SetDebugLevel(10);
   }

    // Jet analysis
   if (iJETAN) {
      gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJets.C");
      AliAnalysisTaskJets *taskjets = 0;
      if(iJETAN&1){
	/*
	taskjets = AddTaskJets(kHighPtFilterMask); 
	taskjets->SetName("StandardJets");
	taskjets->SetNonStdBranch("");
	*/
      }
      if(iJETAN&2){
	// Set only few jet finders  backgroudn subtraction w an wo 
	
	taskjets = AddTaskJets("AOD","UA1",0.4,kHighPtFilterMask,1.,0); // no background subtraction
	if(kDeltaAODJetName.Length()>0)taskjets->SetNonStdOutputFile(kDeltaAODJetName.Data());
	TString cTmp("");	
	cTmp = taskjets->GetNonStdBranch();
	if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));

	taskjets = AddTaskJets("AOD","UA1",0.4,kHighPtFilterMask,2.,0); // no background subtraction
	if(kDeltaAODJetName.Length()>0)taskjets->SetNonStdOutputFile(kDeltaAODJetName.Data());
	TString cTmp("");	
	cTmp = taskjets->GetNonStdBranch();
	if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));


	// STANDARD UA jet finders pT cut 1 GeV background mode 2 R = 0.4
	if(kIsPbPb){
	  taskjets = AddTaskJets("AOD","UA1",0.4,kHighPtFilterMask,1.,2); // background subtraction
	  if(kDeltaAODJetName.Length()>0)taskjets->SetNonStdOutputFile(kDeltaAODJetName.Data());
	  cTmp = taskjets->GetNonStdBranch();
	  if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	  taskjets = AddTaskJets("AOD","UA1",0.4,kHighPtFilterMask,2.,2); // background subtraction
	  if(kDeltaAODJetName.Length()>0)taskjets->SetNonStdOutputFile(kDeltaAODJetName.Data());
	  cTmp = taskjets->GetNonStdBranch();
	  if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	}



	// SICONE 
	/*
	taskjets = AddTaskJets("AOD","SISCONE",0.4,kHighPtFilterMask,0.15,0); //no background subtraction to be done later....
	if(kDeltaAODJetName.Length()>0)taskjets->SetNonStdOutputFile(kDeltaAODJetName.Data());
	cTmp = taskjets->GetNonStdBranch();
	if(cTmp.Length()>0)kJetSubtractBranches += Form("%s ",cTmp.Data());
	if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	*/
	if(kUseAODMC){
	  // STANDARD UA jet finders pT cut 1 GeV background mode 2 R = 0.4
	  if(kIsPbPb){
	    taskjets = AddTaskJets("AODMC","UA1",0.4,kHighPtFilterMask,1.,2); // background subtraction
	    cTmp = taskjets->GetNonStdBranch();
	    if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	    taskjets = AddTaskJets("AODMC2","UA1",0.4,kHighPtFilterMask,1.,2); // background subtraction
	    cTmp = taskjets->GetNonStdBranch();
	    if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	  }
	  else{
	    taskjets = AddTaskJets("AODMC","UA1",0.4,kHighPtFilterMask,1.,0); // no background subtraction
	    cTmp = taskjets->GetNonStdBranch();
	    if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	    taskjets = AddTaskJets("AODMC2","UA1",0.4,kHighPtFilterMask,1.,0); // no background subtraction
	    cTmp = taskjets->GetNonStdBranch();
	    if(cTmp.Length())kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	  }
	}
	if(kDeltaAODJetName.Length()>0)mgr->RegisterExtraFile(kDeltaAODJetName.Data()); 
      }
      if (!taskjets) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJets cannot run for this train conditions - EXCLUDED");
   }

   // Jet analysis DEV
   if (iJETANReader) {
      gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetsReader.C");
      AliAnalysisTaskJetsReader *taskjets = 0;
      
      if(iJETANReader&1) {
      AliAnalysisDataContainer* cont_jet1 = AddJetExchangeContainer("jets_1");
      taskjets = AddTaskJetsReader(cont_jet1,kHighPtFilterMask);
      } 
      
    if(iJETANReader&2) {
      AliAnalysisDataContainer* cont_jet1 = AddJetExchangeContainer("jets_1");
      taskjets = AddTaskJetsReader(cont_jet1,"AOD",kHighPtFilterMask,0.15); 
   
      
      AliAnalysisDataContainer* cont_jet2 = AddJetExchangeContainer("jets_2");
      taskjets = AddTaskJetsReader(cont_jet2,"AOD", kHighPtFilterMask,1.);
      
     }

      taskjets->GetJetReader()->GetReaderHeader()->SetIsHighMult(kIsPbPb); 
    
     
  if ( !taskjets ) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetsReader cannot run for this train conditions - EXCLUDED");

   }

   if (iJETANFinder && iJETANReader) {
      gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetsFinder.C");
      AliAnalysisTaskJetsFinder *taskjetsFinder = 0;
      
      if(iJETANFinder&1) {
      taskjetsFinder = AddTaskJetsFinder(cont_jet1);
      }
 
     if(iJETANFinder&2) {
      taskjetsFinder = AddTaskJetsFinder(cont_jet1,"UA1",0.4,0);     // UA1 no bkg subtraction (reader: jet_1)
      taskjetsFinder = AddTaskJetsFinder(cont_jet1,"FASTJET",0.4,1); // FASTJET B1             (reader: jet_1)
     
      taskjetsFinder = AddTaskJetsFinder(cont_jet2,"FASTJET",0.4,0); // FASTJET B0             (reader: jet_2)
     }

 if ( !taskjetsFinder || !taskjets ) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetsFinder cannot run for this train conditions - EXCLUDED"); 

   }

   if (iPWG4FastEmbedding && iJETAN) {
     AliAnalysisTaskJets *taskEmbJets = AddTaskJets("AODextra", "FASTJET", 0.4, kHighPtFilterMask);
     taskEmbJets->ReadAODFromOutput();
     kJetSubtractBranches_extra += Form("%s ", taskEmbJets->GetNonStdBranch());

     taskEmbJets = AddTaskJets("AODextraonly", "FASTJET", 0.4, kHighPtFilterMask);
     taskEmbJets->ReadAODFromOutput();
    
     taskEmbJets = AddTaskJets("AODextra", "UA1", 0.4, kHighPtFilterMask,1.,0);
     taskEmbJets->ReadAODFromOutput();
     taskEmbJets = AddTaskJets("AODextraonly", "UA1", 0.4, kHighPtFilterMask,1.,0);
     taskEmbJets->ReadAODFromOutput();
     taskEmbJets = AddTaskJets("AODextra", "UA1", 0.4, kHighPtFilterMask,1.,2);
     taskEmbJets->ReadAODFromOutput();
   }

   if(iPWG4Cluster){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetCluster.C");
     AliAnalysisTaskJetCluster *taskCl = 0;
     Float_t fCenUp = 0;
     Float_t fCenLo = 0;
     if(kIsPbPb&&!kIsMC){
       fCenLo = 0;
       fCenUp = 80;
     }
     if(iPWG4Cluster&1){

       if(kIsPbPb){
	 taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow,0); // this one is for the background and random jets, random cones with no skip
	 taskCl->SetBackgroundCalc(kTRUE);
	 taskCl->SetNRandomCones(1);
	 //	 taskCl->SetDebugLevel(11);
	 taskCl->SetCentralityCut(fCenLo,fCenUp);

	 taskCl->SetJetTypes(1<<0|1<<2|1<<3);
	 kDefaultJetBackgroundBranch = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch());
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),0)));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomCone_random",taskCl->GetJetOutputBranch())));

	 kJetSubtractBranches += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomConeSkip00");
	 kJetSubtractBranches += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomCone_random");

	 taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),1.0,fTrackEtaWindow,fVertexWindow,0); // this one is for the background and random jets, random cones with no skip
	 taskCl->SetNRandomCones(1);
	 taskCl->SetBackgroundCalc(kTRUE);
	 taskCl->SetCentralityCut(fCenLo,fCenUp);
	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);

	 taskCl->SetJetTypes(1<<0|1<<2|1<<3);
	 kDefaultJetBackgroundBranchCut1 = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch());
	 kJetSubtractBranchesCut1 += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomConeSkip00");
	 kJetSubtractBranchesCut1 += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomCone_random");
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),0)));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomCone_random",taskCl->GetJetOutputBranch())));

	 taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),2.0,fTrackEtaWindow,fVertexWindow,0); // this one is for the background and random jets, random cones with no skip
	 taskCl->SetNRandomCones(1);
	 taskCl->SetBackgroundCalc(kTRUE);
	 taskCl->SetCentralityCut(fCenLo,fCenUp);
	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);

	 taskCl->SetJetTypes(1<<0|1<<2|1<<3);
	 kDefaultJetBackgroundBranchCut2 = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch());
	 kJetSubtractBranchesCut2 += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomConeSkip00");
	 kJetSubtractBranchesCut2 += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomCone_random");
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),0)));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomCone_random",taskCl->GetJetOutputBranch())));


         if (iPWG4FastEmbedding) {
           AliAnalysisTaskJetCluster *taskClEmb = 0;
           taskClEmb = AddTaskJetCluster("AODextra","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // this one is for the background and random jets
           taskClEmb->SetBackgroundCalc(kTRUE);
           taskClEmb->SetCentralityCut(fCenLo,fCenUp);
	   if(iAODanalysis==2)taskClEmb->SetAODTrackInput(kTRUE);
	   kDefaultJetBackgroundBranch_extra = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskClEmb->GetJetOutputBranch());

           taskClEmb = AddTaskJetCluster("AODextraonly","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // this one is for the background and random jets
           taskClEmb->SetBackgroundCalc(kFALSE);
           taskClEmb->SetCentralityCut(fCenLo,fCenUp);
	   if(iAODanalysis==2)taskClEmb->SetAODTrackInput(kTRUE);
	   
           taskClEmb = AddTaskJetCluster("AODextra","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1,kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow);
           taskClEmb->SetCentralityCut(fCenLo,fCenUp);
           taskClEmb->SetBackgroundBranch(kDefaultJetBackgroundBranch_extra.Data());
           kJetSubtractBranches_extra += Form("%s ",taskClEmb->GetJetOutputBranch());
	   if(iAODanalysis==2)taskClEmb->SetAODTrackInput(kTRUE);

           taskClEmb = AddTaskJetCluster("AODextraonly","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1,kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow);
           taskClEmb->SetCentralityCut(fCenLo,fCenUp);
	   if(iAODanalysis==2)taskClEmb->SetAODTrackInput(kTRUE);
         }

	 taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.2,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow,0); // this one is for the background and random jets
	 taskCl->SetNRandomCones(1);
	 taskCl->SetBackgroundCalc(kTRUE);
	 taskCl->SetCentralityCut(fCenLo,fCenUp);
	 taskCl->SetJetTypes(1<<0|1<<2|1<<3);
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),0)));
	 kJetListSpectrum.Add(new TObjString(Form("%sRandomCone_random",taskCl->GetJetOutputBranch())));



	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
       }
       else{
	 taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.6,0,1,kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // this one is for the background jets
	 taskCl->SetBackgroundCalc(kTRUE);
	 kDefaultJetBackgroundBranch = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch());
	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));

	 taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1,kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); 
	 taskCl->SetBackgroundCalc(kTRUE);
	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
       } 

       taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1,kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // thid id sldo got the random cones but avoiding the two leading jets
       taskCl->SetCentralityCut(fCenLo,fCenUp);
       if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data());
       taskCl->SetNRandomCones(1);
       if(iFilterAnalysis==2){
	 taskCl->SetJetTriggerPtCut(kJetTriggerPtCut);
       }
       if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);

       taskCl->SetJetTypes(1<<0|1<<2); // only store the RC on full event with 2 removed
       kDefaultJetBranch = taskCl->GetJetOutputBranch();
       kJetSubtractBranches += Form("%s ",taskCl->GetJetOutputBranch());
       //       kJetSubtractBranches += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomConeSkip02");
       //       kJetSubtractBranches += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomCone_random");
       kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
       kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),2)));
       //       kJetListSpectrum.Add(new TObjString(Form("%sRandomCone_random",taskCl->GetJetOutputBranch())));

       taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1,kDeltaAODJetName.Data(),1.0,fTrackEtaWindow,fVertexWindow);
       taskCl->SetNRandomCones(1);
       taskCl->SetCentralityCut(fCenLo,fCenUp);
       if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
       if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranchCut1.Data());

       taskCl->SetJetTypes(1<<0|1<<2); // only store the RC on full event with 2 removed
       kJetSubtractBranchesCut1 += Form("%s ",taskCl->GetJetOutputBranch());
       kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
       kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),2)));


       taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1,kDeltaAODJetName.Data(),2.0,fTrackEtaWindow,fVertexWindow);
       taskCl->SetCentralityCut(fCenLo,fCenUp);
       taskCl->SetNRandomCones(1);
       if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
       if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranchCut2.Data());
       taskCl->SetJetTypes(1<<0|1<<2); // only store the RC on full event with 2 removed
       kJetSubtractBranchesCut2 += Form("%s ",taskCl->GetJetOutputBranch());
       kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
       kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),2)));

       // tmp track qa...
       /*
       taskCl = AddTaskJetCluster("AOD","",1<<8,iPhysicsSelectionFlag,"ANTIKT",0.4,2,1,kDeltaAODJetName.Data(),2.0);
       taskCl->SetCentralityCut(fCenLo,fCenUp);
       taskCl->SetFilterMask(1<<4|1<<8,1);
       */
       taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.2,0,1,kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow,2);
       taskCl->SetCentralityCut(fCenLo,fCenUp);
       taskCl->SetNRandomCones(1);
       if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
       if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data());

       taskCl->SetJetTypes(1<<0|1<<2); 
       kJetSubtractBranches += Form("%s ",taskCl->GetJetOutputBranch());
       //       kJetSubtractBranches += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomConeSkip00");
       //       kJetSubtractBranches += Form("%s%s ",taskCl->GetJetOutputBranch(),"RandomCone_random");
       kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
       kJetListSpectrum.Add(new TObjString(Form("%sRandomConeSkip%02d",taskCl->GetJetOutputBranch(),2)));


       if(kUseAODMC){
	 if(kIsPbPb){
	   taskCl = AddTaskJetCluster("AODMC","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // this one is for the background and random jets
	   taskCl->SetBackgroundCalc(kTRUE);
	   kDefaultJetBackgroundBranchMC = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch());
	   if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);	   
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));

	 taskCl = AddTaskJetCluster("AODMC2","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fVertexWindow,fVertexWindow); // this one is for the background and random jets
	   taskCl->SetBackgroundCalc(kTRUE);
	   kDefaultJetBackgroundBranchMC2 = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch()); 
	   if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
	   kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
	 }
	 else{
	   taskCl = AddTaskJetCluster("AODMC","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.6,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // this one is for the background and random jets
	   taskCl->SetBackgroundCalc(kTRUE);
	   kDefaultJetBackgroundBranchMC = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch());
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));	   

	 taskCl = AddTaskJetCluster("AODMC2","",kHighPtFilterMask,iPhysicsSelectionFlag,"KT",0.6,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); // this one is for the background and random jets
	   taskCl->SetBackgroundCalc(kTRUE);
	   kDefaultJetBackgroundBranchMC2 = Form("%s_%s",AliAODJetEventBackground::StdBranchName(),taskCl->GetJetOutputBranch()); 
	   if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
	   kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
	   // pp background calcs...
	 }
	 
	 taskCl = AddTaskJetCluster("AODMC","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow); 
	 if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranchMC.Data());	 
	 kDefaultJetBranchMC = taskCl->GetJetOutputBranch();
	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));

	 taskCl = AddTaskJetCluster("AODMC2","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1, kDeltaAODJetName.Data(),0.15,fTrackEtaWindow,fVertexWindow);
	 if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranchMC2.Data());	 
	 kDefaultJetBranchMC2 = taskCl->GetJetOutputBranch();
	 if(iAODanalysis==2)taskCl->SetAODTrackInput(kTRUE);
	 kJetListSpectrum.Add(new TObjString(taskCl->GetJetOutputBranch()));
       }
       
       
       if (!taskCl) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskCluster cannot run for this train conditions - EXCLUDED");
     }
   }


   if(iJETSUBTRACT&&kJetSubtractBranches.Length()){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetBackgroundSubtract.C");
     AliAnalysisTaskJetBackgroundSubtract *taskSubtract = 0;
     if(kJetSubtractBranches.Length()){




       for(int iB = 1;iB<3;iB++){
	 if(iB>2)continue;
	 taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,iB,kJetSubtractMask1.Data(),kJetSubtractMask2.Data());
	 taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data());	 	taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag);
	 if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data());
	 taskSubtract->SetKeepJets(kTRUE);
	 TString cTmp;       
	 TObjArray *objArr = kJetSubtractBranches.Tokenize(" ");
	 for(int iJB = 0;iJB<objArr->GetEntries();iJB++){
	   TObjString *ostr = (TObjString*)objArr->At(iJB);
	   cTmp = ostr->GetString().Data();
	   cTmp.ReplaceAll(kJetSubtractMask1.Data(),Form(kJetSubtractMask2.Data(),iB));
	   kJetListSpectrum.Add(new TObjString(cTmp.Data()));
	 }
	 
	 //	taskSubtract->SetDebugLevel(3);
	 if(iB==2){
	   if(kJetSubtractBranches.Contains(kDefaultJetBranch.Data())&&kIsPbPb){
	     kDefaultJetBranch.ReplaceAll(taskSubtract->GetToReplace(),Form(taskSubtract->GetReplacementMask(),taskSubtract->GetSubtractionMethod()));
	   }
	 }
	 
       }

       //
       // cut1
       Int_t iB = 2;
       taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranchesCut1,iB,kJetSubtractMask1.Data(),kJetSubtractMask2.Data(),"Cut1000");
       taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranchCut1.Data());	 	
       taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag);
       if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data());

       objArr = kJetSubtractBranchesCut1.Tokenize(" ");
       for(int iJB = 0;iJB<objArr->GetEntries();iJB++){
	 TObjString *ostr = (TObjString*)objArr->At(iJB);
	 cTmp = ostr->GetString().Data();
	 cTmp.ReplaceAll(kJetSubtractMask1.Data(),Form(kJetSubtractMask2.Data(),iB));
	 kJetListSpectrum.Add(new TObjString(cTmp.Data()));
       }

       taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranchesCut2,iB,kJetSubtractMask1.Data(),kJetSubtractMask2.Data(),"Cut2000");
       taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranchCut2.Data());	 	
       taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag);
       if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data());

       objArr = kJetSubtractBranchesCut2.Tokenize(" ");
       for(int iJB = 0;iJB<objArr->GetEntries();iJB++){
	 TObjString *ostr = (TObjString*)objArr->At(iJB);
	 cTmp = ostr->GetString().Data();
	 cTmp.ReplaceAll(kJetSubtractMask1.Data(),Form(kJetSubtractMask2.Data(),iB));
	 kJetListSpectrum.Add(new TObjString(cTmp.Data()));
       }

     }
     if(kJetSubtractBranches_extra.Length()){
       taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches_extra,2,kJetSubtractMask1.Data(),kJetSubtractMask2.Data(),"extra");
       taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch_extra.Data());
       taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag);
       //taskSubtract->SetDebugLevel(3);
       if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data());
       if(kJetSubtractBranches_extra.Contains(kDefaultJetBranch.Data())){
	 kDefaultJetBranch.ReplaceAll(taskSubtract->GetToReplace(),Form(taskSubtract->GetReplacementMask(),taskSubtract->GetSubtractionMethod()));
       }
     }
     if (!taskSubtract) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetBackgroundSubtrac cannot run for this train conditions - EXCLUDED");     
   }

   if (iDIJETAN) {
      gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskDiJets.C");
      AliAnalysisTaskDiJets *taskdijets = 0;
      if(iDIJETAN&1)taskdijets = AddTaskDiJets(); 
      if (!taskdijets) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJets cannot run for this train conditions - EXCLUDED");
      if(iDIJETAN&2){
	taskdijets = AddTaskDiJets("jetsAOD_CDF07"); 
	taskdijets = AddTaskDiJets("jetsAOD_DA07"); 
	taskdijets = AddTaskDiJets("jetsAOD_FASTJET07"); 
	taskdijets = AddTaskDiJets("jetsAOD_FASTKT07"); 
	taskdijets = AddTaskDiJets("jetsAOD_SISCONE07"); 
	taskdijets = AddTaskDiJets("jetsAOD_UA107");
      }
   }

   if(iPWGPPQASym){
     gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskQAsym.C");
     AliAnalysisTaskQASym *taskQASym = AddTaskQAsym(-1);
     if (!taskQASym) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskQASym cannot run for this train conditions - EXCLUDED");
   }



   if(iPWG4TmpSourceSara){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskEta.C");
     AliAnalysisTaskEta *taskEta = AddTaskEta();
     if (!taskEta) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskEta cannot run for this train conditions - EXCLUDED");
   }


   if(iPWG4JetServices){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetServices.C");
     AliAnalysisTaskJetServices *taskjetServ = 0;
     taskjetServ = AddTaskJetServices();
     if (!taskjetServ) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetServices cannot run for this train conditions - EXCLUDED");
     if(kGridRunRange[0]>0)taskjetServ->SetRunRange(kGridRunRange[0],kGridRunRange[1]);
     else taskjetServ->SetRunRange(110000,160000);
     taskjetServ->SetMCData(kIsMC);
     taskjetServ->SetUsePhysicsSelection((Bool_t)iPhysicsSelection);
     taskjetServ->SetPhysicsSelectionFlag(iPhysicsSelectionFlag); // 
     taskjetServ->SetNonStdFile(kDeltaAODJetName.Data());
     taskjetServ->SetTrackEtaWindow(fTrackEtaWindow);
     taskjetServ->SetZVertexCut(fVertexWindow);
     taskjetServ->SetFilterMask(kHighPtFilterMask);

     taskjetServ->SetDebugLevel(10);


     if(kIsPbPb)taskjetServ->SetCollisionType(AliAnalysisTaskJetServices::kPbPb);
     else taskjetServ->SetCollisionType(AliAnalysisTaskJetServices::kPP);
     if(kIsPbPb){
       if(kDeltaAODJetName.Length()>0&&kFilterAOD)taskjetServ->SetFilterAODCollisions(kTRUE);
       //       else if(iAODanalysis)taskjetServ->SetFilterAODCollisions(kTRUE);
     }
     if(iAODanalysis){
       //  
       taskjetServ->SetAODInput(kTRUE);
     }
   }

   if(iPWG4JetSpectrum){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetSpectrum2.C");
     AliAnalysisTaskJetSpectrum2 *taskjetSpectrum = 0;
     TString bkgClusters = kDefaultJetBackgroundBranch.Data(); 
     bkgClusters.ReplaceAll(Form("%s_",AliAODJetEventBackground::StdBranchName()),"");
     Printf("############# Possible jet branches ###################");
     for(int iJF = 0;iJF < kJetListSpectrum.GetSize();iJF++){
       TObjString *objStr = (TObjString*)kJetListSpectrum.At(iJF);
       Printf("%3d: %s",iJF+1,objStr->GetString().Data());
     }

     //     Printf("Type q to exit");if(getchar()=='q')return;
     if(iPWG4JetSpectrum&1){
       if(kIsPbPb){
	 for(int iJF = 0;iJF < kJetListSpectrum.GetSize();iJF++){
	   Long64_t value = kJetMapSpectrum(iJF+1);
	   Printf("iJF: %d value: %d", iJF+1,(Int_t)value);
	   if(value==0)continue;
	   TObjString *objStr = (TObjString*)kJetListSpectrum.At(iJF);
	   TString bName1 = objStr->GetString().Data();
	   TString bName2[3];
	   
	   TObjString *objStrBkg = (TObjString*)kJetListSpectrum.At(iJF);
	   TString bBkgName1(""); 
	   TString bBkgName2[3];
	   
	   Long64_t valueBkg1 = kJetBackMapSpectrum(iJF+1);
	   if(valueBkg1>0){
	     TObjString *objStrBkg = (TObjString*)kJetListSpectrum.At(valueBkg1-1);
	     bBkgName1 = objStrBkg->GetString().Data();
	   }
	   Int_t iPartner = 0;
	   if(value>0){
	     Int_t iJF2 = -1; 
	     for(int i = 0;i<3;i++){
	       iJF2 = value/kJetMapOffset[i]-1;
	       value = value%kJetMapOffset[i];
	       Printf("%d %d", iJF2+1,(Int_t)value);
	       if(iJF2>=0&&iJF2<kJetListSpectrum.GetSize()){
		 TObjString *objStr2 = (TObjString*)kJetListSpectrum.At(iJF2);
		 bName2[iPartner] = objStr2->GetString().Data();
		 Long64_t valueBkg2 = kJetBackMapSpectrum(iJF2+1);
		 if(valueBkg2>0){
		   TObjString *objStrBkg2 = (TObjString*)kJetListSpectrum.At(valueBkg2-1);
		   bBkgName2[iPartner] = objStrBkg2->GetString().Data();
		 }
		 iPartner++;
	       }
	     }
	   }
	   
	   
	   // loop over all centralities
	   for(int ic = 0;ic<5;ic++){
	     if(ic!=0)continue;
	     Bool_t bDone = kFALSE;
	     for(int i = 0;i<TMath::Max(iPartner,1);i++){
	       if(bName2[i].Length()){
		 taskjetSpectrum = AddTaskJetSpectrum2(bName1.Data(),bName2[i].Data(),kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,ic);
		 bDone = kTRUE; 
	       }
	       else{
		 if(!bDone){
		   taskjetSpectrum = AddTaskJetSpectrum2(bName1.Data(),bName2[i].Data(),kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,ic);
		   bDone = kTRUE; 
		 }
		 else{
		   continue;
		 }
	       }
	       Printf("%s/%s %s/%s",bName1.Data(),bBkgName1.Data(),bName2[i].Data(),bBkgName2[i].Data());

	       // setting all the other things...
	       taskjetSpectrum->SetTrackEtaWindow(fTrackEtaWindow);
	       taskjetSpectrum->SetJetEtaWindow(fJetEtaWindow);

	       // negative values do not fill the track histos
	       taskjetSpectrum->SetFlagJetType(AliAnalysisTaskJetSpectrum2::kJetGenFull,-1);
	       taskjetSpectrum->SetFlagJetType(AliAnalysisTaskJetSpectrum2::kJetGen,-1);	      
	       if(!bName1.Contains("ANTIKT")||bName1.Contains("Cone")){
		 taskjetSpectrum->SetFlagJetType(AliAnalysisTaskJetSpectrum2::kJetRecFull,-1);
		 taskjetSpectrum->SetFlagJetType(AliAnalysisTaskJetSpectrum2::kJetRec,-1);	      
	       }


	       if(bName2[i].Length()==0){
		 taskjetSpectrum->SetFlagJetType(AliAnalysisTaskJetSpectrum2::kJetGenFull,0);
		 taskjetSpectrum->SetFlagJetType(AliAnalysisTaskJetSpectrum2::kJetGen,0);
	       }
	       if(iAODanalysis==1){
		 taskjetSpectrum->SetAODJetInput(kTRUE);
		 taskjetSpectrum->SetAODTrackInput(kTRUE);
	       }
	       else if (iAODanalysis==2){
		 taskjetSpectrum->SetAODTrackInput(kTRUE);
		 taskjetSpectrum->SetAODJetInput(kFALSE);
	       }
	       //	       taskjetSpectrum->SetDebugLevel(11);
	       taskjetSpectrum->SetBranchBkgRec(bBkgName1.Data());
	       taskjetSpectrum->SetBranchBkgGen(bBkgName2[i].Data());
	     } 
	   }
	 }
       }
       else{ // ! PbPb
	 Int_t i = 0;

	 taskjetSpectrum = AddTaskJetSpectrum2(kDefaultJetBranch.Data(),
					       "",kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,i);
	 

	 
	 if(kDefaultJetBranchMC.Length()){
	   taskjetSpectrum = AddTaskJetSpectrum2(kDefaultJetBranch.Data(),
					       kDefaultJetBranchMC.Data(),kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,i);
	   //	   taskjetSpectrum->SetMinJetPt(10);
	   taskjetSpectrum->SetTrackEtaWindow(fTrackEtaWindow);
	   taskjetSpectrum->SetJetEtaWindow(fJetEtaWindow);
	   taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data());
	   taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data());
	   if(iAODanalysis)SetAODInput(taskjetSpectrum);
	 }
	 if(kDefaultJetBranchMC2.Length()){
	   taskjetSpectrum = AddTaskJetSpectrum2(kDefaultJetBranch.Data(),
						 kDefaultJetBranchMC2.Data(),kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,i);
	   //	   taskjetSpectrum->SetMinJetPt(10);
	   taskjetSpectrum->SetTrackEtaWindow(fTrackEtaWindow);
	   taskjetSpectrum->SetJetEtaWindow(fJetEtaWindow);
	   taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data());
	   taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data());
	   if(iAODanalysis)SetAODInput(taskjetSpectrum);
	 }

	 /*
	 TString tmp2(kDefaultJetBranch.Data());
	 tmp2.ReplaceAll(Form(kJetSubtractMask2.Data(),0),Form(kJetSubtractMask2.Data(),2));
	 taskjetSpectrum = AddTaskJetSpectrum2(tmp2.Data(),kDefaultJetBranch.Data(),kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,i);
	 //	 taskjetSpectrum->SetDebugLevel(3);
	 //	   taskjetSpectrum->SetMinJetPt(10);
	 taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data());
	 taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data());
	 taskjetSpectrum->SetTrackEtaWindow(0.8);
	 taskjetSpectrum->SetJetEtaWindow(0.4);

	 // check the old subtracted vs. the new subtracted
	 TString tmp3(kDefaultJetBranch.Data());
	 tmp3.ReplaceAll(Form(kJetSubtractMask2.Data(),0),Form(kJetSubtractMask2.Data(),3));
	 taskjetSpectrum = AddTaskJetSpectrum2(tmp3.Data(),kDefaultJetBranch.Data(),kDeltaAODJetName.Data(),kHighPtFilterMask,AliVEvent::kMB,0,i);
	 //	 taskjetSpectrum->SetDebugLevel(3);
	 //	   taskjetSpectrum->SetMinJetPt(10);
	 taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data());
	 taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data());
	 taskjetSpectrum->SetTrackEtaWindow(0.8);
	 taskjetSpectrum->SetJetEtaWindow(0.4);
	 if(iAODanalysis)SetAODInput(taskjetSpectrum);
	 */
       }
       if (!taskjetSpectrum) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetSpectrum2 cannot run for this train conditions - EXCLUDED");
     }
   }
   AliAnalysisManager::SetCommonFileName("PWG4_Fragmentation.root");
   if(iPWG4Fragmentation){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskFragmentationFunction.C");
       AliAnalysisTaskFragmentationFunction *taskFrag = 0;
       if(kUseAODMC){

       }
       else{


	 for(int ic = 1;ic < 5;ic++){
	   // Anti-kT
	   taskFrag = AddTaskFragmentationFunction(1<<23,kHighPtFilterMask, ic);
	   if(kDeltaAODJetName.Length()>0)taskFrag->SetNonStdFile(kDeltaAODJetName.Data());
	   if(iAODanalysis==2)taskFrag->UseAODInputJets(kFALSE);

	   // UA1
	   taskFrag = AddTaskFragmentationFunction(1<<0,kHighPtFilterMask, ic); 
	   if(kDeltaAODJetName.Length()>0)taskFrag->SetNonStdFile(kDeltaAODJetName.Data());
	   if(iAODanalysis==2)taskFrag->UseAODInputJets(kFALSE);

         // SISCONE 
	   if(ic==1){
	     /*
	       taskFrag = AddTaskFragmentationFunction(1<<28,kHighPtFilterMask, ic);
	       taskFrag = AddTaskFragmentationFunction(1<<29,kHighPtFilterMask, ic);
	       taskFrag = AddTaskFragmentationFunction(1<<30,kHighPtFilterMask, ic);
	     */



	     // Anti-kT B2 - B3
	     if(!iAODanalysis==1){
	       taskFrag = AddTaskFragmentationFunction(1<<26,kHighPtFilterMask, ic);
	       if(kDeltaAODJetName.Length()>0)taskFrag->SetNonStdFile(kDeltaAODJetName.Data());
	       if(iAODanalysis==2)taskFrag->UseAODInputJets(kFALSE);
	       
	       taskFrag = AddTaskFragmentationFunction(1<<27,kHighPtFilterMask, ic);
	       if(kDeltaAODJetName.Length()>0)taskFrag->SetNonStdFile(kDeltaAODJetName.Data());
	       if(iAODanalysis==2)taskFrag->UseAODInputJets(kFALSE);
	     }
	   }

	 } 


       }
       if (!taskFrag) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskFragmentationFunction cannot run for this train conditions - EXCLUDED");
   }

   if(iPWG4JetChem){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetChem.C");
     AliAnalysisTask *taskChem = AddTaskJetChem(kHighPtFilterMask);
     if (!taskChem) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetChem cannot run for this train conditions - EXCLUDED");
   }

   if (iPWG4JetResponse) {
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJetResponse.C");
     AliAnalysisTask *taskJetResponse = 0;

     if(iJETAN){
        taskJetResponse = AddTaskJetResponse("jets", "FASTJET", 0.4, kHighPtFilterMask, 0.15, 0);
        taskJetResponse = AddTaskJetResponse("jets", "FASTJET", 0.4, kHighPtFilterMask, 0.15, 1);

        taskJetResponse = AddTaskJetResponse("jets", "UA1", 0.4, kHighPtFilterMask, 1., 0);
        taskJetResponse = AddTaskJetResponse("jets", "UA1", 0.4, kHighPtFilterMask, 1., 2);
     }
     if(iPWG4Cluster){
        taskJetResponse = AddTaskJetResponse("clusters", "ANTIKT", 0.4, kHighPtFilterMask, 0.15, 0);
        taskJetResponse = AddTaskJetResponse("clusters", "ANTIKT", 0.4, kHighPtFilterMask, 0.15, 1);
     }
     if (!taskJetResponse) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetResponse cannot run for this train conditions - EXCLUDED");

   }

   if(iPWG4JCORRAN){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJCORRANTask.C");
     AliJCORRANTask* corran = AddTaskJCORRAN(kDeltaAODJCORRANName.Data(),0);
     if(!corran)::Warning("AnalysisTrainPWG4Jets", "AliJCORRANTask cannot run for this train conditions - EXCLUDED");
     else{
       if(kDeltaAODJCORRANName.Length()>0)mgr->RegisterExtraFile(kDeltaAODJCORRANName.Data()); 
     }
   }

   if(iPWG4UE){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskUE.C");
     AliAnalysisTaskUE *taskUE = 0;
     if(iPWG4UE&1)taskUE = AddTaskUE(); 
     if(iPWG4UE&2){
       taskUE  =AddTaskUE("jetsAOD_CDF04","CDF", "LJ", "TRANSV","MSP"); //finder not yet in train
       //       taskUE  =AddTaskUE("jetsAOD_CDF07","CDF", "LJ", "TRANSV","MSP");
       taskUE  =AddTaskUE("jetsAOD_SISCONE04","CDF", "LJ", "TRANSV","MSP");
       //       taskUE  =AddTaskUE("jetsAOD_SISCONE07","CDF", "LJ", "TRANSV","MSP"); //finder not yet in train
       taskUE  =AddTaskUE("jetsAOD_ICDF","CDF","LJ","TRANSV","MSP");
       taskUE  =AddTaskUE("jetsAOD_FASTKT04","CDF", "LJ", "TRANSV","MSP");
       //       taskUE  =AddTaskUE("jetsAOD_FASTKT07","CDF", "LJ", "TRANSV","MSP"); //finder not yet in train
       taskUE  =AddTaskUE("jetsAOD_NONE","CDF", "MP_eta05", "TRANSV","MSP");
       taskUE  =AddTaskUE("jetsAOD_NONE","CDF", "MP_eta09", "TRANSV","MSP");
     }

     if (!taskUE) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskUE cannot run for this train conditions - EXCLUDED");
   }

   if(iPWG4LeadingUE){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskLeadingTrackUE.C");
     AliAnalysisTaskLeadingTrackUE *taskLeadingUE = AddTaskLeadingTrackUE(kUseMC);
     if (!taskLeadingUE) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTasLeadingTrackkUE cannot run for this train conditions - EXCLUDED");
     //     taskLeadingUE->SetFilterBit(64);
   }


   if(iPWG4CorrectionsUE){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskCorrectionsUE.C");
     AliAnalysisTaskCorrectionsUE *taskCorrectionsUE = 0;
     if(iPWG4CorrectionsUE&1)taskCorrectionsUE = AddTaskCorrectionsUE("jetsAOD_NONE","CDF","MP_eta05","TRANSV","MSP",kFALSE);
     if (!taskCorrectionsUE) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskCorrectionsUE cannot run for this train conditions - EXCLUDED");
   }

   if(iPWG4ThreeJets){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskThreeJets.C");
     AliAnalysisTaskThreeJets *taskThree = AddTaskThreeJets();
     if(!taskThree)::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskThreets cannot run for this train conditions - EXCLUDED");
   }
   if(iPWG4QGSep){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskQGSep.C");
     AliAnalysisTaskQGSep *taskQGSep = AddTaskQGSep(kUseMC,iAODanalysis);
     if(!taskQGSep)::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskQGSep cannot run for this train conditions - EXCLUDED");
   }
  

   if(iPWG4Minijet){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskMinijet.C");
     AliAnalysisTaskMinijet *taskMini = AddTaskMinijet(-1,"esd",kUseMC,kGridDataSet);
     // if we ha highmult trigger add another task
     if(!taskMini)::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskMinjet cannot run for this train conditions - EXCLUDED");
   }

   AliAnalysisManager::SetCommonFileName("PWG4_HighPtQA.root");
   if(iPWG4PtQAMC){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskPWG4HighPtQAMC.C");
     AliPWG4HighPtQAMC *taskQAMC = 0;
     if(kUseMC){
       if(iPWG4PtQAMC&1){
	 taskQAMC = AddTaskPWG4HighPtQAMCAll(kGridDataSet.Data());
       }
     }
     if (!taskQAMC) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskQAMC cannot run for this train conditions - EXCLUDED");
   }

   if(iPWG4PtTrackQA){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskPWG4HighPtTrackQA.C");
     if(iPWG4PtTrackQA&2)AddTaskPWG4HighPtTrackQAAll(kGridDataSet.Data(),kIsPbPb,iAODanalysis);
     else AddTaskPWG4HighPtTrackQAAllReduced(kGridDataSet.Data(),kIsPbPb,iAODanalysis);
   }

   if(iPWG4PtQATPC){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskPWG4HighPtQATPConly.C");
     AliPWG4HighPtQATPConly *taskQATPC = 0;
     if(iPWG4PtQATPC&1)taskQATPC = AddTaskPWG4HighPtQATPConly(kGridDataSet.Data(),1);
     if(iPWG4PtQATPC&2)taskQATPC = AddTaskPWG4HighPtQATPConly(kGridDataSet.Data(),2);

 if (!taskQATPC) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskQATPC cannot run for this train conditions - EXCLUDED");
   }

   if(iPWG4Cosmics){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskPWG4CosmicCandidates.C");

     AliPWG4CosmicCandidates *taskPWG4CosmicCandidates = AddTaskPWG4CosmicCandidates(0);
     taskPWG4CosmicCandidates = AddTaskPWG4CosmicCandidates(1);

     if (!taskPWG4CosmicCandidates) ::Warning("AnalysisTrainPWG4Jets", "AddTaskPWG4CosmicCandidates cannot run for this train conditions - EXCLUDED");
   }


   if(iPWG4PtSpectra){
     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskPWG4HighPtSpectra.C");
     AddTaskPWG4HighPtSpectraAll(kGridDataSet.Data(),kIsPbPb,iAODanalysis);
   }
   
   //==========================================================================
   // FOR THE REST OF THE TASKS THE MACRO AddTaskXXX() is not yet implemented/
   // Run the analysis
   //    
   if (kPluginUse) {
      AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode);
      AliAnalysisManager::GetAnalysisManager()->SetGridHandler(alienHandler);
   }
   
   if (mgr->InitAnalysis()) {
     mgr->PrintStatus();
     // if (kSaveTrain || strlen(config_file)) gSystem->ChangeDirectory(kTrainName);
     if (!strcmp(plugin_mode,"submit")&&smode=="GRID"){
       TString alien_workdir = gGrid->GetHomeDirectory();
       if (iAODanalysis) alien_workdir += "analysisAOD";
       else              alien_workdir += "analysisESD";
       if(kGridDataSet.Length()>0)alien_workdir += Form("/%s%s",kGridDataSet.Data(),kGridExtraAliendirLevel.Data());
       AliAnalysisAlien *gridhandler = (AliAnalysisAlien*)mgr->GetGridHandler();
       printf("=== AnalysisTrainPWG4Jets:: Registering jdl in the work directory alien://%s/%s, should be done by the manager! ===\n",
	      alien_workdir.Data(),gridhandler->GetGridOutputDir());

       TString dest;
       dest = Form("%s/%s/%s.jdl",alien_workdir.Data(),gridhandler->GetGridOutputDir(),kTrainName.Data());
       if(AliAnalysisAlien::FileExists(dest.Data())){
	 Printf("%s exist on grid removing...",dest.Data());
	 gGrid->Rm(dest.Data());
       }
       Printf("%s copy ...",dest.Data());
       TFile::Cp(Form("file:%s.jdl",kTrainName.Data()),Form("alien://%s",dest.Data()));


       TString dest;
       dest = Form("%s/%s/%s_merge.jdl",alien_workdir.Data(),gridhandler->GetGridOutputDir(),kTrainName.Data());
       if(AliAnalysisAlien::FileExists(dest.Data())){
	 Printf("%s exist on grid removing...",dest.Data());
	 gGrid->Rm(dest.Data());
       }
       Printf("%s copy ...",dest.Data());
       TFile::Cp(Form("file:%s_merge.jdl",kTrainName.Data()),Form("alien://%s",dest.Data()));
       
       dest = Form("%s/%s/%s_merge_final.jdl",alien_workdir.Data(),gridhandler->GetGridOutputDir(),kTrainName.Data());
       if(AliAnalysisAlien::FileExists(dest.Data())){
	 Printf("%s exist on grid removing...",dest.Data());
	 gGrid->Rm(dest.Data());
       }
       Printf("%s copy ...",dest.Data());
       TFile::Cp(Form("file:%s_merge.jdl",kTrainName.Data()),Form("alien://%s",dest.Data()));
     }
     AliLog::SetGlobalLogLevel(AliLog::kError);
     if((kUseSysInfo>0&&smode=="LOCAL")||!strcmp(plugin_mode, "test")){
       TFile * fM = TFile::Open("manager_local.root","RECREATE");
       mgr->Write();
       fM->Close();
     }
     
     // grmpf, aliroot error handler overwrites root
     gErrorIgnoreLevel = kErrorIgnoreLevel;
     if(gErrorIgnoreLevel>3000) AliLog::SetGlobalLogLevel(AliLog::kFatal);
     StartAnalysis(smode, chain);
     if((kUseSysInfo>0&&smode=="LOCAL")||!strcmp(plugin_mode, "test")){
       for(int i = 0;i < mgr->GetTopTasks()->GetEntries();i++){
	 mgr->ProfileTask(i);
       }
     }
     if (!strcmp(plugin_mode, "offline")&&smode=="GRID"){
       // Offline mode path files
       //	PatchJDL();
       //       PatchAnalysisMacro();
     }

     if (kSaveTrain && smode=="GRID") {
       AliAnalysisAlien *gridhandler = (AliAnalysisAlien*)mgr->GetGridHandler();
       TString alien_workdir = gGrid->GetHomeDirectory();
       if (iAODanalysis) alien_workdir += "analysisAOD";
       else              alien_workdir += "analysisESD";
       if(kGridDataSet.Length()>0)alien_workdir += Form("/%s%s",kGridDataSet.Data(),kGridExtraAliendirLevel.Data());
       //     kGridOutdir = gridhandler->GetGridOutputDir();
       printf("=== Registering ConfigTrain.C in the work directory <%s> ===\n",
                alien_workdir.Data());
       if (AliAnalysisAlien::FileExists(Form("%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data())))
	 gGrid->Rm(Form("%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data()));
       if (strcmp(plugin_mode, "test"))
	 TFile::Cp(Form("file:%sConfig.C",kTrainName.Data()), Form("alien://%s/%sConfig.C", alien_workdir.Data(), kTrainName.Data()));
     }
   }
}

//______________________________________________________________________________
void StartAnalysis(const char *mode, TChain *chain) {
// Start analysis.
   Int_t imode = -1;
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;
   switch (imode) {
      case 0:
         if (!chain) {
            ::Error("AnalysisTrainPWG4Jets.C::StartAnalysis", "Cannot create the chain");
            return;
         }   
         mgr->StartAnalysis(mode, chain,kNumberOfEvents);
         return;
      case 1:
         if (!kProofDataSet.Length()) {
            ::Error("AnalysisTrainPWG4Jets.C::StartAnalysis", "kProofDataSet is empty");
            return;
         }   
         mgr->StartAnalysis(mode, kProofDataSet, kProofEvents,kProofOffset);
         return;
      case 2:
         if (kPluginUse) {
            if (!mgr->GetGridHandler()) {
               ::Error("AnalysisTrainPWG4Jets.C::StartAnalysis", "Grid plugin not initialized");
               return;
            }   
            mgr->StartAnalysis("grid",chain,kNumberOfEvents);
         } else {
            if (!chain) {
               ::Error("AnalysisTrainPWG4Jets.C::StartAnalysis", "Cannot create the chain");
               return;
            }   
	    //            mgr->StartAnalysis(mode, chain);
            mgr->StartAnalysis(mode, chain,kNumberOfEvents);
         }   
         return;
   }      
}          
    
//______________________________________________________________________________
void CheckModuleFlags(const char *mode) {
// Checks selected modules and insure compatibility
   Int_t imode = -1;
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;


   if (kUseCPAR) {
     kPluginAliRootVersion    = ""; // NO aliroot if we use CPAR
   }

   if (imode==1) {
      if (!kUsePAR) {
         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PAR files enabled due to PROOF analysis");
         kUsePAR = kTRUE;
      }   
   }  
   if (imode != 2) {
      ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "AliEn plugin disabled since not in GRID mode");
      kPluginUse = kFALSE; 
   }   


   if(!kIsMC){
     // switch off anthin related to MC
     kUseMC = 0;
     kUseAODMC = 0;
     kUseTR = kFALSE;
   }

   // Decide if we have PbPb
   if(kGridDataSet.CompareTo("LHC10h")==0||kGridDataSet.Contains("LHC10h")||kGridDataSet.CompareTo("LHC11h")==0||kGridDataSet.Contains("LHC11h")) {
     Printf("Using settings for Pb+Pb");
     kIsPbPb = true;
   }

   

   if (iAODanalysis) {
   // AOD analysis
      if (kUseMC)
         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "MC usage disabled in analysis on AOD's");
      if (kUseAODTags)
         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "AOD tags usage disabled in analysis on AOD's");
      kUseMC = kFALSE;
      kUseTR = kFALSE;
      kUseAODTags = kFALSE;
      if (iESDfilter)
         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "ESD filter disabled in analysis on AOD's");
      iESDfilter   = 0;
      if (iPhysicsSelection)
         ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "Physics Selection disabled in analysis on AOD's");
      iPhysicsSelection   = 0;
      if (!iAODhandler) {
         if (iJETAN || iJETANReader || iJETANFinder) 
            ::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "JETAN disabled in analysis on AOD's without AOD handler");
         iJETAN = 0;
         iJETANReader=0;
	 iJETANFinder=0;
         iDIJETAN = 0;
      }
      // Disable tasks that do not work yet on AOD data
      if(iPWG4JCORRAN)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 JCORRAN disabled in analysis on AOD's");
      iPWG4JCORRAN = 0;
      if( iPWG4PtQAMC)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 PtQAMC disabled in analysis on AOD's");
      iPWG4PtQAMC        = 0;
      if( iPWG4PtQATPC)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 PtTPC disabled in analysis on AOD's");
      iPWG4PtQATPC        = 0;
      if( iPWG4Cosmics)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 Comics disabled in analysis on AOD's");
      iPWG4Cosmics        = 0;

      if(iPWG4KMeans)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4KMeans disabled on AOD's");
      iPWG4KMeans       = 0;
      if (iPWG4JetCorr)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4Jetcorr disabled on AOD's");
      iPWG4JetCorr = 0;
      if (iPWG4PartCorr)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4partcorr disabled on AOD's");
      iPWG4PartCorr = 0;
      if (iPWG4CaloQA)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4CaloQA disabled on AOD's");
      iPWG4CaloQA = 0;
      if (iPWG4Tagged)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4tagged disabled on AOD's");
      iPWG4Tagged = 0;
      if (iPWG4omega3pi)
	::Info("AnalysisTrainNew.C::CheckModuleFlags", "PWG4omega3pi disabled on AOD's");
      iPWG4omega3pi = 0;
      if(iPWGPPQASym)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWGPP QA Sym disabled in analysis on AOD's");
      if (iPWG4GammaConv)::Info("AnalysisPWG4Jets.C::CheckModuleFlags", "PWG4gammaconv disabled on AOD's");
      iPWG4GammaConv = 0;   
      iPWGPPQASym     = 0;
      iCentralitySelection = 0;
   } else {   
   // ESD analysis

     if(kIsPbPb){
       iCentralitySelection = 1;
     }

     if (!kUseMC){
       kUseTR = kFALSE;
       
       if(kUseKinefilter)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 Kine Filter disabled in analysis without MC");
       kUseKinefilter = kFALSE;
       if( iPWG4PtQAMC)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 PtQAMC disabled in analysis without MC");
       iPWG4PtQAMC        = 0;
       if( iPWG4CorrectionsUE)::Info("AnalysisTrainPWG4Jets.C::CheckModuleFlags", "PWG4 CorrectionsUE disabled in analysis without MC");
       iPWG4CorrectionsUE = 0;
     }
      if (!iESDfilter){
	kUseKinefilter = kFALSE;
	kUseMuonfilter = kFALSE;
      }
      if(!iJETAN ||iJETANReader || iJETANFinder){
	iPWG4JetSpectrum = iPWG4UE =  iPWG4CorrectionsUE = iPWG4ThreeJets = iPWG4QGSep = iDIJETAN = 0;
      }
   }
   iPWG4JetTasks = iPWG4JetServices||iPWG4JetSpectrum||iPWG4UE||iPWG4LeadingUE||iPWG4PtQAMC||iPWG4PtTrackQA||iPWG4PtSpectra||iPWG4PtQATPC||iPWG4Cosmics||iPWG4ThreeJets||iPWG4QGSep||iPWG4JetChem||iPWG4Minijet||iPWG4Fragmentation;
   iPWG4PartCorrLibs = iPWG4PartCorr||iPWG4Tagged||iPWG4CaloQA;
   iPWG4GammaConvLib = iPWG4GammaConv||iPWG4CaloConv;


   iEMCUtilLibs = iPWG4JetTasks||iPWG4PartCorrLibs||iPWG4JCORRAN||iPWG4GammaConvLib||iJETAN||iJETANReader||iJETANFinder;
   iJETANLib = (iPWG4JetTasks||iJETAN||iDIJETAN) && !(iJETANReader||iJETANFinder) ;
   iJETANdevLib = (iPWG4JetTasks||iJETANReader||iJETANFinder||iDIJETAN) && !iJETAN ;

   if (iESDfilter) {iAODhandler=1;}
   if (kUseKinefilter && !kUseMC) kUseKinefilter = kFALSE;
   if (kUseAODTags && !iAODhandler) kUseAODTags = kFALSE;


   
}

//______________________________________________________________________________
Bool_t Connect(const char *mode) {
// Connect <username> to the back-end system.
   Int_t imode = -1;
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;
   TString username = gSystem->Getenv("alien_API_USER");
   switch (imode) {
      case 0:
         break;
      case 1:
         if  (!username.Length()) {
            ::Error(Form("AnalysisTrainPWG4Jets.C::Connect <%s>", mode), "Make sure you:\n \
                           1. Have called: alien-token-init <username>\n \
                           2. Have called: >source /tmp/gclient_env_$UID");
            return kFALSE;
         }
         ::Info("AnalysisTrainPWG4Jets.C::Connect", "Connecting user <%s> to PROOF cluster <%s>", 
                username.Data(), kProofCluster.Data());
         gEnv->SetValue("XSec.GSI.DelegProxy", "2");
//         TProof::Open(Form("%s@%s:31093", username.Data(), kProofCluster.Data()));       
         TProof::Open(Form("%s@%s", username.Data(), kProofCluster.Data()));       
         if (!gProof) {
            if (strcmp(gSystem->Getenv("XrdSecGSISRVNAMES"), "lxfsrd0506.cern.ch"))
               ::Error(Form("AnalysisTrainPWG4Jets.C::Connect <%s>", mode), "Environment XrdSecGSISRVNAMES different from lxfsrd0506.cern.ch");
            return kFALSE;
         }
	 if(kProofClearPackages)gProof->ClearPackages();

	 if(kProofSaveToAlien){
	   TGrid::Connect("alien://");
	   if (gGrid) {
	     TString homedir = gGrid->GetHomeDirectory();
	     TString workdir = homedir + kTrainName;
	     if (!gGrid->Cd(workdir)) {
               gGrid->Cd(homedir);
               if (gGrid->Mkdir(workdir)) {
		 gGrid->Cd(kTrainName);
		 ::Info("AnalysisTrainPWG4Jets::Connect()", "Directory %s created", gGrid->Pwd());
               }
	     }
	     gGrid->Mkdir("proof_output");
	     gGrid->Cd("proof_output");
	     kProofOutdir = Form("alien://%s", gGrid->Pwd());
	   }   
	 }
         break;
      case 2:      
         if  (!username.Length()) {
            ::Error(Form("AnalysisTrainPWG4Jets.C::Connect <%s>", mode), "Make sure you:\n \
                           1. Have called: alien-token-init <username>\n \
                           2. Have called: >source /tmp/gclient_env_$UID");
            return kFALSE;
         }
         if (kPluginUse && !gSystem->Getenv("alien_CLOSE_SE")) {
            ::Error(Form("AnalysisTrainPWG4Jets.C::Connect <%s>", mode), 
                           "When using the AliEn plugin it is preferable to define the \
                           variable alien_CLOSE_SE in your environment.");
            return kFALSE;
         }
         ::Info("AnalysisTrainPWG4Jets.C::Connect", "Connecting user <%s> to AliEn ...", 
                username.Data());
         TGrid::Connect("alien://");
         if (!gGrid || !gGrid->IsConnected()) return kFALSE;
         break;
      default:
         ::Error("AnalysisTrainPWG4Jets.C::Connect", "Unknown run mode: %s", mode);
         return kFALSE;
   }
   ::Info("AnalysisTrainPWG4Jets.C::Connect","Connected in %s mode", mode);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t LoadCommonLibraries(const char *mode)
{
   if (!gSystem->Getenv("ALICE_ROOT")) {
      ::Error("AnalysisTrainPWG4Jets.C", "Analysis train requires that ALICE_ROOT is set to pick up Configurations"); 
      return kFALSE;
   }   
   
   // Load common analysis libraries.
   Int_t imode = -1;
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;
   Bool_t success = kTRUE;
   // ROOT libraries
   gSystem->Load("libTree.so");
   gSystem->Load("libGeom.so");
   gSystem->Load("libVMC.so");
   gSystem->Load("libPhysics.so");
   gSystem->Load("libMinuit.so");
   
   // Load framework classes. Par option ignored here.
   switch (imode) {
      case 0:
      case 2:
         if (kUseCPAR) {
            success &= LoadLibrary("STEERBase", mode, kTRUE);
            success &= LoadLibrary("ESD", mode, kTRUE);
            success &= LoadLibrary("AOD", mode, kTRUE);
            success &= LoadLibrary("ANALYSIS", mode, kTRUE);
            success &= LoadLibrary("OADB", mode, kTRUE);
            success &= LoadLibrary("ANALYSISalice", mode, kTRUE);
            success &= LoadLibrary("ROOTFILES", mode, kTRUE);
	    //            success &= LoadLibrary("EventMixing", mode,kTRUE);
            success &= LoadLibrary("CORRFW", mode, kTRUE);
         } else {   
            success &= LoadLibrary("libSTEERBase.so", mode);
            success &= LoadLibrary("libESD.so", mode);
            success &= LoadLibrary("libAOD.so", mode);
            success &= LoadLibrary("libANALYSIS.so", mode);
            success &= LoadLibrary("libOADB.so", mode, kTRUE);
            success &= LoadLibrary("libANALYSISalice.so", mode);
	    //            success &= LoadLibrary("libEventMixing.so", mode);
            success &= LoadLibrary("libCORRFW.so", mode);
            gROOT->ProcessLine(".include $ALICE_ROOT/include");
         }   
         break;
      case 1:
         Int_t ires = -1;
         if (kProofUseAFPAR && !gSystem->AccessPathName(kProofAFversion)) ires = gProof->UploadPackage(kProofAFversion);
         if (ires < 0) {
            success &= LoadLibrary("STEERBase", mode);
            success &= LoadLibrary("ESD", mode);
            success &= LoadLibrary("AOD", mode);
            success &= LoadLibrary("ANALYSIS", mode);
            success &= LoadLibrary("ANALYSISalice", mode);
            success &= LoadLibrary("EventMixing", mode);
            success &= LoadLibrary("CORRFW", mode);
         } else { 
            ires = gProof->EnablePackage(kProofAFversion);
            if (ires<0) success = kFALSE;
            success &= LoadLibrary("CORRFW", mode);
         }
         break;         
      default:
         ::Error("AnalysisTrainPWG4Jets.C::LoadCommonLibraries", "Unknown run mode: %s", mode);
         return kFALSE;
   }
   if (success) {
      ::Info("AnalysisTrainPWG4Jets.C::LoadCommodLibraries", "Load common libraries:    SUCCESS");
      ::Info("AnalysisTrainPWG4Jets.C::LoadCommodLibraries", "Include path for Aclic compilation:\n%s",
              gSystem->GetIncludePath());
   } else {           
      ::Info("AnalysisTrainPWG4Jets.C::LoadCommodLibraries", "Load common libraries:    FAILED");
   }   
      
   return success;
}

//______________________________________________________________________________
Bool_t LoadAnalysisLibraries(const char *mode)
{
// Load common analysis libraries.
  Bool_t success = kTRUE;
  if (useTender) {
      if (!LoadLibrary("TENDER", mode, kTRUE) ||
          !LoadLibrary("TENDERSupplies", mode, kTRUE)) return kFALSE;
   }
   if (iESDfilter) {
     /*
      if (!LoadLibrary("PWG3base", mode, kTRUE) ||
          !LoadLibrary("PWG3muon", mode, kTRUE)) return kFALSE;
     */
   }   
   // JETAN
   if (iJETANLib) {
     // this part needs some rework in case we do not need the fastjed finders for processing
     if(iEMCUtilLibs){
       if (!LoadLibrary("EMCALUtils", mode, kTRUE) ||
	   !LoadLibrary("PHOSUtils", mode, kTRUE)) return kFALSE;
     }
     if (!LoadLibrary("JETAN", mode, kTRUE)) return kFALSE;
     if (!strcmp(mode, "PROOF")){
       gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libCGAL.so\"\)", kTRUE); 
       gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libfastjet.so\"\)", kTRUE); 
       // problem when loading siscone copiled with different gcc version??
       // gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libsiscone.so\"\)", kTRUE); 
       gProof->Exec("gSystem->Load\(\"/afs/cern.ch/user/d/dperrino/public/libSISConePlugin.so\"\)", kTRUE);      
     }
     if(!kUsePAR){ 
       if (!LoadLibrary("CGAL", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("fastjet", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("siscone", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("SISConePlugin", mode, kTRUE)) return kFALSE;
     }
     else{
       // par files plus FASTJET needs some extra work... need to change
       // the loading sequence in the auto generated .C file
       if (!LoadLibrary("libCGAL.so", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("libfastjet.so", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("libsiscone.so", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("libSISConePlugin.so", mode, kTRUE)) return kFALSE;
     }
     if (!LoadLibrary("FASTJETAN", mode, kTRUE)) return kFALSE;
   }

   // JETANdev
   if (iJETANdevLib) {
     // this part needs some rework in case we do not need the fastjed finders for processing
     if(iEMCUtilLibs){
       if (!LoadLibrary("EMCALUtils", mode, kTRUE) &&
	   !LoadLibrary("PHOSUtils", mode, kTRUE)) return kFALSE;
     }
     if (!LoadLibrary("JETANdev", mode, kTRUE)) return kFALSE;
     if (!strcmp(mode, "PROOF")){
     if (!LoadLibrary("FASTJET", mode, kTRUE)) return kFALSE;  
     }
     if(!kUsePAR){ 
       if (!LoadLibrary("CGAL", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("fastjet", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("siscone", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("SISConePlugin", mode, kTRUE)) return kFALSE;
     }
     else{
       // par files plus FASTJET needs some extra work... need to change
       // the loading sequence in the auto generated .C file
       if (!LoadLibrary("libCGAL.so", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("libfastjet.so", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("libsiscone.so", mode, kTRUE)) return kFALSE;
       if (!LoadLibrary("libSISConePlugin.so", mode, kTRUE)) return kFALSE;
     }
     if (!LoadLibrary("FASTJETANdev", mode, kTRUE)) return kFALSE;
   }

   if(iPWG4JetTasks){
     if (!LoadLibrary("PWGTools", mode, kTRUE)) return kFALSE;
     if (!LoadLibrary("PWGJE", mode, kTRUE)) return kFALSE;
   }

   if(iPWGPPQASym){
     if (!LoadSource(Form("%s/PWGPP/AliAnalysisTaskQASym.cxx",gSystem->ExpandPathName("$ALICE_ROOT")), mode, kTRUE))return kFALSE;
   }
   if(iPWG4TmpSourceSara){
     if(!kUsePAR)gSystem->AddIncludePath("-I$ALICE_ROOT/include/JetTasks"); // ugly hack!!
     if(!LoadSource(Form("%s/PWG4/JetTasks/AliAnalysisTaskEta.cxx",gSystem->ExpandPathName("$ALICE_ROOT")), mode, kTRUE))return kFALSE;
   }

   if (iPWG4PartCorrLibs) {   
      if (!LoadLibrary("PWG4PartCorrBase", mode, kTRUE) ||
          !LoadLibrary("PWG4PartCorrDep", mode, kTRUE)) return kFALSE;
   }
   if(iPWG4JCORRAN){
     // PWG4 particle correlations
     if(!LoadLibrary("PWG4JCORRAN",mode,kTRUE))return kFALSE;
   }
   if (iPWG4JetCorr) { 
     if (!LoadLibrary("PWG4JetCorrel", mode, kTRUE)) return kFALSE;
   }  
   if (iPWG4omega3pi) {
     if (!LoadLibrary("PWG4omega3pi", mode, kTRUE)) return kFALSE;
   }
   if (iPWG4GammaConvLib) {
      if (!LoadLibrary("PWG4GammaConv", mode, kTRUE)) return kFALSE;
   }      

   ::Info("AnalysisTrainPWG4Jets.C::LoadAnalysisLibraries", "Load other libraries:   SUCCESS");
   return kTRUE;
}

//______________________________________________________________________________
Bool_t LoadLibrary(const char *module, const char *mode, Bool_t rec=kFALSE)
{
// Load a module library in a given mode. Reports success.
   Int_t imode = -1;
   Int_t result;
   TString smodule(module);
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;
   TString mod(module);
   if (!mod.Length()) {
      ::Error("AnalysisTrainPWG4Jets.C::LoadLibrary", "Empty module name");
      return kFALSE;
   }   
   // If a library is specified, just load it
   if (smodule.EndsWith(".so")) {
      mod.Remove(mod.Index(".so"));
      result = gSystem->Load(mod);
      if (result < 0) {
         ::Error("AnalysisTrainPWG4Jets.C::LoadLibrary", "Could not load library %s", module);
         return kFALSE;
      }
      if (rec) anaLibs += Form("%s.so ",mod.Data()); 
      if (rec) anaLibsExtra += Form("%s.so ",mod.Data()); 
      return kTRUE;
   } 
   // Check if the library is already loaded
   if (strlen(gSystem->GetLibraries(Form("%s.so", module), "", kFALSE)) > 0)
      return kTRUE;    
   switch (imode) {
      case 0:
      case 2:
         if (kUsePAR) {
            result = SetupPar(module);
            if (rec) anaPars += Form("%s.par ", module);
         } else {
            result = gSystem->Load(Form("lib%s.so", module));
            if (rec) anaLibs += Form("lib%s.so ", module);
         }   
         break;
      case 1:
	if(!gSystem->AccessPathName(module)){
	  ::Info("AnalysisTrainPWG4Jets.C::LoadLibrary", "Removing directory %s",module);
	  gSystem->Exec(Form("rm -rf %s",module));
	}
         result = gProof->UploadPackage(module);
         if (result<0) {
            result = gProof->UploadPackage(gSystem->ExpandPathName(Form("$ALICE_ROOT/%s.par", module)));
            if (result<0) {
               ::Error("AnalysisTrainPWG4Jets.C::LoadLibrary", "Could not find module %s.par in current directory nor in $ALICE_ROOT", module);
               return kFALSE;
            }
         }   
         result = gProof->EnablePackage(module);
         break;
      default:
         return kFALSE;
   }         
   if (result < 0) {
      ::Error("AnalysisTrainPWG4Jets.C::LoadLibrary", "Could not load module %s", module);
      return kFALSE;
   }
   return kTRUE;
}           



//______________________________________________________________________________
Bool_t LoadSource(const char *source, const char *mode, Bool_t rec=kFALSE)
{
// Load a module library in a given mode. Reports success.
   Int_t imode = -1;
   Int_t result = -1;
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;
   TString ssource(source);
   TString basename = gSystem->BaseName(ssource.Data());
   if (!ssource.Length()) {
      ::Error("AnalysisTrainPWG4Jets.C::LoadSource", "Empty task name");
      return kFALSE;
   }   
   // we have a source code so compile it
   if (ssource.EndsWith(".cxx")) {
     // need to copy it here other wise the path is also used on grid...
     ssource.Remove(ssource.Index(".cxx"));
     basename.Remove(basename.Index(".cxx"));
     Printf("LoadSources:: Copying...  path %s{cxx,h}",ssource.Data());
     gSystem->Exec(Form("cp %s.cxx . ",ssource.Data()));
     gSystem->Exec(Form("cp %s.h . ",ssource.Data()));
     // Path to code
     // only needed for local compilation, in grid and proof mode 
     // the task headers are uploaded 
     //     path.Remove(path.Index(gSystem->BaseName(path.Data())));
     // Printf("LoadSources:: Including path %s",path.Data());
     //  if(path.Length()>0)gROOT->ProcessLine(Form(".include %s",path.Data()));
     Printf("LoadSources:: Loading...  path %s",basename.Data());
     switch (imode) {
     case 0:
       result = gROOT->LoadMacro(Form("%s.cxx++g",basename.Data()));
       break;
     case 1:
       result = gProof->LoadMacro(Form("%s.cxx++g",basename.Data()));
       break;
     case 2:
       result = gROOT->LoadMacro(Form("%s.cxx++g",basename.Data()));
       if (rec){
	 // what we want to compile
	 anaSources += Form("%s.cxx ",basename.Data()); 
	 // what we need as input...
	 anaLibs += Form("%s.cxx %s.h ",basename.Data(),basename.Data()); 
       }
       break;
     default:
       return kFALSE;
     }
   } 
   if (result < 0) {
      ::Error("AnalysisTrainPWG4Jets.C::LoadSources", "Could not load source %s", source);
      return kFALSE;
   }
   return kTRUE;
}           


//______________________________________________________________________________
TChain *CreateChain(const char *mode, const char *plugin_mode)
{
// Create the input chain
   Int_t imode = -1;
   if (!strcmp(mode, "LOCAL")) imode = 0;
   if (!strcmp(mode, "PROOF")) imode = 1;
   if (!strcmp(mode, "GRID"))  imode = 2;
   TChain *chain = NULL;
   // Local chain
   switch (imode) {
      case 0:
         if (iAODanalysis) {
            if (!kLocalXMLDataset.Length()) {
               // Local AOD
               chain = new TChain("aodTree");
	       TString line;
	       ifstream in;
	       in.open(kLocalDataList.Data());
	       Int_t ic = 0;
	       while (in.good()) {
		 in >> line;
		 if (line.Length() == 0) continue;
		 Printf("%d adding %s",ic,line.Data());
		 chain->Add(line.Data());
		 ic++;
	       }       
            } else {
               // Interactive AOD
               chain = CreateChainSingle(kLocalXMLDataset, "aodTree");
            }
         } else {      
	   if (!kLocalXMLDataset.Length()) {
	     // Local ESD
	     chain = new TChain("esdTree");
	     TString line;
	     ifstream in;
	     in.open(kLocalDataList.Data());
	     while (in.good()) {
	       in >> line;
	       if (line.Length() == 0) continue;
	       cout << " line = " << line << endl;
	       chain->Add(line.Data());
	     }       
	   } else {
	     // Interactive ESD
               chain = CreateChainSingle(kLocalXMLDataset, "esdTree");
	   }   
         }
         break;
      case 1:
         break;
      case 2:
         if (kPluginUse) {
//            AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode);
//            AliAnalysisManager::GetAnalysisManager()->SetGridHandler(alienHandler);
         } else {
            TString           treeName = "esdTree";
            if (iAODanalysis) treeName = "aodTree";
            chain = CreateChainSingle("wn.xml", treeName);
         }
         break;      
      default:   
   }
   if (chain && chain->GetNtrees()) return chain;
   return NULL;
}   

//______________________________________________________________________________
TChain* CreateChainSingle(const char* xmlfile, const char *treeName)
{
   printf("*******************************\n");
   printf("*** Getting the ESD Chain   ***\n");
   printf("*******************************\n");
   TAlienCollection * myCollection  = TAlienCollection::Open(xmlfile);

   if (!myCollection) {
      ::Error("AnalysisTrainPWG4Jets.C::CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
      return NULL ;
   }

   TChain* chain = new TChain(treeName);
   myCollection->Reset() ;
   while ( myCollection->Next() ) chain->Add(myCollection->GetTURL("")) ;
   chain->ls();
   return chain;
}

//______________________________________________________________________________
Int_t SetupPar(char* pararchivename)
{
   if (!pararchivename || !strlen(pararchivename)) return -1;
   char processline[1024];
   if (gSystem->AccessPathName(Form("%s.par", pararchivename))) {
      if (!gSystem->AccessPathName(Form("%s/%s.par", gSystem->Getenv("ALICE_ROOT"),pararchivename))) {
         ::Info("AnalysisTrainPWG4Jets.C::SetupPar", "Getting %s.par from $ALICE_ROOT", pararchivename);
	TFile::Cp(gSystem->ExpandPathName(Form("$ALICE_ROOT/%s.par", pararchivename)), 
		  Form("%s.par",pararchivename));
      } else {
         ::Error("AnalysisTrainPWG4Jets.C::SetupPar", "Cannot find %s.par", pararchivename);
         return -1;
      }   
   }
   if (kPluginUse && kSaveTrain) gSystem->Exec(Form("ln -s ../%s.par %s",pararchivename, kTrainName.Data()));
   gSystem->Exec(Form("tar xvzf %s.par", pararchivename));

   TString ocwd = gSystem->WorkingDirectory();
   if (!gSystem->ChangeDirectory(pararchivename)) return -1;
	
   // check for BUILD.sh and execute
   if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
      printf("*******************************\n");
      printf("*** Building PAR archive    ***\n");
      printf("*******************************\n");	    
      if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
         Error("runProcess","Cannot Build the PAR Archive! - Abort!");
         return -1;
      }
   }

	// check for SETUP.C and execute
	if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
	    printf("*******************************\n");
	    printf("*** Setup PAR archive       ***\n");
	    printf("*******************************\n");
	    gROOT->Macro("PROOF-INF/SETUP.C");
	}	
	if (!gSystem->ChangeDirectory(ocwd.Data())){
	  Error("Change back directory",Form("Cannot change to %s",ocwd.Data()));
	  return -1;
	}
   return 0;
}

//______________________________________________________________________________
AliAnalysisAlien* CreateAlienHandler(const char *plugin_mode)
{
// Check if user has a valid token, otherwise make one. This has limitations.
// One can always follow the standard procedure of calling alien-token-init then
//   source /tmp/gclient_env_$UID in the current shell.
//   if (!AliAnalysisGrid::CreateToken()) return NULL;
   AliAnalysisAlien *plugin = new AliAnalysisAlien();
// Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
   plugin->SetRunMode(plugin_mode);
   plugin->SetCheckCopy(kFALSE); 
   if (kPluginUseProductionMode) plugin->SetProductionMode();
   plugin->SetJobTag(kJobTag);
   plugin->SetNtestFiles(1);
//   plugin->SetPreferedSE("ALICE::NIHAM::File");
// Set versions of used packages
   plugin->SetAPIVersion("V1.1x");
   //   plugin->SetAPIVersion("V1.0x");
//   plugin->SetAPIVersion("V2.4");
   plugin->SetROOTVersion(kPluginRootVersion);
   plugin->SetAliROOTVersion(kPluginAliRootVersion);
// Declare input data to be processed.
// Method 1: Create automatically XML collections using alien 'find' command.
// Define production directory LFN
   plugin->SetGridDataDir(kGridDatadir.Data());
// Set data search pattern
   if (iAODanalysis) plugin->SetDataPattern(Form(" %s/*/*AliAOD.root",kGridPassPattern.Data()));
   else              plugin->SetDataPattern(Form(" %s/*/*AliESDs.root",kGridPassPattern.Data()));
// ...then add run numbers to be considered
//   plugin->SetRunRange(kGridRunRange[0], kGridRunRange[1]);
   for (Int_t i=kGridRunRange[0]; i<=kGridRunRange[1]; i++) {
     Printf("AnalysisTrainPWG4Jets Adding run number %s", Form(kGridRunPattern.Data(),i));
     plugin->AddRunNumber(Form(kGridRunPattern.Data(),i));
   }   

   if(kGridLocalRunList.Length()>0){
     ifstream in1;
     in1.open(kGridLocalRunList.Data());
     int iRun = 0;
     int icount = 0;
     Int_t nRun = 0;
     // just use run numbers, negatives will be excluded
     while(in1>>iRun){
       if(iRun>=0){
	 if(iRun>=0&&nRun>=kGridOffsetRunFromList&&(nRun<kGridMaxRunsFromList)){
	   Printf("AnalysisTrainPWG4Jets Adding run number from File %d: %s",nRun,Form(kGridRunPattern.Data(),iRun));
	   plugin->AddRunNumber(Form(kGridRunPattern.Data(),iRun));

	 }
	 else{
	   Printf("AnalysisTrainPWG4Jets Skipping run number from File %d: %d",nRun, iRun);
	 }
	 nRun++;
       }
       else{
	 Printf("AnalysisTrainPWG4Jets Skipping run number from File %d: %d",nRun, iRun);
       }
     }
   }
// Method 2: Declare existing data files (raw collections, xml collections, root file)
// If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir())
// XML collections added via this method can be combined with the first method if
// the content is compatible (using or not tags)
//   plugin->AddDataFile("tag.xml");
//   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");
// Define alien work directory where all files will be copied. Relative to alien $HOME.
   TString alien_workdir = "";
   
   if (iAODanalysis)  alien_workdir += "analysisAOD";
   else               alien_workdir += "analysisESD";    
       if(kGridDataSet.Length()>0)alien_workdir += Form("/%s%s",kGridDataSet.Data(),kGridExtraAliendirLevel.Data());
   plugin->SetGridWorkingDir(alien_workdir.Data());

   // Declare alien output directory. Relative to working directory.
   if (!kGridOutdir.Length()) kGridOutdir = Form("output_%s",kTrainName.Data());
   plugin->SetGridOutputDir(kGridOutdir);

   // Add external packages
   plugin->AddExternalPackage("boost::v1_43_0");
   plugin->AddExternalPackage("cgal::v3.6");
   plugin->AddExternalPackage("fastjet::v2.4.2");


   // set extra libs before par file compilation
   anaLibs += kGridExtraFiles;
   anaLibs     = anaLibs.Strip();   
   Printf("anaLibs %s",anaLibs.Data());
   Printf("anaLibsExtra %s",anaLibsExtra.Data());

   if (anaLibs.Length())          plugin->SetAdditionalLibs(anaLibs.Data());
   if (anaLibsExtra.Length())     plugin->SetAdditionalRootLibs(anaLibsExtra.Data());

   TString ana_sources = "";
   TString ana_add = "";
   if (kUsePAR && anaPars.Length()) {
      printf("%s\n", anaPars.Data());
      TObjArray *arr;
      TObjString *objstr;
      arr = anaPars.Tokenize(" ");
      TIter next(arr);
      while ((objstr=(TObjString*)next())) plugin->EnablePackage(objstr->GetString());
      delete arr;
   } 
   
// Declare the analysis source files names separated by blancs. To be compiled runtime
// using ACLiC on the worker nodes.
   ana_sources = anaSources.Strip();
// Declare all libraries (other than the default ones for the framework. These will be
// loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.

   if (ana_sources.Length()) plugin->SetAnalysisSource(ana_sources);
   plugin->SetExecutableCommand(kPluginExecutableCommand.Data());  
   // Declare the output file names separated by blancs.
   // (can be like: file.root or file.root@ALICE::Niham::File)
   plugin->SetMergeExcludes(kGridMergeExclude);
   plugin->SetMaxMergeFiles(kGridMaxMergeFiles);
   plugin->SetNrunsPerMaster(kGridRunsPerMaster);
   plugin->SetMergeViaJDL(kPluginMergeViaJDL);
   // Use fastread option
   plugin->SetFastReadOption(kPluginFastReadOption);
   // UseOverwrite mode
   plugin->SetOverwriteMode(kPluginOverwriteMode); 
   // Optionally define the files to be archived.
   //   plugin->SetOutputArchive("log_archive.zip:stdout,stderr@ALICE::NIHAM::File root_archive.zip:AliAOD.root,AOD.tag.root@ALICE::NIHAM::File");
   plugin->SetOutputToRunNo(kPluginOutputToRunNumber);     // write the output to subdirs named after run number
   
   // Put default output files to archive
   TString listhists = "";
   TString listaods  = "";
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   TIter next(mgr->GetOutputs());
   AliAnalysisDataContainer *output;
   while ((output=(AliAnalysisDataContainer*)next())) {
      const char *filename = output->GetFileName();
      if (!(strcmp(filename, "default"))) {
	if (!mgr->GetOutputEventHandler()) continue;
         filename = mgr->GetOutputEventHandler()->GetOutputFileName();
         if (listaods.Length()) listaods += " ";
	 listaods += filename;
      } else {
	if(!listhists.Contains(filename)){
	  if (listhists.Length()) listhists += " ";
	  listhists += filename;
	}
      }
   }

   if (mgr->GetExtraFiles().Length()) {
     if (listaods.Length()) listaods += " ";
     listaods += mgr->GetExtraFiles();
   }

   // if we do not fill the aod we do not need to store it
   //   kGridMergeExclude = listaods;
   
   if(kSaveAOD>=0){
     TString outputFiles =  "";
     outputFiles += mgr->GetExtraFiles();
     if (listhists.Length()) outputFiles += " ";
     outputFiles += listhists;
     plugin->SetDefaultOutputs(kFALSE);
     Printf("%s:%d Starting with the files %s",(char*)__FILE__,__LINE__,outputFiles.Data());
     // remove
     // no harm done when we try to remove something that is not there :)
     if(!(kSaveAOD&(1<<0))){
       outputFiles.ReplaceAll("AliAOD.root ","");
       listaods.ReplaceAll("AliAOD.root ","");
     }
     if(!(kSaveAOD&(1<<1))){
       if(kDeltaAODJetName.Length())outputFiles.ReplaceAll(kDeltaAODJetName.Data(),"");
       if(kDeltaAODJetName.Length())listaods.ReplaceAll(kDeltaAODJetName.Data(),"");
       
     }
     if(!(kSaveAOD&(1<<2))){
       if(kDeltaAODPartCorrName.Length())outputFiles.ReplaceAll(kDeltaAODPartCorrName.Data(),"");
       if(kDeltaAODPartCorrName.Length())listaods.ReplaceAll(kDeltaAODPartCorrName.Data(),"");
     }
     if(!(kSaveAOD&(1<<3))){
       if(kDeltaAODJCORRANName.Length())outputFiles.ReplaceAll(kDeltaAODJCORRANName.Data(),"");
       if(kDeltaAODJCORRANName.Length())listaods.ReplaceAll(kDeltaAODJCORRANName.Data(),"");
     }
     
     // 
     plugin->SetDefaultOutputs(kFALSE);
     Printf("%s:%d Saving the files %s",(char*)__FILE__,__LINE__,outputFiles.Data());
     plugin->SetOutputFiles(outputFiles.Data());
   }

   TString outputArchive;
   outputArchive = Form("log_archive.zip:std*@%s","disk=1");
   listaods.ReplaceAll(" ", ",");
   listhists.ReplaceAll(" ", ",");
   if (listhists.Length()){
     outputArchive += " ";
     outputArchive += "root_archive.zip:";
     outputArchive += listhists;
     if (listaods.Length()){
       outputArchive += ",";
       outputArchive += listaods;
     }
     outputArchive += Form("@%s", kGridOutputStorages.Data());
   }
   else{
     
     if (listaods.Length()){
       // we have only aod'ish output
       outputArchive += " ";
       outputArchive += "root_archive.zip:";
       outputArchive += listaods;
       outputArchive += Form("@%s", kGridOutputStorages.Data());
     }
     else{
       // no other outputs than std..
      ::Fatal("AnalysisTrainPWG4Jets", "No task output !");
     }
   }

   plugin->SetDefaultOutputs(kFALSE);
   plugin->SetOutputArchive(outputArchive);


   // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
   plugin->SetAnalysisMacro(Form("%s.C", kTrainName.Data()));
   // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
   plugin->SetSplitMaxInputFileNumber(kGridFilesPerJob);
   // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
   //   plugin->SetMaxInitFailed(5);
   // Optionally resubmit threshold.
   // plugin->SetMasterResubmitThreshold(90);
   // Optionally set time to live (default 30000 sec)
   plugin->SetTTL(80000); // 22h...
   // Optionally set input format (default xml-single)
   plugin->SetInputFormat("xml-single");
   // Optionally modify the name of the generated JDL (default analysis.jdl)
   plugin->SetJDLName(Form("%s.jdl", kTrainName.Data()));
   // Optionally modify the executable name (default analysis.sh)
   plugin->SetExecutable(Form("%s.sh", kTrainName.Data()));
   // Optionally modify job price (default 1)
   plugin->SetPrice(1);      
   // Optionally modify split mode (default 'se')    
   plugin->SetSplitMode("se");
   return plugin;
}

//______________________________________________________________________________
void WriteConfig()
{
// Write train configuration in a file. The file name has the format:
// train_[trainName]_ddMonthyyyy_time.C
   if (kUseDate) {
      gSystem->Exec("date +%d%b%Y_%Hh%M > date.tmp");
      ifstream fdate("date.tmp");
      if (!fdate.is_open()) {
         ::Error("AnalysisTrainPWG4Jets.C::Export","Could not generate file name");
         return;
      }
      const char date[64];
      fdate.getline(date,64);
      fdate.close();
      gSystem->Exec("rm date.tmp");
      kTrainName = Form("train_%s_%s", kTrainName.Data(), date);
   } else {
      kTrainName = Form("train_%s", kTrainName.Data());
   }   
   TString cdir = gSystem->WorkingDirectory();
   gSystem->MakeDirectory(kTrainName);
   gSystem->ChangeDirectory(kTrainName);
   ofstream out;
   out.open(Form("%sConfig.C",kTrainName.Data()), ios::out); 
   if (out.bad()) {
      ::Error("AnalysisTrainPWG4Jets.C::Export", "Cannot open ConfigTrain.C for writing");
      return;
   }
   out << "{" << endl;
   out << "   kTrainName      = " << "\"" << kTrainName.Data() << "\";" << endl;
   out << "   kProofCluster   = " << "\"" << kProofCluster.Data() << "\";" << endl;
   out << "   kProofUseAFPAR        = " << kProofUseAFPAR << ";" << endl;
   if (kProofUseAFPAR) 
      out << "   kProofAFversion       = " << kProofAFversion.Data() << ";" << endl;
   out << "   kProofDataSet   = " << "\"" << kProofDataSet.Data() << "\";" << endl;
   out << "   kPluginUse       = " << kPluginUse << ";" << endl;
   out << "   kUsePAR          = " << kUsePAR << ";" << endl;
   out << "   kUseCPAR         = " << kUseCPAR << ";" << endl;
   out << "   kPluginRootVersion    = " << "\"" << kPluginRootVersion.Data() << "\";" << endl;
   out << "   kPluginAliRootVersion = " << "\"" << kPluginAliRootVersion.Data() << "\";" << endl;
   out << "   kGridDatadir   = " << "\"" << kGridDatadir.Data() << "\";" << endl;
   if (!kGridOutdir.Length()) kGridOutdir = Form("output_%s",kTrainName.Data());
   out << "   kGridOutdir    = " << "\"" << kGridOutdir.Data() << "\";" << endl;
   out << "   kGridMaxMergeFiles   = " << kGridMaxMergeFiles << ";" << endl;
   out << "   kGridMergeExclude    = " << "\"" << kGridMergeExclude.Data() << "\";" << endl;
   out << "   kGridRunsPerMaster  = " << kGridRunsPerMaster << ";" << endl;
   out << "   kGridFilesPerJob    = " << kGridFilesPerJob << ";" << endl;
   out << "   kGridRunRange[0]    = " << kGridRunRange[0] << ";" << endl;
   out << "   kGridRunRange[1]    = " << kGridRunRange[1] << ";" << endl;
   out << "   kUseDebug          = " << kUseDebug << ";" << endl;
   out << "   kUseMC           = " << kUseMC << ";" << endl;
   out << "   kUseESDTags         = " << kUseESDTags << ";" << endl;
   out << "   kUseKinefilter      = " << kUseKinefilter << ";" << endl;
   out << "   kUseTR           = " << kUseTR << ";" << endl;
   out << "   kUseAODTags      = " << kUseAODTags << ";" << endl;
   out << "   kSaveTrain       = " << "kFALSE;" << endl << endl;
   out << "   // Analysis modules" << endl;
   out << "   iAODanalysis    = " << iAODanalysis << ";" << endl;
   out << "   iAODhandler     = " << iAODhandler << ";" << endl;
   out << "   iESDfilter      = " << iESDfilter << ";" << endl;
   out << "   iJETAN          = " << iJETAN << ";" << endl;
   out << "// Configuration fot the wagons" << endl;
   out << "}" << endl;
   ::Info("AnalysisTrainPWG4Jets.C::WriteConfig", "Train configuration wrote to file %s", Form("config_%s.C", kTrainName.Data()));
   gSystem->ChangeDirectory(cdir);
}   

//______________________________________________________________________________
Bool_t LoadConfig(const char *filename)
{
// Read train configuration from file
   if (gSystem->AccessPathName(filename)) {
      ::Error("AnalysisTrainPWG4Jets.C::LoadConfig", "Config file name not found");
      return kFALSE;
   }   
   gROOT->ProcessLine(Form(".x %s", filename));
   ::Info("AnalysisTrainPWG4Jets.C::LoadConfig", "Train configuration loaded from file %s", filename);
   return kTRUE;
}

Bool_t PatchJDL(){
  Printf(">>> Patching JDL");
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  AliAnalysisAlien*    gridHandler = (AliAnalysisAlien*)mgr->GetGridHandler();
  TGridJDL *jdl = gridHandler->GetGridJDL();
  if(iJETAN)jdl->AddToPackages("fastjet","v2.4.0");
  gridHandler->WriteJDL(kFALSE);
  Printf("<<<  Patching JDL");
  return kTRUE;
}

Bool_t PatchAnalysisMacro(){
  Printf(">>> Patching AnalysisMacro");
  gSystem->Exec(Form("mv %s.C %s.C_tmp",kTrainName.Data(),kTrainName.Data()));

  ifstream in1; 
  in1.open(Form("%s.C_tmp", kTrainName.Data()));
  char cLine[250];
  TString st;
  while(in1.getline(cLine,250)){
    st += cLine;
    st += "\n";
  }
  Int_t index= -1;
  index = st.Index("gSystem->Load(\"libPhysics\");");
  index += strlen("gSystem->Load(\"libPhysics\");");
  /*
    TObjArray *arr;
    TObjString *objstr;
    arr = anaLibs.Tokenize(" ");
    TIter next(arr);

    add += "\n\n // added by CKB \n";
    while ((objstr=(TObjString*)next())){
      if(objstr->GetString().Contains("PWG3"))continue;
      if(objstr->GetString().EndsWith(".so"))add += Form("gSystem->Load(\"%s\");\n",objstr->GetString().Data());
    }
    delete arr; 
    */
    //    add += Form("AliLog::SetGlobalLogLevel(%d);\n",AliLog::GetGlobalLogLevel());
  TString add = "";

  if(index<0)Printf("%s:%d index out of bounds",(char*)__FILE__,__LINE__);
  add += "\n\n // added by CKB \n";
  if(kErrorIgnoreLevel>0)add += Form("gErrorIgnoreLevel = %d;\n",kErrorIgnoreLevel);
  add += "\n gSystem->AddIncludePath(\"./\"); \n";
  add += "\n gSystem->SetFPEMask(); \n";


  if(gGrid&&kPluginAliRootVersion.Length()==0){
    /*
    add += "\n // Dirty hack for TRD reference data \n";
    add += "\n gSystem->Setenv(\"ALICE_ROOT\",\"";
    add += Form("alien://%s/rootfiles/",gGrid->GetHomeDirectory());
    add += "\"); \n";
    */
  }

  add += "// BKC \n\n";
  st.Insert(index,add.Data());

  if(kUseDebug){
    //    st.Insert(index,"\n gROOT->ProcessLine(\".trace\"); // CKB \n");
  }

  if(kUseCPAR&&kPluginAliRootVersion.Length()==0){
    index = st.Index("gSystem->AddIncludePath(\"-I$"); // uncommen $ALICE_ROOT include for par files
    if(index<0)Printf("%s:%d index out of bounds",(char*)__FILE__,__LINE__);
    st.Insert(index,"// CKB comment out whehn no aliroot is provided \n //");
  }

  if(AliLog::GetGlobalLogLevel()==AliLog::kFatal){
    index = st.Index("AliLog::SetGlobal"); // ncomment setting of log level, do my own
    if(index<0)Printf("%s:%d index out of bounds",(char*)__FILE__,__LINE__);
    st.Insert(index,"AliLog::SetGlobalLogLevel(AliLog::kFatal);// CKB \n  // CKB comment out for own setting \n  //");
  }

  ofstream out;
  out.open(Form("%s.C", kTrainName.Data()));
  if (out.bad()) {
    return kFALSE;
  }
  out << st << endl;
  Printf("<<< Patching AnalysisMacro");





  Printf(">>> Patching Merge Macro");
  gSystem->Exec(Form("mv %s_merge.C %s_merge.C_tmp",kTrainName.Data(),kTrainName.Data()));

  ifstream in2; 
  in2.open(Form("%s_merge.C_tmp", kTrainName.Data()));
  TString st2;
  while(in2.getline(cLine,250)){
    st2 += cLine;
    st2 += "\n";
  }
  index = st2.Index("gSystem->Load(\"libPhysics\");");
  index += strlen("gSystem->Load(\"libPhysics\");");
  TString add2 = "";
  add2 += "\n gSystem->AddIncludePath(\"./\"); \n";
  if(gGrid&&kPluginAliRootVersion.Length()==0){
    /*
    add2 += "\n // Dirty hack for TRD reference data \n";
    add2 += "\n gSystem->Setenv(\"ALICE_ROOT\",\"";
    add2 += Form("alien://%s/rootfiles/",gGrid->GetHomeDirectory());
    add2 += "\"); \n";
    */
  }
  add2 += "// BKC \n\n";
  if(index<0)Printf("%s:%d index out of bounds",(char*)__FILE__,__LINE__);
  st2.Insert(index,add.Data());


  if(kUseDebug){
    //    st2.Insert(index,"\n gROOT->ProcessLine(\".trace\"); // CKB \n");
  }

  if(kUseCPAR&&kPluginAliRootVersion.Length()==0){
    index = st2.Index("gSystem->AddIncludePath(\"-I$"); // uncomment $ALICE_ROOT include for par files
    if(index<0)Printf("%s:%d index out of bounds",(char*)__FILE__,__LINE__);
    st2.Insert(index,"// CKB comment out whehn no aliroot is provided \n //");
  }

  // do not exclude the extra files from merign, this is done explicitly in this train script
  //  index = st2.Index("mergeExcludes +="); // uncommen $ALICE_ROOT include for par files
  //  if(index<0)Printf("%s:%d index out of bounds",(char*)__FILE__,__LINE__);
  // st2.Insert(index,"// CKB comment out, handled explicitly by the train macro \n //");


  ofstream out2;
  out2.open(Form("%s_merge.C", kTrainName.Data()));
  if (out2.bad()) {
    return kFALSE;
  }
  out2 << st2 << endl;
  Printf("<<< Patching Merging Macro");



  return kTRUE;

}
 AnalysisTrainPWGJets.C:1
 AnalysisTrainPWGJets.C:2
 AnalysisTrainPWGJets.C:3
 AnalysisTrainPWGJets.C:4
 AnalysisTrainPWGJets.C:5
 AnalysisTrainPWGJets.C:6
 AnalysisTrainPWGJets.C:7
 AnalysisTrainPWGJets.C:8
 AnalysisTrainPWGJets.C:9
 AnalysisTrainPWGJets.C:10
 AnalysisTrainPWGJets.C:11
 AnalysisTrainPWGJets.C:12
 AnalysisTrainPWGJets.C:13
 AnalysisTrainPWGJets.C:14
 AnalysisTrainPWGJets.C:15
 AnalysisTrainPWGJets.C:16
 AnalysisTrainPWGJets.C:17
 AnalysisTrainPWGJets.C:18
 AnalysisTrainPWGJets.C:19
 AnalysisTrainPWGJets.C:20
 AnalysisTrainPWGJets.C:21
 AnalysisTrainPWGJets.C:22
 AnalysisTrainPWGJets.C:23
 AnalysisTrainPWGJets.C:24
 AnalysisTrainPWGJets.C:25
 AnalysisTrainPWGJets.C:26
 AnalysisTrainPWGJets.C:27
 AnalysisTrainPWGJets.C:28
 AnalysisTrainPWGJets.C:29
 AnalysisTrainPWGJets.C:30
 AnalysisTrainPWGJets.C:31
 AnalysisTrainPWGJets.C:32
 AnalysisTrainPWGJets.C:33
 AnalysisTrainPWGJets.C:34
 AnalysisTrainPWGJets.C:35
 AnalysisTrainPWGJets.C:36
 AnalysisTrainPWGJets.C:37
 AnalysisTrainPWGJets.C:38
 AnalysisTrainPWGJets.C:39
 AnalysisTrainPWGJets.C:40
 AnalysisTrainPWGJets.C:41
 AnalysisTrainPWGJets.C:42
 AnalysisTrainPWGJets.C:43
 AnalysisTrainPWGJets.C:44
 AnalysisTrainPWGJets.C:45
 AnalysisTrainPWGJets.C:46
 AnalysisTrainPWGJets.C:47
 AnalysisTrainPWGJets.C:48
 AnalysisTrainPWGJets.C:49
 AnalysisTrainPWGJets.C:50
 AnalysisTrainPWGJets.C:51
 AnalysisTrainPWGJets.C:52
 AnalysisTrainPWGJets.C:53
 AnalysisTrainPWGJets.C:54
 AnalysisTrainPWGJets.C:55
 AnalysisTrainPWGJets.C:56
 AnalysisTrainPWGJets.C:57
 AnalysisTrainPWGJets.C:58
 AnalysisTrainPWGJets.C:59
 AnalysisTrainPWGJets.C:60
 AnalysisTrainPWGJets.C:61
 AnalysisTrainPWGJets.C:62
 AnalysisTrainPWGJets.C:63
 AnalysisTrainPWGJets.C:64
 AnalysisTrainPWGJets.C:65
 AnalysisTrainPWGJets.C:66
 AnalysisTrainPWGJets.C:67
 AnalysisTrainPWGJets.C:68
 AnalysisTrainPWGJets.C:69
 AnalysisTrainPWGJets.C:70
 AnalysisTrainPWGJets.C:71
 AnalysisTrainPWGJets.C:72
 AnalysisTrainPWGJets.C:73
 AnalysisTrainPWGJets.C:74
 AnalysisTrainPWGJets.C:75
 AnalysisTrainPWGJets.C:76
 AnalysisTrainPWGJets.C:77
 AnalysisTrainPWGJets.C:78
 AnalysisTrainPWGJets.C:79
 AnalysisTrainPWGJets.C:80
 AnalysisTrainPWGJets.C:81
 AnalysisTrainPWGJets.C:82
 AnalysisTrainPWGJets.C:83
 AnalysisTrainPWGJets.C:84
 AnalysisTrainPWGJets.C:85
 AnalysisTrainPWGJets.C:86
 AnalysisTrainPWGJets.C:87
 AnalysisTrainPWGJets.C:88
 AnalysisTrainPWGJets.C:89
 AnalysisTrainPWGJets.C:90
 AnalysisTrainPWGJets.C:91
 AnalysisTrainPWGJets.C:92
 AnalysisTrainPWGJets.C:93
 AnalysisTrainPWGJets.C:94
 AnalysisTrainPWGJets.C:95
 AnalysisTrainPWGJets.C:96
 AnalysisTrainPWGJets.C:97
 AnalysisTrainPWGJets.C:98
 AnalysisTrainPWGJets.C:99
 AnalysisTrainPWGJets.C:100
 AnalysisTrainPWGJets.C:101
 AnalysisTrainPWGJets.C:102
 AnalysisTrainPWGJets.C:103
 AnalysisTrainPWGJets.C:104
 AnalysisTrainPWGJets.C:105
 AnalysisTrainPWGJets.C:106
 AnalysisTrainPWGJets.C:107
 AnalysisTrainPWGJets.C:108
 AnalysisTrainPWGJets.C:109
 AnalysisTrainPWGJets.C:110
 AnalysisTrainPWGJets.C:111
 AnalysisTrainPWGJets.C:112
 AnalysisTrainPWGJets.C:113
 AnalysisTrainPWGJets.C:114
 AnalysisTrainPWGJets.C:115
 AnalysisTrainPWGJets.C:116
 AnalysisTrainPWGJets.C:117
 AnalysisTrainPWGJets.C:118
 AnalysisTrainPWGJets.C:119
 AnalysisTrainPWGJets.C:120
 AnalysisTrainPWGJets.C:121
 AnalysisTrainPWGJets.C:122
 AnalysisTrainPWGJets.C:123
 AnalysisTrainPWGJets.C:124
 AnalysisTrainPWGJets.C:125
 AnalysisTrainPWGJets.C:126
 AnalysisTrainPWGJets.C:127
 AnalysisTrainPWGJets.C:128
 AnalysisTrainPWGJets.C:129
 AnalysisTrainPWGJets.C:130
 AnalysisTrainPWGJets.C:131
 AnalysisTrainPWGJets.C:132
 AnalysisTrainPWGJets.C:133
 AnalysisTrainPWGJets.C:134
 AnalysisTrainPWGJets.C:135
 AnalysisTrainPWGJets.C:136
 AnalysisTrainPWGJets.C:137
 AnalysisTrainPWGJets.C:138
 AnalysisTrainPWGJets.C:139
 AnalysisTrainPWGJets.C:140
 AnalysisTrainPWGJets.C:141
 AnalysisTrainPWGJets.C:142
 AnalysisTrainPWGJets.C:143
 AnalysisTrainPWGJets.C:144
 AnalysisTrainPWGJets.C:145
 AnalysisTrainPWGJets.C:146
 AnalysisTrainPWGJets.C:147
 AnalysisTrainPWGJets.C:148
 AnalysisTrainPWGJets.C:149
 AnalysisTrainPWGJets.C:150
 AnalysisTrainPWGJets.C:151
 AnalysisTrainPWGJets.C:152
 AnalysisTrainPWGJets.C:153
 AnalysisTrainPWGJets.C:154
 AnalysisTrainPWGJets.C:155
 AnalysisTrainPWGJets.C:156
 AnalysisTrainPWGJets.C:157
 AnalysisTrainPWGJets.C:158
 AnalysisTrainPWGJets.C:159
 AnalysisTrainPWGJets.C:160
 AnalysisTrainPWGJets.C:161
 AnalysisTrainPWGJets.C:162
 AnalysisTrainPWGJets.C:163
 AnalysisTrainPWGJets.C:164
 AnalysisTrainPWGJets.C:165
 AnalysisTrainPWGJets.C:166
 AnalysisTrainPWGJets.C:167
 AnalysisTrainPWGJets.C:168
 AnalysisTrainPWGJets.C:169
 AnalysisTrainPWGJets.C:170
 AnalysisTrainPWGJets.C:171
 AnalysisTrainPWGJets.C:172
 AnalysisTrainPWGJets.C:173
 AnalysisTrainPWGJets.C:174
 AnalysisTrainPWGJets.C:175
 AnalysisTrainPWGJets.C:176
 AnalysisTrainPWGJets.C:177
 AnalysisTrainPWGJets.C:178
 AnalysisTrainPWGJets.C:179
 AnalysisTrainPWGJets.C:180
 AnalysisTrainPWGJets.C:181
 AnalysisTrainPWGJets.C:182
 AnalysisTrainPWGJets.C:183
 AnalysisTrainPWGJets.C:184
 AnalysisTrainPWGJets.C:185
 AnalysisTrainPWGJets.C:186
 AnalysisTrainPWGJets.C:187
 AnalysisTrainPWGJets.C:188
 AnalysisTrainPWGJets.C:189
 AnalysisTrainPWGJets.C:190
 AnalysisTrainPWGJets.C:191
 AnalysisTrainPWGJets.C:192
 AnalysisTrainPWGJets.C:193
 AnalysisTrainPWGJets.C:194
 AnalysisTrainPWGJets.C:195
 AnalysisTrainPWGJets.C:196
 AnalysisTrainPWGJets.C:197
 AnalysisTrainPWGJets.C:198
 AnalysisTrainPWGJets.C:199
 AnalysisTrainPWGJets.C:200
 AnalysisTrainPWGJets.C:201
 AnalysisTrainPWGJets.C:202
 AnalysisTrainPWGJets.C:203
 AnalysisTrainPWGJets.C:204
 AnalysisTrainPWGJets.C:205
 AnalysisTrainPWGJets.C:206
 AnalysisTrainPWGJets.C:207
 AnalysisTrainPWGJets.C:208
 AnalysisTrainPWGJets.C:209
 AnalysisTrainPWGJets.C:210
 AnalysisTrainPWGJets.C:211
 AnalysisTrainPWGJets.C:212
 AnalysisTrainPWGJets.C:213
 AnalysisTrainPWGJets.C:214
 AnalysisTrainPWGJets.C:215
 AnalysisTrainPWGJets.C:216
 AnalysisTrainPWGJets.C:217
 AnalysisTrainPWGJets.C:218
 AnalysisTrainPWGJets.C:219
 AnalysisTrainPWGJets.C:220
 AnalysisTrainPWGJets.C:221
 AnalysisTrainPWGJets.C:222
 AnalysisTrainPWGJets.C:223
 AnalysisTrainPWGJets.C:224
 AnalysisTrainPWGJets.C:225
 AnalysisTrainPWGJets.C:226
 AnalysisTrainPWGJets.C:227
 AnalysisTrainPWGJets.C:228
 AnalysisTrainPWGJets.C:229
 AnalysisTrainPWGJets.C:230
 AnalysisTrainPWGJets.C:231
 AnalysisTrainPWGJets.C:232
 AnalysisTrainPWGJets.C:233
 AnalysisTrainPWGJets.C:234
 AnalysisTrainPWGJets.C:235
 AnalysisTrainPWGJets.C:236
 AnalysisTrainPWGJets.C:237
 AnalysisTrainPWGJets.C:238
 AnalysisTrainPWGJets.C:239
 AnalysisTrainPWGJets.C:240
 AnalysisTrainPWGJets.C:241
 AnalysisTrainPWGJets.C:242
 AnalysisTrainPWGJets.C:243
 AnalysisTrainPWGJets.C:244
 AnalysisTrainPWGJets.C:245
 AnalysisTrainPWGJets.C:246
 AnalysisTrainPWGJets.C:247
 AnalysisTrainPWGJets.C:248
 AnalysisTrainPWGJets.C:249
 AnalysisTrainPWGJets.C:250
 AnalysisTrainPWGJets.C:251
 AnalysisTrainPWGJets.C:252
 AnalysisTrainPWGJets.C:253
 AnalysisTrainPWGJets.C:254
 AnalysisTrainPWGJets.C:255
 AnalysisTrainPWGJets.C:256
 AnalysisTrainPWGJets.C:257
 AnalysisTrainPWGJets.C:258
 AnalysisTrainPWGJets.C:259
 AnalysisTrainPWGJets.C:260
 AnalysisTrainPWGJets.C:261
 AnalysisTrainPWGJets.C:262
 AnalysisTrainPWGJets.C:263
 AnalysisTrainPWGJets.C:264
 AnalysisTrainPWGJets.C:265
 AnalysisTrainPWGJets.C:266
 AnalysisTrainPWGJets.C:267
 AnalysisTrainPWGJets.C:268
 AnalysisTrainPWGJets.C:269
 AnalysisTrainPWGJets.C:270
 AnalysisTrainPWGJets.C:271
 AnalysisTrainPWGJets.C:272
 AnalysisTrainPWGJets.C:273
 AnalysisTrainPWGJets.C:274
 AnalysisTrainPWGJets.C:275
 AnalysisTrainPWGJets.C:276
 AnalysisTrainPWGJets.C:277
 AnalysisTrainPWGJets.C:278
 AnalysisTrainPWGJets.C:279
 AnalysisTrainPWGJets.C:280
 AnalysisTrainPWGJets.C:281
 AnalysisTrainPWGJets.C:282
 AnalysisTrainPWGJets.C:283
 AnalysisTrainPWGJets.C:284
 AnalysisTrainPWGJets.C:285
 AnalysisTrainPWGJets.C:286
 AnalysisTrainPWGJets.C:287
 AnalysisTrainPWGJets.C:288
 AnalysisTrainPWGJets.C:289
 AnalysisTrainPWGJets.C:290
 AnalysisTrainPWGJets.C:291
 AnalysisTrainPWGJets.C:292
 AnalysisTrainPWGJets.C:293
 AnalysisTrainPWGJets.C:294
 AnalysisTrainPWGJets.C:295
 AnalysisTrainPWGJets.C:296
 AnalysisTrainPWGJets.C:297
 AnalysisTrainPWGJets.C:298
 AnalysisTrainPWGJets.C:299
 AnalysisTrainPWGJets.C:300
 AnalysisTrainPWGJets.C:301
 AnalysisTrainPWGJets.C:302
 AnalysisTrainPWGJets.C:303
 AnalysisTrainPWGJets.C:304
 AnalysisTrainPWGJets.C:305
 AnalysisTrainPWGJets.C:306
 AnalysisTrainPWGJets.C:307
 AnalysisTrainPWGJets.C:308
 AnalysisTrainPWGJets.C:309
 AnalysisTrainPWGJets.C:310
 AnalysisTrainPWGJets.C:311
 AnalysisTrainPWGJets.C:312
 AnalysisTrainPWGJets.C:313
 AnalysisTrainPWGJets.C:314
 AnalysisTrainPWGJets.C:315
 AnalysisTrainPWGJets.C:316
 AnalysisTrainPWGJets.C:317
 AnalysisTrainPWGJets.C:318
 AnalysisTrainPWGJets.C:319
 AnalysisTrainPWGJets.C:320
 AnalysisTrainPWGJets.C:321
 AnalysisTrainPWGJets.C:322
 AnalysisTrainPWGJets.C:323
 AnalysisTrainPWGJets.C:324
 AnalysisTrainPWGJets.C:325
 AnalysisTrainPWGJets.C:326
 AnalysisTrainPWGJets.C:327
 AnalysisTrainPWGJets.C:328
 AnalysisTrainPWGJets.C:329
 AnalysisTrainPWGJets.C:330
 AnalysisTrainPWGJets.C:331
 AnalysisTrainPWGJets.C:332
 AnalysisTrainPWGJets.C:333
 AnalysisTrainPWGJets.C:334
 AnalysisTrainPWGJets.C:335
 AnalysisTrainPWGJets.C:336
 AnalysisTrainPWGJets.C:337
 AnalysisTrainPWGJets.C:338
 AnalysisTrainPWGJets.C:339
 AnalysisTrainPWGJets.C:340
 AnalysisTrainPWGJets.C:341
 AnalysisTrainPWGJets.C:342
 AnalysisTrainPWGJets.C:343
 AnalysisTrainPWGJets.C:344
 AnalysisTrainPWGJets.C:345
 AnalysisTrainPWGJets.C:346
 AnalysisTrainPWGJets.C:347
 AnalysisTrainPWGJets.C:348
 AnalysisTrainPWGJets.C:349
 AnalysisTrainPWGJets.C:350
 AnalysisTrainPWGJets.C:351
 AnalysisTrainPWGJets.C:352
 AnalysisTrainPWGJets.C:353
 AnalysisTrainPWGJets.C:354
 AnalysisTrainPWGJets.C:355
 AnalysisTrainPWGJets.C:356
 AnalysisTrainPWGJets.C:357
 AnalysisTrainPWGJets.C:358
 AnalysisTrainPWGJets.C:359
 AnalysisTrainPWGJets.C:360
 AnalysisTrainPWGJets.C:361
 AnalysisTrainPWGJets.C:362
 AnalysisTrainPWGJets.C:363
 AnalysisTrainPWGJets.C:364
 AnalysisTrainPWGJets.C:365
 AnalysisTrainPWGJets.C:366
 AnalysisTrainPWGJets.C:367
 AnalysisTrainPWGJets.C:368
 AnalysisTrainPWGJets.C:369
 AnalysisTrainPWGJets.C:370
 AnalysisTrainPWGJets.C:371
 AnalysisTrainPWGJets.C:372
 AnalysisTrainPWGJets.C:373
 AnalysisTrainPWGJets.C:374
 AnalysisTrainPWGJets.C:375
 AnalysisTrainPWGJets.C:376
 AnalysisTrainPWGJets.C:377
 AnalysisTrainPWGJets.C:378
 AnalysisTrainPWGJets.C:379
 AnalysisTrainPWGJets.C:380
 AnalysisTrainPWGJets.C:381
 AnalysisTrainPWGJets.C:382
 AnalysisTrainPWGJets.C:383
 AnalysisTrainPWGJets.C:384
 AnalysisTrainPWGJets.C:385
 AnalysisTrainPWGJets.C:386
 AnalysisTrainPWGJets.C:387
 AnalysisTrainPWGJets.C:388
 AnalysisTrainPWGJets.C:389
 AnalysisTrainPWGJets.C:390
 AnalysisTrainPWGJets.C:391
 AnalysisTrainPWGJets.C:392
 AnalysisTrainPWGJets.C:393
 AnalysisTrainPWGJets.C:394
 AnalysisTrainPWGJets.C:395
 AnalysisTrainPWGJets.C:396
 AnalysisTrainPWGJets.C:397
 AnalysisTrainPWGJets.C:398
 AnalysisTrainPWGJets.C:399
 AnalysisTrainPWGJets.C:400
 AnalysisTrainPWGJets.C:401
 AnalysisTrainPWGJets.C:402
 AnalysisTrainPWGJets.C:403
 AnalysisTrainPWGJets.C:404
 AnalysisTrainPWGJets.C:405
 AnalysisTrainPWGJets.C:406
 AnalysisTrainPWGJets.C:407
 AnalysisTrainPWGJets.C:408
 AnalysisTrainPWGJets.C:409
 AnalysisTrainPWGJets.C:410
 AnalysisTrainPWGJets.C:411
 AnalysisTrainPWGJets.C:412
 AnalysisTrainPWGJets.C:413
 AnalysisTrainPWGJets.C:414
 AnalysisTrainPWGJets.C:415
 AnalysisTrainPWGJets.C:416
 AnalysisTrainPWGJets.C:417
 AnalysisTrainPWGJets.C:418
 AnalysisTrainPWGJets.C:419
 AnalysisTrainPWGJets.C:420
 AnalysisTrainPWGJets.C:421
 AnalysisTrainPWGJets.C:422
 AnalysisTrainPWGJets.C:423
 AnalysisTrainPWGJets.C:424
 AnalysisTrainPWGJets.C:425
 AnalysisTrainPWGJets.C:426
 AnalysisTrainPWGJets.C:427
 AnalysisTrainPWGJets.C:428
 AnalysisTrainPWGJets.C:429
 AnalysisTrainPWGJets.C:430
 AnalysisTrainPWGJets.C:431
 AnalysisTrainPWGJets.C:432
 AnalysisTrainPWGJets.C:433
 AnalysisTrainPWGJets.C:434
 AnalysisTrainPWGJets.C:435
 AnalysisTrainPWGJets.C:436
 AnalysisTrainPWGJets.C:437
 AnalysisTrainPWGJets.C:438
 AnalysisTrainPWGJets.C:439
 AnalysisTrainPWGJets.C:440
 AnalysisTrainPWGJets.C:441
 AnalysisTrainPWGJets.C:442
 AnalysisTrainPWGJets.C:443
 AnalysisTrainPWGJets.C:444
 AnalysisTrainPWGJets.C:445
 AnalysisTrainPWGJets.C:446
 AnalysisTrainPWGJets.C:447
 AnalysisTrainPWGJets.C:448
 AnalysisTrainPWGJets.C:449
 AnalysisTrainPWGJets.C:450
 AnalysisTrainPWGJets.C:451
 AnalysisTrainPWGJets.C:452
 AnalysisTrainPWGJets.C:453
 AnalysisTrainPWGJets.C:454
 AnalysisTrainPWGJets.C:455
 AnalysisTrainPWGJets.C:456
 AnalysisTrainPWGJets.C:457
 AnalysisTrainPWGJets.C:458
 AnalysisTrainPWGJets.C:459
 AnalysisTrainPWGJets.C:460
 AnalysisTrainPWGJets.C:461
 AnalysisTrainPWGJets.C:462
 AnalysisTrainPWGJets.C:463
 AnalysisTrainPWGJets.C:464
 AnalysisTrainPWGJets.C:465
 AnalysisTrainPWGJets.C:466
 AnalysisTrainPWGJets.C:467
 AnalysisTrainPWGJets.C:468
 AnalysisTrainPWGJets.C:469
 AnalysisTrainPWGJets.C:470
 AnalysisTrainPWGJets.C:471
 AnalysisTrainPWGJets.C:472
 AnalysisTrainPWGJets.C:473
 AnalysisTrainPWGJets.C:474
 AnalysisTrainPWGJets.C:475
 AnalysisTrainPWGJets.C:476
 AnalysisTrainPWGJets.C:477
 AnalysisTrainPWGJets.C:478
 AnalysisTrainPWGJets.C:479
 AnalysisTrainPWGJets.C:480
 AnalysisTrainPWGJets.C:481
 AnalysisTrainPWGJets.C:482
 AnalysisTrainPWGJets.C:483
 AnalysisTrainPWGJets.C:484
 AnalysisTrainPWGJets.C:485
 AnalysisTrainPWGJets.C:486
 AnalysisTrainPWGJets.C:487
 AnalysisTrainPWGJets.C:488
 AnalysisTrainPWGJets.C:489
 AnalysisTrainPWGJets.C:490
 AnalysisTrainPWGJets.C:491
 AnalysisTrainPWGJets.C:492
 AnalysisTrainPWGJets.C:493
 AnalysisTrainPWGJets.C:494
 AnalysisTrainPWGJets.C:495
 AnalysisTrainPWGJets.C:496
 AnalysisTrainPWGJets.C:497
 AnalysisTrainPWGJets.C:498
 AnalysisTrainPWGJets.C:499
 AnalysisTrainPWGJets.C:500
 AnalysisTrainPWGJets.C:501
 AnalysisTrainPWGJets.C:502
 AnalysisTrainPWGJets.C:503
 AnalysisTrainPWGJets.C:504
 AnalysisTrainPWGJets.C:505
 AnalysisTrainPWGJets.C:506
 AnalysisTrainPWGJets.C:507
 AnalysisTrainPWGJets.C:508
 AnalysisTrainPWGJets.C:509
 AnalysisTrainPWGJets.C:510
 AnalysisTrainPWGJets.C:511
 AnalysisTrainPWGJets.C:512
 AnalysisTrainPWGJets.C:513
 AnalysisTrainPWGJets.C:514
 AnalysisTrainPWGJets.C:515
 AnalysisTrainPWGJets.C:516
 AnalysisTrainPWGJets.C:517
 AnalysisTrainPWGJets.C:518
 AnalysisTrainPWGJets.C:519
 AnalysisTrainPWGJets.C:520
 AnalysisTrainPWGJets.C:521
 AnalysisTrainPWGJets.C:522
 AnalysisTrainPWGJets.C:523
 AnalysisTrainPWGJets.C:524
 AnalysisTrainPWGJets.C:525
 AnalysisTrainPWGJets.C:526
 AnalysisTrainPWGJets.C:527
 AnalysisTrainPWGJets.C:528
 AnalysisTrainPWGJets.C:529
 AnalysisTrainPWGJets.C:530
 AnalysisTrainPWGJets.C:531
 AnalysisTrainPWGJets.C:532
 AnalysisTrainPWGJets.C:533
 AnalysisTrainPWGJets.C:534
 AnalysisTrainPWGJets.C:535
 AnalysisTrainPWGJets.C:536
 AnalysisTrainPWGJets.C:537
 AnalysisTrainPWGJets.C:538
 AnalysisTrainPWGJets.C:539
 AnalysisTrainPWGJets.C:540
 AnalysisTrainPWGJets.C:541
 AnalysisTrainPWGJets.C:542
 AnalysisTrainPWGJets.C:543
 AnalysisTrainPWGJets.C:544
 AnalysisTrainPWGJets.C:545
 AnalysisTrainPWGJets.C:546
 AnalysisTrainPWGJets.C:547
 AnalysisTrainPWGJets.C:548
 AnalysisTrainPWGJets.C:549
 AnalysisTrainPWGJets.C:550
 AnalysisTrainPWGJets.C:551
 AnalysisTrainPWGJets.C:552
 AnalysisTrainPWGJets.C:553
 AnalysisTrainPWGJets.C:554
 AnalysisTrainPWGJets.C:555
 AnalysisTrainPWGJets.C:556
 AnalysisTrainPWGJets.C:557
 AnalysisTrainPWGJets.C:558
 AnalysisTrainPWGJets.C:559
 AnalysisTrainPWGJets.C:560
 AnalysisTrainPWGJets.C:561
 AnalysisTrainPWGJets.C:562
 AnalysisTrainPWGJets.C:563
 AnalysisTrainPWGJets.C:564
 AnalysisTrainPWGJets.C:565
 AnalysisTrainPWGJets.C:566
 AnalysisTrainPWGJets.C:567
 AnalysisTrainPWGJets.C:568
 AnalysisTrainPWGJets.C:569
 AnalysisTrainPWGJets.C:570
 AnalysisTrainPWGJets.C:571
 AnalysisTrainPWGJets.C:572
 AnalysisTrainPWGJets.C:573
 AnalysisTrainPWGJets.C:574
 AnalysisTrainPWGJets.C:575
 AnalysisTrainPWGJets.C:576
 AnalysisTrainPWGJets.C:577
 AnalysisTrainPWGJets.C:578
 AnalysisTrainPWGJets.C:579
 AnalysisTrainPWGJets.C:580
 AnalysisTrainPWGJets.C:581
 AnalysisTrainPWGJets.C:582
 AnalysisTrainPWGJets.C:583
 AnalysisTrainPWGJets.C:584
 AnalysisTrainPWGJets.C:585
 AnalysisTrainPWGJets.C:586
 AnalysisTrainPWGJets.C:587
 AnalysisTrainPWGJets.C:588
 AnalysisTrainPWGJets.C:589
 AnalysisTrainPWGJets.C:590
 AnalysisTrainPWGJets.C:591
 AnalysisTrainPWGJets.C:592
 AnalysisTrainPWGJets.C:593
 AnalysisTrainPWGJets.C:594
 AnalysisTrainPWGJets.C:595
 AnalysisTrainPWGJets.C:596
 AnalysisTrainPWGJets.C:597
 AnalysisTrainPWGJets.C:598
 AnalysisTrainPWGJets.C:599
 AnalysisTrainPWGJets.C:600
 AnalysisTrainPWGJets.C:601
 AnalysisTrainPWGJets.C:602
 AnalysisTrainPWGJets.C:603
 AnalysisTrainPWGJets.C:604
 AnalysisTrainPWGJets.C:605
 AnalysisTrainPWGJets.C:606
 AnalysisTrainPWGJets.C:607
 AnalysisTrainPWGJets.C:608
 AnalysisTrainPWGJets.C:609
 AnalysisTrainPWGJets.C:610
 AnalysisTrainPWGJets.C:611
 AnalysisTrainPWGJets.C:612
 AnalysisTrainPWGJets.C:613
 AnalysisTrainPWGJets.C:614
 AnalysisTrainPWGJets.C:615
 AnalysisTrainPWGJets.C:616
 AnalysisTrainPWGJets.C:617
 AnalysisTrainPWGJets.C:618
 AnalysisTrainPWGJets.C:619
 AnalysisTrainPWGJets.C:620
 AnalysisTrainPWGJets.C:621
 AnalysisTrainPWGJets.C:622
 AnalysisTrainPWGJets.C:623
 AnalysisTrainPWGJets.C:624
 AnalysisTrainPWGJets.C:625
 AnalysisTrainPWGJets.C:626
 AnalysisTrainPWGJets.C:627
 AnalysisTrainPWGJets.C:628
 AnalysisTrainPWGJets.C:629
 AnalysisTrainPWGJets.C:630
 AnalysisTrainPWGJets.C:631
 AnalysisTrainPWGJets.C:632
 AnalysisTrainPWGJets.C:633
 AnalysisTrainPWGJets.C:634
 AnalysisTrainPWGJets.C:635
 AnalysisTrainPWGJets.C:636
 AnalysisTrainPWGJets.C:637
 AnalysisTrainPWGJets.C:638
 AnalysisTrainPWGJets.C:639
 AnalysisTrainPWGJets.C:640
 AnalysisTrainPWGJets.C:641
 AnalysisTrainPWGJets.C:642
 AnalysisTrainPWGJets.C:643
 AnalysisTrainPWGJets.C:644
 AnalysisTrainPWGJets.C:645
 AnalysisTrainPWGJets.C:646
 AnalysisTrainPWGJets.C:647
 AnalysisTrainPWGJets.C:648
 AnalysisTrainPWGJets.C:649
 AnalysisTrainPWGJets.C:650
 AnalysisTrainPWGJets.C:651
 AnalysisTrainPWGJets.C:652
 AnalysisTrainPWGJets.C:653
 AnalysisTrainPWGJets.C:654
 AnalysisTrainPWGJets.C:655
 AnalysisTrainPWGJets.C:656
 AnalysisTrainPWGJets.C:657
 AnalysisTrainPWGJets.C:658
 AnalysisTrainPWGJets.C:659
 AnalysisTrainPWGJets.C:660
 AnalysisTrainPWGJets.C:661
 AnalysisTrainPWGJets.C:662
 AnalysisTrainPWGJets.C:663
 AnalysisTrainPWGJets.C:664
 AnalysisTrainPWGJets.C:665
 AnalysisTrainPWGJets.C:666
 AnalysisTrainPWGJets.C:667
 AnalysisTrainPWGJets.C:668
 AnalysisTrainPWGJets.C:669
 AnalysisTrainPWGJets.C:670
 AnalysisTrainPWGJets.C:671
 AnalysisTrainPWGJets.C:672
 AnalysisTrainPWGJets.C:673
 AnalysisTrainPWGJets.C:674
 AnalysisTrainPWGJets.C:675
 AnalysisTrainPWGJets.C:676
 AnalysisTrainPWGJets.C:677
 AnalysisTrainPWGJets.C:678
 AnalysisTrainPWGJets.C:679
 AnalysisTrainPWGJets.C:680
 AnalysisTrainPWGJets.C:681
 AnalysisTrainPWGJets.C:682
 AnalysisTrainPWGJets.C:683
 AnalysisTrainPWGJets.C:684
 AnalysisTrainPWGJets.C:685
 AnalysisTrainPWGJets.C:686
 AnalysisTrainPWGJets.C:687
 AnalysisTrainPWGJets.C:688
 AnalysisTrainPWGJets.C:689
 AnalysisTrainPWGJets.C:690
 AnalysisTrainPWGJets.C:691
 AnalysisTrainPWGJets.C:692
 AnalysisTrainPWGJets.C:693
 AnalysisTrainPWGJets.C:694
 AnalysisTrainPWGJets.C:695
 AnalysisTrainPWGJets.C:696
 AnalysisTrainPWGJets.C:697
 AnalysisTrainPWGJets.C:698
 AnalysisTrainPWGJets.C:699
 AnalysisTrainPWGJets.C:700
 AnalysisTrainPWGJets.C:701
 AnalysisTrainPWGJets.C:702
 AnalysisTrainPWGJets.C:703
 AnalysisTrainPWGJets.C:704
 AnalysisTrainPWGJets.C:705
 AnalysisTrainPWGJets.C:706
 AnalysisTrainPWGJets.C:707
 AnalysisTrainPWGJets.C:708
 AnalysisTrainPWGJets.C:709
 AnalysisTrainPWGJets.C:710
 AnalysisTrainPWGJets.C:711
 AnalysisTrainPWGJets.C:712
 AnalysisTrainPWGJets.C:713
 AnalysisTrainPWGJets.C:714
 AnalysisTrainPWGJets.C:715
 AnalysisTrainPWGJets.C:716
 AnalysisTrainPWGJets.C:717
 AnalysisTrainPWGJets.C:718
 AnalysisTrainPWGJets.C:719
 AnalysisTrainPWGJets.C:720
 AnalysisTrainPWGJets.C:721
 AnalysisTrainPWGJets.C:722
 AnalysisTrainPWGJets.C:723
 AnalysisTrainPWGJets.C:724
 AnalysisTrainPWGJets.C:725
 AnalysisTrainPWGJets.C:726
 AnalysisTrainPWGJets.C:727
 AnalysisTrainPWGJets.C:728
 AnalysisTrainPWGJets.C:729
 AnalysisTrainPWGJets.C:730
 AnalysisTrainPWGJets.C:731
 AnalysisTrainPWGJets.C:732
 AnalysisTrainPWGJets.C:733
 AnalysisTrainPWGJets.C:734
 AnalysisTrainPWGJets.C:735
 AnalysisTrainPWGJets.C:736
 AnalysisTrainPWGJets.C:737
 AnalysisTrainPWGJets.C:738
 AnalysisTrainPWGJets.C:739
 AnalysisTrainPWGJets.C:740
 AnalysisTrainPWGJets.C:741
 AnalysisTrainPWGJets.C:742
 AnalysisTrainPWGJets.C:743
 AnalysisTrainPWGJets.C:744
 AnalysisTrainPWGJets.C:745
 AnalysisTrainPWGJets.C:746
 AnalysisTrainPWGJets.C:747
 AnalysisTrainPWGJets.C:748
 AnalysisTrainPWGJets.C:749
 AnalysisTrainPWGJets.C:750
 AnalysisTrainPWGJets.C:751
 AnalysisTrainPWGJets.C:752
 AnalysisTrainPWGJets.C:753
 AnalysisTrainPWGJets.C:754
 AnalysisTrainPWGJets.C:755
 AnalysisTrainPWGJets.C:756
 AnalysisTrainPWGJets.C:757
 AnalysisTrainPWGJets.C:758
 AnalysisTrainPWGJets.C:759
 AnalysisTrainPWGJets.C:760
 AnalysisTrainPWGJets.C:761
 AnalysisTrainPWGJets.C:762
 AnalysisTrainPWGJets.C:763
 AnalysisTrainPWGJets.C:764
 AnalysisTrainPWGJets.C:765
 AnalysisTrainPWGJets.C:766
 AnalysisTrainPWGJets.C:767
 AnalysisTrainPWGJets.C:768
 AnalysisTrainPWGJets.C:769
 AnalysisTrainPWGJets.C:770
 AnalysisTrainPWGJets.C:771
 AnalysisTrainPWGJets.C:772
 AnalysisTrainPWGJets.C:773
 AnalysisTrainPWGJets.C:774
 AnalysisTrainPWGJets.C:775
 AnalysisTrainPWGJets.C:776
 AnalysisTrainPWGJets.C:777
 AnalysisTrainPWGJets.C:778
 AnalysisTrainPWGJets.C:779
 AnalysisTrainPWGJets.C:780
 AnalysisTrainPWGJets.C:781
 AnalysisTrainPWGJets.C:782
 AnalysisTrainPWGJets.C:783
 AnalysisTrainPWGJets.C:784
 AnalysisTrainPWGJets.C:785
 AnalysisTrainPWGJets.C:786
 AnalysisTrainPWGJets.C:787
 AnalysisTrainPWGJets.C:788
 AnalysisTrainPWGJets.C:789
 AnalysisTrainPWGJets.C:790
 AnalysisTrainPWGJets.C:791
 AnalysisTrainPWGJets.C:792
 AnalysisTrainPWGJets.C:793
 AnalysisTrainPWGJets.C:794
 AnalysisTrainPWGJets.C:795
 AnalysisTrainPWGJets.C:796
 AnalysisTrainPWGJets.C:797
 AnalysisTrainPWGJets.C:798
 AnalysisTrainPWGJets.C:799
 AnalysisTrainPWGJets.C:800
 AnalysisTrainPWGJets.C:801
 AnalysisTrainPWGJets.C:802
 AnalysisTrainPWGJets.C:803
 AnalysisTrainPWGJets.C:804
 AnalysisTrainPWGJets.C:805
 AnalysisTrainPWGJets.C:806
 AnalysisTrainPWGJets.C:807
 AnalysisTrainPWGJets.C:808
 AnalysisTrainPWGJets.C:809
 AnalysisTrainPWGJets.C:810
 AnalysisTrainPWGJets.C:811
 AnalysisTrainPWGJets.C:812
 AnalysisTrainPWGJets.C:813
 AnalysisTrainPWGJets.C:814
 AnalysisTrainPWGJets.C:815
 AnalysisTrainPWGJets.C:816
 AnalysisTrainPWGJets.C:817
 AnalysisTrainPWGJets.C:818
 AnalysisTrainPWGJets.C:819
 AnalysisTrainPWGJets.C:820
 AnalysisTrainPWGJets.C:821
 AnalysisTrainPWGJets.C:822
 AnalysisTrainPWGJets.C:823
 AnalysisTrainPWGJets.C:824
 AnalysisTrainPWGJets.C:825
 AnalysisTrainPWGJets.C:826
 AnalysisTrainPWGJets.C:827
 AnalysisTrainPWGJets.C:828
 AnalysisTrainPWGJets.C:829
 AnalysisTrainPWGJets.C:830
 AnalysisTrainPWGJets.C:831
 AnalysisTrainPWGJets.C:832
 AnalysisTrainPWGJets.C:833
 AnalysisTrainPWGJets.C:834
 AnalysisTrainPWGJets.C:835
 AnalysisTrainPWGJets.C:836
 AnalysisTrainPWGJets.C:837
 AnalysisTrainPWGJets.C:838
 AnalysisTrainPWGJets.C:839
 AnalysisTrainPWGJets.C:840
 AnalysisTrainPWGJets.C:841
 AnalysisTrainPWGJets.C:842
 AnalysisTrainPWGJets.C:843
 AnalysisTrainPWGJets.C:844
 AnalysisTrainPWGJets.C:845
 AnalysisTrainPWGJets.C:846
 AnalysisTrainPWGJets.C:847
 AnalysisTrainPWGJets.C:848
 AnalysisTrainPWGJets.C:849
 AnalysisTrainPWGJets.C:850
 AnalysisTrainPWGJets.C:851
 AnalysisTrainPWGJets.C:852
 AnalysisTrainPWGJets.C:853
 AnalysisTrainPWGJets.C:854
 AnalysisTrainPWGJets.C:855
 AnalysisTrainPWGJets.C:856
 AnalysisTrainPWGJets.C:857
 AnalysisTrainPWGJets.C:858
 AnalysisTrainPWGJets.C:859
 AnalysisTrainPWGJets.C:860
 AnalysisTrainPWGJets.C:861
 AnalysisTrainPWGJets.C:862
 AnalysisTrainPWGJets.C:863
 AnalysisTrainPWGJets.C:864
 AnalysisTrainPWGJets.C:865
 AnalysisTrainPWGJets.C:866
 AnalysisTrainPWGJets.C:867
 AnalysisTrainPWGJets.C:868
 AnalysisTrainPWGJets.C:869
 AnalysisTrainPWGJets.C:870
 AnalysisTrainPWGJets.C:871
 AnalysisTrainPWGJets.C:872
 AnalysisTrainPWGJets.C:873
 AnalysisTrainPWGJets.C:874
 AnalysisTrainPWGJets.C:875
 AnalysisTrainPWGJets.C:876
 AnalysisTrainPWGJets.C:877
 AnalysisTrainPWGJets.C:878
 AnalysisTrainPWGJets.C:879
 AnalysisTrainPWGJets.C:880
 AnalysisTrainPWGJets.C:881
 AnalysisTrainPWGJets.C:882
 AnalysisTrainPWGJets.C:883
 AnalysisTrainPWGJets.C:884
 AnalysisTrainPWGJets.C:885
 AnalysisTrainPWGJets.C:886
 AnalysisTrainPWGJets.C:887
 AnalysisTrainPWGJets.C:888
 AnalysisTrainPWGJets.C:889
 AnalysisTrainPWGJets.C:890
 AnalysisTrainPWGJets.C:891
 AnalysisTrainPWGJets.C:892
 AnalysisTrainPWGJets.C:893
 AnalysisTrainPWGJets.C:894
 AnalysisTrainPWGJets.C:895
 AnalysisTrainPWGJets.C:896
 AnalysisTrainPWGJets.C:897
 AnalysisTrainPWGJets.C:898
 AnalysisTrainPWGJets.C:899
 AnalysisTrainPWGJets.C:900
 AnalysisTrainPWGJets.C:901
 AnalysisTrainPWGJets.C:902
 AnalysisTrainPWGJets.C:903
 AnalysisTrainPWGJets.C:904
 AnalysisTrainPWGJets.C:905
 AnalysisTrainPWGJets.C:906
 AnalysisTrainPWGJets.C:907
 AnalysisTrainPWGJets.C:908
 AnalysisTrainPWGJets.C:909
 AnalysisTrainPWGJets.C:910
 AnalysisTrainPWGJets.C:911
 AnalysisTrainPWGJets.C:912
 AnalysisTrainPWGJets.C:913
 AnalysisTrainPWGJets.C:914
 AnalysisTrainPWGJets.C:915
 AnalysisTrainPWGJets.C:916
 AnalysisTrainPWGJets.C:917
 AnalysisTrainPWGJets.C:918
 AnalysisTrainPWGJets.C:919
 AnalysisTrainPWGJets.C:920
 AnalysisTrainPWGJets.C:921
 AnalysisTrainPWGJets.C:922
 AnalysisTrainPWGJets.C:923
 AnalysisTrainPWGJets.C:924
 AnalysisTrainPWGJets.C:925
 AnalysisTrainPWGJets.C:926
 AnalysisTrainPWGJets.C:927
 AnalysisTrainPWGJets.C:928
 AnalysisTrainPWGJets.C:929
 AnalysisTrainPWGJets.C:930
 AnalysisTrainPWGJets.C:931
 AnalysisTrainPWGJets.C:932
 AnalysisTrainPWGJets.C:933
 AnalysisTrainPWGJets.C:934
 AnalysisTrainPWGJets.C:935
 AnalysisTrainPWGJets.C:936
 AnalysisTrainPWGJets.C:937
 AnalysisTrainPWGJets.C:938
 AnalysisTrainPWGJets.C:939
 AnalysisTrainPWGJets.C:940
 AnalysisTrainPWGJets.C:941
 AnalysisTrainPWGJets.C:942
 AnalysisTrainPWGJets.C:943
 AnalysisTrainPWGJets.C:944
 AnalysisTrainPWGJets.C:945
 AnalysisTrainPWGJets.C:946
 AnalysisTrainPWGJets.C:947
 AnalysisTrainPWGJets.C:948
 AnalysisTrainPWGJets.C:949
 AnalysisTrainPWGJets.C:950
 AnalysisTrainPWGJets.C:951
 AnalysisTrainPWGJets.C:952
 AnalysisTrainPWGJets.C:953
 AnalysisTrainPWGJets.C:954
 AnalysisTrainPWGJets.C:955
 AnalysisTrainPWGJets.C:956
 AnalysisTrainPWGJets.C:957
 AnalysisTrainPWGJets.C:958
 AnalysisTrainPWGJets.C:959
 AnalysisTrainPWGJets.C:960
 AnalysisTrainPWGJets.C:961
 AnalysisTrainPWGJets.C:962
 AnalysisTrainPWGJets.C:963
 AnalysisTrainPWGJets.C:964
 AnalysisTrainPWGJets.C:965
 AnalysisTrainPWGJets.C:966
 AnalysisTrainPWGJets.C:967
 AnalysisTrainPWGJets.C:968
 AnalysisTrainPWGJets.C:969
 AnalysisTrainPWGJets.C:970
 AnalysisTrainPWGJets.C:971
 AnalysisTrainPWGJets.C:972
 AnalysisTrainPWGJets.C:973
 AnalysisTrainPWGJets.C:974
 AnalysisTrainPWGJets.C:975
 AnalysisTrainPWGJets.C:976
 AnalysisTrainPWGJets.C:977
 AnalysisTrainPWGJets.C:978
 AnalysisTrainPWGJets.C:979
 AnalysisTrainPWGJets.C:980
 AnalysisTrainPWGJets.C:981
 AnalysisTrainPWGJets.C:982
 AnalysisTrainPWGJets.C:983
 AnalysisTrainPWGJets.C:984
 AnalysisTrainPWGJets.C:985
 AnalysisTrainPWGJets.C:986
 AnalysisTrainPWGJets.C:987
 AnalysisTrainPWGJets.C:988
 AnalysisTrainPWGJets.C:989
 AnalysisTrainPWGJets.C:990
 AnalysisTrainPWGJets.C:991
 AnalysisTrainPWGJets.C:992
 AnalysisTrainPWGJets.C:993
 AnalysisTrainPWGJets.C:994
 AnalysisTrainPWGJets.C:995
 AnalysisTrainPWGJets.C:996
 AnalysisTrainPWGJets.C:997
 AnalysisTrainPWGJets.C:998
 AnalysisTrainPWGJets.C:999
 AnalysisTrainPWGJets.C:1000
 AnalysisTrainPWGJets.C:1001
 AnalysisTrainPWGJets.C:1002
 AnalysisTrainPWGJets.C:1003
 AnalysisTrainPWGJets.C:1004
 AnalysisTrainPWGJets.C:1005
 AnalysisTrainPWGJets.C:1006
 AnalysisTrainPWGJets.C:1007
 AnalysisTrainPWGJets.C:1008
 AnalysisTrainPWGJets.C:1009
 AnalysisTrainPWGJets.C:1010
 AnalysisTrainPWGJets.C:1011
 AnalysisTrainPWGJets.C:1012
 AnalysisTrainPWGJets.C:1013
 AnalysisTrainPWGJets.C:1014
 AnalysisTrainPWGJets.C:1015
 AnalysisTrainPWGJets.C:1016
 AnalysisTrainPWGJets.C:1017
 AnalysisTrainPWGJets.C:1018
 AnalysisTrainPWGJets.C:1019
 AnalysisTrainPWGJets.C:1020
 AnalysisTrainPWGJets.C:1021
 AnalysisTrainPWGJets.C:1022
 AnalysisTrainPWGJets.C:1023
 AnalysisTrainPWGJets.C:1024
 AnalysisTrainPWGJets.C:1025
 AnalysisTrainPWGJets.C:1026
 AnalysisTrainPWGJets.C:1027
 AnalysisTrainPWGJets.C:1028
 AnalysisTrainPWGJets.C:1029
 AnalysisTrainPWGJets.C:1030
 AnalysisTrainPWGJets.C:1031
 AnalysisTrainPWGJets.C:1032
 AnalysisTrainPWGJets.C:1033
 AnalysisTrainPWGJets.C:1034
 AnalysisTrainPWGJets.C:1035
 AnalysisTrainPWGJets.C:1036
 AnalysisTrainPWGJets.C:1037
 AnalysisTrainPWGJets.C:1038
 AnalysisTrainPWGJets.C:1039
 AnalysisTrainPWGJets.C:1040
 AnalysisTrainPWGJets.C:1041
 AnalysisTrainPWGJets.C:1042
 AnalysisTrainPWGJets.C:1043
 AnalysisTrainPWGJets.C:1044
 AnalysisTrainPWGJets.C:1045
 AnalysisTrainPWGJets.C:1046
 AnalysisTrainPWGJets.C:1047
 AnalysisTrainPWGJets.C:1048
 AnalysisTrainPWGJets.C:1049
 AnalysisTrainPWGJets.C:1050
 AnalysisTrainPWGJets.C:1051
 AnalysisTrainPWGJets.C:1052
 AnalysisTrainPWGJets.C:1053
 AnalysisTrainPWGJets.C:1054
 AnalysisTrainPWGJets.C:1055
 AnalysisTrainPWGJets.C:1056
 AnalysisTrainPWGJets.C:1057
 AnalysisTrainPWGJets.C:1058
 AnalysisTrainPWGJets.C:1059
 AnalysisTrainPWGJets.C:1060
 AnalysisTrainPWGJets.C:1061
 AnalysisTrainPWGJets.C:1062
 AnalysisTrainPWGJets.C:1063
 AnalysisTrainPWGJets.C:1064
 AnalysisTrainPWGJets.C:1065
 AnalysisTrainPWGJets.C:1066
 AnalysisTrainPWGJets.C:1067
 AnalysisTrainPWGJets.C:1068
 AnalysisTrainPWGJets.C:1069
 AnalysisTrainPWGJets.C:1070
 AnalysisTrainPWGJets.C:1071
 AnalysisTrainPWGJets.C:1072
 AnalysisTrainPWGJets.C:1073
 AnalysisTrainPWGJets.C:1074
 AnalysisTrainPWGJets.C:1075
 AnalysisTrainPWGJets.C:1076
 AnalysisTrainPWGJets.C:1077
 AnalysisTrainPWGJets.C:1078
 AnalysisTrainPWGJets.C:1079
 AnalysisTrainPWGJets.C:1080
 AnalysisTrainPWGJets.C:1081
 AnalysisTrainPWGJets.C:1082
 AnalysisTrainPWGJets.C:1083
 AnalysisTrainPWGJets.C:1084
 AnalysisTrainPWGJets.C:1085
 AnalysisTrainPWGJets.C:1086
 AnalysisTrainPWGJets.C:1087
 AnalysisTrainPWGJets.C:1088
 AnalysisTrainPWGJets.C:1089
 AnalysisTrainPWGJets.C:1090
 AnalysisTrainPWGJets.C:1091
 AnalysisTrainPWGJets.C:1092
 AnalysisTrainPWGJets.C:1093
 AnalysisTrainPWGJets.C:1094
 AnalysisTrainPWGJets.C:1095
 AnalysisTrainPWGJets.C:1096
 AnalysisTrainPWGJets.C:1097
 AnalysisTrainPWGJets.C:1098
 AnalysisTrainPWGJets.C:1099
 AnalysisTrainPWGJets.C:1100
 AnalysisTrainPWGJets.C:1101
 AnalysisTrainPWGJets.C:1102
 AnalysisTrainPWGJets.C:1103
 AnalysisTrainPWGJets.C:1104
 AnalysisTrainPWGJets.C:1105
 AnalysisTrainPWGJets.C:1106
 AnalysisTrainPWGJets.C:1107
 AnalysisTrainPWGJets.C:1108
 AnalysisTrainPWGJets.C:1109
 AnalysisTrainPWGJets.C:1110
 AnalysisTrainPWGJets.C:1111
 AnalysisTrainPWGJets.C:1112
 AnalysisTrainPWGJets.C:1113
 AnalysisTrainPWGJets.C:1114
 AnalysisTrainPWGJets.C:1115
 AnalysisTrainPWGJets.C:1116
 AnalysisTrainPWGJets.C:1117
 AnalysisTrainPWGJets.C:1118
 AnalysisTrainPWGJets.C:1119
 AnalysisTrainPWGJets.C:1120
 AnalysisTrainPWGJets.C:1121
 AnalysisTrainPWGJets.C:1122
 AnalysisTrainPWGJets.C:1123
 AnalysisTrainPWGJets.C:1124
 AnalysisTrainPWGJets.C:1125
 AnalysisTrainPWGJets.C:1126
 AnalysisTrainPWGJets.C:1127
 AnalysisTrainPWGJets.C:1128
 AnalysisTrainPWGJets.C:1129
 AnalysisTrainPWGJets.C:1130
 AnalysisTrainPWGJets.C:1131
 AnalysisTrainPWGJets.C:1132
 AnalysisTrainPWGJets.C:1133
 AnalysisTrainPWGJets.C:1134
 AnalysisTrainPWGJets.C:1135
 AnalysisTrainPWGJets.C:1136
 AnalysisTrainPWGJets.C:1137
 AnalysisTrainPWGJets.C:1138
 AnalysisTrainPWGJets.C:1139
 AnalysisTrainPWGJets.C:1140
 AnalysisTrainPWGJets.C:1141
 AnalysisTrainPWGJets.C:1142
 AnalysisTrainPWGJets.C:1143
 AnalysisTrainPWGJets.C:1144
 AnalysisTrainPWGJets.C:1145
 AnalysisTrainPWGJets.C:1146
 AnalysisTrainPWGJets.C:1147
 AnalysisTrainPWGJets.C:1148
 AnalysisTrainPWGJets.C:1149
 AnalysisTrainPWGJets.C:1150
 AnalysisTrainPWGJets.C:1151
 AnalysisTrainPWGJets.C:1152
 AnalysisTrainPWGJets.C:1153
 AnalysisTrainPWGJets.C:1154
 AnalysisTrainPWGJets.C:1155
 AnalysisTrainPWGJets.C:1156
 AnalysisTrainPWGJets.C:1157
 AnalysisTrainPWGJets.C:1158
 AnalysisTrainPWGJets.C:1159
 AnalysisTrainPWGJets.C:1160
 AnalysisTrainPWGJets.C:1161
 AnalysisTrainPWGJets.C:1162
 AnalysisTrainPWGJets.C:1163
 AnalysisTrainPWGJets.C:1164
 AnalysisTrainPWGJets.C:1165
 AnalysisTrainPWGJets.C:1166
 AnalysisTrainPWGJets.C:1167
 AnalysisTrainPWGJets.C:1168
 AnalysisTrainPWGJets.C:1169
 AnalysisTrainPWGJets.C:1170
 AnalysisTrainPWGJets.C:1171
 AnalysisTrainPWGJets.C:1172
 AnalysisTrainPWGJets.C:1173
 AnalysisTrainPWGJets.C:1174
 AnalysisTrainPWGJets.C:1175
 AnalysisTrainPWGJets.C:1176
 AnalysisTrainPWGJets.C:1177
 AnalysisTrainPWGJets.C:1178
 AnalysisTrainPWGJets.C:1179
 AnalysisTrainPWGJets.C:1180
 AnalysisTrainPWGJets.C:1181
 AnalysisTrainPWGJets.C:1182
 AnalysisTrainPWGJets.C:1183
 AnalysisTrainPWGJets.C:1184
 AnalysisTrainPWGJets.C:1185
 AnalysisTrainPWGJets.C:1186
 AnalysisTrainPWGJets.C:1187
 AnalysisTrainPWGJets.C:1188
 AnalysisTrainPWGJets.C:1189
 AnalysisTrainPWGJets.C:1190
 AnalysisTrainPWGJets.C:1191
 AnalysisTrainPWGJets.C:1192
 AnalysisTrainPWGJets.C:1193
 AnalysisTrainPWGJets.C:1194
 AnalysisTrainPWGJets.C:1195
 AnalysisTrainPWGJets.C:1196
 AnalysisTrainPWGJets.C:1197
 AnalysisTrainPWGJets.C:1198
 AnalysisTrainPWGJets.C:1199
 AnalysisTrainPWGJets.C:1200
 AnalysisTrainPWGJets.C:1201
 AnalysisTrainPWGJets.C:1202
 AnalysisTrainPWGJets.C:1203
 AnalysisTrainPWGJets.C:1204
 AnalysisTrainPWGJets.C:1205
 AnalysisTrainPWGJets.C:1206
 AnalysisTrainPWGJets.C:1207
 AnalysisTrainPWGJets.C:1208
 AnalysisTrainPWGJets.C:1209
 AnalysisTrainPWGJets.C:1210
 AnalysisTrainPWGJets.C:1211
 AnalysisTrainPWGJets.C:1212
 AnalysisTrainPWGJets.C:1213
 AnalysisTrainPWGJets.C:1214
 AnalysisTrainPWGJets.C:1215
 AnalysisTrainPWGJets.C:1216
 AnalysisTrainPWGJets.C:1217
 AnalysisTrainPWGJets.C:1218
 AnalysisTrainPWGJets.C:1219
 AnalysisTrainPWGJets.C:1220
 AnalysisTrainPWGJets.C:1221
 AnalysisTrainPWGJets.C:1222
 AnalysisTrainPWGJets.C:1223
 AnalysisTrainPWGJets.C:1224
 AnalysisTrainPWGJets.C:1225
 AnalysisTrainPWGJets.C:1226
 AnalysisTrainPWGJets.C:1227
 AnalysisTrainPWGJets.C:1228
 AnalysisTrainPWGJets.C:1229
 AnalysisTrainPWGJets.C:1230
 AnalysisTrainPWGJets.C:1231
 AnalysisTrainPWGJets.C:1232
 AnalysisTrainPWGJets.C:1233
 AnalysisTrainPWGJets.C:1234
 AnalysisTrainPWGJets.C:1235
 AnalysisTrainPWGJets.C:1236
 AnalysisTrainPWGJets.C:1237
 AnalysisTrainPWGJets.C:1238
 AnalysisTrainPWGJets.C:1239
 AnalysisTrainPWGJets.C:1240
 AnalysisTrainPWGJets.C:1241
 AnalysisTrainPWGJets.C:1242
 AnalysisTrainPWGJets.C:1243
 AnalysisTrainPWGJets.C:1244
 AnalysisTrainPWGJets.C:1245
 AnalysisTrainPWGJets.C:1246
 AnalysisTrainPWGJets.C:1247
 AnalysisTrainPWGJets.C:1248
 AnalysisTrainPWGJets.C:1249
 AnalysisTrainPWGJets.C:1250
 AnalysisTrainPWGJets.C:1251
 AnalysisTrainPWGJets.C:1252
 AnalysisTrainPWGJets.C:1253
 AnalysisTrainPWGJets.C:1254
 AnalysisTrainPWGJets.C:1255
 AnalysisTrainPWGJets.C:1256
 AnalysisTrainPWGJets.C:1257
 AnalysisTrainPWGJets.C:1258
 AnalysisTrainPWGJets.C:1259
 AnalysisTrainPWGJets.C:1260
 AnalysisTrainPWGJets.C:1261
 AnalysisTrainPWGJets.C:1262
 AnalysisTrainPWGJets.C:1263
 AnalysisTrainPWGJets.C:1264
 AnalysisTrainPWGJets.C:1265
 AnalysisTrainPWGJets.C:1266
 AnalysisTrainPWGJets.C:1267
 AnalysisTrainPWGJets.C:1268
 AnalysisTrainPWGJets.C:1269
 AnalysisTrainPWGJets.C:1270
 AnalysisTrainPWGJets.C:1271
 AnalysisTrainPWGJets.C:1272
 AnalysisTrainPWGJets.C:1273
 AnalysisTrainPWGJets.C:1274
 AnalysisTrainPWGJets.C:1275
 AnalysisTrainPWGJets.C:1276
 AnalysisTrainPWGJets.C:1277
 AnalysisTrainPWGJets.C:1278
 AnalysisTrainPWGJets.C:1279
 AnalysisTrainPWGJets.C:1280
 AnalysisTrainPWGJets.C:1281
 AnalysisTrainPWGJets.C:1282
 AnalysisTrainPWGJets.C:1283
 AnalysisTrainPWGJets.C:1284
 AnalysisTrainPWGJets.C:1285
 AnalysisTrainPWGJets.C:1286
 AnalysisTrainPWGJets.C:1287
 AnalysisTrainPWGJets.C:1288
 AnalysisTrainPWGJets.C:1289
 AnalysisTrainPWGJets.C:1290
 AnalysisTrainPWGJets.C:1291
 AnalysisTrainPWGJets.C:1292
 AnalysisTrainPWGJets.C:1293
 AnalysisTrainPWGJets.C:1294
 AnalysisTrainPWGJets.C:1295
 AnalysisTrainPWGJets.C:1296
 AnalysisTrainPWGJets.C:1297
 AnalysisTrainPWGJets.C:1298
 AnalysisTrainPWGJets.C:1299
 AnalysisTrainPWGJets.C:1300
 AnalysisTrainPWGJets.C:1301
 AnalysisTrainPWGJets.C:1302
 AnalysisTrainPWGJets.C:1303
 AnalysisTrainPWGJets.C:1304
 AnalysisTrainPWGJets.C:1305
 AnalysisTrainPWGJets.C:1306
 AnalysisTrainPWGJets.C:1307
 AnalysisTrainPWGJets.C:1308
 AnalysisTrainPWGJets.C:1309
 AnalysisTrainPWGJets.C:1310
 AnalysisTrainPWGJets.C:1311
 AnalysisTrainPWGJets.C:1312
 AnalysisTrainPWGJets.C:1313
 AnalysisTrainPWGJets.C:1314
 AnalysisTrainPWGJets.C:1315
 AnalysisTrainPWGJets.C:1316
 AnalysisTrainPWGJets.C:1317
 AnalysisTrainPWGJets.C:1318
 AnalysisTrainPWGJets.C:1319
 AnalysisTrainPWGJets.C:1320
 AnalysisTrainPWGJets.C:1321
 AnalysisTrainPWGJets.C:1322
 AnalysisTrainPWGJets.C:1323
 AnalysisTrainPWGJets.C:1324
 AnalysisTrainPWGJets.C:1325
 AnalysisTrainPWGJets.C:1326
 AnalysisTrainPWGJets.C:1327
 AnalysisTrainPWGJets.C:1328
 AnalysisTrainPWGJets.C:1329
 AnalysisTrainPWGJets.C:1330
 AnalysisTrainPWGJets.C:1331
 AnalysisTrainPWGJets.C:1332
 AnalysisTrainPWGJets.C:1333
 AnalysisTrainPWGJets.C:1334
 AnalysisTrainPWGJets.C:1335
 AnalysisTrainPWGJets.C:1336
 AnalysisTrainPWGJets.C:1337
 AnalysisTrainPWGJets.C:1338
 AnalysisTrainPWGJets.C:1339
 AnalysisTrainPWGJets.C:1340
 AnalysisTrainPWGJets.C:1341
 AnalysisTrainPWGJets.C:1342
 AnalysisTrainPWGJets.C:1343
 AnalysisTrainPWGJets.C:1344
 AnalysisTrainPWGJets.C:1345
 AnalysisTrainPWGJets.C:1346
 AnalysisTrainPWGJets.C:1347
 AnalysisTrainPWGJets.C:1348
 AnalysisTrainPWGJets.C:1349
 AnalysisTrainPWGJets.C:1350
 AnalysisTrainPWGJets.C:1351
 AnalysisTrainPWGJets.C:1352
 AnalysisTrainPWGJets.C:1353
 AnalysisTrainPWGJets.C:1354
 AnalysisTrainPWGJets.C:1355
 AnalysisTrainPWGJets.C:1356
 AnalysisTrainPWGJets.C:1357
 AnalysisTrainPWGJets.C:1358
 AnalysisTrainPWGJets.C:1359
 AnalysisTrainPWGJets.C:1360
 AnalysisTrainPWGJets.C:1361
 AnalysisTrainPWGJets.C:1362
 AnalysisTrainPWGJets.C:1363
 AnalysisTrainPWGJets.C:1364
 AnalysisTrainPWGJets.C:1365
 AnalysisTrainPWGJets.C:1366
 AnalysisTrainPWGJets.C:1367
 AnalysisTrainPWGJets.C:1368
 AnalysisTrainPWGJets.C:1369
 AnalysisTrainPWGJets.C:1370
 AnalysisTrainPWGJets.C:1371
 AnalysisTrainPWGJets.C:1372
 AnalysisTrainPWGJets.C:1373
 AnalysisTrainPWGJets.C:1374
 AnalysisTrainPWGJets.C:1375
 AnalysisTrainPWGJets.C:1376
 AnalysisTrainPWGJets.C:1377
 AnalysisTrainPWGJets.C:1378
 AnalysisTrainPWGJets.C:1379
 AnalysisTrainPWGJets.C:1380
 AnalysisTrainPWGJets.C:1381
 AnalysisTrainPWGJets.C:1382
 AnalysisTrainPWGJets.C:1383
 AnalysisTrainPWGJets.C:1384
 AnalysisTrainPWGJets.C:1385
 AnalysisTrainPWGJets.C:1386
 AnalysisTrainPWGJets.C:1387
 AnalysisTrainPWGJets.C:1388
 AnalysisTrainPWGJets.C:1389
 AnalysisTrainPWGJets.C:1390
 AnalysisTrainPWGJets.C:1391
 AnalysisTrainPWGJets.C:1392
 AnalysisTrainPWGJets.C:1393
 AnalysisTrainPWGJets.C:1394
 AnalysisTrainPWGJets.C:1395
 AnalysisTrainPWGJets.C:1396
 AnalysisTrainPWGJets.C:1397
 AnalysisTrainPWGJets.C:1398
 AnalysisTrainPWGJets.C:1399
 AnalysisTrainPWGJets.C:1400
 AnalysisTrainPWGJets.C:1401
 AnalysisTrainPWGJets.C:1402
 AnalysisTrainPWGJets.C:1403
 AnalysisTrainPWGJets.C:1404
 AnalysisTrainPWGJets.C:1405
 AnalysisTrainPWGJets.C:1406
 AnalysisTrainPWGJets.C:1407
 AnalysisTrainPWGJets.C:1408
 AnalysisTrainPWGJets.C:1409
 AnalysisTrainPWGJets.C:1410
 AnalysisTrainPWGJets.C:1411
 AnalysisTrainPWGJets.C:1412
 AnalysisTrainPWGJets.C:1413
 AnalysisTrainPWGJets.C:1414
 AnalysisTrainPWGJets.C:1415
 AnalysisTrainPWGJets.C:1416
 AnalysisTrainPWGJets.C:1417
 AnalysisTrainPWGJets.C:1418
 AnalysisTrainPWGJets.C:1419
 AnalysisTrainPWGJets.C:1420
 AnalysisTrainPWGJets.C:1421
 AnalysisTrainPWGJets.C:1422
 AnalysisTrainPWGJets.C:1423
 AnalysisTrainPWGJets.C:1424
 AnalysisTrainPWGJets.C:1425
 AnalysisTrainPWGJets.C:1426
 AnalysisTrainPWGJets.C:1427
 AnalysisTrainPWGJets.C:1428
 AnalysisTrainPWGJets.C:1429
 AnalysisTrainPWGJets.C:1430
 AnalysisTrainPWGJets.C:1431
 AnalysisTrainPWGJets.C:1432
 AnalysisTrainPWGJets.C:1433
 AnalysisTrainPWGJets.C:1434
 AnalysisTrainPWGJets.C:1435
 AnalysisTrainPWGJets.C:1436
 AnalysisTrainPWGJets.C:1437
 AnalysisTrainPWGJets.C:1438
 AnalysisTrainPWGJets.C:1439
 AnalysisTrainPWGJets.C:1440
 AnalysisTrainPWGJets.C:1441
 AnalysisTrainPWGJets.C:1442
 AnalysisTrainPWGJets.C:1443
 AnalysisTrainPWGJets.C:1444
 AnalysisTrainPWGJets.C:1445
 AnalysisTrainPWGJets.C:1446
 AnalysisTrainPWGJets.C:1447
 AnalysisTrainPWGJets.C:1448
 AnalysisTrainPWGJets.C:1449
 AnalysisTrainPWGJets.C:1450
 AnalysisTrainPWGJets.C:1451
 AnalysisTrainPWGJets.C:1452
 AnalysisTrainPWGJets.C:1453
 AnalysisTrainPWGJets.C:1454
 AnalysisTrainPWGJets.C:1455
 AnalysisTrainPWGJets.C:1456
 AnalysisTrainPWGJets.C:1457
 AnalysisTrainPWGJets.C:1458
 AnalysisTrainPWGJets.C:1459
 AnalysisTrainPWGJets.C:1460
 AnalysisTrainPWGJets.C:1461
 AnalysisTrainPWGJets.C:1462
 AnalysisTrainPWGJets.C:1463
 AnalysisTrainPWGJets.C:1464
 AnalysisTrainPWGJets.C:1465
 AnalysisTrainPWGJets.C:1466
 AnalysisTrainPWGJets.C:1467
 AnalysisTrainPWGJets.C:1468
 AnalysisTrainPWGJets.C:1469
 AnalysisTrainPWGJets.C:1470
 AnalysisTrainPWGJets.C:1471
 AnalysisTrainPWGJets.C:1472
 AnalysisTrainPWGJets.C:1473
 AnalysisTrainPWGJets.C:1474
 AnalysisTrainPWGJets.C:1475
 AnalysisTrainPWGJets.C:1476
 AnalysisTrainPWGJets.C:1477
 AnalysisTrainPWGJets.C:1478
 AnalysisTrainPWGJets.C:1479
 AnalysisTrainPWGJets.C:1480
 AnalysisTrainPWGJets.C:1481
 AnalysisTrainPWGJets.C:1482
 AnalysisTrainPWGJets.C:1483
 AnalysisTrainPWGJets.C:1484
 AnalysisTrainPWGJets.C:1485
 AnalysisTrainPWGJets.C:1486
 AnalysisTrainPWGJets.C:1487
 AnalysisTrainPWGJets.C:1488
 AnalysisTrainPWGJets.C:1489
 AnalysisTrainPWGJets.C:1490
 AnalysisTrainPWGJets.C:1491
 AnalysisTrainPWGJets.C:1492
 AnalysisTrainPWGJets.C:1493
 AnalysisTrainPWGJets.C:1494
 AnalysisTrainPWGJets.C:1495
 AnalysisTrainPWGJets.C:1496
 AnalysisTrainPWGJets.C:1497
 AnalysisTrainPWGJets.C:1498
 AnalysisTrainPWGJets.C:1499
 AnalysisTrainPWGJets.C:1500
 AnalysisTrainPWGJets.C:1501
 AnalysisTrainPWGJets.C:1502
 AnalysisTrainPWGJets.C:1503
 AnalysisTrainPWGJets.C:1504
 AnalysisTrainPWGJets.C:1505
 AnalysisTrainPWGJets.C:1506
 AnalysisTrainPWGJets.C:1507
 AnalysisTrainPWGJets.C:1508
 AnalysisTrainPWGJets.C:1509
 AnalysisTrainPWGJets.C:1510
 AnalysisTrainPWGJets.C:1511
 AnalysisTrainPWGJets.C:1512
 AnalysisTrainPWGJets.C:1513
 AnalysisTrainPWGJets.C:1514
 AnalysisTrainPWGJets.C:1515
 AnalysisTrainPWGJets.C:1516
 AnalysisTrainPWGJets.C:1517
 AnalysisTrainPWGJets.C:1518
 AnalysisTrainPWGJets.C:1519
 AnalysisTrainPWGJets.C:1520
 AnalysisTrainPWGJets.C:1521
 AnalysisTrainPWGJets.C:1522
 AnalysisTrainPWGJets.C:1523
 AnalysisTrainPWGJets.C:1524
 AnalysisTrainPWGJets.C:1525
 AnalysisTrainPWGJets.C:1526
 AnalysisTrainPWGJets.C:1527
 AnalysisTrainPWGJets.C:1528
 AnalysisTrainPWGJets.C:1529
 AnalysisTrainPWGJets.C:1530
 AnalysisTrainPWGJets.C:1531
 AnalysisTrainPWGJets.C:1532
 AnalysisTrainPWGJets.C:1533
 AnalysisTrainPWGJets.C:1534
 AnalysisTrainPWGJets.C:1535
 AnalysisTrainPWGJets.C:1536
 AnalysisTrainPWGJets.C:1537
 AnalysisTrainPWGJets.C:1538
 AnalysisTrainPWGJets.C:1539
 AnalysisTrainPWGJets.C:1540
 AnalysisTrainPWGJets.C:1541
 AnalysisTrainPWGJets.C:1542
 AnalysisTrainPWGJets.C:1543
 AnalysisTrainPWGJets.C:1544
 AnalysisTrainPWGJets.C:1545
 AnalysisTrainPWGJets.C:1546
 AnalysisTrainPWGJets.C:1547
 AnalysisTrainPWGJets.C:1548
 AnalysisTrainPWGJets.C:1549
 AnalysisTrainPWGJets.C:1550
 AnalysisTrainPWGJets.C:1551
 AnalysisTrainPWGJets.C:1552
 AnalysisTrainPWGJets.C:1553
 AnalysisTrainPWGJets.C:1554
 AnalysisTrainPWGJets.C:1555
 AnalysisTrainPWGJets.C:1556
 AnalysisTrainPWGJets.C:1557
 AnalysisTrainPWGJets.C:1558
 AnalysisTrainPWGJets.C:1559
 AnalysisTrainPWGJets.C:1560
 AnalysisTrainPWGJets.C:1561
 AnalysisTrainPWGJets.C:1562
 AnalysisTrainPWGJets.C:1563
 AnalysisTrainPWGJets.C:1564
 AnalysisTrainPWGJets.C:1565
 AnalysisTrainPWGJets.C:1566
 AnalysisTrainPWGJets.C:1567
 AnalysisTrainPWGJets.C:1568
 AnalysisTrainPWGJets.C:1569
 AnalysisTrainPWGJets.C:1570
 AnalysisTrainPWGJets.C:1571
 AnalysisTrainPWGJets.C:1572
 AnalysisTrainPWGJets.C:1573
 AnalysisTrainPWGJets.C:1574
 AnalysisTrainPWGJets.C:1575
 AnalysisTrainPWGJets.C:1576
 AnalysisTrainPWGJets.C:1577
 AnalysisTrainPWGJets.C:1578
 AnalysisTrainPWGJets.C:1579
 AnalysisTrainPWGJets.C:1580
 AnalysisTrainPWGJets.C:1581
 AnalysisTrainPWGJets.C:1582
 AnalysisTrainPWGJets.C:1583
 AnalysisTrainPWGJets.C:1584
 AnalysisTrainPWGJets.C:1585
 AnalysisTrainPWGJets.C:1586
 AnalysisTrainPWGJets.C:1587
 AnalysisTrainPWGJets.C:1588
 AnalysisTrainPWGJets.C:1589
 AnalysisTrainPWGJets.C:1590
 AnalysisTrainPWGJets.C:1591
 AnalysisTrainPWGJets.C:1592
 AnalysisTrainPWGJets.C:1593
 AnalysisTrainPWGJets.C:1594
 AnalysisTrainPWGJets.C:1595
 AnalysisTrainPWGJets.C:1596
 AnalysisTrainPWGJets.C:1597
 AnalysisTrainPWGJets.C:1598
 AnalysisTrainPWGJets.C:1599
 AnalysisTrainPWGJets.C:1600
 AnalysisTrainPWGJets.C:1601
 AnalysisTrainPWGJets.C:1602
 AnalysisTrainPWGJets.C:1603
 AnalysisTrainPWGJets.C:1604
 AnalysisTrainPWGJets.C:1605
 AnalysisTrainPWGJets.C:1606
 AnalysisTrainPWGJets.C:1607
 AnalysisTrainPWGJets.C:1608
 AnalysisTrainPWGJets.C:1609
 AnalysisTrainPWGJets.C:1610
 AnalysisTrainPWGJets.C:1611
 AnalysisTrainPWGJets.C:1612
 AnalysisTrainPWGJets.C:1613
 AnalysisTrainPWGJets.C:1614
 AnalysisTrainPWGJets.C:1615
 AnalysisTrainPWGJets.C:1616
 AnalysisTrainPWGJets.C:1617
 AnalysisTrainPWGJets.C:1618
 AnalysisTrainPWGJets.C:1619
 AnalysisTrainPWGJets.C:1620
 AnalysisTrainPWGJets.C:1621
 AnalysisTrainPWGJets.C:1622
 AnalysisTrainPWGJets.C:1623
 AnalysisTrainPWGJets.C:1624
 AnalysisTrainPWGJets.C:1625
 AnalysisTrainPWGJets.C:1626
 AnalysisTrainPWGJets.C:1627
 AnalysisTrainPWGJets.C:1628
 AnalysisTrainPWGJets.C:1629
 AnalysisTrainPWGJets.C:1630
 AnalysisTrainPWGJets.C:1631
 AnalysisTrainPWGJets.C:1632
 AnalysisTrainPWGJets.C:1633
 AnalysisTrainPWGJets.C:1634
 AnalysisTrainPWGJets.C:1635
 AnalysisTrainPWGJets.C:1636
 AnalysisTrainPWGJets.C:1637
 AnalysisTrainPWGJets.C:1638
 AnalysisTrainPWGJets.C:1639
 AnalysisTrainPWGJets.C:1640
 AnalysisTrainPWGJets.C:1641
 AnalysisTrainPWGJets.C:1642
 AnalysisTrainPWGJets.C:1643
 AnalysisTrainPWGJets.C:1644
 AnalysisTrainPWGJets.C:1645
 AnalysisTrainPWGJets.C:1646
 AnalysisTrainPWGJets.C:1647
 AnalysisTrainPWGJets.C:1648
 AnalysisTrainPWGJets.C:1649
 AnalysisTrainPWGJets.C:1650
 AnalysisTrainPWGJets.C:1651
 AnalysisTrainPWGJets.C:1652
 AnalysisTrainPWGJets.C:1653
 AnalysisTrainPWGJets.C:1654
 AnalysisTrainPWGJets.C:1655
 AnalysisTrainPWGJets.C:1656
 AnalysisTrainPWGJets.C:1657
 AnalysisTrainPWGJets.C:1658
 AnalysisTrainPWGJets.C:1659
 AnalysisTrainPWGJets.C:1660
 AnalysisTrainPWGJets.C:1661
 AnalysisTrainPWGJets.C:1662
 AnalysisTrainPWGJets.C:1663
 AnalysisTrainPWGJets.C:1664
 AnalysisTrainPWGJets.C:1665
 AnalysisTrainPWGJets.C:1666
 AnalysisTrainPWGJets.C:1667
 AnalysisTrainPWGJets.C:1668
 AnalysisTrainPWGJets.C:1669
 AnalysisTrainPWGJets.C:1670
 AnalysisTrainPWGJets.C:1671
 AnalysisTrainPWGJets.C:1672
 AnalysisTrainPWGJets.C:1673
 AnalysisTrainPWGJets.C:1674
 AnalysisTrainPWGJets.C:1675
 AnalysisTrainPWGJets.C:1676
 AnalysisTrainPWGJets.C:1677
 AnalysisTrainPWGJets.C:1678
 AnalysisTrainPWGJets.C:1679
 AnalysisTrainPWGJets.C:1680
 AnalysisTrainPWGJets.C:1681
 AnalysisTrainPWGJets.C:1682
 AnalysisTrainPWGJets.C:1683
 AnalysisTrainPWGJets.C:1684
 AnalysisTrainPWGJets.C:1685
 AnalysisTrainPWGJets.C:1686
 AnalysisTrainPWGJets.C:1687
 AnalysisTrainPWGJets.C:1688
 AnalysisTrainPWGJets.C:1689
 AnalysisTrainPWGJets.C:1690
 AnalysisTrainPWGJets.C:1691
 AnalysisTrainPWGJets.C:1692
 AnalysisTrainPWGJets.C:1693
 AnalysisTrainPWGJets.C:1694
 AnalysisTrainPWGJets.C:1695
 AnalysisTrainPWGJets.C:1696
 AnalysisTrainPWGJets.C:1697
 AnalysisTrainPWGJets.C:1698
 AnalysisTrainPWGJets.C:1699
 AnalysisTrainPWGJets.C:1700
 AnalysisTrainPWGJets.C:1701
 AnalysisTrainPWGJets.C:1702
 AnalysisTrainPWGJets.C:1703
 AnalysisTrainPWGJets.C:1704
 AnalysisTrainPWGJets.C:1705
 AnalysisTrainPWGJets.C:1706
 AnalysisTrainPWGJets.C:1707
 AnalysisTrainPWGJets.C:1708
 AnalysisTrainPWGJets.C:1709
 AnalysisTrainPWGJets.C:1710
 AnalysisTrainPWGJets.C:1711
 AnalysisTrainPWGJets.C:1712
 AnalysisTrainPWGJets.C:1713
 AnalysisTrainPWGJets.C:1714
 AnalysisTrainPWGJets.C:1715
 AnalysisTrainPWGJets.C:1716
 AnalysisTrainPWGJets.C:1717
 AnalysisTrainPWGJets.C:1718
 AnalysisTrainPWGJets.C:1719
 AnalysisTrainPWGJets.C:1720
 AnalysisTrainPWGJets.C:1721
 AnalysisTrainPWGJets.C:1722
 AnalysisTrainPWGJets.C:1723
 AnalysisTrainPWGJets.C:1724
 AnalysisTrainPWGJets.C:1725
 AnalysisTrainPWGJets.C:1726
 AnalysisTrainPWGJets.C:1727
 AnalysisTrainPWGJets.C:1728
 AnalysisTrainPWGJets.C:1729
 AnalysisTrainPWGJets.C:1730
 AnalysisTrainPWGJets.C:1731
 AnalysisTrainPWGJets.C:1732
 AnalysisTrainPWGJets.C:1733
 AnalysisTrainPWGJets.C:1734
 AnalysisTrainPWGJets.C:1735
 AnalysisTrainPWGJets.C:1736
 AnalysisTrainPWGJets.C:1737
 AnalysisTrainPWGJets.C:1738
 AnalysisTrainPWGJets.C:1739
 AnalysisTrainPWGJets.C:1740
 AnalysisTrainPWGJets.C:1741
 AnalysisTrainPWGJets.C:1742
 AnalysisTrainPWGJets.C:1743
 AnalysisTrainPWGJets.C:1744
 AnalysisTrainPWGJets.C:1745
 AnalysisTrainPWGJets.C:1746
 AnalysisTrainPWGJets.C:1747
 AnalysisTrainPWGJets.C:1748
 AnalysisTrainPWGJets.C:1749
 AnalysisTrainPWGJets.C:1750
 AnalysisTrainPWGJets.C:1751
 AnalysisTrainPWGJets.C:1752
 AnalysisTrainPWGJets.C:1753
 AnalysisTrainPWGJets.C:1754
 AnalysisTrainPWGJets.C:1755
 AnalysisTrainPWGJets.C:1756
 AnalysisTrainPWGJets.C:1757
 AnalysisTrainPWGJets.C:1758
 AnalysisTrainPWGJets.C:1759
 AnalysisTrainPWGJets.C:1760
 AnalysisTrainPWGJets.C:1761
 AnalysisTrainPWGJets.C:1762
 AnalysisTrainPWGJets.C:1763
 AnalysisTrainPWGJets.C:1764
 AnalysisTrainPWGJets.C:1765
 AnalysisTrainPWGJets.C:1766
 AnalysisTrainPWGJets.C:1767
 AnalysisTrainPWGJets.C:1768
 AnalysisTrainPWGJets.C:1769
 AnalysisTrainPWGJets.C:1770
 AnalysisTrainPWGJets.C:1771
 AnalysisTrainPWGJets.C:1772
 AnalysisTrainPWGJets.C:1773
 AnalysisTrainPWGJets.C:1774
 AnalysisTrainPWGJets.C:1775
 AnalysisTrainPWGJets.C:1776
 AnalysisTrainPWGJets.C:1777
 AnalysisTrainPWGJets.C:1778
 AnalysisTrainPWGJets.C:1779
 AnalysisTrainPWGJets.C:1780
 AnalysisTrainPWGJets.C:1781
 AnalysisTrainPWGJets.C:1782
 AnalysisTrainPWGJets.C:1783
 AnalysisTrainPWGJets.C:1784
 AnalysisTrainPWGJets.C:1785
 AnalysisTrainPWGJets.C:1786
 AnalysisTrainPWGJets.C:1787
 AnalysisTrainPWGJets.C:1788
 AnalysisTrainPWGJets.C:1789
 AnalysisTrainPWGJets.C:1790
 AnalysisTrainPWGJets.C:1791
 AnalysisTrainPWGJets.C:1792
 AnalysisTrainPWGJets.C:1793
 AnalysisTrainPWGJets.C:1794
 AnalysisTrainPWGJets.C:1795
 AnalysisTrainPWGJets.C:1796
 AnalysisTrainPWGJets.C:1797
 AnalysisTrainPWGJets.C:1798
 AnalysisTrainPWGJets.C:1799
 AnalysisTrainPWGJets.C:1800
 AnalysisTrainPWGJets.C:1801
 AnalysisTrainPWGJets.C:1802
 AnalysisTrainPWGJets.C:1803
 AnalysisTrainPWGJets.C:1804
 AnalysisTrainPWGJets.C:1805
 AnalysisTrainPWGJets.C:1806
 AnalysisTrainPWGJets.C:1807
 AnalysisTrainPWGJets.C:1808
 AnalysisTrainPWGJets.C:1809
 AnalysisTrainPWGJets.C:1810
 AnalysisTrainPWGJets.C:1811
 AnalysisTrainPWGJets.C:1812
 AnalysisTrainPWGJets.C:1813
 AnalysisTrainPWGJets.C:1814
 AnalysisTrainPWGJets.C:1815
 AnalysisTrainPWGJets.C:1816
 AnalysisTrainPWGJets.C:1817
 AnalysisTrainPWGJets.C:1818
 AnalysisTrainPWGJets.C:1819
 AnalysisTrainPWGJets.C:1820
 AnalysisTrainPWGJets.C:1821
 AnalysisTrainPWGJets.C:1822
 AnalysisTrainPWGJets.C:1823
 AnalysisTrainPWGJets.C:1824
 AnalysisTrainPWGJets.C:1825
 AnalysisTrainPWGJets.C:1826
 AnalysisTrainPWGJets.C:1827
 AnalysisTrainPWGJets.C:1828
 AnalysisTrainPWGJets.C:1829
 AnalysisTrainPWGJets.C:1830
 AnalysisTrainPWGJets.C:1831
 AnalysisTrainPWGJets.C:1832
 AnalysisTrainPWGJets.C:1833
 AnalysisTrainPWGJets.C:1834
 AnalysisTrainPWGJets.C:1835
 AnalysisTrainPWGJets.C:1836
 AnalysisTrainPWGJets.C:1837
 AnalysisTrainPWGJets.C:1838
 AnalysisTrainPWGJets.C:1839
 AnalysisTrainPWGJets.C:1840
 AnalysisTrainPWGJets.C:1841
 AnalysisTrainPWGJets.C:1842
 AnalysisTrainPWGJets.C:1843
 AnalysisTrainPWGJets.C:1844
 AnalysisTrainPWGJets.C:1845
 AnalysisTrainPWGJets.C:1846
 AnalysisTrainPWGJets.C:1847
 AnalysisTrainPWGJets.C:1848
 AnalysisTrainPWGJets.C:1849
 AnalysisTrainPWGJets.C:1850
 AnalysisTrainPWGJets.C:1851
 AnalysisTrainPWGJets.C:1852
 AnalysisTrainPWGJets.C:1853
 AnalysisTrainPWGJets.C:1854
 AnalysisTrainPWGJets.C:1855
 AnalysisTrainPWGJets.C:1856
 AnalysisTrainPWGJets.C:1857
 AnalysisTrainPWGJets.C:1858
 AnalysisTrainPWGJets.C:1859
 AnalysisTrainPWGJets.C:1860
 AnalysisTrainPWGJets.C:1861
 AnalysisTrainPWGJets.C:1862
 AnalysisTrainPWGJets.C:1863
 AnalysisTrainPWGJets.C:1864
 AnalysisTrainPWGJets.C:1865
 AnalysisTrainPWGJets.C:1866
 AnalysisTrainPWGJets.C:1867
 AnalysisTrainPWGJets.C:1868
 AnalysisTrainPWGJets.C:1869
 AnalysisTrainPWGJets.C:1870
 AnalysisTrainPWGJets.C:1871
 AnalysisTrainPWGJets.C:1872
 AnalysisTrainPWGJets.C:1873
 AnalysisTrainPWGJets.C:1874
 AnalysisTrainPWGJets.C:1875
 AnalysisTrainPWGJets.C:1876
 AnalysisTrainPWGJets.C:1877
 AnalysisTrainPWGJets.C:1878
 AnalysisTrainPWGJets.C:1879
 AnalysisTrainPWGJets.C:1880
 AnalysisTrainPWGJets.C:1881
 AnalysisTrainPWGJets.C:1882
 AnalysisTrainPWGJets.C:1883
 AnalysisTrainPWGJets.C:1884
 AnalysisTrainPWGJets.C:1885
 AnalysisTrainPWGJets.C:1886
 AnalysisTrainPWGJets.C:1887
 AnalysisTrainPWGJets.C:1888
 AnalysisTrainPWGJets.C:1889
 AnalysisTrainPWGJets.C:1890
 AnalysisTrainPWGJets.C:1891
 AnalysisTrainPWGJets.C:1892
 AnalysisTrainPWGJets.C:1893
 AnalysisTrainPWGJets.C:1894
 AnalysisTrainPWGJets.C:1895
 AnalysisTrainPWGJets.C:1896
 AnalysisTrainPWGJets.C:1897
 AnalysisTrainPWGJets.C:1898
 AnalysisTrainPWGJets.C:1899
 AnalysisTrainPWGJets.C:1900
 AnalysisTrainPWGJets.C:1901
 AnalysisTrainPWGJets.C:1902
 AnalysisTrainPWGJets.C:1903
 AnalysisTrainPWGJets.C:1904
 AnalysisTrainPWGJets.C:1905
 AnalysisTrainPWGJets.C:1906
 AnalysisTrainPWGJets.C:1907
 AnalysisTrainPWGJets.C:1908
 AnalysisTrainPWGJets.C:1909
 AnalysisTrainPWGJets.C:1910
 AnalysisTrainPWGJets.C:1911
 AnalysisTrainPWGJets.C:1912
 AnalysisTrainPWGJets.C:1913
 AnalysisTrainPWGJets.C:1914
 AnalysisTrainPWGJets.C:1915
 AnalysisTrainPWGJets.C:1916
 AnalysisTrainPWGJets.C:1917
 AnalysisTrainPWGJets.C:1918
 AnalysisTrainPWGJets.C:1919
 AnalysisTrainPWGJets.C:1920
 AnalysisTrainPWGJets.C:1921
 AnalysisTrainPWGJets.C:1922
 AnalysisTrainPWGJets.C:1923
 AnalysisTrainPWGJets.C:1924
 AnalysisTrainPWGJets.C:1925
 AnalysisTrainPWGJets.C:1926
 AnalysisTrainPWGJets.C:1927
 AnalysisTrainPWGJets.C:1928
 AnalysisTrainPWGJets.C:1929
 AnalysisTrainPWGJets.C:1930
 AnalysisTrainPWGJets.C:1931
 AnalysisTrainPWGJets.C:1932
 AnalysisTrainPWGJets.C:1933
 AnalysisTrainPWGJets.C:1934
 AnalysisTrainPWGJets.C:1935
 AnalysisTrainPWGJets.C:1936
 AnalysisTrainPWGJets.C:1937
 AnalysisTrainPWGJets.C:1938
 AnalysisTrainPWGJets.C:1939
 AnalysisTrainPWGJets.C:1940
 AnalysisTrainPWGJets.C:1941
 AnalysisTrainPWGJets.C:1942
 AnalysisTrainPWGJets.C:1943
 AnalysisTrainPWGJets.C:1944
 AnalysisTrainPWGJets.C:1945
 AnalysisTrainPWGJets.C:1946
 AnalysisTrainPWGJets.C:1947
 AnalysisTrainPWGJets.C:1948
 AnalysisTrainPWGJets.C:1949
 AnalysisTrainPWGJets.C:1950
 AnalysisTrainPWGJets.C:1951
 AnalysisTrainPWGJets.C:1952
 AnalysisTrainPWGJets.C:1953
 AnalysisTrainPWGJets.C:1954
 AnalysisTrainPWGJets.C:1955
 AnalysisTrainPWGJets.C:1956
 AnalysisTrainPWGJets.C:1957
 AnalysisTrainPWGJets.C:1958
 AnalysisTrainPWGJets.C:1959
 AnalysisTrainPWGJets.C:1960
 AnalysisTrainPWGJets.C:1961
 AnalysisTrainPWGJets.C:1962
 AnalysisTrainPWGJets.C:1963
 AnalysisTrainPWGJets.C:1964
 AnalysisTrainPWGJets.C:1965
 AnalysisTrainPWGJets.C:1966
 AnalysisTrainPWGJets.C:1967
 AnalysisTrainPWGJets.C:1968
 AnalysisTrainPWGJets.C:1969
 AnalysisTrainPWGJets.C:1970
 AnalysisTrainPWGJets.C:1971
 AnalysisTrainPWGJets.C:1972
 AnalysisTrainPWGJets.C:1973
 AnalysisTrainPWGJets.C:1974
 AnalysisTrainPWGJets.C:1975
 AnalysisTrainPWGJets.C:1976
 AnalysisTrainPWGJets.C:1977
 AnalysisTrainPWGJets.C:1978
 AnalysisTrainPWGJets.C:1979
 AnalysisTrainPWGJets.C:1980
 AnalysisTrainPWGJets.C:1981
 AnalysisTrainPWGJets.C:1982
 AnalysisTrainPWGJets.C:1983
 AnalysisTrainPWGJets.C:1984
 AnalysisTrainPWGJets.C:1985
 AnalysisTrainPWGJets.C:1986
 AnalysisTrainPWGJets.C:1987
 AnalysisTrainPWGJets.C:1988
 AnalysisTrainPWGJets.C:1989
 AnalysisTrainPWGJets.C:1990
 AnalysisTrainPWGJets.C:1991
 AnalysisTrainPWGJets.C:1992
 AnalysisTrainPWGJets.C:1993
 AnalysisTrainPWGJets.C:1994
 AnalysisTrainPWGJets.C:1995
 AnalysisTrainPWGJets.C:1996
 AnalysisTrainPWGJets.C:1997
 AnalysisTrainPWGJets.C:1998
 AnalysisTrainPWGJets.C:1999
 AnalysisTrainPWGJets.C:2000
 AnalysisTrainPWGJets.C:2001
 AnalysisTrainPWGJets.C:2002
 AnalysisTrainPWGJets.C:2003
 AnalysisTrainPWGJets.C:2004
 AnalysisTrainPWGJets.C:2005
 AnalysisTrainPWGJets.C:2006
 AnalysisTrainPWGJets.C:2007
 AnalysisTrainPWGJets.C:2008
 AnalysisTrainPWGJets.C:2009
 AnalysisTrainPWGJets.C:2010
 AnalysisTrainPWGJets.C:2011
 AnalysisTrainPWGJets.C:2012
 AnalysisTrainPWGJets.C:2013
 AnalysisTrainPWGJets.C:2014
 AnalysisTrainPWGJets.C:2015
 AnalysisTrainPWGJets.C:2016
 AnalysisTrainPWGJets.C:2017
 AnalysisTrainPWGJets.C:2018
 AnalysisTrainPWGJets.C:2019
 AnalysisTrainPWGJets.C:2020
 AnalysisTrainPWGJets.C:2021
 AnalysisTrainPWGJets.C:2022
 AnalysisTrainPWGJets.C:2023
 AnalysisTrainPWGJets.C:2024
 AnalysisTrainPWGJets.C:2025
 AnalysisTrainPWGJets.C:2026
 AnalysisTrainPWGJets.C:2027
 AnalysisTrainPWGJets.C:2028
 AnalysisTrainPWGJets.C:2029
 AnalysisTrainPWGJets.C:2030
 AnalysisTrainPWGJets.C:2031
 AnalysisTrainPWGJets.C:2032
 AnalysisTrainPWGJets.C:2033
 AnalysisTrainPWGJets.C:2034
 AnalysisTrainPWGJets.C:2035
 AnalysisTrainPWGJets.C:2036
 AnalysisTrainPWGJets.C:2037
 AnalysisTrainPWGJets.C:2038
 AnalysisTrainPWGJets.C:2039
 AnalysisTrainPWGJets.C:2040
 AnalysisTrainPWGJets.C:2041
 AnalysisTrainPWGJets.C:2042
 AnalysisTrainPWGJets.C:2043
 AnalysisTrainPWGJets.C:2044
 AnalysisTrainPWGJets.C:2045
 AnalysisTrainPWGJets.C:2046
 AnalysisTrainPWGJets.C:2047
 AnalysisTrainPWGJets.C:2048
 AnalysisTrainPWGJets.C:2049
 AnalysisTrainPWGJets.C:2050
 AnalysisTrainPWGJets.C:2051
 AnalysisTrainPWGJets.C:2052
 AnalysisTrainPWGJets.C:2053
 AnalysisTrainPWGJets.C:2054
 AnalysisTrainPWGJets.C:2055
 AnalysisTrainPWGJets.C:2056
 AnalysisTrainPWGJets.C:2057
 AnalysisTrainPWGJets.C:2058
 AnalysisTrainPWGJets.C:2059
 AnalysisTrainPWGJets.C:2060
 AnalysisTrainPWGJets.C:2061
 AnalysisTrainPWGJets.C:2062
 AnalysisTrainPWGJets.C:2063
 AnalysisTrainPWGJets.C:2064
 AnalysisTrainPWGJets.C:2065
 AnalysisTrainPWGJets.C:2066
 AnalysisTrainPWGJets.C:2067
 AnalysisTrainPWGJets.C:2068
 AnalysisTrainPWGJets.C:2069
 AnalysisTrainPWGJets.C:2070
 AnalysisTrainPWGJets.C:2071
 AnalysisTrainPWGJets.C:2072
 AnalysisTrainPWGJets.C:2073
 AnalysisTrainPWGJets.C:2074
 AnalysisTrainPWGJets.C:2075
 AnalysisTrainPWGJets.C:2076
 AnalysisTrainPWGJets.C:2077
 AnalysisTrainPWGJets.C:2078
 AnalysisTrainPWGJets.C:2079
 AnalysisTrainPWGJets.C:2080
 AnalysisTrainPWGJets.C:2081
 AnalysisTrainPWGJets.C:2082
 AnalysisTrainPWGJets.C:2083
 AnalysisTrainPWGJets.C:2084
 AnalysisTrainPWGJets.C:2085
 AnalysisTrainPWGJets.C:2086
 AnalysisTrainPWGJets.C:2087
 AnalysisTrainPWGJets.C:2088
 AnalysisTrainPWGJets.C:2089
 AnalysisTrainPWGJets.C:2090
 AnalysisTrainPWGJets.C:2091
 AnalysisTrainPWGJets.C:2092
 AnalysisTrainPWGJets.C:2093
 AnalysisTrainPWGJets.C:2094
 AnalysisTrainPWGJets.C:2095
 AnalysisTrainPWGJets.C:2096
 AnalysisTrainPWGJets.C:2097
 AnalysisTrainPWGJets.C:2098
 AnalysisTrainPWGJets.C:2099
 AnalysisTrainPWGJets.C:2100
 AnalysisTrainPWGJets.C:2101
 AnalysisTrainPWGJets.C:2102
 AnalysisTrainPWGJets.C:2103
 AnalysisTrainPWGJets.C:2104
 AnalysisTrainPWGJets.C:2105
 AnalysisTrainPWGJets.C:2106
 AnalysisTrainPWGJets.C:2107
 AnalysisTrainPWGJets.C:2108
 AnalysisTrainPWGJets.C:2109
 AnalysisTrainPWGJets.C:2110
 AnalysisTrainPWGJets.C:2111
 AnalysisTrainPWGJets.C:2112
 AnalysisTrainPWGJets.C:2113
 AnalysisTrainPWGJets.C:2114
 AnalysisTrainPWGJets.C:2115
 AnalysisTrainPWGJets.C:2116
 AnalysisTrainPWGJets.C:2117
 AnalysisTrainPWGJets.C:2118
 AnalysisTrainPWGJets.C:2119
 AnalysisTrainPWGJets.C:2120
 AnalysisTrainPWGJets.C:2121
 AnalysisTrainPWGJets.C:2122
 AnalysisTrainPWGJets.C:2123
 AnalysisTrainPWGJets.C:2124
 AnalysisTrainPWGJets.C:2125
 AnalysisTrainPWGJets.C:2126
 AnalysisTrainPWGJets.C:2127
 AnalysisTrainPWGJets.C:2128
 AnalysisTrainPWGJets.C:2129
 AnalysisTrainPWGJets.C:2130
 AnalysisTrainPWGJets.C:2131
 AnalysisTrainPWGJets.C:2132
 AnalysisTrainPWGJets.C:2133
 AnalysisTrainPWGJets.C:2134
 AnalysisTrainPWGJets.C:2135
 AnalysisTrainPWGJets.C:2136
 AnalysisTrainPWGJets.C:2137
 AnalysisTrainPWGJets.C:2138
 AnalysisTrainPWGJets.C:2139
 AnalysisTrainPWGJets.C:2140
 AnalysisTrainPWGJets.C:2141
 AnalysisTrainPWGJets.C:2142
 AnalysisTrainPWGJets.C:2143
 AnalysisTrainPWGJets.C:2144
 AnalysisTrainPWGJets.C:2145
 AnalysisTrainPWGJets.C:2146
 AnalysisTrainPWGJets.C:2147
 AnalysisTrainPWGJets.C:2148
 AnalysisTrainPWGJets.C:2149
 AnalysisTrainPWGJets.C:2150
 AnalysisTrainPWGJets.C:2151
 AnalysisTrainPWGJets.C:2152
 AnalysisTrainPWGJets.C:2153
 AnalysisTrainPWGJets.C:2154
 AnalysisTrainPWGJets.C:2155
 AnalysisTrainPWGJets.C:2156
 AnalysisTrainPWGJets.C:2157
 AnalysisTrainPWGJets.C:2158
 AnalysisTrainPWGJets.C:2159
 AnalysisTrainPWGJets.C:2160
 AnalysisTrainPWGJets.C:2161
 AnalysisTrainPWGJets.C:2162
 AnalysisTrainPWGJets.C:2163
 AnalysisTrainPWGJets.C:2164
 AnalysisTrainPWGJets.C:2165
 AnalysisTrainPWGJets.C:2166
 AnalysisTrainPWGJets.C:2167
 AnalysisTrainPWGJets.C:2168
 AnalysisTrainPWGJets.C:2169
 AnalysisTrainPWGJets.C:2170
 AnalysisTrainPWGJets.C:2171
 AnalysisTrainPWGJets.C:2172
 AnalysisTrainPWGJets.C:2173
 AnalysisTrainPWGJets.C:2174
 AnalysisTrainPWGJets.C:2175
 AnalysisTrainPWGJets.C:2176
 AnalysisTrainPWGJets.C:2177
 AnalysisTrainPWGJets.C:2178
 AnalysisTrainPWGJets.C:2179
 AnalysisTrainPWGJets.C:2180
 AnalysisTrainPWGJets.C:2181
 AnalysisTrainPWGJets.C:2182
 AnalysisTrainPWGJets.C:2183
 AnalysisTrainPWGJets.C:2184
 AnalysisTrainPWGJets.C:2185
 AnalysisTrainPWGJets.C:2186
 AnalysisTrainPWGJets.C:2187
 AnalysisTrainPWGJets.C:2188
 AnalysisTrainPWGJets.C:2189
 AnalysisTrainPWGJets.C:2190
 AnalysisTrainPWGJets.C:2191
 AnalysisTrainPWGJets.C:2192
 AnalysisTrainPWGJets.C:2193
 AnalysisTrainPWGJets.C:2194
 AnalysisTrainPWGJets.C:2195
 AnalysisTrainPWGJets.C:2196
 AnalysisTrainPWGJets.C:2197
 AnalysisTrainPWGJets.C:2198
 AnalysisTrainPWGJets.C:2199
 AnalysisTrainPWGJets.C:2200
 AnalysisTrainPWGJets.C:2201
 AnalysisTrainPWGJets.C:2202
 AnalysisTrainPWGJets.C:2203
 AnalysisTrainPWGJets.C:2204
 AnalysisTrainPWGJets.C:2205
 AnalysisTrainPWGJets.C:2206
 AnalysisTrainPWGJets.C:2207
 AnalysisTrainPWGJets.C:2208
 AnalysisTrainPWGJets.C:2209
 AnalysisTrainPWGJets.C:2210
 AnalysisTrainPWGJets.C:2211
 AnalysisTrainPWGJets.C:2212
 AnalysisTrainPWGJets.C:2213
 AnalysisTrainPWGJets.C:2214
 AnalysisTrainPWGJets.C:2215
 AnalysisTrainPWGJets.C:2216
 AnalysisTrainPWGJets.C:2217
 AnalysisTrainPWGJets.C:2218
 AnalysisTrainPWGJets.C:2219
 AnalysisTrainPWGJets.C:2220
 AnalysisTrainPWGJets.C:2221
 AnalysisTrainPWGJets.C:2222
 AnalysisTrainPWGJets.C:2223
 AnalysisTrainPWGJets.C:2224
 AnalysisTrainPWGJets.C:2225
 AnalysisTrainPWGJets.C:2226
 AnalysisTrainPWGJets.C:2227
 AnalysisTrainPWGJets.C:2228
 AnalysisTrainPWGJets.C:2229
 AnalysisTrainPWGJets.C:2230
 AnalysisTrainPWGJets.C:2231
 AnalysisTrainPWGJets.C:2232
 AnalysisTrainPWGJets.C:2233
 AnalysisTrainPWGJets.C:2234
 AnalysisTrainPWGJets.C:2235
 AnalysisTrainPWGJets.C:2236
 AnalysisTrainPWGJets.C:2237
 AnalysisTrainPWGJets.C:2238
 AnalysisTrainPWGJets.C:2239
 AnalysisTrainPWGJets.C:2240
 AnalysisTrainPWGJets.C:2241
 AnalysisTrainPWGJets.C:2242
 AnalysisTrainPWGJets.C:2243
 AnalysisTrainPWGJets.C:2244
 AnalysisTrainPWGJets.C:2245
 AnalysisTrainPWGJets.C:2246
 AnalysisTrainPWGJets.C:2247
 AnalysisTrainPWGJets.C:2248
 AnalysisTrainPWGJets.C:2249
 AnalysisTrainPWGJets.C:2250
 AnalysisTrainPWGJets.C:2251
 AnalysisTrainPWGJets.C:2252
 AnalysisTrainPWGJets.C:2253
 AnalysisTrainPWGJets.C:2254
 AnalysisTrainPWGJets.C:2255
 AnalysisTrainPWGJets.C:2256
 AnalysisTrainPWGJets.C:2257
 AnalysisTrainPWGJets.C:2258
 AnalysisTrainPWGJets.C:2259
 AnalysisTrainPWGJets.C:2260
 AnalysisTrainPWGJets.C:2261
 AnalysisTrainPWGJets.C:2262
 AnalysisTrainPWGJets.C:2263
 AnalysisTrainPWGJets.C:2264
 AnalysisTrainPWGJets.C:2265
 AnalysisTrainPWGJets.C:2266
 AnalysisTrainPWGJets.C:2267
 AnalysisTrainPWGJets.C:2268
 AnalysisTrainPWGJets.C:2269
 AnalysisTrainPWGJets.C:2270
 AnalysisTrainPWGJets.C:2271
 AnalysisTrainPWGJets.C:2272
 AnalysisTrainPWGJets.C:2273
 AnalysisTrainPWGJets.C:2274
 AnalysisTrainPWGJets.C:2275
 AnalysisTrainPWGJets.C:2276
 AnalysisTrainPWGJets.C:2277
 AnalysisTrainPWGJets.C:2278
 AnalysisTrainPWGJets.C:2279
 AnalysisTrainPWGJets.C:2280
 AnalysisTrainPWGJets.C:2281
 AnalysisTrainPWGJets.C:2282
 AnalysisTrainPWGJets.C:2283
 AnalysisTrainPWGJets.C:2284
 AnalysisTrainPWGJets.C:2285
 AnalysisTrainPWGJets.C:2286
 AnalysisTrainPWGJets.C:2287
 AnalysisTrainPWGJets.C:2288
 AnalysisTrainPWGJets.C:2289
 AnalysisTrainPWGJets.C:2290
 AnalysisTrainPWGJets.C:2291
 AnalysisTrainPWGJets.C:2292
 AnalysisTrainPWGJets.C:2293
 AnalysisTrainPWGJets.C:2294
 AnalysisTrainPWGJets.C:2295
 AnalysisTrainPWGJets.C:2296
 AnalysisTrainPWGJets.C:2297
 AnalysisTrainPWGJets.C:2298
 AnalysisTrainPWGJets.C:2299
 AnalysisTrainPWGJets.C:2300
 AnalysisTrainPWGJets.C:2301
 AnalysisTrainPWGJets.C:2302
 AnalysisTrainPWGJets.C:2303
 AnalysisTrainPWGJets.C:2304
 AnalysisTrainPWGJets.C:2305
 AnalysisTrainPWGJets.C:2306
 AnalysisTrainPWGJets.C:2307
 AnalysisTrainPWGJets.C:2308
 AnalysisTrainPWGJets.C:2309
 AnalysisTrainPWGJets.C:2310
 AnalysisTrainPWGJets.C:2311
 AnalysisTrainPWGJets.C:2312
 AnalysisTrainPWGJets.C:2313
 AnalysisTrainPWGJets.C:2314
 AnalysisTrainPWGJets.C:2315
 AnalysisTrainPWGJets.C:2316
 AnalysisTrainPWGJets.C:2317
 AnalysisTrainPWGJets.C:2318
 AnalysisTrainPWGJets.C:2319
 AnalysisTrainPWGJets.C:2320
 AnalysisTrainPWGJets.C:2321
 AnalysisTrainPWGJets.C:2322
 AnalysisTrainPWGJets.C:2323
 AnalysisTrainPWGJets.C:2324
 AnalysisTrainPWGJets.C:2325
 AnalysisTrainPWGJets.C:2326
 AnalysisTrainPWGJets.C:2327
 AnalysisTrainPWGJets.C:2328
 AnalysisTrainPWGJets.C:2329
 AnalysisTrainPWGJets.C:2330
 AnalysisTrainPWGJets.C:2331
 AnalysisTrainPWGJets.C:2332
 AnalysisTrainPWGJets.C:2333
 AnalysisTrainPWGJets.C:2334
 AnalysisTrainPWGJets.C:2335
 AnalysisTrainPWGJets.C:2336
 AnalysisTrainPWGJets.C:2337
 AnalysisTrainPWGJets.C:2338
 AnalysisTrainPWGJets.C:2339
 AnalysisTrainPWGJets.C:2340
 AnalysisTrainPWGJets.C:2341
 AnalysisTrainPWGJets.C:2342
 AnalysisTrainPWGJets.C:2343
 AnalysisTrainPWGJets.C:2344
 AnalysisTrainPWGJets.C:2345
 AnalysisTrainPWGJets.C:2346
 AnalysisTrainPWGJets.C:2347
 AnalysisTrainPWGJets.C:2348
 AnalysisTrainPWGJets.C:2349
 AnalysisTrainPWGJets.C:2350
 AnalysisTrainPWGJets.C:2351
 AnalysisTrainPWGJets.C:2352
 AnalysisTrainPWGJets.C:2353
 AnalysisTrainPWGJets.C:2354
 AnalysisTrainPWGJets.C:2355
 AnalysisTrainPWGJets.C:2356
 AnalysisTrainPWGJets.C:2357
 AnalysisTrainPWGJets.C:2358
 AnalysisTrainPWGJets.C:2359
 AnalysisTrainPWGJets.C:2360
 AnalysisTrainPWGJets.C:2361
 AnalysisTrainPWGJets.C:2362
 AnalysisTrainPWGJets.C:2363
 AnalysisTrainPWGJets.C:2364
 AnalysisTrainPWGJets.C:2365
 AnalysisTrainPWGJets.C:2366
 AnalysisTrainPWGJets.C:2367
 AnalysisTrainPWGJets.C:2368
 AnalysisTrainPWGJets.C:2369
 AnalysisTrainPWGJets.C:2370
 AnalysisTrainPWGJets.C:2371
 AnalysisTrainPWGJets.C:2372
 AnalysisTrainPWGJets.C:2373
 AnalysisTrainPWGJets.C:2374
 AnalysisTrainPWGJets.C:2375
 AnalysisTrainPWGJets.C:2376
 AnalysisTrainPWGJets.C:2377
 AnalysisTrainPWGJets.C:2378
 AnalysisTrainPWGJets.C:2379
 AnalysisTrainPWGJets.C:2380
 AnalysisTrainPWGJets.C:2381
 AnalysisTrainPWGJets.C:2382
 AnalysisTrainPWGJets.C:2383
 AnalysisTrainPWGJets.C:2384
 AnalysisTrainPWGJets.C:2385
 AnalysisTrainPWGJets.C:2386
 AnalysisTrainPWGJets.C:2387
 AnalysisTrainPWGJets.C:2388
 AnalysisTrainPWGJets.C:2389
 AnalysisTrainPWGJets.C:2390
 AnalysisTrainPWGJets.C:2391
 AnalysisTrainPWGJets.C:2392
 AnalysisTrainPWGJets.C:2393
 AnalysisTrainPWGJets.C:2394
 AnalysisTrainPWGJets.C:2395
 AnalysisTrainPWGJets.C:2396
 AnalysisTrainPWGJets.C:2397
 AnalysisTrainPWGJets.C:2398
 AnalysisTrainPWGJets.C:2399
 AnalysisTrainPWGJets.C:2400
 AnalysisTrainPWGJets.C:2401
 AnalysisTrainPWGJets.C:2402
 AnalysisTrainPWGJets.C:2403
 AnalysisTrainPWGJets.C:2404
 AnalysisTrainPWGJets.C:2405
 AnalysisTrainPWGJets.C:2406
 AnalysisTrainPWGJets.C:2407
 AnalysisTrainPWGJets.C:2408
 AnalysisTrainPWGJets.C:2409
 AnalysisTrainPWGJets.C:2410
 AnalysisTrainPWGJets.C:2411
 AnalysisTrainPWGJets.C:2412
 AnalysisTrainPWGJets.C:2413
 AnalysisTrainPWGJets.C:2414
 AnalysisTrainPWGJets.C:2415
 AnalysisTrainPWGJets.C:2416
 AnalysisTrainPWGJets.C:2417
 AnalysisTrainPWGJets.C:2418
 AnalysisTrainPWGJets.C:2419
 AnalysisTrainPWGJets.C:2420
 AnalysisTrainPWGJets.C:2421
 AnalysisTrainPWGJets.C:2422
 AnalysisTrainPWGJets.C:2423
 AnalysisTrainPWGJets.C:2424
 AnalysisTrainPWGJets.C:2425
 AnalysisTrainPWGJets.C:2426
 AnalysisTrainPWGJets.C:2427
 AnalysisTrainPWGJets.C:2428
 AnalysisTrainPWGJets.C:2429
 AnalysisTrainPWGJets.C:2430
 AnalysisTrainPWGJets.C:2431
 AnalysisTrainPWGJets.C:2432
 AnalysisTrainPWGJets.C:2433
 AnalysisTrainPWGJets.C:2434
 AnalysisTrainPWGJets.C:2435
 AnalysisTrainPWGJets.C:2436
 AnalysisTrainPWGJets.C:2437
 AnalysisTrainPWGJets.C:2438
 AnalysisTrainPWGJets.C:2439
 AnalysisTrainPWGJets.C:2440
 AnalysisTrainPWGJets.C:2441
 AnalysisTrainPWGJets.C:2442
 AnalysisTrainPWGJets.C:2443
 AnalysisTrainPWGJets.C:2444
 AnalysisTrainPWGJets.C:2445
 AnalysisTrainPWGJets.C:2446
 AnalysisTrainPWGJets.C:2447
 AnalysisTrainPWGJets.C:2448
 AnalysisTrainPWGJets.C:2449
 AnalysisTrainPWGJets.C:2450
 AnalysisTrainPWGJets.C:2451
 AnalysisTrainPWGJets.C:2452
 AnalysisTrainPWGJets.C:2453
 AnalysisTrainPWGJets.C:2454
 AnalysisTrainPWGJets.C:2455
 AnalysisTrainPWGJets.C:2456
 AnalysisTrainPWGJets.C:2457
 AnalysisTrainPWGJets.C:2458
 AnalysisTrainPWGJets.C:2459
 AnalysisTrainPWGJets.C:2460
 AnalysisTrainPWGJets.C:2461
 AnalysisTrainPWGJets.C:2462
 AnalysisTrainPWGJets.C:2463
 AnalysisTrainPWGJets.C:2464
 AnalysisTrainPWGJets.C:2465
 AnalysisTrainPWGJets.C:2466
 AnalysisTrainPWGJets.C:2467
 AnalysisTrainPWGJets.C:2468
 AnalysisTrainPWGJets.C:2469
 AnalysisTrainPWGJets.C:2470
 AnalysisTrainPWGJets.C:2471
 AnalysisTrainPWGJets.C:2472
 AnalysisTrainPWGJets.C:2473
 AnalysisTrainPWGJets.C:2474
 AnalysisTrainPWGJets.C:2475
 AnalysisTrainPWGJets.C:2476
 AnalysisTrainPWGJets.C:2477
 AnalysisTrainPWGJets.C:2478
 AnalysisTrainPWGJets.C:2479
 AnalysisTrainPWGJets.C:2480
 AnalysisTrainPWGJets.C:2481
 AnalysisTrainPWGJets.C:2482
 AnalysisTrainPWGJets.C:2483
 AnalysisTrainPWGJets.C:2484
 AnalysisTrainPWGJets.C:2485
 AnalysisTrainPWGJets.C:2486
 AnalysisTrainPWGJets.C:2487
 AnalysisTrainPWGJets.C:2488
 AnalysisTrainPWGJets.C:2489
 AnalysisTrainPWGJets.C:2490
 AnalysisTrainPWGJets.C:2491
 AnalysisTrainPWGJets.C:2492
 AnalysisTrainPWGJets.C:2493
 AnalysisTrainPWGJets.C:2494
 AnalysisTrainPWGJets.C:2495
 AnalysisTrainPWGJets.C:2496
 AnalysisTrainPWGJets.C:2497
 AnalysisTrainPWGJets.C:2498
 AnalysisTrainPWGJets.C:2499
 AnalysisTrainPWGJets.C:2500
 AnalysisTrainPWGJets.C:2501
 AnalysisTrainPWGJets.C:2502
 AnalysisTrainPWGJets.C:2503
 AnalysisTrainPWGJets.C:2504
 AnalysisTrainPWGJets.C:2505
 AnalysisTrainPWGJets.C:2506
 AnalysisTrainPWGJets.C:2507
 AnalysisTrainPWGJets.C:2508
 AnalysisTrainPWGJets.C:2509
 AnalysisTrainPWGJets.C:2510
 AnalysisTrainPWGJets.C:2511
 AnalysisTrainPWGJets.C:2512
 AnalysisTrainPWGJets.C:2513
 AnalysisTrainPWGJets.C:2514
 AnalysisTrainPWGJets.C:2515
 AnalysisTrainPWGJets.C:2516
 AnalysisTrainPWGJets.C:2517
 AnalysisTrainPWGJets.C:2518
 AnalysisTrainPWGJets.C:2519
 AnalysisTrainPWGJets.C:2520
 AnalysisTrainPWGJets.C:2521
 AnalysisTrainPWGJets.C:2522
 AnalysisTrainPWGJets.C:2523
 AnalysisTrainPWGJets.C:2524
 AnalysisTrainPWGJets.C:2525
 AnalysisTrainPWGJets.C:2526
 AnalysisTrainPWGJets.C:2527
 AnalysisTrainPWGJets.C:2528
 AnalysisTrainPWGJets.C:2529
 AnalysisTrainPWGJets.C:2530
 AnalysisTrainPWGJets.C:2531
 AnalysisTrainPWGJets.C:2532
 AnalysisTrainPWGJets.C:2533
 AnalysisTrainPWGJets.C:2534
 AnalysisTrainPWGJets.C:2535
 AnalysisTrainPWGJets.C:2536
 AnalysisTrainPWGJets.C:2537
 AnalysisTrainPWGJets.C:2538
 AnalysisTrainPWGJets.C:2539
 AnalysisTrainPWGJets.C:2540
 AnalysisTrainPWGJets.C:2541
 AnalysisTrainPWGJets.C:2542
 AnalysisTrainPWGJets.C:2543
 AnalysisTrainPWGJets.C:2544
 AnalysisTrainPWGJets.C:2545
 AnalysisTrainPWGJets.C:2546
 AnalysisTrainPWGJets.C:2547
 AnalysisTrainPWGJets.C:2548
 AnalysisTrainPWGJets.C:2549
 AnalysisTrainPWGJets.C:2550
 AnalysisTrainPWGJets.C:2551
 AnalysisTrainPWGJets.C:2552
 AnalysisTrainPWGJets.C:2553
 AnalysisTrainPWGJets.C:2554
 AnalysisTrainPWGJets.C:2555
 AnalysisTrainPWGJets.C:2556
 AnalysisTrainPWGJets.C:2557
 AnalysisTrainPWGJets.C:2558
 AnalysisTrainPWGJets.C:2559
 AnalysisTrainPWGJets.C:2560
 AnalysisTrainPWGJets.C:2561
 AnalysisTrainPWGJets.C:2562
 AnalysisTrainPWGJets.C:2563
 AnalysisTrainPWGJets.C:2564
 AnalysisTrainPWGJets.C:2565
 AnalysisTrainPWGJets.C:2566
 AnalysisTrainPWGJets.C:2567
 AnalysisTrainPWGJets.C:2568
 AnalysisTrainPWGJets.C:2569
 AnalysisTrainPWGJets.C:2570
 AnalysisTrainPWGJets.C:2571
 AnalysisTrainPWGJets.C:2572
 AnalysisTrainPWGJets.C:2573
 AnalysisTrainPWGJets.C:2574
 AnalysisTrainPWGJets.C:2575
 AnalysisTrainPWGJets.C:2576
 AnalysisTrainPWGJets.C:2577
 AnalysisTrainPWGJets.C:2578
 AnalysisTrainPWGJets.C:2579
 AnalysisTrainPWGJets.C:2580
 AnalysisTrainPWGJets.C:2581
 AnalysisTrainPWGJets.C:2582
 AnalysisTrainPWGJets.C:2583