]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONdigit.C
Bug fix (Yu.Belikov)
[u/mrichter/AliRoot.git] / MUON / MUONdigit.C
index 7346d3943e81084561d3218171d28ec0cbfceb3a..9656d2debcdecc7e401db8ef508a6c7febf53fd9 100644 (file)
@@ -1,7 +1,47 @@
-#include "iostream.h"
-
-void MUONdigit (Int_t evNumber1=0, Int_t evNumber2=9, Int_t ibg=1, Int_t bgr=10) 
+void MUONdigit (Int_t evNumber1=0, Int_t evNumber2=0, Int_t ibg=0, Int_t bgr=10) 
 {
+  //////////////////////////////////////
+  //                                  //
+  // ROOT macro for ALICE Dimuon Arm: //
+  // Digitization                     //
+  //                                  //
+  //////////////////////////////////////
+  //
+  // Adds the tree TD for digits (charges deposited on pads)
+  // to the ROOT file "galice.root"
+  // containing the signal hit coordinates from simulation (tree TH).
+  // Eventually (argument "ibg"), background hits are also taken into account,
+  // from the ROOT file "bg.root".
+  //
+  // Arguments:
+  //   evNumber1 = first event number to digitize in file "galice.root"
+  //   evNumber2 = last event number to digitize in file "galice.root"
+  //   ibg       = 0 if no background hits to be taken into account;
+  //             = 1 if  background hits to be taken into account
+  //                     in file "bg.root"
+  //   bgr       : used only if "ibg" = 1
+  //             = number of events in the background file "bg.root";
+  //               the signal events are divided into "bgr" successive parts,
+  //               all events of each part are associated
+  //               with the same background event,
+  //               starting with event number 0,
+  //               incrementing it by 1 for the next part.
+  //               Strictly speaking, "bgr" can be smaller than
+  //               the number of events in the background file,
+  //               in which case one will only use
+  //               the first "bgr" events of the background file.
+  //               But it SHOULD NOT BE LARGER THAN
+  //               THE NUMBER OF EVENTS IN THE BACKGROUND FILE.
+  //
+  // Input file(s):
+  //   "galice.root" for signal
+  //   "bg.root" for background (used only if "ibg" = 1)
+  //
+  // Output file:
+  //   "galice.root"
+  //
+  //__________________________________________________________________________
+
 // Dynamically link some shared libs
 
    if (gClassTable->GetID("AliRun") < 0) {
@@ -19,24 +59,43 @@ void MUONdigit (Int_t evNumber1=0, Int_t evNumber2=9, Int_t ibg=1, Int_t bgr=10)
 
    if (!gAlice) {
        gAlice = (AliRun*)file->Get("gAlice");
-       if (gAlice) printf("AliRun object found on file\n");
+       if (gAlice) cout<<"AliRun object found on file"<<endl;
        if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
    }
+
    AliMUON *pMUON  = (AliMUON*) gAlice->GetModule("MUON");
    if (pMUON) {
 // creation
        AliMUONMerger* merger = new AliMUONMerger();
 // configuration
-       merger->SetMode(1);
-       merger->SetSignalEventNumber(0);
-       merger->SetBackgroundEventNumber(0);
-       merger->SetBackgroundFileName("bg.root");
-       
-// pass
+       if (ibg) {
+        merger->SetMode(ibg);
+        merger->SetBackgroundFileName("bg.root");
+       }
+       // pass
        pMUON->SetMerger(merger);
    }
 // Action !
-       gAlice->SDigits2Digits();
+//
+//   Loop over events              
+//
+    for (int nev=evNumber1; nev<= evNumber2; nev++) {
+       Int_t nparticles = gAlice->GetEvent(nev);
+       cout << "nev         " << nev <<endl;
+       cout << "nparticles  " << nparticles <<endl;
+       if (nev < evNumber1) continue;
+       if (nparticles <= 0) return;
+       Int_t nbgr_ev = Int_t(nev*bgr/(evNumber2+1));
+       
+       if (ibg) {
+           merger->SetBackgroundEventNumber(nbgr_ev);
+       }
+
+       gAlice->SDigits2Digits("MUON");
+
+// Tree writing was moved to AliMUON::SDigits2Digits();
+
+    }   // event loop 
 }