]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/its_raw.C
01af8dcf56d1cb86843b7666bc558df9dcc2823d
[u/mrichter/AliRoot.git] / EVE / alice-macros / its_raw.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 void its_raw(const char *input = "rawdata.root",
11              Int_t  mode       = 63,
12              Int_t  event      = 0,
13              Bool_t accumulate = kFALSE)
14 {
15   if (gSystem->AccessPathName(input, kReadPermission))
16   {
17     Error("its_raw", "file '%s' not found.", input);
18     return;
19   }
20
21   AliCDBManager::Instance()->SetRun(0);
22   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
23
24   AliRawReader *rawReader = NULL;
25   TString fileName(input);
26   if (fileName.EndsWith("/")) {
27     rawReader = new AliRawReaderFile(fileName);
28   } else if (fileName.EndsWith(".root")) {
29     rawReader = new AliRawReaderRoot(fileName);
30   } else if (!fileName.IsNull()) {
31     rawReader = new AliRawReaderDate(fileName);
32   }
33
34   AliEveITSDigitsInfo* di = new AliEveITSDigitsInfo();
35
36   if (accumulate) AliLog::SetGlobalLogLevel(AliLog::kError);
37   Int_t ev = 0;
38   do {
39     if (ev % 100 == 0) printf("AliEveEventManager: %d\n", ev);
40     if (rawReader->NextEvent() == kFALSE)
41     {
42       Error("its_raw", "Reading event %d failed (requested event %d).", ev, event);
43       if (accumulate)
44         break;
45       else
46         return;
47     }
48     if (accumulate) di->ReadRaw(rawReader,mode);
49   } while (++ev < event);
50
51   if ( ! accumulate) di->ReadRaw(rawReader,mode);
52
53   di->Dump();
54
55   delete rawReader;
56   // Could initialize AliEveITSModule statics (?)
57
58   AliITSgeom* g = di->fGeom;
59
60   gStyle->SetPalette(1, 0);
61   // Initialize palettes (?)
62
63   gEve->DisableRedraw();
64
65   TString sSector;
66   TString bsSector="Sector";
67   TString sStave;
68   TString bsStave="Stave";
69   TString sLadder;
70   TString bsLadder="Ladder";
71
72   Int_t i=0;
73   Int_t nsec, nstave, nlad, nMod;
74
75   if (mode & 1) {
76     TEveElementList* l = new TEveElementList("SPD0");
77     l->SetTitle("SPDs' first layer");
78     l->SetMainColor((Color_t)2);
79     gEve->AddElement(l);
80     for (nsec=0; nsec<10; nsec++) {
81       sSector  = bsSector;
82       sSector += nsec;
83       TEveElementList* relSector = new TEveElementList(sSector.Data());
84       relSector->SetMainColor((Color_t)2);
85       gEve->AddElement(relSector, l);
86       for (nstave=0; nstave<2; nstave++){
87         sStave  = bsStave;
88         sStave += nstave;
89         TEveElementList* relStave = new TEveElementList(sStave.Data());
90         relStave->SetMainColor((Color_t)2);
91         gEve->AddElement(relStave, relSector);
92         for (nMod=0; nMod<4; nMod++)
93         {
94           if (di->GetDigits(i, 0) && di->GetDigits(i, 0)->GetEntriesFast() > 0)
95           {
96             AliEveITSModule* m = new AliEveITSModule(i, di);
97             gEve->AddElement(m, relStave);
98           }
99           ++i;
100         }
101       }
102     }
103   } else {
104     i += 10*2*4;
105   }
106
107   if (mode & 2) {
108     TEveElementList* l = new TEveElementList("SPD1");
109     l->SetTitle("SPDs' second layer");
110     l->SetMainColor((Color_t)2);
111     gEve->AddElement(l);
112
113     for (nsec=0; nsec<10; nsec++) {
114       sSector  = bsSector;
115       sSector += nsec;
116       TEveElementList* relSector = new TEveElementList(sSector.Data());
117       relSector->SetMainColor((Color_t)2);
118       gEve->AddElement(relSector, l);
119       for (nstave=0; nstave<4; nstave++){
120         sStave  = bsStave;
121         sStave += nstave;
122         TEveElementList* relStave = new TEveElementList(sStave.Data());
123         relStave->SetMainColor((Color_t)2);
124         gEve->AddElement(relStave, relSector);
125         for (nMod=0; nMod<4; nMod++)
126         {
127           if (di->GetDigits(i, 0) && di->GetDigits(i, 0)->GetEntriesFast() > 0)
128           {
129             AliEveITSModule* m = new AliEveITSModule(i, di);
130             gEve->AddElement(m, relStave);
131           }
132           ++i;
133         }
134       }
135     }
136   } else {
137     i += 10*4*4;
138   }
139
140   if (mode & 4) {
141     TEveElementList* l = new TEveElementList("SDD2");
142     l->SetTitle("SDDs' first layer");
143     l->SetMainColor((Color_t)3);
144     gEve->AddElement(l);
145
146     for (nlad=0; nlad<14; nlad++) {
147       sLadder  = bsLadder;
148       sLadder += nlad;
149       TEveElementList* relLadder = new TEveElementList(sLadder.Data());
150       relLadder->SetMainColor((Color_t)3);
151       gEve->AddElement(relLadder, l);
152       for (nMod=0; nMod<6; nMod++) {
153         AliEveITSModule* m = new AliEveITSModule(i++, di);
154         gEve->AddElement(m, relLadder);
155       }
156     }
157   } else {
158     i += 14*6;
159   }
160
161   if (mode & 8) {
162     TEveElementList* l = new TEveElementList("SDD3");
163     l->SetTitle("SDDs' second layer");
164     l->SetMainColor((Color_t)3);
165     gEve->AddElement(l);
166     for (nlad=0; nlad<22; nlad++) {
167       sLadder  = bsLadder;
168       sLadder += nlad;
169       TEveElementList* relLadder = new TEveElementList(sLadder.Data());
170       relLadder->SetMainColor((Color_t)3);
171       gEve->AddElement(relLadder, l);
172       for (nMod=0; nMod<8; nMod++) {
173         AliEveITSModule* m = new AliEveITSModule(i++, di);
174         gEve->AddElement(m, relLadder);
175       }
176     }
177   } else {
178     i += 22*8;
179   }
180
181   if (mode & 16) {
182     TEveElementList* l = new TEveElementList("SSD4");
183     l->SetTitle("SSDs' first layer");
184     l->SetMainColor((Color_t)4);
185     gEve->AddElement(l);
186     for (nlad=0; nlad<34; nlad++) {
187       sLadder  = bsLadder;
188       sLadder += nlad;
189       TEveElementList* relLadder = new TEveElementList(sLadder.Data());
190       relLadder->SetMainColor((Color_t)4);
191       gEve->AddElement(relLadder, l);
192       for (nMod=0; nMod<22; nMod++) {
193         AliEveITSModule* m = new AliEveITSModule(i++, di);
194         gEve->AddElement(m, relLadder);
195       }
196     }
197   } else {
198     i += 34*22;
199   }
200
201   if (mode & 32) {
202     TEveElementList* l = new TEveElementList("SSD5");
203     l->SetTitle("SSDs' second layer");
204     l->SetMainColor((Color_t)4);
205     gEve->AddElement(l);
206     for (nlad=0; nlad<38; nlad++) {
207       sLadder  = bsLadder;
208       sLadder += nlad;
209       TEveElementList* relLadder = new TEveElementList(sLadder.Data());
210       relLadder->SetMainColor((Color_t)4);
211       gEve->AddElement(relLadder, l);
212       for (nMod=0; nMod<25; nMod++) {
213         AliEveITSModule* m = new AliEveITSModule(i++, di);
214         gEve->AddElement(m, relLadder);
215       }
216     }
217   } else {
218     i += 38*25;
219   }
220
221   gEve->EnableRedraw();
222 }