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 digitsSPD(Int_t nevents, Int_t nfiles)
{

  TH1F * hadc = new TH1F ("hadc", "hadc",100, 0, 2);   
  TH1F * hadclog = new TH1F ("hadclog", "hadclog",100, -1, 1);   

  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 + file*100);
      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("ITSDigitsSPD", &arr);
   

      // Runloader -> gives particle Stack
      rlSig->GetEvent(event);
      AliStack * stack = rlSig->Stack(); 
      //stack->DumpPStack();


      // 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){
	    hadc->Fill(digit->GetSignal());
	    hadclog->Fill(TMath::Log10(digit->GetSignal()));
	
	  }
	}
      }

    }

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

  fc.Close();

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