Macro to perform digitization for the ZDC
[u/mrichter/AliRoot.git] / ZDC / ZDCHits2Digits.C
1 //      ------------------------------------------------------------
2 //                      Macro for ZDC digitization 
3 //      Macro arguments: totnev = num. of events to be processed
4 //      mode = 0 -> Only digitization (without merging) is performed
5 //      mode = 1 -> Signal for spectators is added to the generated
6 //              background and then the complete event is digitized
7 //      ------------------------------------------------------------
8 void ZDCHits2Digits(Int_t totnev, Int_t mode=1) 
9 {
10    delete gAlice;
11    gAlice=0;
12 // Dynamically link some shared libs
13    if (gClassTable->GetID("AliRun") < 0) {
14       gROOT->LoadMacro("loadlibs.C");
15       loadlibs();
16    }
17       
18 // Connect the Root Galice file containing Geometry, Kine, Hits and Digits
19    TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
20     if (!file) {
21         printf("\n Creating galice.root \n");
22         file = new TFile("galice.root");
23     } else {
24         printf("\n galice.root found in file list");
25     }
26
27 // Get AliRun object from file or create it if not on file
28    if (!gAlice) {
29       gAlice = (AliRun*)file->Get("gAlice");
30       if (gAlice) printf("AliRun object found on file\n");
31       if (!gAlice) {
32             printf("\n create new gAlice object");
33             gAlice = new AliRun("gAlice","Alice test program");
34         }
35    }
36    
37    AliZDCMerger *merger=0;
38    AliZDC *ZDC  = (AliZDC*) gAlice->GetModule("ZDC");
39    if (ZDC && mode) {
40        printf("\n       Initializing AliZDCMerger\n");
41        merger = new AliZDCMerger();
42        merger->SetMode(mode);
43        merger->SetBackgroundFileName("galice.root");
44        ZDC->SetMerger(merger);
45    }
46 //
47 //   Loop over events              
48 //
49     for(Int_t iev=0; iev<totnev; iev++) {
50        if(mode){
51          merger->SetBackgroundEventNum(iev);
52        }
53         gAlice->Hits2SDigits("ZDC");
54         gAlice->SDigits2Digits("ZDC");
55     }   // event loop 
56 }