ROOT logo
//Create by Christine Nattrass, Rebecca Scott, Irakli Martashvili
//University of Tennessee at Knoxville

//by default this runs locally
//With the argument true this submits jobs to the grid
//As written this requires an xml script tag.xml in the ~/et directory on the grid to submit jobs
void runCaloEt(bool submit = false, // true or false 
	       const char *dataType="simPbPb", // "sim" or "real" etc.
	       // const char *dataType="realPbPb", // "sim" or "real" etc.
	       const char *pluginRunMode="test", // "test" or "full" or "terminate"
	       const char *det = "EMCal",//"EMCal",
	       int production = 1, Bool_t withtender = kTRUE, Int_t runnum = 0, Bool_t withNonlinearity = kTRUE, Bool_t withReclusterizing = kFALSE, Int_t trackmatchcuts=0, Bool_t is2011 = kFALSE, Bool_t jethad = kFALSE) // "PHOS" or "EMCAL" or EMCalDetail
{
  bool runCompiledVersion = kTRUE;
  class AliAnalysisEtCuts;
  TStopwatch timer;
  timer.Start();
  gSystem->Load("libTree");
  gSystem->Load("libGeom");
  gSystem->Load("libVMC");
  gSystem->Load("libPhysics");
  gSystem->Load("libMinuit");

  gSystem->AddIncludePath("-I$ALICE_ROOT/include");
  gSystem->AddIncludePath("-I. -I$ALICE_ROOT/EMCAL -I$ALICE_ROOT/ANALYSIS");

  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libAOD");
  
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");

    gSystem->Load("libTENDER.so");
    gSystem->Load("libTENDERSupplies.so"); 
    gSystem->Load("libPWGTools.so");
    gSystem->Load("libPWGEMCAL.so");
    gROOT->ProcessLine(".include $ALICE_ROOT/Tender/"); 
    //gSystem->AddIncludePath("-I$ALICE_ROOT/ANALYSIS "); 


  if (!submit) { 
    cout << "local - no submitting" << endl;
  }
  else { 
    cout << "submitting to grid" << endl;
  }
   
  if(runCompiledVersion){
    gSystem->Load("libPWGLFtotEt.so");
  }
  else{
    gROOT->ProcessLine(".L AliAnalysisEtCuts.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisHadEtCorrections.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtCommon.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtSelector.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtSelectorPhos.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtSelectorEmcal.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtTrackMatchCorrections.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtRecEffCorrection.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEt.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtMonteCarlo.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtMonteCarloPhos.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtMonteCarloEmcal.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtReconstructed.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtReconstructedPhos.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEtReconstructedEmcal.cxx+g");  
    //gROOT->ProcessLine(".L AliAnalysisEtSelectionContainer.cxx+g");
    //gROOT->ProcessLine(".L AliAnalysisEtSelectionHandler.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisTaskTransverseEnergy.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEmEtMonteCarlo.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisEmEtReconstructed.cxx+g");
    gROOT->ProcessLine(".L AliAnalysisTaskTotEt.cxx+g");
  }
  TString detStr(det);
  TString dataStr(dataType);
  if ( detStr.Contains("PHOS") ) {
    if(is2011){
      gSystem->CopyFile("calocorrections.2011.PHOS.root","calocorrections.root",kTRUE);
    }
    else{
      gSystem->CopyFile("calocorrections.PHOS.root","calocorrections.root",kTRUE);
    }
    if ( dataStr.Contains("sim") ) {
      gSystem->CopyFile("ConfigEtMonteCarlo.PHOS.C","ConfigEtMonteCarlo.C",kTRUE);
    }
    else{
      gSystem->CopyFile("ConfigEtMonteCarlo.PHOS.data.C","ConfigEtMonteCarlo.C",kTRUE);
    }
  }
  else{
    if(is2011){
      gSystem->CopyFile("calocorrections.2011.EMCAL.root","calocorrections.root",kTRUE);
    }
    else{
      gSystem->CopyFile("calocorrections.EMCAL.root","calocorrections.root",kTRUE);
    }
    if(is2011){
      if ( dataStr.Contains("sim") ) {
	gSystem->CopyFile("ConfigEtMonteCarlo.EMCAL.2011.C","ConfigEtMonteCarlo.C",kTRUE);
      }
      else{
	gSystem->CopyFile("ConfigEtMonteCarlo.EMCAL.2011.data.C","ConfigEtMonteCarlo.C",kTRUE);
      }
    }
    else{
      if ( dataStr.Contains("sim") ) {
	gSystem->CopyFile("ConfigEtMonteCarlo.EMCAL.C","ConfigEtMonteCarlo.C",kTRUE);
      }
      else{
	gSystem->CopyFile("ConfigEtMonteCarlo.EMCAL.data.C","ConfigEtMonteCarlo.C",kTRUE);
      }
    }
  }

  if(is2011){
      gSystem->CopyFile("ConfigEtReconstructed.2011.C","ConfigEtReconstructed.C",kTRUE);
  }
  else{
      gSystem->CopyFile("ConfigEtReconstructed.2010.C","ConfigEtReconstructed.C",kTRUE);
  }

  char *kTreeName = "esdTree" ;
  TChain * chain   = new TChain(kTreeName,"myESDTree") ;
  
  if(submit){      
    gSystem->Load("libNetx") ; 
    gSystem->Load("libgapiUI");
    gSystem->Load("libRAliEn"); 
    TGrid::Connect("alien://") ;
  }
  
  // Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("TotEtManager");
  
  TString taskName = "TaskTotEt" + detStr;
  TString dataStrName(dataType);
  dataStrName.ReplaceAll("/",".");
  Bool_t isPb = kFALSE;
  if ( dataStr.Contains("PbPb") ) { isPb = kTRUE;}
  TString suffix = "";
  if(!withtender){
    suffix = "WithoutTender";
  }
  if(!isPb){
    suffix = "pp"+suffix;
  }
  TString outputName = "Et.ESD." + dataStrName + "." + detStr + ".root";
  TString outputDir = "totEt" + dataStr + detStr+suffix;
  if(!withNonlinearity){
    outputDir +="NoNonlinearity";
  }
  if(withReclusterizing){
    outputDir +="WithReclusterizing";
  }
  if(trackmatchcuts!=0){
    outputDir +=Form("TrackMatchCut%i",trackmatchcuts);
  }
  if(jethad) outputDir+="WithJetHadronMethod";

  cout << " taskName " << taskName
       << " outputName " << outputName 
       << " outputDir (alien) " << outputDir << endl;
  mgr->SetCommonFileName(outputName.Data());
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("out1", TList::Class(), AliAnalysisManager::kOutputContainer, outputName);
  if(!isPb){ cout<<"I am not PbPb!!"<<endl;}
  if (submit) {
    gROOT->LoadMacro("CreateAlienHandlerCaloEtSim.C");
    cout<<"Passing in production number "<<production<<endl;
    AliAnalysisGrid *alienHandler = CreateAlienHandlerCaloEtSim(outputDir, outputName, pluginRunMode, production,detStr.Contains("PHOS"),!isPb,dataStr.Contains("real"),runnum,runCompiledVersion);  
    if (!alienHandler) return;
    mgr->SetGridHandler(alienHandler);
  }

  AliVEventHandler* esdH = new AliESDInputHandler;
  mgr->SetInputEventHandler(esdH);
  AliMCEventHandler* handler = new AliMCEventHandler;
  Bool_t isMc = kTRUE;
  if ( dataStr.Contains("sim") ) {
    cout << " MC " << endl;
    if ( dataStr.Contains("PbPb") ) { // a la: simPbPb/LHC10e18a
      cout << " PbPb " << endl;
      TString fileLocation = "/data/LHC10h8/137161/999/AliESDs.root";//"/home/dsilverm/data/E_T/" + dataStr + "/dir/AliESDs.root";
      cout << "fileLocation " << fileLocation.Data() << endl; 
//       chain->Add(fileLocation.Data()); // link to local test file
//      chain->Add("/data/tmp/3682/AliESDs.root");
//      chain->Add("/data/tmp/2782/AliESDs.root");
//       chain->Add("/data/LHC10h8/137161/999/AliESDs.root");//Hijing Pb+Pb
//       chain->Add("/data/LHC10h8/137161/111/AliESDs.root");//Hijing Pb+Pb
//       chain->Add("/data/LHC10h8/137161/222/AliESDs.root");//Hijing Pb+Pb
//      chain->Add("/data/LHC14a6/168464/605/AliESDs.root");
//chain->Add("/data/LHC11a10a_bis/139465/001/AliESDs.root");
//      chain->Add("/data/LHC14a6/168464/605/AliESDs.root");//HIJING with embedded signals
      chain->Add("/data/LHC12d3/168464/201/AliESDs.root");//HIJING with embedded signals - works, full acceptance
      //chain->Add("/data/LHC14a6/168464/888/AliESDs.root");//HIJING with embedded signals
//   chain->Add("/data/LHC11a10a_bis/139465/002/AliESDs.root");
//   chain->Add("/data/LHC11a10a_bis/139465/003/AliESDs.root");
//  chain->Add("/data/LHC11a10a_bis/139465/004/AliESDs.root");
//  chain->Add("/data/LHC11a10a_bis/139465/006/AliESDs.root");
//  chain->Add("/data/LHC11a10a_bis/139465/007/AliESDs.root");
//  chain->Add("/data/LHC11a10a_bis/139465/008/AliESDs.root");
//  chain->Add("/data/LHC11a10a_bis/139465/009/AliESDs.root");
//  chain->Add("/data/LHC11a10a_bis/139465/010/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/011/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/012/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/013/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/014/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/015/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/016/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/017/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/018/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/019/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/020/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/021/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/022/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/023/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/024/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/025/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/026/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/027/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/028/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/029/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/030/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/031/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/032/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/033/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/034/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/035/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/036/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/037/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/038/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/039/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/040/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/041/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/042/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/043/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/044/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/045/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/046/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/047/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/048/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/049/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/050/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/051/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/052/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/053/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/054/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/055/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/056/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/057/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/058/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/059/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/060/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/061/AliESDs.root");
// chain->Add("/data/LHC11a10a_bis/139465/062/AliESDs.root");

    }
    else { // pp
      cout<<"adding pp simulation file"<<endl;
      chain->Add("/data/LHC11b1b/999/AliESDs.root");
      //chain->Add("/data/LHC11b1a/999/AliESDs.root");
      //chain->Add("/data/LHC10d15/1821/AliESDs.root");
      //chain->Add("/data/LHC10dpass2/10000126403050.70/AliESDs.root");//data
      //chain->Add("/home/dsilverm/data/E_T/sim/LHC10d1/117222/100/AliESDs.root"); // link to local test file
    }
    handler->SetReadTR(kFALSE);
    mgr->SetMCtruthEventHandler(handler);
  }
  else { // real data
    cout<<"Hello there!  I am data."<<endl;
    isMc = kFALSE;

    //      chain->Add("/data/tmp/10000139465010.600/AliESDs.root");

      chain->Add("/data/LHC11h/pass2/000168464/11000168464082.94/AliESDs.root");
      //chain->Add("/data/LHC10h/pass2_rev15/10000137366041.860/AliESDs.root");
//       chain->Add("/data/LHC10h/pass2_rev15/10000137366041.870/AliESDs.root");
//       chain->Add("/data/LHC10h/pass2_rev15/10000137366041.880/AliESDs.root");
//       chain->Add("/data/LHC10h/pass2_rev15/10000137366041.890/AliESDs.root");
//       chain->Add("/data/LHC10h/pass2_rev15/10000137366041.900/AliESDs.root");
//     chain->Add("/data/LHC10dpass2/10000126403050.70/AliESDs.root");//data
    //chain->Add("/home/dsilverm/data/E_T/data/2010/LHC10b/000117222/ESDs/pass2/10000117222021.30/AliESDs.root"); // link to local test file
    cout << " not MC " << endl;
  }


  //if(!isMc && detStr.Contains("EMC")){
    if(detStr.Contains("EMC")){
  //if(0){
    cout<<"You are running over EMCal data and using the tender supply"<<endl;
    //this macro is downloaded from the EMCal tender supply twiki 
    //hopefully it will be replaced by something checked in to aliroot
    //I have added the function from GetOCDBRecParam.C in Jiri's example to this so that we don't add gobs of macros to the code
    //I set the defaults to the golden run for PbPb because we are focusing on the golden run, however, this should be thought through!!
    //AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance(geoname);

    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalSetup.C");
    AliEmcalSetupTask *setupTask = AddTaskEmcalSetup();
    setupTask->SetGeoPath("$ALICE_ROOT/OADB/EMCAL");
    setupTask->SetOcdbPath(""); 

//     gROOT->LoadMacro("AddTaskEMCALTenderForEtAnalysis.C");
//     //cout<<"WARNING: YOU ARE USING CALIBRATION FACTORS FROM PbPb RUN 137161!!"<<endl;
// //  	// get reco params from grid OCDB
// //    gROOT->LoadMacro("./GetOCDBRecParam.C");
// //  	// run num, data type pp/PbPb, from grid
// //Gets calibration factors from grid if jobs are to be submitted to the grid
// //   	AliEMCALRecParam* pars = GetOCDBRecParam( 137161, "PbPb", submit);
// //EMCAL_FIRSTYEARV1 F-
//     //AliTender *tender = AddTaskEMCALTender( "EMCAL_COMPLETEV1", 0,withNonlinearity,withReclusterizing,trackmatchcuts);
// AliTender *tender = AddTaskEMCALTender( "EMCAL_FIRSTYEARV1", 0,withNonlinearity,withReclusterizing,trackmatchcuts);
//     //this also likely needs modification
// //     tender->SelectCollisionCandidates( AliVEvent::kMB | AliVEvent::kEMCEGA | AliVEvent::kEMC1 | AliVEvent::kEMC7 );
// //     if(submit){tender->SetDefaultCDBStorage("raw://");} //uncomment if you work on grid
// //     else{tender->SetDefaultCDBStorage("local://$ALICE_ROOT/OCDB");} //uncomment if you work local

//     if(submit){
//       cout<<"Setting tender to run on grid"<<endl;
//       tender->SetDefaultCDBStorage("raw://"); //uncomment if you work on grid
//     }
//     else{
//       cout<<"Setting tender to run locally"<<endl;
//       tender->SetDefaultCDBStorage("local://$ALICE_ROOT/OCDB"); //uncomment if you work local
//     }


    gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEMCALTender.C");//tendertasks
    TString runPeriod = "LHC10h";
  Bool_t distBC         = kTRUE;   //distance to bad channel
  Bool_t recalibClus    = kTRUE;   //recalibrate cluster energy
  Bool_t recalcClusPos  = kTRUE;   //recalculate cluster position
  Bool_t nonLinearCorr  = kTRUE;   //apply non-linearity
  Bool_t remExotic      = kTRUE;   //remove exotic cells
  Bool_t fidRegion      = kTRUE;  //apply fiducial cuts -->  different from defaults
  Bool_t calibEnergy    = kTRUE;   //calibrate energy
  Bool_t calibTime      = kTRUE;   //calibrate timing
  Bool_t remBC          = kTRUE;   //remove bad channels
  UInt_t nonLinFunct    = AliEMCALRecoUtils::kBeamTestCorrected;
  Bool_t reclusterize   = kFALSE;   //reclusterize --> different from defaults
  Float_t seedthresh    = 0.100;   //seed threshold
  Float_t cellthresh    = 0.050;   //cell threshold
  UInt_t clusterizer    = AliEMCALRecParam::kClusterizerv2;
  Bool_t trackMatch     = kTRUE;   //track matching
  Bool_t updateCellOnly = kFALSE;  //only change if you run your own clusterizer task
  Float_t timeMin       = 100e-9;  //minimum time of physical signal in a cell/digit (s)
  Float_t timeMax       = 900e-9;  //maximum time of physical signal in a cell/digit (s)
  Float_t timeCut       = 900e-9;  //maximum time difference between the digits inside EMC cluster (s)
    const char *pass      = 0 ;       //string defining pass (use none if figured out from path)
    //AliAnalysisTaskSE *tender = AddTaskEMCALTender();
    AliAnalysisTaskSE *tender = AddTaskEMCALTender(distBC, recalibClus, recalcClusPos, nonLinearCorr, remExotic, 
						   fidRegion, calibEnergy, calibTime, remBC, nonLinFunct, reclusterize, seedthresh, 
						   cellthresh, clusterizer, trackMatch, updateCellOnly, timeMin, timeMax, timeCut);
    


    // one can sellect what collision candidates to use
    // triggered sample only: L1 = AliVEvent::kEMCEGA, AliVEvent::kEMCEJE; L0 = AliVEvent::kEMC1, AliVEvent::kEMC7
    tender->SelectCollisionCandidates( AliVEvent::kAny );
    //tender->SetDebugLevel(2);

    //AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("histosTrgContam", TList::Class(), AliAnalysisManager::kOutputContainer,"AnalysisResults.root");
    //mgr->ConnectOutput(tender,1,coutput3);
    cout<<"Output container name "<<AliAnalysisManager::GetCommonFileName()<<endl;
  }

  if(isMc) cout<<"I am a MC"<<endl;
  gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
  
  AliPhysicsSelectionTask *physicsSelectionTask = AddTaskPhysicsSelection(isMc);//isMC is true when processing monte carlo
  if(isPb){	 
    cout<<"Adding centrality selection task"<<endl;
    gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
    //gROOT->ProcessLine(".L AliCentralitySelectionTask.cxx++g");
    AliCentralitySelectionTask *centTask = AddTaskCentrality();
    if(isMc){
     cout<<"Setting up centrality for MC"<<endl;
     centTask->SetMCInput();
   }
    else{
     cout<<"Setting up centrality for data"<<endl;
   }
  }

  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
  //AliAnalysisTask *AddTaskPIDResponse(Bool_t isMC=kFALSE, Bool_t autoMCesd=kTRUE,
//                                     Bool_t tuneOnData=kFALSE, Int_t recoPass=2,
//                                     Bool_t cachePID=kFALSE, TString detResponse="",
//                                     Bool_t useTPCEtaCorrection = kFALSE);
//  AliAnalysisTask *AddTaskPIDResponse(Bool_t isMC=kFALSE, Bool_t autoMCesd=kTRUE,
//                                  Bool_t tuneOnData=kFALSE, Int_t recoPass=2,
//                                  Bool_t cachePID=kFALSE, TString detResponse="",
//                                  Bool_t useTPCEtaCorrection = kTRUE,
//                                  Bool_t useTPCMultiplicityCorrection = kFALSE
//                                  Int_t  userDataRecoPass = -1)

  AliAnalysisTask *taskPID;
  if(submit){
    taskPID=AddTaskPIDResponse(isMc);//,kTRUE,kTRUE,2,kFALSE,"",kTRUE,kFALSE,2);
  }
  else{
    cout<<"Not submitting so forcing pass number locally so it doesn't crash"<<endl;
    taskPID=AddTaskPIDResponse(isMc,kTRUE,kTRUE,2,kFALSE,"",kTRUE,kFALSE,2);
  }
  //gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
  //AddTaskPIDqa();

  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();





  AliAnalysisTaskTotEt *task1 = new AliAnalysisTaskTotEt(taskName);
  task1->SetMcData(isMc);//necessary to tell the task to basically accept all MC events.
  task1->SelectCollisionCandidates(AliVEvent::kMB ) ;
  mgr->AddTask(task1);

  
  //____________________________________________//
  mgr->ConnectInput(task1,0,cinput1);
  mgr->ConnectOutput(task1,1,coutput1);


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