ROOT logo
TFile* AccessFile(TString inFile="galice.root", TString acctype="R");
void writeAR(TFile * fin, TFile *fou);
void AliITSSD2D(TString inFile, TString outFile);

void AliITSSDigits2DigitsDubna(TString inFile= "galiceS.root",
			  TString outFile = "galiceD.root"){
    // This macro takes SDigits and produces Digits. No merging is done
    // and only one galice.root file is used. 
    // Dynamically link some shared libs 
    TStopwatch timer;

    if(gAlice){
	delete gAlice;
	gAlice = 0;
    } // end if gAlice
    cout << "Creating digits from summable digits for the ITS..." << endl;
    AliITSSD2D(inFile,outFile);
    timer.Stop(); 
    timer.Print();
}
//______________________________________________________________________
void AliITSSD2D(TString inFile, TString outFile){
    AliRunDigitizer * manager = new AliRunDigitizer(1,1);
    char ftmp[50];
    sprintf(ftmp,"%s",inFile.Data());
    TFile *file0 = AccessFile(ftmp);
    AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS");      
    if (!ITS) {
        cerr<<"AliITSHits2DigitsDefault.C : AliITS object not found on file"
            << endl;
        return 3;
    }  // end if !ITS
    if(!(ITS->GetITSgeom())){
        cerr << " AliITSgeom not found. Can't digitize with out it." << endl;
        return 4;
    } // end if

    // For old files, must change SPD noise.
    AliITSresponseSPDdubna *resp0 = new AliITSresponseSPDdubna();
    if(ITS->DetType(0)->GetResponseModel() !=0){
	delete ((AliITSresponse*)ITS->DetType(0)->GetResponseModel());
	ITS->DetType(0)->ResponseModel(0);
    } // end if
    ITS->DetType(0)->ResponseModel(resp0);
    AliITSsegmentationSPD *seg0 = (AliITSsegmentationSPD*)ITS->DetType(0)->
	GetSegmentationModel();
    AliITSsimulationSPDdubna *sim0 = new AliITSsimulationSPDdubna(seg0,resp0);
    if(ITS->DetType(0)->GetSimulationModel() !=0){
	delete ((AliITSsimulation*)ITS->DetType(0)->GetSimulationModel());
	ITS->DetType(0)->SimulationModel(0);
    } // end if
    ITS->DetType(0)->SimulationModel(sim0);
    manager->SetInputStream(0,ftmp);
    if(outFile != "")manager->SetOutputFile(outFile);
    AliITSDigitizer *dITS  = new AliITSDigitizer(manager);
    manager->Exec("");
    TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(inFile);
    TFile *file2 = 0;
    if(outFile != ""){ 
	file2 = new TFile(outFile,"UPDATE");
	writeAR(file,file2);
    } // end if outFile!=""
    delete manager;
    if(file){
	file->Write();
    } // end if file
    if(file2){
	file2->Close();
	delete file2;
    } // end if file2
}
//______________________________________________________________________
TFile * AccessFile(TString FileName, TString acctype){

  // Function used to open the input file and fetch the AliRun object

  TFile *retfil = 0;
  TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(FileName);
  if (file) {file->Close(); delete file; file = 0;} 
  if(acctype.Contains("U")){
    file = new TFile(FileName,"update");
  }
  if(acctype.Contains("N") && !file){
    file = new TFile(FileName,"recreate");
  }
  if(!file) file = new TFile(FileName);   // default readonly
  if (!file->IsOpen()) {
        cerr<<"Can't open "<<FileName<<" !" << endl;
        return retfil;
  } 

  // Get AliRun object from file or return if not on file
  if (gAlice) {delete gAlice; gAlice = 0;}
  gAlice = (AliRun*)file->Get("gAlice");
  if (!gAlice) {
        cerr << "AliRun object not found on file"<< endl;
        return retfil;
  } 
  return file;
}
//______________________________________________________________________
void writeAR(TFile * fin, TFile *fou) {
    TDirectory *current = gDirectory;
    TTree *Te;
    TTree *TeNew;
    AliHeader *alhe = new AliHeader();
    Te = (TTree*)fin->Get("TE");
    Te->SetBranchAddress("Header",&alhe);
    Te->SetBranchStatus("*",1);
    fou->cd();
    TeNew = Te->CloneTree();
    TeNew->Write(0,TObject::kOverwrite);
    gAlice->Write(0,TObject::kOverwrite);
    current->cd();
    delete alhe;
    cout<<"AliRun object written to file\n";
}
 AliITSSDigits2DigitsDubna.C:1
 AliITSSDigits2DigitsDubna.C:2
 AliITSSDigits2DigitsDubna.C:3
 AliITSSDigits2DigitsDubna.C:4
 AliITSSDigits2DigitsDubna.C:5
 AliITSSDigits2DigitsDubna.C:6
 AliITSSDigits2DigitsDubna.C:7
 AliITSSDigits2DigitsDubna.C:8
 AliITSSDigits2DigitsDubna.C:9
 AliITSSDigits2DigitsDubna.C:10
 AliITSSDigits2DigitsDubna.C:11
 AliITSSDigits2DigitsDubna.C:12
 AliITSSDigits2DigitsDubna.C:13
 AliITSSDigits2DigitsDubna.C:14
 AliITSSDigits2DigitsDubna.C:15
 AliITSSDigits2DigitsDubna.C:16
 AliITSSDigits2DigitsDubna.C:17
 AliITSSDigits2DigitsDubna.C:18
 AliITSSDigits2DigitsDubna.C:19
 AliITSSDigits2DigitsDubna.C:20
 AliITSSDigits2DigitsDubna.C:21
 AliITSSDigits2DigitsDubna.C:22
 AliITSSDigits2DigitsDubna.C:23
 AliITSSDigits2DigitsDubna.C:24
 AliITSSDigits2DigitsDubna.C:25
 AliITSSDigits2DigitsDubna.C:26
 AliITSSDigits2DigitsDubna.C:27
 AliITSSDigits2DigitsDubna.C:28
 AliITSSDigits2DigitsDubna.C:29
 AliITSSDigits2DigitsDubna.C:30
 AliITSSDigits2DigitsDubna.C:31
 AliITSSDigits2DigitsDubna.C:32
 AliITSSDigits2DigitsDubna.C:33
 AliITSSDigits2DigitsDubna.C:34
 AliITSSDigits2DigitsDubna.C:35
 AliITSSDigits2DigitsDubna.C:36
 AliITSSDigits2DigitsDubna.C:37
 AliITSSDigits2DigitsDubna.C:38
 AliITSSDigits2DigitsDubna.C:39
 AliITSSDigits2DigitsDubna.C:40
 AliITSSDigits2DigitsDubna.C:41
 AliITSSDigits2DigitsDubna.C:42
 AliITSSDigits2DigitsDubna.C:43
 AliITSSDigits2DigitsDubna.C:44
 AliITSSDigits2DigitsDubna.C:45
 AliITSSDigits2DigitsDubna.C:46
 AliITSSDigits2DigitsDubna.C:47
 AliITSSDigits2DigitsDubna.C:48
 AliITSSDigits2DigitsDubna.C:49
 AliITSSDigits2DigitsDubna.C:50
 AliITSSDigits2DigitsDubna.C:51
 AliITSSDigits2DigitsDubna.C:52
 AliITSSDigits2DigitsDubna.C:53
 AliITSSDigits2DigitsDubna.C:54
 AliITSSDigits2DigitsDubna.C:55
 AliITSSDigits2DigitsDubna.C:56
 AliITSSDigits2DigitsDubna.C:57
 AliITSSDigits2DigitsDubna.C:58
 AliITSSDigits2DigitsDubna.C:59
 AliITSSDigits2DigitsDubna.C:60
 AliITSSDigits2DigitsDubna.C:61
 AliITSSDigits2DigitsDubna.C:62
 AliITSSDigits2DigitsDubna.C:63
 AliITSSDigits2DigitsDubna.C:64
 AliITSSDigits2DigitsDubna.C:65
 AliITSSDigits2DigitsDubna.C:66
 AliITSSDigits2DigitsDubna.C:67
 AliITSSDigits2DigitsDubna.C:68
 AliITSSDigits2DigitsDubna.C:69
 AliITSSDigits2DigitsDubna.C:70
 AliITSSDigits2DigitsDubna.C:71
 AliITSSDigits2DigitsDubna.C:72
 AliITSSDigits2DigitsDubna.C:73
 AliITSSDigits2DigitsDubna.C:74
 AliITSSDigits2DigitsDubna.C:75
 AliITSSDigits2DigitsDubna.C:76
 AliITSSDigits2DigitsDubna.C:77
 AliITSSDigits2DigitsDubna.C:78
 AliITSSDigits2DigitsDubna.C:79
 AliITSSDigits2DigitsDubna.C:80
 AliITSSDigits2DigitsDubna.C:81
 AliITSSDigits2DigitsDubna.C:82
 AliITSSDigits2DigitsDubna.C:83
 AliITSSDigits2DigitsDubna.C:84
 AliITSSDigits2DigitsDubna.C:85
 AliITSSDigits2DigitsDubna.C:86
 AliITSSDigits2DigitsDubna.C:87
 AliITSSDigits2DigitsDubna.C:88
 AliITSSDigits2DigitsDubna.C:89
 AliITSSDigits2DigitsDubna.C:90
 AliITSSDigits2DigitsDubna.C:91
 AliITSSDigits2DigitsDubna.C:92
 AliITSSDigits2DigitsDubna.C:93
 AliITSSDigits2DigitsDubna.C:94
 AliITSSDigits2DigitsDubna.C:95
 AliITSSDigits2DigitsDubna.C:96
 AliITSSDigits2DigitsDubna.C:97
 AliITSSDigits2DigitsDubna.C:98
 AliITSSDigits2DigitsDubna.C:99
 AliITSSDigits2DigitsDubna.C:100
 AliITSSDigits2DigitsDubna.C:101
 AliITSSDigits2DigitsDubna.C:102
 AliITSSDigits2DigitsDubna.C:103
 AliITSSDigits2DigitsDubna.C:104
 AliITSSDigits2DigitsDubna.C:105
 AliITSSDigits2DigitsDubna.C:106
 AliITSSDigits2DigitsDubna.C:107
 AliITSSDigits2DigitsDubna.C:108
 AliITSSDigits2DigitsDubna.C:109
 AliITSSDigits2DigitsDubna.C:110
 AliITSSDigits2DigitsDubna.C:111
 AliITSSDigits2DigitsDubna.C:112
 AliITSSDigits2DigitsDubna.C:113
 AliITSSDigits2DigitsDubna.C:114
 AliITSSDigits2DigitsDubna.C:115
 AliITSSDigits2DigitsDubna.C:116
 AliITSSDigits2DigitsDubna.C:117
 AliITSSDigits2DigitsDubna.C:118