Opening galice.root using rfio
[u/mrichter/AliRoot.git] / TPC / AliTPCHits2Digits.C
1 Int_t AliTPCHits2Digits()
2 {
3
4   // new version by J.Belikov
5
6   // Connect the Root Galice file containing Geometry, Kine and Hits
7
8   const char * inFile_old = "galice.root"; 
9   const char * inFile_new = "rfio:galice.root";
10   TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(inFile_old);
11   if (file) {file->Close(); delete file;}
12   file = new TFile(inFile_new,"UPDATE");
13   if (!file->IsOpen()) {
14     cerr<<"Can't open "<<inFile_new<<" !\n";
15     return 1;
16   }
17
18   // Get AliRun object from file or create it if not on file
19   if (gAlice) delete gAlice;
20   gAlice = (AliRun*)file->Get("gAlice");
21   if (!gAlice) {
22     cerr<<"AliTPCHits2Digits.C : AliRun object not found on file\n";
23     return 2;
24   }
25
26   gAlice->GetEvent(0);
27   AliTPC *TPC = (AliTPC*)gAlice->GetDetector("TPC");      
28
29 //Set response functions
30
31   AliTPCParamSR *param=(AliTPCParamSR*)gDirectory->Get("75x40_100x60");
32   AliTPCPRF2D    * prfinner   = new AliTPCPRF2D;
33   AliTPCPRF2D    * prfouter   = new AliTPCPRF2D;
34   AliTPCRF1D     * rf    = new AliTPCRF1D(kTRUE);
35   rf->SetGauss(param->GetZSigma(),param->GetZWidth(),1.);
36   rf->SetOffset(3*param->GetZSigma());
37   rf->Update();
38
39   TDirectory *savedir=gDirectory;
40   TFile *f=TFile::Open("$ALICE_ROOT/TPC/AliTPCprf2d.root");
41   if (!f->IsOpen()) { 
42      cerr<<"Can't open $ALICE_ROOT/TPC/AliTPCprf2d.root !\n"
43      return 3;
44   }
45   prfinner->Read("prf_07504_Gati_056068_d02");
46   prfouter->Read("prf_10006_Gati_047051_d03");
47   f->Close();
48   savedir->cd();
49
50   param->SetInnerPRF(prfinner);
51   param->SetOuterPRF(prfouter); 
52   param->SetTimeRF(rf);
53   TPC->SetParam(param);
54    
55   cerr<<"Digitizing TPC...\n";
56
57   //setup TPCDigitsArray 
58   AliTPCDigitsArray *arr = new AliTPCDigitsArray; 
59   arr->SetClass("AliSimDigits");
60   arr->Setup(param);
61   TPC->SetParam(param);
62   arr->MakeTree();
63
64   TPC->SetDigitsArray(arr);
65   TPC->Hits2Digits();
66   /*  TPC->Hits2DigitsSector(1);             
67   TPC->Hits2DigitsSector(2);             
68   TPC->Hits2DigitsSector(3);             
69   TPC->Hits2DigitsSector(1+18);             
70   TPC->Hits2DigitsSector(2+18);             
71   TPC->Hits2DigitsSector(3+18);             
72
73   TPC->Hits2DigitsSector(36+1);             
74   TPC->Hits2DigitsSector(36+2);             
75   TPC->Hits2DigitsSector(36+3);             
76   TPC->Hits2DigitsSector(36+1+18);             
77   TPC->Hits2DigitsSector(36+2+18);             
78   TPC->Hits2DigitsSector(36+3+18); */
79             
80   //write results
81
82   char treeName[100];
83   sprintf(treeName,"TreeD_%s",param->GetTitle());
84   TPC->GetDigitsArray()->GetTree()->Write(treeName);
85
86   delete gAlice; gAlice=0;
87   file->Close(); delete file;
88   return 0;
89 };
90