ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

// $Id$

// Macro to generate histograms from digits
// By E. Sicking, CERN

TTree* GetTreeD(Int_t ievent, const TString& detName, Int_t nfiles) 
{
  for (Int_t file =0; file<nfiles; file++) {
    TString filename(detName);
    if ( file == 0 ) {
      filename += ".Digits.root";
    }  
    else { 
      filename += TString(Form(".Digits%d.root",file));
    }

    TFile* file0 = TFile::Open(filename.Data());

    TTree* treeD = (TTree*)file0->Get(Form("Event%d/TreeD",ievent));
    if (treeD)  return treeD;
  }
  return 0;
}  
    
void digitsTOF(Int_t nevents, Int_t nfiles){


  TH1F *hadc     = new TH1F("hadc","ADC [bin]",200, -100., 10000.);
  TH1F *hadclog     = new TH1F("hadclog","ADC [bin]",200, -1., 7.);
  
    TTree *treeD=0x0;
  
    TClonesArray *digits =0x0;
  
    for (Int_t event=0; event<nevents; event++) {
      cout << "Event " << event << endl;

      treeD = GetTreeD(event, "TOF", nfiles);
      if ( ! treeD ) {
        cerr << "Event directory not found in " << nfiles <<  " files" << endl;
        exit(1);
      }      

      digits = NULL;
      treeD->SetBranchAddress("TOF", &digits);

      for(Int_t iev=0; iev<treeD->GetEntries(); iev++){
	treeD->GetEntry(iev);

	for (Int_t j = 0; j < digits->GetEntries(); j++) {
	  AliTOFdigit* dig = dynamic_cast<AliTOFdigit*> (digits->At(j));
	  hadc->Fill(dig->GetAdc());
	  if(dig->GetAdc()>0)hadclog->Fill(TMath::Log10(dig->GetAdc()));
	}

      }
    }

   TFile fc("digits.TOF.root","RECREATE");
   fc.cd();
   
   hadc->Write();
   hadclog->Write();

   fc.Close();

}







 digitsTOF.C:1
 digitsTOF.C:2
 digitsTOF.C:3
 digitsTOF.C:4
 digitsTOF.C:5
 digitsTOF.C:6
 digitsTOF.C:7
 digitsTOF.C:8
 digitsTOF.C:9
 digitsTOF.C:10
 digitsTOF.C:11
 digitsTOF.C:12
 digitsTOF.C:13
 digitsTOF.C:14
 digitsTOF.C:15
 digitsTOF.C:16
 digitsTOF.C:17
 digitsTOF.C:18
 digitsTOF.C:19
 digitsTOF.C:20
 digitsTOF.C:21
 digitsTOF.C:22
 digitsTOF.C:23
 digitsTOF.C:24
 digitsTOF.C:25
 digitsTOF.C:26
 digitsTOF.C:27
 digitsTOF.C:28
 digitsTOF.C:29
 digitsTOF.C:30
 digitsTOF.C:31
 digitsTOF.C:32
 digitsTOF.C:33
 digitsTOF.C:34
 digitsTOF.C:35
 digitsTOF.C:36
 digitsTOF.C:37
 digitsTOF.C:38
 digitsTOF.C:39
 digitsTOF.C:40
 digitsTOF.C:41
 digitsTOF.C:42
 digitsTOF.C:43
 digitsTOF.C:44
 digitsTOF.C:45
 digitsTOF.C:46
 digitsTOF.C:47
 digitsTOF.C:48
 digitsTOF.C:49
 digitsTOF.C:50
 digitsTOF.C:51
 digitsTOF.C:52
 digitsTOF.C:53
 digitsTOF.C:54
 digitsTOF.C:55
 digitsTOF.C:56
 digitsTOF.C:57
 digitsTOF.C:58
 digitsTOF.C:59
 digitsTOF.C:60
 digitsTOF.C:61
 digitsTOF.C:62
 digitsTOF.C:63
 digitsTOF.C:64
 digitsTOF.C:65
 digitsTOF.C:66
 digitsTOF.C:67
 digitsTOF.C:68
 digitsTOF.C:69
 digitsTOF.C:70
 digitsTOF.C:71
 digitsTOF.C:72
 digitsTOF.C:73
 digitsTOF.C:74
 digitsTOF.C:75
 digitsTOF.C:76
 digitsTOF.C:77
 digitsTOF.C:78
 digitsTOF.C:79
 digitsTOF.C:80
 digitsTOF.C:81
 digitsTOF.C:82
 digitsTOF.C:83
 digitsTOF.C:84
 digitsTOF.C:85
 digitsTOF.C:86
 digitsTOF.C:87
 digitsTOF.C:88
 digitsTOF.C:89
 digitsTOF.C:90