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

#include "iostream.h"
#include "TDatime.h"
#include "TFile.h"
#include "TString.h"
#include "../STEER/AliRun.h"
#include "../STEER/AliRunDigitizer.h"
#include "ITS/AliITSDigitizer.h"
#include "ITS/AliITS.h"
#include "ITS/AliITSDetType.h"
#include "ITS/AliITSresponseSDD.h"
#include "TStopwatch.h"

Bool_t GaliceITSok();
TFile* AccessFile(TString inFile="galice.root", TString acctype="R");
void writeAR(TFile * fin, TFile *fou);
Int_t ChangeITSDefaults(TFile *hitfile,AliITS *ITS,TString opt="");
void loadlibs();

#endif

//#define DEBUG

Int_t AliITSd2r(TString df="galice.root",TString rf="",TString opt=""){
    // Produce ITS RecPoints from Digits.

    // Dynamically link some shared libs
    if (gClassTable->GetID("AliRun") < 0) {
	gROOT->LoadMacro("loadlibs.C");
	loadlibs();
    } // end if
    gROOT->LoadMacro("$(ALICE_ROOT)/ITS/AliITSstandard.C");

    TFile *dfp = 0, *rfp = 0;
    if(!GaliceITSok()){
	// gAlice not define. Must open a file and read it in.
	if(rf.CompareTo(df) == 0 || rf.CompareTo("") == 0) {
	    // Input file = output file
	    dfp = AccessFile(df,"U");  // input file open for update.
	}else{ // Input file different from output file.
	    dfp = AccessFile(df,"R"); // input file open as read only
	    // open output file and create TreeR on it
	    rfp = new TFile(rp,"NEW");
	} // end if
    } // end if !GALICEITSOK()
    AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS"); 

    ChangeITSDefaults(dfp,ITS,opt);
    // write the AliRun object to the output file if different from input file.
    if(rfp) {
	writeAR(dfp,rfp);
	rfp->Close(); // Manager will open in update mode.
    } // end if

    TStopwatch timer;

#ifdef DEBUG
    cout << "Creating reconstructed points from digits for the ITS..." << endl;
#endif
    if(dfp!=0)
	AliITSreconstruction *itsr = new AliITSreconstruction(df.Data());
    else
	AliITSreconstruction *itsr = new AliITSreconstruction(0);
    if(df.CompareTo(rf)!=0 && rf.CompareTo("")!=0) {
	itsr->SetOutputFile(rf.Data());
    } // end if
    timer.Start();
    itsr->Init();
    itsr->Exec(); 
    timer.Stop(); 
    timer.Print();
    delete itsr;

    if(rfp!=0){
	cout <<"After Reconstruction "<<rf<<" size ="<< rfp->GetSize()<< endl;
    }else if(dfp!=0){
	cout <<"After Reconstruction "<<df<<" size ="<< dfp->GetSize()<< endl;
    } // end if sf1!=0
    return 0;
}
 AliITSd2r.C:1
 AliITSd2r.C:2
 AliITSd2r.C:3
 AliITSd2r.C:4
 AliITSd2r.C:5
 AliITSd2r.C:6
 AliITSd2r.C:7
 AliITSd2r.C:8
 AliITSd2r.C:9
 AliITSd2r.C:10
 AliITSd2r.C:11
 AliITSd2r.C:12
 AliITSd2r.C:13
 AliITSd2r.C:14
 AliITSd2r.C:15
 AliITSd2r.C:16
 AliITSd2r.C:17
 AliITSd2r.C:18
 AliITSd2r.C:19
 AliITSd2r.C:20
 AliITSd2r.C:21
 AliITSd2r.C:22
 AliITSd2r.C:23
 AliITSd2r.C:24
 AliITSd2r.C:25
 AliITSd2r.C:26
 AliITSd2r.C:27
 AliITSd2r.C:28
 AliITSd2r.C:29
 AliITSd2r.C:30
 AliITSd2r.C:31
 AliITSd2r.C:32
 AliITSd2r.C:33
 AliITSd2r.C:34
 AliITSd2r.C:35
 AliITSd2r.C:36
 AliITSd2r.C:37
 AliITSd2r.C:38
 AliITSd2r.C:39
 AliITSd2r.C:40
 AliITSd2r.C:41
 AliITSd2r.C:42
 AliITSd2r.C:43
 AliITSd2r.C:44
 AliITSd2r.C:45
 AliITSd2r.C:46
 AliITSd2r.C:47
 AliITSd2r.C:48
 AliITSd2r.C:49
 AliITSd2r.C:50
 AliITSd2r.C:51
 AliITSd2r.C:52
 AliITSd2r.C:53
 AliITSd2r.C:54
 AliITSd2r.C:55
 AliITSd2r.C:56
 AliITSd2r.C:57
 AliITSd2r.C:58
 AliITSd2r.C:59
 AliITSd2r.C:60
 AliITSd2r.C:61
 AliITSd2r.C:62
 AliITSd2r.C:63
 AliITSd2r.C:64
 AliITSd2r.C:65
 AliITSd2r.C:66
 AliITSd2r.C:67
 AliITSd2r.C:68
 AliITSd2r.C:69
 AliITSd2r.C:70
 AliITSd2r.C:71
 AliITSd2r.C:72
 AliITSd2r.C:73
 AliITSd2r.C:74
 AliITSd2r.C:75
 AliITSd2r.C:76
 AliITSd2r.C:77
 AliITSd2r.C:78
 AliITSd2r.C:79
 AliITSd2r.C:80
 AliITSd2r.C:81
 AliITSd2r.C:82