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