New class for ITS coordiante transformations used by AliITSgeom nearly
[u/mrichter/AliRoot.git] / ITS / ITSdigitsTest.C
1 #include "iostream.h"
2
3 void ITSdigitsTest (Int_t evNumber1=0,Int_t evNumber2=0) 
4 {
5 /////////////////////////////////////////////////////////////////////////
6 //   This macro is a small example of a ROOT macro
7 //   illustrating how to read the output of GALICE
8 //   and do some analysis.
9 //   
10 /////////////////////////////////////////////////////////////////////////
11
12 // Dynamically link some shared libs
13
14    if (gClassTable->GetID("AliRun") < 0) {
15       gROOT->LoadMacro("loadlibs.C");
16       loadlibs();
17    }
18
19 // Connect the Root Galice file containing Geometry, Kine and Hits
20
21    TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
22    if (!file) file = new TFile("galice.root");
23    file->ls();
24
25 // Get AliRun object from file or create it if not on file
26
27    if (!gAlice) {
28       gAlice = (AliRun*)file->Get("gAlice");
29       if (gAlice) printf("AliRun object found on file\n");
30       if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
31    }
32  
33 //
34 //   Loop over events 
35 //
36    Int_t Nh=0;
37    Int_t Nh1=0;
38    for (int nev=0; nev<= evNumber2; nev++) {
39      Int_t nparticles = gAlice->GetEvent(nev);
40      cout << "nev         " << nev <<endl;
41      cout << "nparticles  " << nparticles <<endl;
42      if (nev < evNumber1) continue;
43      if (nparticles <= 0) return;
44
45      TTree *TH = gAlice->TreeH();
46      Int_t ntracks = TH->GetEntries();
47      cout<<"ntracks "<<ntracks<<endl;
48
49    Int_t nbytes = 0;
50
51    AliITSdigitSSD  *ITSdigit;
52
53 // Get pointers to Alice detectors and Digits containers
54    AliITS *ITS  = (AliITS*)gAlice->GetModule("ITS");
55    TClonesArray *Particles = gAlice->Particles();
56    TTree *TD = gAlice->TreeD();
57    //TD->Print();
58    Int_t nent=TD->GetEntries();
59    printf("Found %d entries in the tree (must be one per module per event!)\n",nent);
60    if (ITS) {
61    TObjArray *fBranches=TD->GetListOfBranches();
62    
63      for (Int_t ich=0;ich<3;ich++) {
64        TBranch *branch = (TBranch*)fBranches->UncheckedAt(ich);
65        printf ("branch %p \n",branch);
66        printf ("branch %p entries %d \n",branch,branch->GetEntries());
67        TClonesArray *ITSdigits  = ITS->DigitsAddress(ich);
68           printf ("ITSdigits %p \n",ITSdigits);
69
70           if (ich != 2) continue;
71           for (Int_t mod=1; mod<nent; mod++) {
72             //Int_t nmodules=2269;
73             //for (Int_t mod=nent-nmodules; mod<nent; mod++) {
74               ITS->ResetDigits();
75               nbytes += TD->GetEvent(mod+1);
76               //nbytes += branch->GetEvent(mod); this works as well
77               Int_t ndigits = ITSdigits->GetEntries();
78               if (ndigits) printf("Found %d digits for module %d in det type %d \n",ndigits,mod,ich+1);
79
80               if (!ndigits) continue;
81               /*
82               for (Int_t digit=0;digit<ndigits;digit++) {
83                 ITSdigit   = (AliITSdigitSPD*)ITSdigits->UncheckedAt(digit);
84                 printf("%d %d %d %d \n",ITSdigit->fCoord1,ITSdigit->fCoord2,ITSdigit->fTracks[0],ITSdigit->fTracks[1]);
85               */
86               /*
87               for (Int_t digit=0;digit<ndigits;digit++) {
88                 ITSdigit   = (AliITSdigitSDD*)ITSdigits->UncheckedAt(digit);
89                 printf("%d %d %d %d %f %f\n",ITSdigit->fCoord1,ITSdigit->fCoord2,ITSdigit->fSignal,ITSdigit->fTracks[0],ITSdigit->fTcharges[0],ITSdigit->fPhysics);
90               */
91               for (Int_t digit=0;digit<ndigits;digit++) {
92                 ITSdigit   = (AliITSdigitSSD*)ITSdigits->UncheckedAt(digit);
93                 printf("%d %d %d %d %d %d \n",ITSdigit->fCoord1,ITSdigit->fCoord2,ITSdigit->fSignal,ITSdigit->fTracks[0],ITSdigit->fTracks[1],ITSdigit->fTracks[2]);
94
95               }
96           }        
97      }
98    }   // end if ITS
99
100    }   // event loop 
101
102      cout<<"END  test for digits "<<endl;
103
104      file->Close();   
105 }
106
107
108