]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding the very preliminary version of the BF visualization (result+QA)
authorpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 13 Oct 2010 21:13:31 +0000 (21:13 +0000)
committerpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 13 Oct 2010 21:13:31 +0000 (21:13 +0000)
PWG2/EBYE/macros/readBalanceFunction.C [new file with mode: 0644]

diff --git a/PWG2/EBYE/macros/readBalanceFunction.C b/PWG2/EBYE/macros/readBalanceFunction.C
new file mode 100644 (file)
index 0000000..e127f6d
--- /dev/null
@@ -0,0 +1,85 @@
+void readBalanceFunctionF() {
+  //Macro to read the output of the BF analysis:
+  //i) Merges the output of each sub-job
+  //ii) Prints and draws the final output
+  //iii) Printd the details of the BF analysis (i.e. type, bins,...)
+  //iv) Reads the QA part of the analysis
+  //iv) 
+  //Author: Panos.Christakoglou@cern.ch
+
+  //Merge the output
+  mergeOutput("/alice/cern.ch/user/p/pchrist/Balance/pp/7TeV/LHC10b/output/");
+}
+
+//___________________________________________________________//
+void mergeOutput(const char* outputDir) {
+  //Function to merge the output of the sub-jobs
+ //Loading the needed libraries
+  gSystem->Load("libProofPlayer.so");
+  gSystem->Load("libANALYSIS.so");
+  gSystem->Load("libANALYSISalice.so");
+  gSystem->Load("libPWG2ebye.so");
+
+  //Create a BF object
+  AliBalance *bf = new AliBalance();
+
+  //connect to AliEn's API services
+  TGrid::Connect("alien://"); 
+
+  //Getting the output dir from the env. variable 
+  //(JDL field: JDLVariables={"OutputDir"};)
+  TGridResult* result = gGrid->Query(outputDir,"*/root_archive.zip","","-l 1000");
+  
+  Int_t nEntries = result->GetEntries();
+
+  TString alienUrl;
+  TDirectoryFile *dirSubJob;
+
+  TString gCutName[4] = {"Total","Offline trigger",
+                         "Vertex","Analyzed"};
+  TH1F *fHistEventStats = new TH1F("fHistEventStats",
+                                  "Event statistics;;N_{events}",
+                                  4,0.5,4.5);
+  for(Int_t i = 1; i <= 4; i++)
+    fHistEventStats->GetXaxis()->SetBinLabel(i,gCutName[i-1].Data());
+
+  AliESDtrackCuts *bfTrackCuts = new AliESDtrackCuts("bfTrackCuts");
+  for(Int_t i = 0; i < nEntries; i++) {
+    alienUrl = result->GetKey(i,"turl");
+    alienUrl += "#AnalysisResults.root";
+    Printf("Opening file: %s",alienUrl.Data());
+    TFile *file = TFile::Open(alienUrl.Data());
+    dirSubJob = dynamic_cast<TDirectoryFile *>(file->Get("PWG2EbyE.outputBalanceFunctionAnalysis.root"));
+
+    //merge BF
+    AliBalance *bfSubJob = dynamic_cast<AliBalance *>(dirSubJob->Get("AliBalance"));
+    bf->Merge(bfSubJob);
+    //delete bfSubJob;
+
+    //merge event stats
+    TList *listSubJob = dynamic_cast<TList *>(dirSubJob->Get("listQA"));
+    fHistEventStats->Add(dynamic_cast<TH1F *>(listSubJob->At(0)));
+
+    bfTrackCuts = dynamic_cast<AliESDtrackCuts *>(listSubJob->At(1));
+    delete listSubJob;
+  }
+
+  //Create the output file
+  TString outputFile = "AnalysisResults.Merged.root";
+  TFile *foutput = TFile::Open(outputFile.Data(),"recreate");
+  TDirectoryFile *dirOutput = new TDirectoryFile();
+  dirOutput->SetName("PWG2EbyE.outputBalanceFunctionAnalysis.root");
+  //dirOutput->cd();
+  dirOutput->Add(bf);
+  TList *list = new TList();
+  list->SetName("listQA");
+  list->Add(fHistEventStats);
+  list->Add(bfTrackCuts);
+  dirOutput->Add(list);
+  dirOutput->Write();
+  bf->Write();
+  list->Write();
+  foutput->Close();
+
+    //cout<<alienUrl.Data()<<endl;
+}