ROOT logo
/************************************************************************* 
* Copyright(c) 1998-2048, ALICE Experiment at CERN, All rights reserved. * 
*                                                                        * 
* Author: The ALICE Off-line Project.                                    * 
* Contributors are mentioned in the code where appropriate.              * 
*                                                                        * 
* Permission to use, copy, modify and distribute this software and its   * 
* documentation strictly for non-commercial purposes is hereby granted   * 
* without fee, provided that the above copyright notice appears in all   * 
* copies and that both the copyright notice and this permission notice   * 
* appear in the supporting documentation. The authors make no claims     * 
* about the suitability of this software for any purpose. It is          * 
* provided "as is" without express or implied warranty.                  * 
**************************************************************************/

// Author: Dariusz Miskowiec <mailto:d.miskowiec@gsi.de> 2007

//=============================================================================
// parent class of all analyzers
// keeps the obj array of histograms filled by the daughter
// takes care of storing them on file at the end
//=============================================================================

#include <TROOT.h>
#include <TFile.h>
#include <TCollection.h>
#include <TClass.h>
#include <TH1.h>
#include "AliUnicorHN.h"
#include "AliUnicorAnal.h"

ClassImp(AliUnicorAnal)
  
TDatabasePDG AliUnicorAnal::fgPDG;

//=============================================================================
AliUnicorAnal::AliUnicorAnal(const char *nam) : TNamed(nam,nam), fHistos() {

  // constructor

  fHistos.SetOwner(1);
  TDirectory *dir = gROOT->mkdir(GetName());
  dir->cd();
  printf("%s object named %s created\n",ClassName(),GetName());
}
//=============================================================================
Long64_t AliUnicorAnal::Merge(const TCollection * const list) {

  // sumup fHistos objects

  for (int i=0; i<fHistos.GetEntries(); i++) {
    if (fHistos.At(i)->IsA()->InheritsFrom("TH1")) {
      TH1 *hi = (TH1*) fHistos.At(i);
      TIter next(list);
      while (AliUnicorAnal *analtoadd = (AliUnicorAnal*) next()) {
	TH1 *histotoadd = (TH1*) analtoadd->GetHist(i);
	hi->Add(histotoadd);
      }
    }
  }
  return 0;
}
//=============================================================================
void AliUnicorAnal::Save(const char *outfil, const char *mode) {

  // store histograms on file in a directory named after the object
  // mode should be "update" (default) or "new"

  printf("%s %s: saving histograms on %s (%s)\n",ClassName(),GetName(),outfil,mode);  
  TFile * f = TFile::Open(outfil, mode);
  TDirectory *dest = f->mkdir(GetName());
  dest->cd();
  for (int i=0; i<fHistos.GetEntries(); i++) {
    TObject *obj = fHistos.At(i);
    if (obj->IsA()->InheritsFrom("AliUnicorHN")) ((AliUnicorHN*) obj)->Save();
    else obj->Write();
  }
  gROOT->cd();
  f->Close();
}
//=============================================================================
 AliUnicorAnal.cxx:1
 AliUnicorAnal.cxx:2
 AliUnicorAnal.cxx:3
 AliUnicorAnal.cxx:4
 AliUnicorAnal.cxx:5
 AliUnicorAnal.cxx:6
 AliUnicorAnal.cxx:7
 AliUnicorAnal.cxx:8
 AliUnicorAnal.cxx:9
 AliUnicorAnal.cxx:10
 AliUnicorAnal.cxx:11
 AliUnicorAnal.cxx:12
 AliUnicorAnal.cxx:13
 AliUnicorAnal.cxx:14
 AliUnicorAnal.cxx:15
 AliUnicorAnal.cxx:16
 AliUnicorAnal.cxx:17
 AliUnicorAnal.cxx:18
 AliUnicorAnal.cxx:19
 AliUnicorAnal.cxx:20
 AliUnicorAnal.cxx:21
 AliUnicorAnal.cxx:22
 AliUnicorAnal.cxx:23
 AliUnicorAnal.cxx:24
 AliUnicorAnal.cxx:25
 AliUnicorAnal.cxx:26
 AliUnicorAnal.cxx:27
 AliUnicorAnal.cxx:28
 AliUnicorAnal.cxx:29
 AliUnicorAnal.cxx:30
 AliUnicorAnal.cxx:31
 AliUnicorAnal.cxx:32
 AliUnicorAnal.cxx:33
 AliUnicorAnal.cxx:34
 AliUnicorAnal.cxx:35
 AliUnicorAnal.cxx:36
 AliUnicorAnal.cxx:37
 AliUnicorAnal.cxx:38
 AliUnicorAnal.cxx:39
 AliUnicorAnal.cxx:40
 AliUnicorAnal.cxx:41
 AliUnicorAnal.cxx:42
 AliUnicorAnal.cxx:43
 AliUnicorAnal.cxx:44
 AliUnicorAnal.cxx:45
 AliUnicorAnal.cxx:46
 AliUnicorAnal.cxx:47
 AliUnicorAnal.cxx:48
 AliUnicorAnal.cxx:49
 AliUnicorAnal.cxx:50
 AliUnicorAnal.cxx:51
 AliUnicorAnal.cxx:52
 AliUnicorAnal.cxx:53
 AliUnicorAnal.cxx:54
 AliUnicorAnal.cxx:55
 AliUnicorAnal.cxx:56
 AliUnicorAnal.cxx:57
 AliUnicorAnal.cxx:58
 AliUnicorAnal.cxx:59
 AliUnicorAnal.cxx:60
 AliUnicorAnal.cxx:61
 AliUnicorAnal.cxx:62
 AliUnicorAnal.cxx:63
 AliUnicorAnal.cxx:64
 AliUnicorAnal.cxx:65
 AliUnicorAnal.cxx:66
 AliUnicorAnal.cxx:67
 AliUnicorAnal.cxx:68
 AliUnicorAnal.cxx:69
 AliUnicorAnal.cxx:70
 AliUnicorAnal.cxx:71
 AliUnicorAnal.cxx:72
 AliUnicorAnal.cxx:73
 AliUnicorAnal.cxx:74
 AliUnicorAnal.cxx:75
 AliUnicorAnal.cxx:76
 AliUnicorAnal.cxx:77
 AliUnicorAnal.cxx:78
 AliUnicorAnal.cxx:79
 AliUnicorAnal.cxx:80
 AliUnicorAnal.cxx:81