ROOT logo
void runProtonAnalysisQA(const char* esdAnalysisType = "Hybrid",
			 const char* pidMode = "Ratio",
			 Bool_t kUseOnlineTrigger = kFALSE,
			 Bool_t kUseOfflineTrigger = kFALSE) {
  //Macro to run the proton QA analysis tested for local, proof & GRID.
  //Local: Takes four arguments, the analysis mode, the type of the ESD 
  //       analysis, the PID mode and the path where the tag and ESD or 
  //       AOD files reside.
  //Interactive: Takes four arguments, the analysis mode, the type of the ESD 
  //             analysis, the PID mode and the name of the collection of tag 
  //             files.
  //Batch: Takes four arguments, the analysis mode, the type of the ESD 
  //       analysis, the PID mode and the name of the collection file with 
  //       the event list for each file.
  //Proof: Takes five arguments, the analysis level, the analysis mode in 
  //       case of ESD, the PID mode, the number of events and the dataset 
  //       name and .  
  //Analysis mode can be: "MC", "ESD", "AOD"
  //ESD analysis type can be one of the three: "TPC", "Hybrid", "Global"
  //PID mode can be one of the four: "Bayesian" (standard Bayesian approach) 
  //   "Ratio" (ratio of measured over expected/theoretical dE/dx a la STAR) 
  //   "Sigma1" (N-sigma area around the fitted dE/dx vs P band)
  //   "Sigma2" (same as previous but taking into account the No of TPC points)
  TStopwatch timer;
  timer.Start();
  
  //runLocal("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,"/home/pchrist/ALICE/Baryons/QA/Local");
  //runProof("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,100000,"/COMMON/COMMON/LHC10a12_run10482X#esdTree");
  runProof("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,100000,0,"/COMMON/COMMON/LHC09d10_run10482X#esdTree");
  //runInteractive("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,"tag104825.xml");
  //runBatch("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,"wn.xml");

  timer.Stop();
  timer.Print();
}

//_________________________________________________//
void runLocal(const char* mode = "ESD",
	      const char* analysisType = 0x0,
	      const char* pidMode = 0x0,
	      Bool_t kUseOnlineTrigger = kTRUE,
	      Bool_t kUseOfflineTrigger = kTRUE,
	      const char* path = 0x0) {
  TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
  outputFilename1 += "."; outputFilename1 += pidMode; 
  outputFilename1 += ".root"; //main QA file
  TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
  outputFilename2 += "."; outputFilename2 += pidMode; 
  outputFilename2 += ".root"; //MC process QA
  TString outputFilename3 = "Protons.QA.Histograms."; 
  outputFilename3 += analysisType;
  outputFilename3 += "."; outputFilename3 += pidMode; 
  outputFilename3 += ".root"; //Accepted cut distributions
  TString outputFilename4 = "Protons.Efficiency."; 
  outputFilename4 += analysisType;
  outputFilename4 += "."; outputFilename4 += pidMode; 
  outputFilename4 += ".root"; //Reco and PID efficiency
  TString outputFilename5 = "Vertex.QA.root"; //vertex QA
  TString eventStatsFilename = "eventStats.root";//event stats

  gSystem->Load("libProofPlayer.so");

  //Setup the par files
  setupPar("STEERBase");
  gSystem->Load("libSTEERBase.so");
  setupPar("ESD");
  gSystem->Load("libESD.so");
  setupPar("AOD");
  gSystem->Load("libAOD.so");
  setupPar("ANALYSIS");
  gSystem->Load("libANALYSIS.so");
  setupPar("ANALYSISalice");
  gSystem->Load("libANALYSISalice.so");
  setupPar("CORRFW");
  gSystem->Load("libCORRFW.so");
  setupPar("PWG2spectra");
  gSystem->Load("libPWG2spectra.so");

   //____________________________________________//
  AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD"); 
  tagAnalysis->ChainLocalTags(path);

  AliRunTagCuts *runCuts = new AliRunTagCuts();
  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
  AliEventTagCuts *evCuts = new AliEventTagCuts();
  
  TChain* chain = 0x0;
  chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
  chain->SetBranchStatus("*Calo*",0);

  //____________________________________________//
  gROOT->LoadMacro("configProtonAnalysis.C");
  AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
							    analysisType,
							    pidMode,
							    kUseOnlineTrigger,
							    kUseOfflineTrigger);
  //____________________________________________//
  // Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
  AliVEventHandler* esdH = new AliESDInputHandler;
  mgr->SetInputEventHandler(esdH);
  AliMCEventHandler *mc = new AliMCEventHandler();
  mgr->SetMCtruthEventHandler(mc);
  
  //____________________________________________//
  // 1st Proton task
  AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
  taskProtonsQA->SetAnalysisObject(analysis);
  mgr->AddTask(taskProtonsQA);

  // Create containers for input/output
  /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
							   TChain::Class(),
							   AliAnalysisManager::kInputContainer);*/
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename1.Data());
  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename5.Data());
  AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats", 
							     TH1::Class(),
							     AliAnalysisManager::kOutputContainer,
							     eventStatsFilename.Data());
  
  //____________________________________________//
  mgr->ConnectInput(taskProtonsQA,0,cinput1);
  mgr->ConnectOutput(taskProtonsQA,0,coutput1);
  mgr->ConnectOutput(taskProtonsQA,1,coutput2);
  mgr->ConnectOutput(taskProtonsQA,2,coutput3);
  mgr->ConnectOutput(taskProtonsQA,3,coutput4);
  mgr->ConnectOutput(taskProtonsQA,4,coutput5);
  mgr->ConnectOutput(taskProtonsQA,5,coutput6);
  mgr->ConnectOutput(taskProtonsQA,6,coutput7);
  mgr->ConnectOutput(taskProtonsQA,7,coutput8);
  mgr->ConnectOutput(taskProtonsQA,8,coutput9);
  mgr->ConnectOutput(taskProtonsQA,9,coutput10);

  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  mgr->StartAnalysis("local",chain);
}

