]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Merge function - in case the AnalysisTask called on batch farm
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 10 Nov 2008 10:29:38 +0000 (10:29 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 10 Nov 2008 10:29:38 +0000 (10:29 +0000)
(Marian)

TPC/macros/CalibFileMerger.C [new file with mode: 0644]

diff --git a/TPC/macros/CalibFileMerger.C b/TPC/macros/CalibFileMerger.C
new file mode 100644 (file)
index 0000000..768337c
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+  Macro for merging of the calibration classes:
+  marain.ivanov@cern.ch
+  //
+  //
+  Example usage:
+  1. Make a list of the calibration files
+  2. Load libraries
+  3. Merge - the output is stored in the current directory
+  //
+  gSystem->Load("libANALYSIS");
+  gSystem->Load("libTPCcalib");
+  .L $ALICE_ROOT/TPC/macros/CalibFileMerger.C
+  CalibFileMerger();
+*/
+
+void CalibFileMerger(const char* filename = "mergelist.txt") {
+
+
+  TObjArray * mergeArray= 0;
+
+  // Open the input stream
+  ifstream in;
+  in.open(filename);
+  
+  // Read the input list of files 
+  TString objfile;
+  Int_t counter=0;
+  while(in.good()) {
+    in >> objfile;
+    if (!objfile.Contains("root")) continue; // protection    
+    TFile currentFile(objfile.Data());
+    TObjArray * carray =  (TObjArray*)currentFile.Get("TPCCalib");
+    if (!carray) continue;
+    if (!mergeArray) { mergeArray = carray; continue;}
+    printf("Counter\t%d\tMerging file %s\n",counter,objfile.Data());
+    for (Int_t icalib=0; icalib<mergeArray->GetEntries(); icalib++){
+      AliTPCcalibBase *calib = ( AliTPCcalibBase *)mergeArray->At(icalib);
+      //disable calib align
+      //if (calib->InheritsFrom("AliTPCcalibAlign")) continue;
+      if (calib) calib->Merge(carray);
+    }
+    AliSysInfo::AddStamp(objfile->Data(),counter,counter,counter);
+    //currentFile.Close();
+    carray->SetOwner(kTRUE);
+    carray->Delete();
+    delete carray;
+    counter++;
+    //if (counter>10) break;
+  }
+
+  in.close();
+  TFile * output = new TFile("CalibObjects.root", "RECREATE");
+  mergeArray->Write("TPCCalib",TObject::kSingleKey);
+  output->Close();
+
+  //
+
+}
+
+/*
+//
+TFile * output = new TFile("CalibObjects0.root", "RECREATE");
+mergeArray->At(0)->Write();
+output->Close();
+
+TFile * output = new TFile("CalibObjects1.root", "RECREATE");
+mergeArray->At(1)->Write();
+output->Close();
+
+TFile * output = new TFile("CalibObjects2.root", "RECREATE");
+mergeArray->At(2)->Write();
+output->Close();
+
+TFile * output = new TFile("CalibObjects3.root", "RECREATE");
+mergeArray->At(3)->Write();
+output->Close();
+
+TFile * output = new TFile("CalibObjects4.root", "RECREATE");
+mergeArray->At(4)->Write();
+output->Close();
+
+TFile * output = new TFile("CalibObjects5.root", "RECREATE");
+mergeArray->At(5)->Write();
+output->Close();
+
+TFile * output = new TFile("CalibObjects6.root", "RECREATE");
+mergeArray->At(6)->Write();
+output->Close();
+*/
+
+