]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSHits2FastRecPoints.C
Corrected call to the static method AliBitPacking::UnpackWord
[u/mrichter/AliRoot.git] / ITS / AliITSHits2FastRecPoints.C
1 void AliITSHits2FastRecPoints (Int_t evNumber1=0,Int_t evNumber2=0, TString inFile = "galice.root", Int_t nsignal=25, Int_t size=-1) 
2 {
3   /////////////////////////////////////////////////////////////////////////
4   //   
5   //   This macro creates fast recpoints, optionally on a separate file
6   //   
7   /////////////////////////////////////////////////////////////////////////
8
9
10   // Dynamically link some shared libs
11
12   if (gClassTable->GetID("AliRun") < 0) {
13     gROOT->LoadMacro("loadlibs.C");
14     loadlibs();
15   } else if (gAlice){
16      delete gAlice->GetRunLoader();
17      delete gAlice; 
18      gAlice=0;
19   }
20
21   // Connect the Root Galice file containing Geometry, Kine and Hits
22     AliRunLoader* rl = AliRunLoader::Open("galice.root");
23     if (rl == 0x0)
24      {
25        ::Error("AliITSHits2FastRecPoints.C","Can not open session RL=NULL");
26        return;
27      }
28      
29     Int_t retval = rl->LoadgAlice();
30     if (retval)
31      {
32        ::Error("AliITSHits2FastRecPoints.C","LoadgAlice returned error");
33        delete rl;
34        return;
35      }
36     gAlice=rl->GetAliRun();
37     rl->LoadHeader();
38     retval = rl->LoadKinematics();
39     if (retval)
40      {
41        ::Error("AliITSHits2FastRecPoints.C","LoadKinematics returned error");
42        delete rl;
43        return;
44      }
45     
46     AliITSLoader* gime = (AliITSLoader*)rl->GetLoader("ITSLoader");
47     if (gime == 0x0)
48      {
49        ::Error("AliITSHits2FastRecPoints.C","can not get ITS loader");
50        delete rl;
51        return;
52      }
53     retval = gime->LoadHits("read");
54     if (retval)
55      {
56        ::Error("AliITSHits2FastRecPoints.C","LoadHits returned error");
57        delete rl;
58        return;
59      }
60     gime->SetRecPointsFileName("ITS.FastRecPoints.root"); 
61     retval = gime->LoadRecPoints("update");
62     if (retval)
63      {
64        ::Error("AliITSHits2FastRecPoints.C","LoadRecPoints returned error");
65        delete rl;
66        return;
67      }
68     
69    
70     TDirectory * olddir = gDirectory;
71     rl->CdGAFile();
72     AliITSgeom* geom = (AliITSgeom*)gDirectory->Get("AliITSgeom");
73     olddir->cd();
74     if(!geom){
75       Error("GetITSgeom","no ITS geometry available");
76       return NULL;
77     }
78
79  
80    AliITS *ITS  = (AliITS*) gAlice->GetModule("ITS");
81    if (!ITS) return;
82
83   // Set the simulation model
84
85    
86
87   //
88   // Event Loop
89   //
90
91   Int_t nbgr_ev=0;
92   TStopwatch timer;
93
94   cout << "Creating fast reconstructed points from hits for the ITS..." << endl;
95   AliITSDetTypeSim* dettyp = new AliITSDetTypeSim();
96   dettyp->SetITSgeom(geom);
97   dettyp->SetLoader(gime);
98   ITS->SetDetTypeSim(dettyp);
99   for (Int_t i=0;i<3;i++) {
100     ITS->SetSimulationModel(i,new AliITSsimulationFastPoints());
101   }
102
103   
104   for (int ev=evNumber1; ev<= evNumber2; ev++) {
105     cout << "...working on event "<< ev << " ..." << endl;
106     Int_t nparticles = gAlice->GetEvent(ev);
107     cout << "event         " <<ev<<endl;
108     cout << "nparticles  " <<nparticles<<endl;
109     rl->GetEvent(ev);
110     //if(gime->TreeR() == 0x0) gime->MakeTree("R");
111     
112      if (ev < evNumber1) continue;
113     if (nparticles <= 0) return;
114
115     Int_t bgr_ev=Int_t(ev/nsignal);
116     timer.Start();
117     ITS->HitsToFastRecPoints(ev,bgr_ev,size," ","All"," ");
118     timer.Stop(); timer.Print();
119   } // event loop 
120
121   delete rl;
122 }
123