d5a17faf |
1 | void digitsAna () { |
99d5402e |
2 | |
3 | ///////////////////////////////////////////////////////////////////////// |
4 | // |
5 | // Example macro for the analysis of the TRD digits and the use |
6 | // of the AliTRDmatrix class. |
7 | // |
8 | ///////////////////////////////////////////////////////////////////////// |
9 | |
10 | // Dynamically link some shared libs |
11 | if (gClassTable->GetID("AliRun") < 0) { |
12 | gROOT->LoadMacro("loadlibs.C"); |
13 | loadlibs(); |
14 | } |
15 | |
16 | // Input file name |
d5a17faf |
17 | Char_t *alifile = "galice_v1.root"; |
99d5402e |
18 | |
19 | // Event number |
20 | Int_t nEvent = 0; |
21 | |
22 | // Define the objects |
d5a17faf |
23 | AliTRDv1 *TRD; |
99d5402e |
24 | TClonesArray *TRDDigits; |
25 | AliTRDdigit *OneTRDDigit; |
26 | |
27 | // Connect the AliRoot file containing Geometry, Kine, Hits, and Digits |
28 | TFile *gafl = (TFile*) gROOT->GetListOfFiles()->FindObject(alifile); |
29 | if (!gafl) { |
30 | cout << "Open the ALIROOT-file " << alifile << endl; |
31 | gafl = new TFile(alifile); |
32 | } |
33 | else { |
34 | cout << alifile << " is already open" << endl; |
35 | } |
36 | |
37 | // Get AliRun object from file or create it if not on file |
38 | if (!gAlice) { |
39 | gAlice = (AliRun*) gafl->Get("gAlice"); |
40 | if (gAlice) |
41 | cout << "AliRun object found on file" << endl; |
42 | else |
43 | gAlice = new AliRun("gAlice","Alice test program"); |
44 | } |
45 | |
46 | // Import the Trees for the event nEvent in the file |
47 | Int_t nparticles = gAlice->GetEvent(nEvent); |
48 | if (nparticles <= 0) break; |
49 | |
50 | // Get the pointer to the hit-tree |
51 | TTree *DigitsTree = gAlice->TreeD(); |
52 | |
53 | // Get the pointer to the detector classes |
d5a17faf |
54 | TRD = (AliTRDv1*) gAlice->GetDetector("TRD"); |
99d5402e |
55 | // Get the pointer to the hit container |
56 | if (TRD) TRDDigits = TRD->Digits(); |
57 | |
58 | // Define the detector matrix for one chamber (Sector 6, Chamber 3, Plane 1) |
59 | const Int_t iSec = 6; |
60 | const Int_t iCha = 3; |
61 | const Int_t iPla = 1; |
62 | Int_t rowMax = TRD->GetRowMax(iPla,iCha); |
63 | Int_t colMax = TRD->GetColMax(iPla); |
64 | Int_t timeMax = TRD->GetTimeMax(); |
65 | cout << " rowMax = " << rowMax |
66 | << " colMax = " << colMax |
67 | << " timeMax = " << timeMax << endl; |
68 | AliTRDmatrix *TRDMatrix = new AliTRDmatrix(rowMax,colMax,timeMax,iSec,iCha,iPla); |
69 | |
70 | Int_t nEntries = DigitsTree->GetEntries(); |
71 | cout << "Number of entries in digits tree = " << nEntries << endl; |
72 | |
73 | // Loop through all entries in the tree |
74 | Int_t nbytes; |
75 | for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) { |
76 | |
77 | cout << "iEntry = " << iEntry << endl; |
78 | |
79 | // Import the tree |
80 | gAlice->ResetDigits(); |
81 | nbytes += DigitsTree->GetEvent(iEntry); |
82 | |
83 | // Get the number of digits in the detector |
84 | Int_t nTRDDigits = TRDDigits->GetEntriesFast(); |
85 | cout << " nTRDDigits = " << nTRDDigits << endl; |
86 | |
87 | // Loop through all TRD digits |
88 | for (Int_t iTRDDigits = 0; iTRDDigits < nTRDDigits; iTRDDigits++) { |
89 | |
90 | // Get the information for this digit |
91 | OneTRDDigit = (AliTRDdigit*) TRDDigits->UncheckedAt(iTRDDigits); |
92 | Int_t signal = OneTRDDigit->fSignal; |
93 | Int_t sector = OneTRDDigit->fSector; |
94 | Int_t chamber = OneTRDDigit->fChamber; |
95 | Int_t plane = OneTRDDigit->fPlane; |
96 | Int_t row = OneTRDDigit->fRow; |
97 | Int_t col = OneTRDDigit->fCol; |
98 | Int_t time = OneTRDDigit->fTime; |
99 | |
100 | // Fill the detector matrix |
101 | if (signal > 1) { |
102 | TRDMatrix->SetSignal(row,col,time,signal); |
103 | } |
104 | |
105 | } |
106 | |
107 | } |
108 | |
109 | // Display the detector matrix |
110 | TRDMatrix->Draw(); |
111 | TRDMatrix->DrawRow(18); |
112 | TRDMatrix->DrawCol(58); |
113 | TRDMatrix->DrawTime(20); |
114 | |
115 | } |