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

TDirectoryFile* GetDirectory(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());

    TDirectoryFile* dir = (TDirectoryFile*)file0->Get(Form("Event%d",ievent));
    if (dir)  return dir;
  }
  return 0;
}  
    
void digitsSDD(Int_t nevents, Int_t nfiles)
{

  TH1F * hadc = new TH1F ("hadc", "hadc",200, 0, 1300);   
  TH1F * hadclog = new TH1F ("hadclog", "hadclog",200, 1, 3.5);   

  TDirectoryFile *tdf[100];     
  TDirectoryFile *tdfKine[100] ;

  TTree *ttree[100];     
  TTree *ttreeKine[100]; 

  TClonesArray *arr= NULL; // 
 
  //Run loader------------
  TString name;
  name = "galice.root";
  AliRunLoader* rlSig = AliRunLoader::Open(name.Data());

  // gAlice
  rlSig->LoadgAlice();
  gAlice = rlSig->GetAliRun();

  // Now load kinematics and event header
  rlSig->LoadKinematics();
  rlSig->LoadHeader();
  cout <<  rlSig->GetNumberOfEvents()<< endl;
  //----------------------

  
  //loop over events in the files
  for(Int_t event=0; event<nevents; event++){
    printf("###event= %d\n", event);

    tdf[event] = GetDirectory(event, "ITS", nfiles);
    if ( ! tdf[event] ) {
      cerr << "Event directory not found in " << nfiles <<  " files" << endl;
      exit(1);
    }      
    
    ttree[event] = (TTree*)tdf[event]->Get("TreeD");
          
    arr = NULL;
    ttree[event]->SetBranchAddress("ITSDigitsSDD", &arr);

    rlSig->GetEvent(event);
    AliStack * stack = rlSig->Stack(); 
   


    // loop over tracks
    Int_t NumberPrim=0;
    for(Int_t iev=0; iev<ttree[event]->GetEntries(); iev++){
      ttree[event]->GetEntry(iev);
  
	
      for (Int_t j = 0; j < arr->GetEntries(); j++) {
	AliITSdigit* digit = dynamic_cast<AliITSdigit*> (arr->At(j));
	if (digit){
	  Int_t label = digit->GetHits();
	 
	  hadc->Fill(digit->GetSignal());
	  hadclog->Fill(TMath::Log10(digit->GetSignal()));

	}
      }
    }

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

  fc.Close();

}
 digitsSDD.C:1
 digitsSDD.C:2
 digitsSDD.C:3
 digitsSDD.C:4
 digitsSDD.C:5
 digitsSDD.C:6
 digitsSDD.C:7
 digitsSDD.C:8
 digitsSDD.C:9
 digitsSDD.C:10
 digitsSDD.C:11
 digitsSDD.C:12
 digitsSDD.C:13
 digitsSDD.C:14
 digitsSDD.C:15
 digitsSDD.C:16
 digitsSDD.C:17
 digitsSDD.C:18
 digitsSDD.C:19
 digitsSDD.C:20
 digitsSDD.C:21
 digitsSDD.C:22
 digitsSDD.C:23
 digitsSDD.C:24
 digitsSDD.C:25
 digitsSDD.C:26
 digitsSDD.C:27
 digitsSDD.C:28
 digitsSDD.C:29
 digitsSDD.C:30
 digitsSDD.C:31
 digitsSDD.C:32
 digitsSDD.C:33
 digitsSDD.C:34
 digitsSDD.C:35
 digitsSDD.C:36
 digitsSDD.C:37
 digitsSDD.C:38
 digitsSDD.C:39
 digitsSDD.C:40
 digitsSDD.C:41
 digitsSDD.C:42
 digitsSDD.C:43
 digitsSDD.C:44
 digitsSDD.C:45
 digitsSDD.C:46
 digitsSDD.C:47
 digitsSDD.C:48
 digitsSDD.C:49
 digitsSDD.C:50
 digitsSDD.C:51
 digitsSDD.C:52
 digitsSDD.C:53
 digitsSDD.C:54
 digitsSDD.C:55
 digitsSDD.C:56
 digitsSDD.C:57
 digitsSDD.C:58
 digitsSDD.C:59
 digitsSDD.C:60
 digitsSDD.C:61
 digitsSDD.C:62
 digitsSDD.C:63
 digitsSDD.C:64
 digitsSDD.C:65
 digitsSDD.C:66
 digitsSDD.C:67
 digitsSDD.C:68
 digitsSDD.C:69
 digitsSDD.C:70
 digitsSDD.C:71
 digitsSDD.C:72
 digitsSDD.C:73
 digitsSDD.C:74
 digitsSDD.C:75
 digitsSDD.C:76
 digitsSDD.C:77
 digitsSDD.C:78
 digitsSDD.C:79
 digitsSDD.C:80
 digitsSDD.C:81
 digitsSDD.C:82
 digitsSDD.C:83
 digitsSDD.C:84
 digitsSDD.C:85
 digitsSDD.C:86
 digitsSDD.C:87
 digitsSDD.C:88
 digitsSDD.C:89
 digitsSDD.C:90
 digitsSDD.C:91
 digitsSDD.C:92
 digitsSDD.C:93
 digitsSDD.C:94
 digitsSDD.C:95
 digitsSDD.C:96
 digitsSDD.C:97
 digitsSDD.C:98
 digitsSDD.C:99
 digitsSDD.C:100
 digitsSDD.C:101
 digitsSDD.C:102
 digitsSDD.C:103
 digitsSDD.C:104
 digitsSDD.C:105
 digitsSDD.C:106
 digitsSDD.C:107
 digitsSDD.C:108
 digitsSDD.C:109
 digitsSDD.C:110
 digitsSDD.C:111
 digitsSDD.C:112
 digitsSDD.C:113
 digitsSDD.C:114
 digitsSDD.C:115
 digitsSDD.C:116
 digitsSDD.C:117
 digitsSDD.C:118
 digitsSDD.C:119