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


  TH1F * hadc = new TH1F("hadc", "hadc", 260, -99, 1200);
  TH1F * hadcLow = new TH1F("hadcLow", "hadcLow", 100, -5, 5);

  TH1F * hadclog = new TH1F("hadclog", "hadclog", 100, -1, 4);

    TTree *treeD=0x0;
    AliTRDdigitsManager manD;

    for (Int_t event=0; event<nevents; event++) {
      cout << "Event " << event << endl;
  
      treeD = GetTreeD(event, "TRD", nfiles);
      if ( ! treeD ) {
        cerr << "Event directory not found in " << nfiles <<  " files" << endl;
        exit(1);
      }      
      manD.ReadDigits(treeD);
    
      AliTRDarrayADC *digitsD = 0;

    
      Int_t maxDet = 540;
      Int_t rowMax  = 0;
      Int_t colMax  = 0;
      Int_t timeMax = 0;
      Double_t signal=0;

      for (Int_t idet = 0; idet<maxDet; idet++)
	{
	  digitsD = manD.GetDigits(idet);
	  digitsD->Expand();
	
	  rowMax = digitsD->GetNrow();
	  colMax = digitsD->GetNcol();
	  timeMax = digitsD->GetNtime();	
	
	  //cout << "Detector " << idet << endl;
	  cout << "\r Detector " << idet; cout.flush();
	
	  for (Int_t irow = 0; irow < rowMax; irow++)
	    {
	      for (Int_t icol = 0; icol < colMax; icol++)
		{
		  for (Int_t itime = 0; itime < timeMax; itime++)
		    {
		    
		      signal= digitsD->GetData(irow, icol, itime);

		      hadc-> Fill(signal);
		      hadcLow-> Fill(signal);
		      if(signal>0.) hadclog-> Fill(TMath::Log10(signal));
		    
		    
		    
		    } //time
		} //col
	    } //row
	}//detector chamber
      cout << "\n \r Event " << event << endl;
    }//event
  
  TFile fc("digits.TRD.root","RECREATE");
  fc.cd();
  hadcLow->Write();
  hadc->Write();
  hadclog->Write();

  fc.Close();

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