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

Int_t AliITSHits2SDigitsDubna(Int_t evNumber1=0,Int_t evNumber2=0,
			      TString inFile ="galice.root", 
			      TString outFile="galiceS.root"){

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

  // Connect the Root Galice file containing Geometry, Kine and Hits

  TFile *file;
  if(outFile.Data() == inFile.Data()){
    file = AccessFile(inFile,"U");
  }
  else {
    file = AccessFile(inFile);
  }
  
  TFile *file2 = 0;  // possible output file for TreeS

  if(!(outFile.Data() == inFile.Data())){
    // open output file and create TreeS on it
    file2 = gAlice->InitTreeFile("S",outFile);
  }

  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);

  TStopwatch timer;
  timer.Start();
  for(Int_t nevent = evNumber1; nevent <= evNumber2; nevent++){
    gAlice->GetEvent(nevent);
    if(!gAlice->TreeS() && file2 == 0){ 
      cout << "Having to create the SDigits Tree." << endl;
      gAlice->MakeTree("S");
    } // end if !gAlice->TreeS()
    if(file2)gAlice->MakeTree("S",file2);
    //    make branch
    ITS->MakeBranch("S");
    ITS->SetTreeAddress();
    cout<<"Making ITS SDigits for event "<<nevent<<endl;
    TStopwatch timer;
    Long_t size0 = file->GetSize();
    ITS->Hits2SDigits();
  }
  timer.Stop();
  timer.Print();

  // write the AliRun object to the output file
  if(file2)writeAR(file,file2);

  delete gAlice;   gAlice=0;
  file->Close();
}

//-------------------------------------------------------------------
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";
}





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