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

  TH1F * hadc = new TH1F ("hadc", "hadc",200, 0, 4500);   
  TH1F * hadclog = new TH1F ("hadclog", "hadclog",200, -1, 4);   

  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] = (TDirectoryFile*)file0->Get(Form("Event%d",event+file*100));
    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("ITSDigitsSSD", &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.SSD.root","RECREATE");
  fc.cd();
   
  hadc->Write();
  hadclog->Write();

  fc.Close();

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