//_________________________________________________//
void runInteractive(const char* mode = "ESD",
		    const char* analysisType = 0x0,
		    const char* pidMode = 0x0,
		    Bool_t kUseOnlineTrigger = kTRUE,
		    Bool_t kUseOfflineTrigger = kTRUE,
		    const char* collectionName = "tag.xml") {
  TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
  outputFilename1 += "."; outputFilename1 += pidMode; 
  outputFilename1 += ".root"; //main QA file
  TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
  outputFilename2 += "."; outputFilename2 += pidMode; 
  outputFilename2 += ".root"; //MC process QA
  TString outputFilename3 = "Protons.QA.Histograms."; 
  outputFilename3 += analysisType;
  outputFilename3 += "."; outputFilename3 += pidMode; 
  outputFilename3 += ".root"; //Accepted cut distributions
  TString outputFilename4 = "Protons.Efficiency."; 
  outputFilename4 += analysisType;
  outputFilename4 += "."; outputFilename4 += pidMode; 
  outputFilename4 += ".root"; //Reco and PID efficiency
  TString outputFilename5 = "Vertex.QA.root"; //vertex QA
  TString eventStatsFilename = "eventStats.root";//event stats

  TGrid::Connect("alien://");

  //Setup the par files
  setupPar("STEERBase");
  gSystem->Load("libSTEERBase.so");
  setupPar("ESD");
  gSystem->Load("libESD.so");
  setupPar("AOD");
  gSystem->Load("libAOD.so");
  setupPar("ANALYSIS");
  gSystem->Load("libANALYSIS.so");
  setupPar("ANALYSISalice");
  gSystem->Load("libANALYSISalice.so");
  setupPar("CORRFW");
  gSystem->Load("libCORRFW.so");
  setupPar("PWG2spectra");
  gSystem->Load("libPWG2spectra.so");

  //____________________________________________//
  AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
 
  AliRunTagCuts *runCuts = new AliRunTagCuts();
  AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
  AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
  AliEventTagCuts *evCuts = new AliEventTagCuts();
 
  //grid tags
  TAlienCollection* coll = TAlienCollection::Open(collectionName);
  TGridResult* TagResult = coll->GetGridResult("",0,0);
  tagAnalysis->ChainGridTags(TagResult);
  TChain* chain = 0x0;
  chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
  chain->SetBranchStatus("*Calo*",0);

  //____________________________________________//
  gROOT->LoadMacro("configProtonAnalysis.C");
  AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
							    analysisType,
							    pidMode,
							    kUseOnlineTrigger,
							    kUseOfflineTrigger);
  //____________________________________________//
  // Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
  AliVEventHandler* esdH = new AliESDInputHandler;
  mgr->SetInputEventHandler(esdH);
  AliMCEventHandler *mc = new AliMCEventHandler();
  mgr->SetMCtruthEventHandler(mc);
  
  //____________________________________________//
  // 1st Proton task
  AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
  taskProtonsQA->SetAnalysisObject(analysis);
  mgr->AddTask(taskProtonsQA);

  // Create containers for input/output
  /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
                                                           TChain::Class(),
                                                           AliAnalysisManager::kInputContainer);*/
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename1.Data());
  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename5.Data());
  AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats", 
							     TH1::Class(),
							     AliAnalysisManager::kOutputContainer,
							     eventStatsFilename.Data());

  //____________________________________________//
  mgr->ConnectInput(taskProtonsQA,0,cinput1);
  mgr->ConnectOutput(taskProtonsQA,0,coutput1);
  mgr->ConnectOutput(taskProtonsQA,1,coutput2);
  mgr->ConnectOutput(taskProtonsQA,2,coutput3);
  mgr->ConnectOutput(taskProtonsQA,3,coutput4);
  mgr->ConnectOutput(taskProtonsQA,4,coutput5);
  mgr->ConnectOutput(taskProtonsQA,5,coutput6);
  mgr->ConnectOutput(taskProtonsQA,6,coutput7);
  mgr->ConnectOutput(taskProtonsQA,7,coutput8);
  mgr->ConnectOutput(taskProtonsQA,8,coutput9);
  mgr->ConnectOutput(taskProtonsQA,9,coutput10);

  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  mgr->StartAnalysis("local",chain);
}

