]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/runProtonAnalysis.C
Replace printf by AliInfo
[u/mrichter/AliRoot.git] / PWG2 / runProtonAnalysis.C
index 361b1da2b57ba4ea5f5b1f770012edd14fa3f63f..d0fea9d7ed14387201ed0aa98c128843490f1746 100644 (file)
@@ -5,8 +5,10 @@ void runProtonAnalysis() {
   //runLocal();
   //runInteractive();
   //runBatch();
-  runProof();
-
+  
+  runProof("ESD",200000,"/PWG0/COMMON/run30000X_10TeV_0.5T"); //use data sets
+  //runProof("ESD",200); //use ascii files
+  
   timer.Stop();
   timer.Print();
 }
@@ -34,13 +36,19 @@ void runLocal() {
   //____________________________________________________//
   setupPar("AOD");
   gSystem->Load("libAOD.so");
-                                                                
+  
   //_________________________________________________________//
   //_____________Setting up ANALYSIS.par_____________________//
   //_________________________________________________________//
   setupPar("ANALYSIS");
   gSystem->Load("libANALYSIS.so");
 
+  //_________________________________________________________//
+  //___________Setting up ANALYSISalice.par__________________//
+  //_________________________________________________________//
+  setupPar("ANALYSISalice");
+  gSystem->Load("libANALYSISalice.so");
+
   //____________________________________________________________//
   //_____________Setting up PWG2spectra.par_____________________//
   //____________________________________________________________//
@@ -50,8 +58,8 @@ void runLocal() {
   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
 
   //____________________________________________//
-  AliTagAnalysis *TagAna = new AliTagAnalysis("ESD"); 
-  TagAna->ChainLocalTags("/home/pchrist/ALICE/Alien/Tutorial/November2007/Tags");
+  AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD"); 
+  tagAnalysis->ChainLocalTags("/home/pchrist/ALICE/Alien/Tutorial/November2007/Tags");
 
   AliRunTagCuts *runCuts = new AliRunTagCuts();
   AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
@@ -59,7 +67,7 @@ void runLocal() {
   AliEventTagCuts *evCuts = new AliEventTagCuts();
   
   TChain* chain = 0x0;
-  chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
+  chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
   chain->SetBranchStatus("*Calo*",0);
 
   //____________________________________________//
@@ -69,16 +77,30 @@ void runLocal() {
   mgr->SetInputEventHandler(esdH);  
   //____________________________________________//
   // 1st Proton task
-  AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
-  mgr->AddTask(task1);
+  AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
+  /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
+  TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
+  TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
+  TF1 *fitPions = (TF1 *)f->Get("fitPions");
+  TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
+  TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
+  taskProtons->SetPriorProbabilityFunctions(fitElectrons,
+                                           fitMuons,
+                                           fitPions,
+                                           fitKaons,
+                                           fitProtons);*/
+  mgr->AddTask(taskProtons);
+
+  // Create containers for input/output                                                                              
+  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
+                                                           TChain::Class(),AliAnalysisManager::kInputContainer);
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
+                                                            TList::Class(),AliAnalysisManager::kOutputCont
+                                                            "Protons.ESD.root");
 
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
-  
   //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
+  mgr->ConnectInput(taskProtons,0,cinput1);
+  mgr->ConnectOutput(taskProtons,0,coutput1);
   if (!mgr->InitAnalysis()) return;
   mgr->PrintStatus();
   mgr->StartAnalysis("local",chain);
@@ -121,6 +143,12 @@ void runInteractive() {
   setupPar("ANALYSIS");
   gSystem->Load("libANALYSIS.so");
 
+  //_________________________________________________________//
+  //___________Setting up ANALYSISalice.par__________________//
+  //_________________________________________________________//
+  setupPar("ANALYSISalice");
+  gSystem->Load("libANALYSISalice.so");
+
   //____________________________________________________________//
   //_____________Setting up PWG2spectra.par_____________________//
   //____________________________________________________________//
@@ -130,7 +158,7 @@ void runInteractive() {
   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
   
   //____________________________________________//
-  AliTagAnalysis *TagAna = new AliTagAnalysis("ESD");
+  AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
  
   AliRunTagCuts *runCuts = new AliRunTagCuts();
   AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
@@ -140,9 +168,9 @@ void runInteractive() {
   //grid tags
   TAlienCollection* coll = TAlienCollection::Open("tag.xml");
   TGridResult* TagResult = coll->GetGridResult("",0,0);
-  TagAna->ChainGridTags(TagResult);
+  tagAnalysis->ChainGridTags(TagResult);
   TChain* chain = 0x0;
-  chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
+  chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
   chain->SetBranchStatus("*Calo*",0);
 
   //____________________________________________//
@@ -152,16 +180,30 @@ void runInteractive() {
   mgr->SetInputEventHandler(esdH);  
   //____________________________________________//
   // 1st Proton task
-  AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
-  mgr->AddTask(task1);
-
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
+  AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
+  /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
+  TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
+  TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
+  TF1 *fitPions = (TF1 *)f->Get("fitPions");
+  TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
+  TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
+  taskProtons->SetPriorProbabilityFunctions(fitElectrons,
+                                           fitMuons,
+                                           fitPions,
+                                           fitKaons,
+                                           fitProtons);*/
+  mgr->AddTask(taskProtons);
+
+  // Create containers for input/output                                                                               
+  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
+                                                           TChain::Class(),AliAnalysisManager::kInputContainer);
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
+                                                            TList::Class(),AliAnalysisManager::kOutputCont
+                                                            "Protons.ESD.root");
   
   //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
+  mgr->ConnectInput(taskProtons,0,cinput1);
+  mgr->ConnectOutput(taskProtons,0,coutput1);
   if (!mgr->InitAnalysis()) return;
   mgr->PrintStatus();
   mgr->StartAnalysis("local",chain);
@@ -204,6 +246,12 @@ void runBatch() {
   setupPar("ANALYSIS");
   gSystem->Load("libANALYSIS.so");
 
+  //_________________________________________________________//
+  //___________Setting up ANALYSISalice.par__________________//
+  //_________________________________________________________//
+  setupPar("ANALYSISalice");
+  gSystem->Load("libANALYSISalice.so");
+
   //____________________________________________________________//
   //_____________Setting up PWG2spectra.par_____________________//
   //____________________________________________________________//
@@ -216,9 +264,9 @@ void runBatch() {
 
   //____________________________________________//
   //Usage of event tags
-  AliTagAnalysis *analysis = new AliTagAnalysis();
+  AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
   TChain *chain = 0x0;
-  chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
+  chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
   chain->SetBranchStatus("*Calo*",0);
 
   //____________________________________________//
@@ -228,16 +276,30 @@ void runBatch() {
   mgr->SetInputEventHandler(esdH);  
   //____________________________________________//
   // 1st Proton task
-  AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
-  mgr->AddTask(task1);
+  AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
+  /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
+  TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
+  TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
+  TF1 *fitPions = (TF1 *)f->Get("fitPions");
+  TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
+  TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
+  taskProtons->SetPriorProbabilityFunctions(fitElectrons,
+                                           fitMuons,
+                                           fitPions,
+                                           fitKaons,
+                                           fitProtons);*/
+  mgr->AddTask(taskProtons);
+
+  // Create containers for input/output                                                                               
+  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
+                                                           TChain::Class(),AliAnalysisManager::kInputContainer);
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
+                                                            TList::Class(),AliAnalysisManager::kOutputCont
+                                                            "Protons.ESD.root");
 
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
-  
   //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
+  mgr->ConnectInput(taskProtons,0,cinput1);
+  mgr->ConnectOutput(taskProtons,0,coutput1);
   if (!mgr->InitAnalysis()) return;
   mgr->PrintStatus();
   mgr->StartAnalysis("grid",chain);
@@ -247,12 +309,17 @@ void runBatch() {
 }
 
 //_________________________________________________//
-void runProof() {
+void runProof(const char* mode = "ESD", Int_t stats = 0, const char* dataset = 0x0) {
   TStopwatch timer;
   timer.Start();
+  
+  TString smode = mode;
+  TString outputFilename = "Protons."; outputFilename += mode;
+  outputFilename += ".root";
+
   printf("****** Connect to PROOF *******\n");
   TProof::Open("proof://lxb6046.cern.ch"); 
-  gProof->SetParallel(1);
+  gProof->SetParallel();
 
   // Enable the Analysis Package
   gProof->UploadPackage("STEERBase.par");
@@ -263,38 +330,64 @@ void runProof() {
   gProof->EnablePackage("AOD");
   gProof->UploadPackage("ANALYSIS.par");
   gProof->EnablePackage("ANALYSIS");
+  gProof->UploadPackage("ANALYSISalice.par");
+  gProof->EnablePackage("ANALYSISalice");
   gProof->UploadPackage("PWG2spectra.par");
   gProof->EnablePackage("PWG2spectra");
   
-  // 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",10);
-  chain->SetBranchStatus("*Calo*",0);
-
   gProof->Load("AliAnalysisTaskProtons.cxx++");
 
-    //____________________________________________//
+  //____________________________________________//
   // Make the analysis manager
   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
   AliVEventHandler* esdH = new AliESDInputHandler;
-  mgr->SetInputEventHandler(esdH);  
+  mgr->SetInputEventHandler(esdH);
+  if(smode == "MC") {
+    AliMCEventHandler *mc = new AliMCEventHandler();
+    mgr->SetMCtruthEventHandler(mc);
+  }
   //____________________________________________//
   // 1st Proton task
-  AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
-  mgr->AddTask(task1);
+  AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
+  taskProtons->SetType(mode);
+  /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
+  TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
+  TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
+  TF1 *fitPions = (TF1 *)f->Get("fitPions");
+  TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
+  TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
+  taskProtons->SetPriorProbabilityFunctions(fitElectrons,
+                                           fitMuons,
+                                           fitPions,
+                                           fitKaons,
+                                           fitProtons);*/
+  mgr->AddTask(taskProtons);
 
   // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
-  
+  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
+                                                          TChain::Class(),AliAnalysisManager::kInputContainer);
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1", 
+                                                           TList::Class(),AliAnalysisManager::kOutputContainer,
+                                                           outputFilename.Data());
+
   //____________________________________________//
-  mgr->ConnectInput(task1,0,cinput1);
-  mgr->ConnectOutput(task1,0,coutput1);
+  mgr->ConnectInput(taskProtons,0,cinput1);
+  mgr->ConnectOutput(taskProtons,0,coutput1);
   if (!mgr->InitAnalysis()) return;
   mgr->PrintStatus();
-  mgr->StartAnalysis("proof",chain);
+
+  if(dataset)
+    mgr->StartAnalysis("proof",dataset,stats);
+  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);
+  }
 
   timer.Stop();
   timer.Print();