]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/its_common_foos.C
macros for ITS upgrade visualization
[u/mrichter/AliRoot.git] / EVE / alice-macros / its_common_foos.C
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #if !defined(__CINT__) || defined(__MAKECINT__)
11 #include <TString.h>
12 #include <TEveManager.h>
13 #include <TEveElement.h>
14
15 #include <AliEveITSModule.h>
16 #include <AliEveITSDigitsInfo.h>
17 #include <AliEveITSScaledModule.h>
18 #endif
19
20
21 void its_common_foos()
22 {}
23
24 AliEveITSModule* its_make_module(Int_t i, TEveElement* parent,
25                                  AliEveITSDigitsInfo*  di,
26                                  AliEveDigitScaleInfo* si,
27                                  Bool_t check_empty,
28                                  Bool_t scaled_modules)
29 {
30   AliEveITSModule* m = 0;
31
32   Int_t det_id = 0;
33   if (i > 239 && i < 500) det_id = 1;
34   else if (i >= 500)      det_id = 2;
35
36   if (!check_empty || di->HasData(i, det_id) || di->IsDead(i, det_id))
37   {
38     if (scaled_modules)
39       m = new AliEveITSScaledModule(i, di, si);
40     else
41       m = new AliEveITSModule(i, di);
42
43     // Before 5.26 ROOT did not draw frames of empty quad-sets.
44     // Bypass until we move there.
45     if (!di->HasData(i, det_id))
46     {
47       m->AddQuad(0,0,0,0);
48       m->RefitPlex();
49     }
50
51     if (parent)
52       parent->AddElement(m);
53   }
54
55   return m;
56 }
57
58 void its_display_raw_digits(AliEveITSDigitsInfo* di, Int_t mode,
59                             Bool_t check_empty    = kTRUE,
60                             Bool_t scaled_modules = kFALSE)
61 {
62   const TString bsSector = "Sector";
63   const TString bsStave  = "Stave";
64   const TString bsLadder = "Ladder";
65   TString sSector;
66   TString sStave;
67   TString sLadder;
68
69   Int_t  i=0;
70   Long_t nsec, nstave, nlad, nMod;
71
72   gEve->DisableRedraw();
73
74   AliEveDigitScaleInfo* si = 0;
75   if (scaled_modules)
76   {
77     si = new AliEveDigitScaleInfo;
78   }
79
80   if (mode & 1)
81   {
82     TEveElementList* l = new TEveElementList("SPD0");
83     l->SetTitle("SPDs' first layer");
84     l->SetMainColor(kRed);
85     gEve->AddElement(l);
86
87     for (nsec=0; nsec<10; nsec++)
88     {
89       TEveElementList* relSector = new TEveElementList(bsSector + nsec);
90       relSector->SetMainColor(kRed);
91       l->AddElement(relSector);
92
93       for (nstave=0; nstave<2; nstave++)
94       {
95         TEveElementList* relStave = new TEveElementList(bsStave + nstave);
96         relStave->SetMainColor(kRed);
97         relSector->AddElement(relStave);
98
99         for (nMod=0; nMod<4; ++nMod, ++i)
100         {
101           its_make_module(i, relStave, di, si, check_empty, scaled_modules);
102         }
103       }
104     }
105   }
106   else
107   {
108     i += 10*2*4;
109   }
110
111   if (mode & 2)
112   {
113     TEveElementList* l = new TEveElementList("SPD1");
114     l->SetTitle("SPDs' second layer");
115     l->SetMainColor(kRed);
116     gEve->AddElement(l);
117
118     for (nsec=0; nsec<10; nsec++)
119     {
120       TEveElementList* relSector = new TEveElementList(bsSector + nsec);
121       relSector->SetMainColor(kRed);
122       l->AddElement(relSector);
123
124       for (nstave=0; nstave<4; nstave++)
125       {
126         TEveElementList* relStave = new TEveElementList(bsStave + nstave);
127         relStave->SetMainColor(kRed);
128         relSector->AddElement(relStave);
129
130         for (nMod=0; nMod<4;  ++nMod, ++i)
131         {
132           its_make_module(i, relStave, di, si, check_empty, scaled_modules);
133         }
134       }
135     }
136   }
137   else
138   {
139     i += 10*4*4;
140   }
141
142   if (mode & 4)
143   {
144     TEveElementList* l = new TEveElementList("SDD2");
145     l->SetTitle("SDDs' first layer");
146     l->SetMainColor(kBlue);
147     gEve->AddElement(l);
148
149     for (nlad=0; nlad<14; nlad++)
150     {
151       TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
152       relLadder->SetMainColor(kBlue);
153       l->AddElement(relLadder);
154       for (nMod=0; nMod<6; ++nMod, ++i)
155       {
156         its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
157       }
158     }
159   }
160   else
161   {
162     i += 14*6;
163   }
164
165   if (mode & 8)
166   {
167     TEveElementList* l = new TEveElementList("SDD3");
168     l->SetTitle("SDDs' second layer");
169     l->SetMainColor(kBlue);
170     gEve->AddElement(l);
171
172     for (nlad=0; nlad<22; nlad++)
173     {
174       TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
175       relLadder->SetMainColor(kBlue);
176       l->AddElement(relLadder);
177       for (nMod=0; nMod<8;  ++nMod, ++i)
178       {
179         its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
180       }
181     }
182   }
183   else
184   {
185     i += 22*8;
186   }
187
188   if (mode & 16)
189   {
190     TEveElementList* l = new TEveElementList("SSD4");
191     l->SetTitle("SSDs' first layer");
192     l->SetMainColor(kGreen);
193     gEve->AddElement(l);
194
195     for (nlad=0; nlad<34; nlad++)
196     {
197       TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
198       relLadder->SetMainColor(kGreen);
199       l->AddElement(relLadder);
200       for (nMod=0; nMod<22; ++nMod, ++i)
201       {
202         its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
203       }
204     }
205   }
206   else
207   {
208     i += 34*22;
209   }
210
211   if (mode & 32)
212   {
213     TEveElementList* l = new TEveElementList("SSD5");
214     l->SetTitle("SSDs' second layer");
215     l->SetMainColor(kGreen);
216     gEve->AddElement(l);
217
218     for (nlad=0; nlad<38; nlad++)
219     {
220       TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
221       relLadder->SetMainColor(kGreen);
222       l->AddElement(relLadder);
223       for (nMod=0; nMod<25; ++nMod, ++i)
224       {
225         its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
226       }
227     }
228   }
229   else
230   {
231     i += 38*25;
232   }
233
234   gEve->EnableRedraw();
235 }