bcff79696e9760be6b9f57c544fbc66ca857cfa5
[u/mrichter/AliRoot.git] / RICH / RICHdigit.C
1 // 0 = all
2 // 1 = not pion
3 // 2 = not kaon
4 // 3 = not proton
5 // 4 = not muon
6 // 5 = not electron
7 // 6 = not neutron
8
9
10 Int_t particle_type=0;
11
12 #include "iostream.h"
13
14 void RICHdigit (Int_t evNumber1=0,Int_t evNumber2=0, Int_t merging) 
15 {
16 /////////////////////////////////////////////////////////////////////////
17 //   This macro is a small example of a ROOT macro
18 //   illustrating how to read the output of GALICE
19 //   and do some analysis.
20 //   
21 /////////////////////////////////////////////////////////////////////////
22
23 // Dynamically link some shared libs
24
25    
26   if (gClassTable->GetID("AliRun") < 0) {
27       gROOT->LoadMacro("loadlibs.C");
28       loadlibs();
29   }else {
30     delete gAlice;
31     gAlice = 0;
32   }
33   
34   galice=0;
35
36 // Connect the Root Galice file containing Geometry, Kine and Hits
37
38    TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
39    if (file) file->Close(); 
40    file = new TFile("galice.root","UPDATE");
41 //   file->ls();
42 // Get AliRun object from file or create it if not on file
43
44    
45
46    if (gClassTable->GetID("AliRun") < 0) {
47         gROOT->LoadMacro("loadlibs.C");
48         loadlibs();
49     }
50
51
52    if (!gAlice) {
53        gAlice = (AliRun*)file->Get("gAlice");
54        if (gAlice) printf("AliRun object found on file\n");
55        if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
56    } else {
57       delete gAlice;
58       gAlice = (AliRun*)file->Get("gAlice");
59         if (gAlice) printf("AliRun object found on file\n");
60         if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
61     }
62       
63    AliRICH *RICH  = (AliRICH*) gAlice->GetDetector("RICH");
64
65    if (merging)
66      printf("Merging is ON\n");
67    else
68      printf("Merging is OFF\n");
69
70 // Creation of merger object
71    AliRICHMerger* merger = new AliRICHMerger();
72    
73 // Configuration
74    merger->SetMode(merging);
75    merger->SetSignalEventNumber(0);
76    merger->SetBackgroundEventNumber(0);
77    merger->SetBackgroundFileName("bg.root");
78        
79 // Pass
80    RICH->SetMerger(merger);
81
82
83 //
84 // Event Loop
85 //
86    for (int nev=0; nev<= evNumber2; nev++) {
87        Int_t nparticles = gAlice->GetEvent(nev);
88        cout <<endl<< "Processing event:" <<nev<<endl;
89        cout << "Particles       :" <<nparticles<<endl;
90        if (nev < evNumber1) continue;
91        if (nparticles <= 0) return;
92        if (RICH) 
93          {
94            //gAlice->MakeTree("D");
95            //RICH->MakeBranch("D");
96            //RICH->Digitise(nev, particle_type);
97            //gAlice->SDigits2Digits("RICH");
98            //gAlice->Tree2Tree("D");
99            RICH->MakeBranch("D");
100            RICH->SDigits2Digits(nev, particle_type);
101          }
102    } // event loop 
103    file->Close();
104
105    //delete gAlice;
106    printf("\nEnd of Macro  *************************************\n");
107 }
108
109
110