ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)

#include "TROOT.h"
#include "Riostream.h"
#include "TDatime.h"
#include "TClassTable.h"
#include "AliRun.h"
#include "AliRunDigitizer.h"
#include "AliITS.h"
#include "AliITSDetTypeSim.h"
#include "AliITSLoader.h"
#include "AliITSresponseSDD.h"
#include "TStopwatch.h"

#endif

//#define DEBUG
Int_t AliITSHits2Digits(TString inFile = "galice.root"){
    // Standard ITS Hits to Digits, excluding creation of SDigits.

    // Dynamically link some shared libs
   if (gClassTable->GetID("AliRun") < 0) {
      gROOT->ProcessLine(".x $(ALICE_ROOT)/macros/loadlibs.C");
    }else if (gAlice){
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice=0;
     } 

   AliRunLoader* rl = AliRunLoader::Open(inFile.Data());
    if (rl == 0x0)
     {
      cerr<<"AliITSHits2Digits.C : Can not open session RL=NULL"
           << endl;
       return 3;
     }
     
    Int_t retval = rl->LoadgAlice();
    if (retval)
     {
      cerr<<"AliITSHits2Digits.C : LoadgAlice returned error"
           << endl;
       return 3;
     }
    gAlice=rl->GetAliRun();
    AliITSLoader* gime = (AliITSLoader*)rl->GetLoader("ITSLoader");
    if (gime == 0x0)
     {
      cerr<<"AliITSHits2Digits.C : can not get ITS loader"
           << endl;
     }
    AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS");      
    if (!ITS) {
	cerr<<"AliITSHits2Digit.C : AliITS object not found on file"
	    << endl;
	return 3;
    }  // end if !ITS

    if(!(ITS->GetITSgeom())){
	cerr << " AliITSgeom not found. Can't digitize without it." << endl;
	return 4;
    } // end if

    

    TStopwatch timer;
    Int_t evNumber1 = 0;
    Int_t evNumber2 = rl->GetNumberOfEvents();
    timer.Start();
    retval = gime->LoadHits();
    if (retval)
     {
      cerr<<"AliITSHits2Digits.C : ITSLoader::LoadHits returned error"
           << endl;
       return 3;
     }

    retval = gime->LoadDigits("recreate");
    if (retval)
     {
      cerr<<"AliITSHits2Digits.C : ITSLoader::LoadDigits returned error"
           << endl;
       return 3;
     }
    for(Int_t nevent = evNumber1; nevent < evNumber2; nevent++){
	// cout<<"Producing Digits for event n."<<nevent<<endl;

	rl->GetEvent(nevent);
	if(!gime->TreeD()){ 
	    cout << "Having to create the Digits Tree." << endl;
	    gime->MakeTree("D");
	} // end if creating digits tree
	ITS->MakeBranch("D");
	ITS->SetTreeAddress();   
	ITS->Hits2Digits();
    } // end for nevent
    timer.Stop();
    timer.Print();

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