//_________________________________________________//
void runBatch(const char* mode = "ESD",
	      const char* analysisType = 0x0,
	      const char* pidMode = 0x0,
	      Bool_t kUseOnlineTrigger = kTRUE,
	      Bool_t kUseOfflineTrigger = kTRUE,
	      const char *collectionfile = "wn.xml") {
  TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
  outputFilename1 += "."; outputFilename1 += pidMode; 
  outputFilename1 += ".root"; //main QA file
  TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
  outputFilename2 += "."; outputFilename2 += pidMode; 
  outputFilename2 += ".root"; //MC process QA
  TString outputFilename3 = "Protons.QA.Histograms."; 
  outputFilename3 += analysisType;
  outputFilename3 += "."; outputFilename3 += pidMode; 
  outputFilename3 += ".root"; //Accepted cut distributions
  TString outputFilename4 = "Protons.Efficiency."; 
  outputFilename4 += analysisType;
  outputFilename4 += "."; outputFilename4 += pidMode; 
  outputFilename4 += ".root"; //Reco and PID efficiency
  TString outputFilename5 = "Vertex.QA.root"; //vertex QA
  TString eventStatsFilename = "eventStats.root";//event stats

  TGrid::Connect("alien://");
  gSystem->Load("libProofPlayer.so");

  //Setup the par files
  setupPar("STEERBase");
  gSystem->Load("libSTEERBase.so");
  setupPar("ESD");
  gSystem->Load("libESD.so");
  setupPar("AOD");
  gSystem->Load("libAOD.so");
  setupPar("ANALYSIS");
  gSystem->Load("libANALYSIS.so");
  setupPar("ANALYSISalice");
  gSystem->Load("libANALYSISalice.so");
  setupPar("CORRFW");
  gSystem->Load("libCORRFW.so");
  setupPar("PWG2spectra");
  gSystem->Load("libPWG2spectra.so");

  //____________________________________________//
  //Usage of event tags
  AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
  TChain *chain = 0x0;
  chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
  chain->SetBranchStatus("*Calo*",0);
  
  //____________________________________________//
  gROOT->LoadMacro("configProtonAnalysis.C");
  AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
							    analysisType,
							    pidMode,
							    kUseOnlineTrigger,
							    kUseOfflineTrigger);
  //____________________________________________//
  // Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
  AliVEventHandler* esdH = new AliESDInputHandler;
  mgr->SetInputEventHandler(esdH);
  AliMCEventHandler *mc = new AliMCEventHandler();
  mgr->SetMCtruthEventHandler(mc);
  
  //____________________________________________//
  // 1st Proton task
  AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
  taskProtonsQA->SetAnalysisObject(analysis);
  mgr->AddTask(taskProtonsQA);

  // Create containers for input/output
  /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
							   TChain::Class(),
							   AliAnalysisManager::kInputContainer);*/
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename1.Data());
  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename5.Data());
  AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats", 
							     TH1::Class(),
							     AliAnalysisManager::kOutputContainer,
							     eventStatsFilename.Data());

  //____________________________________________//
  mgr->ConnectInput(taskProtonsQA,0,cinput1);
  mgr->ConnectOutput(taskProtonsQA,0,coutput1);
  mgr->ConnectOutput(taskProtonsQA,1,coutput2);
  mgr->ConnectOutput(taskProtonsQA,2,coutput3);
  mgr->ConnectOutput(taskProtonsQA,3,coutput4);
  mgr->ConnectOutput(taskProtonsQA,4,coutput5);
  mgr->ConnectOutput(taskProtonsQA,5,coutput6);
  mgr->ConnectOutput(taskProtonsQA,6,coutput7);
  mgr->ConnectOutput(taskProtonsQA,7,coutput8);
  mgr->ConnectOutput(taskProtonsQA,8,coutput9);
  mgr->ConnectOutput(taskProtonsQA,9,coutput10);

  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  mgr->StartAnalysis("local",chain);
}
 
//_________________________________________________//
void runProof(const char* mode = "ESD",
	      const char* analysisType = 0x0,
	      const char* pidMode = 0x0,
	      Bool_t kUseOnlineTrigger = kTRUE,
	      Bool_t kUseOfflineTrigger = kTRUE,
	      Int_t stats = 0, Int_t startingPoint = 0,
	      const char* dataset = 0x0) {
  TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
  outputFilename1 += "."; outputFilename1 += pidMode; 
  outputFilename1 += ".root"; //main QA file
  TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
  outputFilename2 += "."; outputFilename2 += pidMode; 
  outputFilename2 += ".root"; //MC process QA
  TString outputFilename3 = "Protons.QA.Histograms."; 
  outputFilename3 += analysisType;
  outputFilename3 += "."; outputFilename3 += pidMode; 
  outputFilename3 += ".root"; //Accepted cut distributions
  TString outputFilename4 = "Protons.Efficiency."; 
  outputFilename4 += analysisType;
  outputFilename4 += "."; outputFilename4 += pidMode; 
  outputFilename4 += ".root"; //Reco and PID efficiency
  TString outputFilename5 = "Vertex.QA.root"; //vertex Q
  TString eventStatsFilename = "eventStats.root";//event stats

  gEnv->SetValue("XSec.GSI.DelegProxy","2");
  printf("****** Connect to PROOF *******\n");
  TProof::Open("alicecaf.cern.ch"); 
  gProof->SetParallel();

  // Enable the Analysis Package
  gProof->UploadPackage("STEERBase.par");
  gProof->EnablePackage("STEERBase");
  gProof->UploadPackage("ESD.par");
  gProof->EnablePackage("ESD");
  gProof->UploadPackage("AOD.par");
  gProof->EnablePackage("AOD");
  gProof->UploadPackage("ANALYSIS.par");
  gProof->EnablePackage("ANALYSIS");
  gProof->UploadPackage("ANALYSISalice.par");
  gProof->EnablePackage("ANALYSISalice");
  gProof->UploadPackage("CORRFW.par");
  gProof->EnablePackage("CORRFW");
  gProof->UploadPackage("PWG2spectra.par");
  gProof->EnablePackage("PWG2spectra");
  
  //____________________________________________//
  //gProof->Load("configProtonAnalysis.C");
  gROOT->LoadMacro("configProtonAnalysis.C");
  AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
							    analysisType,
							    pidMode,
							    kUseOnlineTrigger,
							    kUseOfflineTrigger);
  //____________________________________________//
  // Make the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
  AliVEventHandler* esdH = new AliESDInputHandler;
  mgr->SetInputEventHandler(esdH);
  AliMCEventHandler *mc = new AliMCEventHandler();
  mgr->SetMCtruthEventHandler(mc);
  
  //____________________________________________//
  // 1st Proton task
  AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
  taskProtonsQA->SetAnalysisObject(analysis);
  mgr->AddTask(taskProtonsQA);

  // Create containers for input/output
  /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
                                                           TChain::Class(),
                                                           AliAnalysisManager::kInputContainer);*/
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename1.Data());
  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename2.Data());
  AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename3.Data());
  AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename5.Data());
  AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList", 
							    TList::Class(),
							    AliAnalysisManager::kOutputContainer,
							    outputFilename4.Data());
  AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats", 
							     TH1::Class(),
							     AliAnalysisManager::kOutputContainer,
							     eventStatsFilename.Data());

  //____________________________________________//
  mgr->ConnectInput(taskProtonsQA,0,cinput1);
  mgr->ConnectOutput(taskProtonsQA,0,coutput1);
  mgr->ConnectOutput(taskProtonsQA,1,coutput2);
  mgr->ConnectOutput(taskProtonsQA,2,coutput3);
  mgr->ConnectOutput(taskProtonsQA,3,coutput4);
  mgr->ConnectOutput(taskProtonsQA,4,coutput5);
  mgr->ConnectOutput(taskProtonsQA,5,coutput6);
  mgr->ConnectOutput(taskProtonsQA,6,coutput7);
  mgr->ConnectOutput(taskProtonsQA,7,coutput8);
  mgr->ConnectOutput(taskProtonsQA,8,coutput9);
  mgr->ConnectOutput(taskProtonsQA,9,coutput10);

  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();

  if(dataset)
    mgr->StartAnalysis("proof",dataset,stats,startingPoint);
  else {
    // You should get this macro and the txt file from:
    // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
    gROOT->LoadMacro("CreateESDChain.C");
    TChain* chain = 0x0;
    chain = CreateESDChain("ESD82XX_30K.txt",stats);
    chain->SetBranchStatus("*Calo*",0);

    mgr->StartAnalysis("proof",chain);
    //mgr->StartAnalysis("local",chain);
  }
}

