X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSHits2Digits.C;h=ecfbaf7910a63d809fbb0d5726f8cf022f672bf0;hb=b58cd5bb7cc84c4d3f89f5c71e95f96420f1aee2;hp=7e55c9f7d20d3618c116028a7db1216f8f461ae7;hpb=02a71a7164b4dbe1417f9ccc5e60a65ee200238a;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSHits2Digits.C b/ITS/AliITSHits2Digits.C index 7e55c9f7d20..ecfbaf7910a 100644 --- a/ITS/AliITSHits2Digits.C +++ b/ITS/AliITSHits2Digits.C @@ -1,169 +1,102 @@ #if !defined(__CINT__) || defined(__MAKECINT__) -#include "iostream.h" -#include "TDatetime.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 "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 -TFile* AccessFile(TString inFile="galice.root", TString acctype="R"); -void writeAR(TFile * fin, TFile *fou); -Int_t ChangeITSDefaults(TFile *hitfile,AliITS *ITS,TString opt=""); //#define DEBUG -Int_t AliITSHits2Digits(TString hitFile = "galice.root", - TString digFile = "galiceD.root",TString opt=""){ - // Standeard ITS Hits to Digits, excluding creation of SDigits. +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->LoadMacro("loadlibs.C"); - loadlibs(); - } // end if - - // Connect the Root Galice file containing Geometry, Kine and Hits - - TFile *hitfile = 0; // pointer to input file. - TFile *digfile = 0; // possible output file for TreeD - if(digFile.CompareTo(hitFile) == 0){// write output to same file as input. - hitfile = AccessFile(hitFile,"U"); // input file open for update. - }else{ // different output file then input file. - hitfile = AccessFile(hitFile,"R"); // input file open as read only - // open output file and create TreeR on it - digfile = gAlice->InitTreeFile("D",digFile); - } // end if digFile == hitFile. + 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<<"AliITSHits2DigitsDefault.C : AliITS object not found on file" + 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 with out it." << endl; + cerr << " AliITSgeom not found. Can't digitize without it." << endl; return 4; } // end if - ChangeITSDefaults(hitfile,ITS,opt); - // write the AliRun object to the output file if different from input file. - if(digfile) writeAR(hitfile,digfile); + TStopwatch timer; Int_t evNumber1 = 0; - Int_t evNumber2 = gAlice->GetEventsPerRun(); + 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."<GetEvent(nevent); - if(!gAlice->TreeD() && digfile == 0){ + + rl->GetEvent(nevent); + if(!gime->TreeD()){ cout << "Having to create the Digits Tree." << endl; - gAlice->MakeTree("D"); + gime->MakeTree("D"); } // end if creating digits tree - if(digfile) gAlice->MakeTree("D",digfile); ITS->MakeBranch("D"); ITS->SetTreeAddress(); ITS->Hits2Digits(); } // end for nevent timer.Stop(); timer.Print(); - if(digfile!=0){ - cout << digFile << " size =" << digfile->GetSize() << endl; - }else{ - cout << hitFile << " size =" << hitfile->GetSize() << endl; - } // end if sdigfile!=0 - - delete gAlice; // digfile is closed by deleting gAlice if != hitfile. - gAlice = 0; - hitfile->Close(); hitfile = 0; -} -//______________________________________________________________________ -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; - } // end if file - if(acctype.Contains("U")){ - file = new TFile(FileName,"UPDATE"); - } // end if open for update - if(acctype.Contains("N") && !file){ - file = new TFile(FileName,"RECREATE"); - } // end if open a new file - if(!file) file = new TFile(FileName,"READ"); // default readonly - if (!file->IsOpen()) { - cerr << "Can't open " << FileName << " !" << endl; - return retfil; - } // end if error opeing file - - // 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 "<< FileName << "!" << endl; - file->Close(); // close file and return error. - return retfil; - } // end if !gAlice - return file; -} -//______________________________________________________________________ -void writeAR(TFile * fin, TFile *fou) { - TDirectory *current = gDirectory; - TTree *TeOld; - TTree *TeNew; - AliHeader *alhe = new AliHeader(); - TeOld = (TTree*)fin->Get("TE"); - TeOld->SetBranchAddress("Header",&alhe); - TeOld->SetBranchStatus("*",1); - fou->cd(); - TeNew = TeOld->CloneTree(); - TeNew->Write(0,TObject::kOverwrite); - gAlice->Write(0,TObject::kOverwrite); - current->cd(); - delete alhe; -#ifdef DEBUG - cout << "AliRun object written to file" << endl; -#endif -} -//______________________________________________________________________ -Int_t ChangeITSDefaults(TFile *hitfile,AliITS *ITS,TString opt){ - - TDatime *ct0 = new TDatime(2002,04,26,00,00,00); - TDatime ct = hitfile->GetCreationDate(); - - if(ct0->GetDate()>ct.GetDate()){ - // For old files, must change SDD noise. - AliITSresponseSDD *resp1 = (AliITSresponseSDD*)ITS->DetType(1)-> - GetResponseModel(); - resp1 = new AliITSresponseSDD(); - ITS->SetResponseModel(1,resp1); - cout << "Changed response class for SDD:" << endl; - resp1->Print(); - } // end if - if(opt.Contains("Dubna")){ - 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); - } // end if Dubna + delete rl; + return 0; }