+#if !defined(__CINT__) || defined(__MAKECINT__)
+ #include <Riostream.h>
-void AliTPCHits2Digits(const char * name= "pokusD_")
-{
-
- // Dynamically link some shared libs
- if (gClassTable->GetID("AliRun") < 0) {
- gROOT->LoadMacro("loadlibs.C");
- loadlibs();
- }
-
- //names of trees
- const char * inFile = "galice.root";
- // const * char ident= "TreeD1par_";
+ #include "AliRun.h"
+ #include "AliRunLoader.h"
+ #include "AliLoader.h"
+ #include "AliTPC.h"
+
+ #include "TStopwatch.h"
+#endif
+
+extern AliRun *gAlice;
-// Connect the Root Galice file containing Geometry, Kine and Hits
- TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(inFile);
- if (file) file->Close();
- file = new TFile(inFile,"UPDATE");
-// Get AliRun object from file or create it if not on file
+Int_t AliTPCHits2Digits(Int_t nev=5) {
+ // Connect the Root Galice file containing Geometry, Kine and Hits
+ if (gAlice) {
+ delete AliRunLoader::Instance();
+ delete gAlice;//if everything was OK here it is already NULL
+ gAlice = 0x0;
+ }
- if(gAlice){
- delete gAlice;
- gAlice=0;
- }
- if (!gAlice) {
- gAlice = (AliRun*)file->Get("gAlice");
- if (gAlice) printf("AliRun object found on file\n");
- if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
- }
- gAlice->GetEvent(0);
- AliTPC *TPC = (AliTPC*)gAlice->GetModule("TPC");
- TPC->Dump();
- //adjust parameters
-
- AliTPCD *paramd = TPC->GetDigParam();
- paramd->Dump();
- paramd->SetName("Param1");
- paramd->MakeTree();
- //set pointers to parameters
- paramd->Dump();
- AliTPCParam ¶m = paramd->GetParam();
- AliTPCPRF2D &prf = paramd->GetPRF2D();
- AliTPCRF1D & rf = paramd->GetRF();
-
- param.SetPadLength(2.05);
- param.SetPadWidth(0.35);
- param.SetPadPitchLength(2.05);
- param.SetPadPitchWidth(0.35);
- param.SetNWires(5);
- param.SetZeroSup(5);
- param.SetDiffT(0.022);
- param.SetDiffL(0.022);
- param.SetNoise(500);
- param.SetGasGain(1.e4);
- param.SetChipGain(24);
- param.Update();
+ AliRunLoader *rl = AliRunLoader::Open("galice.root","Event","update");
+ if (!rl) {
+ cerr<<"Can't load RunLoader from "<<endl;
+ return 1;
+ }
- //Set z (time) response function
- rf.SetGauss(param.GetZSigma(),param.GetZWidth(),0.4);
- rf.Update();
- //Set two dimensional pad response function
- TFile f("TPC/AliTPCprf2d.root");
- // prf.Read("prf_205035_Gati_062074_d03");
- prf.Read("prf_205035_Gati_062074_d03");
- f.Close();
-
- printf("**********Digit object dump start********************\n");
- paramd->Dump();
- printf("**********AliTPCParam**************************\n");
- param.Dump();
- printf("**********Time response function***************\n");
- rf.Dump();
- printf("**********Pad response function params*********\n");
- prf.Dump();
- printf("**********Digit object dump end********************\n");
+ // Get AliRun object from file or create it if not on file
- TPC->Hits2DigitsSector(1);
-
+ rl->LoadgAlice();
- file->cd();
- TPC->GetDigParam()->Write();
-};
+ gAlice = rl->GetAliRun();
+ if (!gAlice) {
+ cerr<<"AliTPCHits2Digits.C : AliRun object not found on file\n";
+ return 2;
+ }
+
+ AliTPC *TPC = (AliTPC*)gAlice->GetDetector("TPC");
+ AliLoader * tpcl = rl->GetLoader("TPCLoader");
+ if ((TPC == 0x0) || (tpcl == 0x0)) {
+ cerr<<"AliTPCHits2Digits.C : Can not find TPC or TPCLoader\n";
+ delete rl;
+ return 3;
+ }
+ tpcl->LoadHits("READ");
+ tpcl->LoadDigits("recreate");
+
+ TStopwatch timer;
+ timer.Start();
+
+ // uncomment below lines to set sectors active
+ // Int_t sec[10]={0,1,2,3,4,5,6,7,8,9};
+ // TPC->SetActiveSectors(sec,10);
+
+ for (Int_t i=0; i<nev; i++){
+ printf("Processing event %d \n",i);
+ if(rl->GetEvent(i)) break;
+ TPC->SetActiveSectors(); // all sectors set active
+ TPC->Hits2Digits(i);
+ }
+
+ delete rl;
+
+ timer.Stop();
+ timer.Print();
+ return 0;
+}