//_________________________________________________//
Int_t setupPar(const char* pararchivename) {
  ///////////////////
  // Setup PAR File//
  ///////////////////
  if (pararchivename) {
    char processline[1024];
    sprintf(processline,".! tar xvzf %s.par",pararchivename);
    gROOT->ProcessLine(processline);
    const char* ocwd = gSystem->WorkingDirectory();
    gSystem->ChangeDirectory(pararchivename);
    
    // 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("runAnalysis","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");
    }
    
    gSystem->ChangeDirectory("../");
  } 
  return 1;
}
 runProtonAnalysisQA.C:1
 runProtonAnalysisQA.C:2
 runProtonAnalysisQA.C:3
 runProtonAnalysisQA.C:4
 runProtonAnalysisQA.C:5
 runProtonAnalysisQA.C:6
 runProtonAnalysisQA.C:7
 runProtonAnalysisQA.C:8
 runProtonAnalysisQA.C:9
 runProtonAnalysisQA.C:10
 runProtonAnalysisQA.C:11
 runProtonAnalysisQA.C:12
 runProtonAnalysisQA.C:13
 runProtonAnalysisQA.C:14
 runProtonAnalysisQA.C:15
 runProtonAnalysisQA.C:16
 runProtonAnalysisQA.C:17
 runProtonAnalysisQA.C:18
 runProtonAnalysisQA.C:19
 runProtonAnalysisQA.C:20
 runProtonAnalysisQA.C:21
 runProtonAnalysisQA.C:22
 runProtonAnalysisQA.C:23
 runProtonAnalysisQA.C:24
 runProtonAnalysisQA.C:25
 runProtonAnalysisQA.C:26
 runProtonAnalysisQA.C:27
 runProtonAnalysisQA.C:28
 runProtonAnalysisQA.C:29
 runProtonAnalysisQA.C:30
 runProtonAnalysisQA.C:31
 runProtonAnalysisQA.C:32
 runProtonAnalysisQA.C:33
 runProtonAnalysisQA.C:34
 runProtonAnalysisQA.C:35
 runProtonAnalysisQA.C:36
 runProtonAnalysisQA.C:37
 runProtonAnalysisQA.C:38
 runProtonAnalysisQA.C:39
 runProtonAnalysisQA.C:40
 runProtonAnalysisQA.C:41
 runProtonAnalysisQA.C:42
 runProtonAnalysisQA.C:43
 runProtonAnalysisQA.C:44
 runProtonAnalysisQA.C:45
 runProtonAnalysisQA.C:46
 runProtonAnalysisQA.C:47
 runProtonAnalysisQA.C:48
 runProtonAnalysisQA.C:49
 runProtonAnalysisQA.C:50
 runProtonAnalysisQA.C:51
 runProtonAnalysisQA.C:52
 runProtonAnalysisQA.C:53
 runProtonAnalysisQA.C:54
 runProtonAnalysisQA.C:55
 runProtonAnalysisQA.C:56
 runProtonAnalysisQA.C:57
 runProtonAnalysisQA.C:58
 runProtonAnalysisQA.C:59
 runProtonAnalysisQA.C:60
 runProtonAnalysisQA.C:61
 runProtonAnalysisQA.C:62
 runProtonAnalysisQA.C:63
 runProtonAnalysisQA.C:64
 runProtonAnalysisQA.C:65
 runProtonAnalysisQA.C:66
 runProtonAnalysisQA.C:67
 runProtonAnalysisQA.C:68
 runProtonAnalysisQA.C:69
 runProtonAnalysisQA.C:70
 runProtonAnalysisQA.C:71
 runProtonAnalysisQA.C:72
 runProtonAnalysisQA.C:73
 runProtonAnalysisQA.C:74
 runProtonAnalysisQA.C:75
 runProtonAnalysisQA.C:76
 runProtonAnalysisQA.C:77
 runProtonAnalysisQA.C:78
 runProtonAnalysisQA.C:79
 runProtonAnalysisQA.C:80
 runProtonAnalysisQA.C:81
 runProtonAnalysisQA.C:82
 runProtonAnalysisQA.C:83
 runProtonAnalysisQA.C:84
 runProtonAnalysisQA.C:85
 runProtonAnalysisQA.C:86
 runProtonAnalysisQA.C:87
 runProtonAnalysisQA.C:88
 runProtonAnalysisQA.C:89
 runProtonAnalysisQA.C:90
 runProtonAnalysisQA.C:91
 runProtonAnalysisQA.C:92
 runProtonAnalysisQA.C:93
 runProtonAnalysisQA.C:94
 runProtonAnalysisQA.C:95
 runProtonAnalysisQA.C:96
 runProtonAnalysisQA.C:97
 runProtonAnalysisQA.C:98
 runProtonAnalysisQA.C:99
 runProtonAnalysisQA.C:100
 runProtonAnalysisQA.C:101
 runProtonAnalysisQA.C:102
 runProtonAnalysisQA.C:103
 runProtonAnalysisQA.C:104
 runProtonAnalysisQA.C:105
 runProtonAnalysisQA.C:106
 runProtonAnalysisQA.C:107
 runProtonAnalysisQA.C:108
 runProtonAnalysisQA.C:109
 runProtonAnalysisQA.C:110
 runProtonAnalysisQA.C:111
 runProtonAnalysisQA.C:112
 runProtonAnalysisQA.C:113
 runProtonAnalysisQA.C:114
 runProtonAnalysisQA.C:115
 runProtonAnalysisQA.C:116
 runProtonAnalysisQA.C:117
 runProtonAnalysisQA.C:118
 runProtonAnalysisQA.C:119
 runProtonAnalysisQA.C:120
 runProtonAnalysisQA.C:121
 runProtonAnalysisQA.C:122
 runProtonAnalysisQA.C:123
 runProtonAnalysisQA.C:124
 runProtonAnalysisQA.C:125
 runProtonAnalysisQA.C:126
 runProtonAnalysisQA.C:127
 runProtonAnalysisQA.C:128
 runProtonAnalysisQA.C:129
 runProtonAnalysisQA.C:130
 runProtonAnalysisQA.C:131
 runProtonAnalysisQA.C:132
 runProtonAnalysisQA.C:133
 runProtonAnalysisQA.C:134
 runProtonAnalysisQA.C:135
 runProtonAnalysisQA.C:136
 runProtonAnalysisQA.C:137
 runProtonAnalysisQA.C:138
 runProtonAnalysisQA.C:139
 runProtonAnalysisQA.C:140
 runProtonAnalysisQA.C:141
 runProtonAnalysisQA.C:142
 runProtonAnalysisQA.C:143
 runProtonAnalysisQA.C:144
 runProtonAnalysisQA.C:145
 runProtonAnalysisQA.C:146
 runProtonAnalysisQA.C:147
 runProtonAnalysisQA.C:148
 runProtonAnalysisQA.C:149
 runProtonAnalysisQA.C:150
 runProtonAnalysisQA.C:151
 runProtonAnalysisQA.C:152
 runProtonAnalysisQA.C:153
 runProtonAnalysisQA.C:154
 runProtonAnalysisQA.C:155
 runProtonAnalysisQA.C:156
 runProtonAnalysisQA.C:157
 runProtonAnalysisQA.C:158
 runProtonAnalysisQA.C:159
 runProtonAnalysisQA.C:160
 runProtonAnalysisQA.C:161
 runProtonAnalysisQA.C:162
 runProtonAnalysisQA.C:163
 runProtonAnalysisQA.C:164
 runProtonAnalysisQA.C:165
 runProtonAnalysisQA.C:166
 runProtonAnalysisQA.C:167
 runProtonAnalysisQA.C:168
 runProtonAnalysisQA.C:169
 runProtonAnalysisQA.C:170
 runProtonAnalysisQA.C:171
 runProtonAnalysisQA.C:172
 runProtonAnalysisQA.C:173
 runProtonAnalysisQA.C:174
 runProtonAnalysisQA.C:175
 runProtonAnalysisQA.C:176
 runProtonAnalysisQA.C:177
 runProtonAnalysisQA.C:178
 runProtonAnalysisQA.C:179
 runProtonAnalysisQA.C:180
 runProtonAnalysisQA.C:181
 runProtonAnalysisQA.C:182
 runProtonAnalysisQA.C:183
 runProtonAnalysisQA.C:184
 runProtonAnalysisQA.C:185
 runProtonAnalysisQA.C:186
 runProtonAnalysisQA.C:187
 runProtonAnalysisQA.C:188
 runProtonAnalysisQA.C:189
 runProtonAnalysisQA.C:190
 runProtonAnalysisQA.C:191
 runProtonAnalysisQA.C:192
 runProtonAnalysisQA.C:193
 runProtonAnalysisQA.C:194
 runProtonAnalysisQA.C:195
 runProtonAnalysisQA.C:196
 runProtonAnalysisQA.C:197
 runProtonAnalysisQA.C:198
 runProtonAnalysisQA.C:199
 runProtonAnalysisQA.C:200
 runProtonAnalysisQA.C:201
 runProtonAnalysisQA.C:202
 runProtonAnalysisQA.C:203
 runProtonAnalysisQA.C:204
 runProtonAnalysisQA.C:205
 runProtonAnalysisQA.C:206
 runProtonAnalysisQA.C:207
 runProtonAnalysisQA.C:208
 runProtonAnalysisQA.C:209
 runProtonAnalysisQA.C:210
 runProtonAnalysisQA.C:211
 runProtonAnalysisQA.C:212
 runProtonAnalysisQA.C:213
 runProtonAnalysisQA.C:214
 runProtonAnalysisQA.C:215
 runProtonAnalysisQA.C:216
 runProtonAnalysisQA.C:217
 runProtonAnalysisQA.C:218
 runProtonAnalysisQA.C:219
 runProtonAnalysisQA.C:220
 runProtonAnalysisQA.C:221
 runProtonAnalysisQA.C:222
 runProtonAnalysisQA.C:223
 runProtonAnalysisQA.C:224
 runProtonAnalysisQA.C:225
 runProtonAnalysisQA.C:226
 runProtonAnalysisQA.C:227
 runProtonAnalysisQA.C:228
 runProtonAnalysisQA.C:229
 runProtonAnalysisQA.C:230
 runProtonAnalysisQA.C:231
 runProtonAnalysisQA.C:232
 runProtonAnalysisQA.C:233
 runProtonAnalysisQA.C:234
 runProtonAnalysisQA.C:235
 runProtonAnalysisQA.C:236
 runProtonAnalysisQA.C:237
 runProtonAnalysisQA.C:238
 runProtonAnalysisQA.C:239
 runProtonAnalysisQA.C:240
 runProtonAnalysisQA.C:241
 runProtonAnalysisQA.C:242
 runProtonAnalysisQA.C:243
 runProtonAnalysisQA.C:244
 runProtonAnalysisQA.C:245
 runProtonAnalysisQA.C:246
 runProtonAnalysisQA.C:247
 runProtonAnalysisQA.C:248
 runProtonAnalysisQA.C:249
 runProtonAnalysisQA.C:250
 runProtonAnalysisQA.C:251
 runProtonAnalysisQA.C:252
 runProtonAnalysisQA.C:253
 runProtonAnalysisQA.C:254
 runProtonAnalysisQA.C:255
 runProtonAnalysisQA.C:256
 runProtonAnalysisQA.C:257
 runProtonAnalysisQA.C:258
 runProtonAnalysisQA.C:259
 runProtonAnalysisQA.C:260
 runProtonAnalysisQA.C:261
 runProtonAnalysisQA.C:262
 runProtonAnalysisQA.C:263
 runProtonAnalysisQA.C:264
 runProtonAnalysisQA.C:265
 runProtonAnalysisQA.C:266
 runProtonAnalysisQA.C:267
 runProtonAnalysisQA.C:268
 runProtonAnalysisQA.C:269
 runProtonAnalysisQA.C:270
 runProtonAnalysisQA.C:271
 runProtonAnalysisQA.C:272
 runProtonAnalysisQA.C:273
 runProtonAnalysisQA.C:274
 runProtonAnalysisQA.C:275
 runProtonAnalysisQA.C:276
 runProtonAnalysisQA.C:277
 runProtonAnalysisQA.C:278
 runProtonAnalysisQA.C:279
 runProtonAnalysisQA.C:280
 runProtonAnalysisQA.C:281
 runProtonAnalysisQA.C:282
 runProtonAnalysisQA.C:283
 runProtonAnalysisQA.C:284
 runProtonAnalysisQA.C:285
 runProtonAnalysisQA.C:286
 runProtonAnalysisQA.C:287
 runProtonAnalysisQA.C:288
 runProtonAnalysisQA.C:289
 runProtonAnalysisQA.C:290
 runProtonAnalysisQA.C:291
 runProtonAnalysisQA.C:292
 runProtonAnalysisQA.C:293
 runProtonAnalysisQA.C:294
 runProtonAnalysisQA.C:295
 runProtonAnalysisQA.C:296
 runProtonAnalysisQA.C:297
 runProtonAnalysisQA.C:298
 runProtonAnalysisQA.C:299
 runProtonAnalysisQA.C:300
 runProtonAnalysisQA.C:301
 runProtonAnalysisQA.C:302
 runProtonAnalysisQA.C:303
 runProtonAnalysisQA.C:304
 runProtonAnalysisQA.C:305
 runProtonAnalysisQA.C:306
 runProtonAnalysisQA.C:307
 runProtonAnalysisQA.C:308
 runProtonAnalysisQA.C:309
 runProtonAnalysisQA.C:310
 runProtonAnalysisQA.C:311
 runProtonAnalysisQA.C:312
 runProtonAnalysisQA.C:313
 runProtonAnalysisQA.C:314
 runProtonAnalysisQA.C:315
 runProtonAnalysisQA.C:316
 runProtonAnalysisQA.C:317
 runProtonAnalysisQA.C:318
 runProtonAnalysisQA.C:319
 runProtonAnalysisQA.C:320
 runProtonAnalysisQA.C:321
 runProtonAnalysisQA.C:322
 runProtonAnalysisQA.C:323
 runProtonAnalysisQA.C:324
 runProtonAnalysisQA.C:325
 runProtonAnalysisQA.C:326
 runProtonAnalysisQA.C:327
 runProtonAnalysisQA.C:328
 runProtonAnalysisQA.C:329
 runProtonAnalysisQA.C:330
 runProtonAnalysisQA.C:331
 runProtonAnalysisQA.C:332
 runProtonAnalysisQA.C:333
 runProtonAnalysisQA.C:334
 runProtonAnalysisQA.C:335
 runProtonAnalysisQA.C:336
 runProtonAnalysisQA.C:337
 runProtonAnalysisQA.C:338
 runProtonAnalysisQA.C:339
 runProtonAnalysisQA.C:340
 runProtonAnalysisQA.C:341
 runProtonAnalysisQA.C:342
 runProtonAnalysisQA.C:343
 runProtonAnalysisQA.C:344
 runProtonAnalysisQA.C:345
 runProtonAnalysisQA.C:346
 runProtonAnalysisQA.C:347
 runProtonAnalysisQA.C:348
 runProtonAnalysisQA.C:349
 runProtonAnalysisQA.C:350
 runProtonAnalysisQA.C:351
 runProtonAnalysisQA.C:352
 runProtonAnalysisQA.C:353
 runProtonAnalysisQA.C:354
 runProtonAnalysisQA.C:355
 runProtonAnalysisQA.C:356
 runProtonAnalysisQA.C:357
 runProtonAnalysisQA.C:358
 runProtonAnalysisQA.C:359
 runProtonAnalysisQA.C:360
 runProtonAnalysisQA.C:361
 runProtonAnalysisQA.C:362
 runProtonAnalysisQA.C:363
 runProtonAnalysisQA.C:364
 runProtonAnalysisQA.C:365
 runProtonAnalysisQA.C:366
 runProtonAnalysisQA.C:367
 runProtonAnalysisQA.C:368
 runProtonAnalysisQA.C:369
 runProtonAnalysisQA.C:370
 runProtonAnalysisQA.C:371
 runProtonAnalysisQA.C:372
 runProtonAnalysisQA.C:373
 runProtonAnalysisQA.C:374
 runProtonAnalysisQA.C:375
 runProtonAnalysisQA.C:376
 runProtonAnalysisQA.C:377
 runProtonAnalysisQA.C:378
 runProtonAnalysisQA.C:379
 runProtonAnalysisQA.C:380
 runProtonAnalysisQA.C:381
 runProtonAnalysisQA.C:382
 runProtonAnalysisQA.C:383
 runProtonAnalysisQA.C:384
 runProtonAnalysisQA.C:385
 runProtonAnalysisQA.C:386
 runProtonAnalysisQA.C:387
 runProtonAnalysisQA.C:388
 runProtonAnalysisQA.C:389
 runProtonAnalysisQA.C:390
 runProtonAnalysisQA.C:391
 runProtonAnalysisQA.C:392
 runProtonAnalysisQA.C:393
 runProtonAnalysisQA.C:394
 runProtonAnalysisQA.C:395
 runProtonAnalysisQA.C:396
 runProtonAnalysisQA.C:397
 runProtonAnalysisQA.C:398
 runProtonAnalysisQA.C:399
 runProtonAnalysisQA.C:400
 runProtonAnalysisQA.C:401
 runProtonAnalysisQA.C:402
 runProtonAnalysisQA.C:403
 runProtonAnalysisQA.C:404
 runProtonAnalysisQA.C:405
 runProtonAnalysisQA.C:406
 runProtonAnalysisQA.C:407
 runProtonAnalysisQA.C:408
 runProtonAnalysisQA.C:409
 runProtonAnalysisQA.C:410
 runProtonAnalysisQA.C:411
 runProtonAnalysisQA.C:412
 runProtonAnalysisQA.C:413
 runProtonAnalysisQA.C:414
 runProtonAnalysisQA.C:415
 runProtonAnalysisQA.C:416
 runProtonAnalysisQA.C:417
 runProtonAnalysisQA.C:418
 runProtonAnalysisQA.C:419
 runProtonAnalysisQA.C:420
 runProtonAnalysisQA.C:421
 runProtonAnalysisQA.C:422
 runProtonAnalysisQA.C:423
 runProtonAnalysisQA.C:424
 runProtonAnalysisQA.C:425
 runProtonAnalysisQA.C:426
 runProtonAnalysisQA.C:427
 runProtonAnalysisQA.C:428
 runProtonAnalysisQA.C:429
 runProtonAnalysisQA.C:430
 runProtonAnalysisQA.C:431
 runProtonAnalysisQA.C:432
 runProtonAnalysisQA.C:433
 runProtonAnalysisQA.C:434
 runProtonAnalysisQA.C:435
 runProtonAnalysisQA.C:436
 runProtonAnalysisQA.C:437
 runProtonAnalysisQA.C:438
 runProtonAnalysisQA.C:439
 runProtonAnalysisQA.C:440
 runProtonAnalysisQA.C:441
 runProtonAnalysisQA.C:442
 runProtonAnalysisQA.C:443
 runProtonAnalysisQA.C:444
 runProtonAnalysisQA.C:445
 runProtonAnalysisQA.C:446
 runProtonAnalysisQA.C:447
 runProtonAnalysisQA.C:448
 runProtonAnalysisQA.C:449
 runProtonAnalysisQA.C:450
 runProtonAnalysisQA.C:451
 runProtonAnalysisQA.C:452
 runProtonAnalysisQA.C:453
 runProtonAnalysisQA.C:454
 runProtonAnalysisQA.C:455
 runProtonAnalysisQA.C:456
 runProtonAnalysisQA.C:457
 runProtonAnalysisQA.C:458
 runProtonAnalysisQA.C:459
 runProtonAnalysisQA.C:460
 runProtonAnalysisQA.C:461
 runProtonAnalysisQA.C:462
 runProtonAnalysisQA.C:463
 runProtonAnalysisQA.C:464
 runProtonAnalysisQA.C:465
 runProtonAnalysisQA.C:466
 runProtonAnalysisQA.C:467
 runProtonAnalysisQA.C:468
 runProtonAnalysisQA.C:469
 runProtonAnalysisQA.C:470
 runProtonAnalysisQA.C:471
 runProtonAnalysisQA.C:472
 runProtonAnalysisQA.C:473
 runProtonAnalysisQA.C:474
 runProtonAnalysisQA.C:475
 runProtonAnalysisQA.C:476
 runProtonAnalysisQA.C:477
 runProtonAnalysisQA.C:478
 runProtonAnalysisQA.C:479
 runProtonAnalysisQA.C:480
 runProtonAnalysisQA.C:481
 runProtonAnalysisQA.C:482
 runProtonAnalysisQA.C:483
 runProtonAnalysisQA.C:484
 runProtonAnalysisQA.C:485
 runProtonAnalysisQA.C:486
 runProtonAnalysisQA.C:487
 runProtonAnalysisQA.C:488
 runProtonAnalysisQA.C:489
 runProtonAnalysisQA.C:490
 runProtonAnalysisQA.C:491
 runProtonAnalysisQA.C:492
 runProtonAnalysisQA.C:493
 runProtonAnalysisQA.C:494
 runProtonAnalysisQA.C:495
 runProtonAnalysisQA.C:496
 runProtonAnalysisQA.C:497
 runProtonAnalysisQA.C:498
 runProtonAnalysisQA.C:499
 runProtonAnalysisQA.C:500
 runProtonAnalysisQA.C:501
 runProtonAnalysisQA.C:502
 runProtonAnalysisQA.C:503
 runProtonAnalysisQA.C:504
 runProtonAnalysisQA.C:505
 runProtonAnalysisQA.C:506
 runProtonAnalysisQA.C:507
 runProtonAnalysisQA.C:508
 runProtonAnalysisQA.C:509
 runProtonAnalysisQA.C:510
 runProtonAnalysisQA.C:511
 runProtonAnalysisQA.C:512
 runProtonAnalysisQA.C:513
 runProtonAnalysisQA.C:514
 runProtonAnalysisQA.C:515
 runProtonAnalysisQA.C:516
 runProtonAnalysisQA.C:517
 runProtonAnalysisQA.C:518
 runProtonAnalysisQA.C:519
 runProtonAnalysisQA.C:520
 runProtonAnalysisQA.C:521
 runProtonAnalysisQA.C:522
 runProtonAnalysisQA.C:523
 runProtonAnalysisQA.C:524
 runProtonAnalysisQA.C:525
 runProtonAnalysisQA.C:526
 runProtonAnalysisQA.C:527
 runProtonAnalysisQA.C:528
 runProtonAnalysisQA.C:529
 runProtonAnalysisQA.C:530
 runProtonAnalysisQA.C:531
 runProtonAnalysisQA.C:532
 runProtonAnalysisQA.C:533
 runProtonAnalysisQA.C:534
 runProtonAnalysisQA.C:535
 runProtonAnalysisQA.C:536
 runProtonAnalysisQA.C:537
 runProtonAnalysisQA.C:538
 runProtonAnalysisQA.C:539
 runProtonAnalysisQA.C:540
 runProtonAnalysisQA.C:541
 runProtonAnalysisQA.C:542
 runProtonAnalysisQA.C:543
 runProtonAnalysisQA.C:544
 runProtonAnalysisQA.C:545
 runProtonAnalysisQA.C:546
 runProtonAnalysisQA.C:547
 runProtonAnalysisQA.C:548
 runProtonAnalysisQA.C:549
 runProtonAnalysisQA.C:550
 runProtonAnalysisQA.C:551
 runProtonAnalysisQA.C:552
 runProtonAnalysisQA.C:553
 runProtonAnalysisQA.C:554
 runProtonAnalysisQA.C:555
 runProtonAnalysisQA.C:556
 runProtonAnalysisQA.C:557
 runProtonAnalysisQA.C:558
 runProtonAnalysisQA.C:559
 runProtonAnalysisQA.C:560
 runProtonAnalysisQA.C:561
 runProtonAnalysisQA.C:562
 runProtonAnalysisQA.C:563
 runProtonAnalysisQA.C:564
 runProtonAnalysisQA.C:565
 runProtonAnalysisQA.C:566
 runProtonAnalysisQA.C:567
 runProtonAnalysisQA.C:568
 runProtonAnalysisQA.C:569
 runProtonAnalysisQA.C:570
 runProtonAnalysisQA.C:571
 runProtonAnalysisQA.C:572
 runProtonAnalysisQA.C:573
 runProtonAnalysisQA.C:574
 runProtonAnalysisQA.C:575
 runProtonAnalysisQA.C:576
 runProtonAnalysisQA.C:577
 runProtonAnalysisQA.C:578
 runProtonAnalysisQA.C:579
 runProtonAnalysisQA.C:580
 runProtonAnalysisQA.C:581
 runProtonAnalysisQA.C:582
 runProtonAnalysisQA.C:583
 runProtonAnalysisQA.C:584
 runProtonAnalysisQA.C:585
 runProtonAnalysisQA.C:586
 runProtonAnalysisQA.C:587
 runProtonAnalysisQA.C:588
 runProtonAnalysisQA.C:589
 runProtonAnalysisQA.C:590
 runProtonAnalysisQA.C:591
 runProtonAnalysisQA.C:592
 runProtonAnalysisQA.C:593
 runProtonAnalysisQA.C:594
 runProtonAnalysisQA.C:595
 runProtonAnalysisQA.C:596
 runProtonAnalysisQA.C:597
 runProtonAnalysisQA.C:598
 runProtonAnalysisQA.C:599
 runProtonAnalysisQA.C:600
 runProtonAnalysisQA.C:601
 runProtonAnalysisQA.C:602
 runProtonAnalysisQA.C:603
 runProtonAnalysisQA.C:604
 runProtonAnalysisQA.C:605
 runProtonAnalysisQA.C:606
 runProtonAnalysisQA.C:607
 runProtonAnalysisQA.C:608
 runProtonAnalysisQA.C:609
 runProtonAnalysisQA.C:610
 runProtonAnalysisQA.C:611
 runProtonAnalysisQA.C:612
 runProtonAnalysisQA.C:613
 runProtonAnalysisQA.C:614
 runProtonAnalysisQA.C:615
 runProtonAnalysisQA.C:616
 runProtonAnalysisQA.C:617
 runProtonAnalysisQA.C:618
 runProtonAnalysisQA.C:619
 runProtonAnalysisQA.C:620
 runProtonAnalysisQA.C:621
 runProtonAnalysisQA.C:622
 runProtonAnalysisQA.C:623
 runProtonAnalysisQA.C:624
 runProtonAnalysisQA.C:625
 runProtonAnalysisQA.C:626
 runProtonAnalysisQA.C:627
 runProtonAnalysisQA.C:628
 runProtonAnalysisQA.C:629
 runProtonAnalysisQA.C:630
 runProtonAnalysisQA.C:631
 runProtonAnalysisQA.C:632
 runProtonAnalysisQA.C:633
 runProtonAnalysisQA.C:634
 runProtonAnalysisQA.C:635