]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/MUON_displayData.C
Read clusters from ESD or RecPoints
[u/mrichter/AliRoot.git] / EVE / alice-macros / MUON_displayData.C
1 // $Id: MUON_display.C 24485 2008-03-13 15:27:38Z mtadel $
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 class AliEveMUONData;
11 class AliEveEventManager;
12
13 AliEveMUONData     *g_muon_data       = 0;
14 AliEveEventManager *g_muon_last_event = 0;
15
16 Int_t  g_currentEvent = -1;
17 Bool_t g_fromRaw      = kFALSE;
18
19 AliMagFMaps *g_field = 0;
20
21 void MUON_displayData(Bool_t fromRaw = kFALSE, Bool_t showTracks = kTRUE, Bool_t clustersFromESD = kTRUE)
22 {
23   //
24   // display from real data, eventually with recreated digits
25   // tracks: ESD
26   // 
27
28   if (!AliMpSegmentation::Instance()) AliMpCDB::LoadMpSegmentation();
29   if (!AliMpDDLStore::Instance())     AliMpCDB::LoadDDLStore();
30
31   if (g_field == 0) {
32     printf("Loading field map...\n");
33     g_field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG);
34     AliTracker::SetFieldMap(g_field, kFALSE);
35     AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap());
36   }
37
38   TTree* dt = 0;
39   TTree* ct = 0;
40   TTree* ht = 0;
41
42   if (gAliEveEvent == 0) {
43     printf("No alieve event: use alieve_init(...) \n");
44     return;
45   }
46
47   if (g_currentEvent == gAliEveEvent->GetEventId()) {
48     if (g_fromRaw == fromRaw) {
49       printf("Same event... \n");
50       return;
51     } else {
52       if (g_fromRaw) {
53         printf("Same event with digits.\n");
54         gAliEveEvent->GotoEvent(g_currentEvent);
55       } else {
56         printf("Same event with raw.\n");
57         gAliEveEvent->GotoEvent(g_currentEvent);
58       }
59     }
60   }
61
62   g_fromRaw = fromRaw;
63
64   TString dataPath = TString(gAliEveEvent->GetTitle());
65   dataPath.Append("/rawmuon.root");
66
67   AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
68   g_muon_data = new AliEveMUONData;
69
70   if (!fromRaw) {
71     rl->LoadDigits("MUON");
72     dt = rl->GetTreeD("MUON", false);
73     if (dt == 0) {
74       cout << "No digits produced!" << endl;
75     } else {
76       cout << "With aliroot digits!" << endl;
77       g_muon_data->LoadDigits(dt);
78     }
79   } else {
80     if (gSystem->AccessPathName(dataPath.Data(),kFileExists)) {
81       cout << "No raw data produced!" << endl;
82     } else {
83       cout << "With raw digits!" << endl;
84       g_muon_data->LoadRaw(dataPath.Data());
85     }
86   }
87
88   TString esdDataPath = TString(gAliEveEvent->GetTitle());
89   esdDataPath.Append("/AliESDs.root");
90   if (clustersFromESD) {
91     g_muon_data->LoadRecPointsFromESD(esdDataPath.Data());
92   } else {
93     rl->LoadRecPoints("MUON");
94     ct = rl->GetTreeR("MUON", false);
95     g_muon_data->LoadRecPoints(ct);
96   }
97   
98   g_muon_last_event = gAliEveEvent;
99
100   g_currentEvent = g_muon_last_event->GetEventId();
101
102   gStyle->SetPalette(1, 0);
103
104   gEve->DisableRedraw();
105
106   TEveElementList* l = new TEveElementList("MUONChambers");
107   l->SetTitle("MUON chambers");
108   l->SetMainColor(Color_t(2));
109   gEve->AddElement(l);
110
111   for (Int_t ic = 0; ic < 14; ic++)
112   {
113     AliEveMUONChamber* mucha = new AliEveMUONChamber(ic);
114
115     mucha->SetFrameColor(2);
116     mucha->SetChamberID(ic);
117
118     mucha->SetDataSource(g_muon_data);
119
120     gEve->AddElement(mucha, l);
121   }
122
123   if (showTracks) {
124     MUON_ESD_tracks();
125   }
126
127   gEve->Redraw3D(kTRUE);
128   gEve->EnableRedraw();
129 }
130
131 //______________________________________________________________________________
132 void MUON_ESD_tracks()
133 {
134   AliESDEvent* esd = AliEveEventManager::AssertESD();
135
136   TEveTrackList* lt = new TEveTrackList("ESD-Tracks");
137   lt->SetMainColor(Color_t(6));
138   //lt->SetMUON();
139
140   gEve->AddElement(lt);
141
142   AliESDMuonTrack *mt;
143   TEveRecTrack rt;
144   Int_t nMuonTracks = esd->GetNumberOfMuonTracks();
145   Int_t nTrack = 0;
146   for (Int_t n = 0; n < nMuonTracks; n++)
147   {
148     mt = esd->GetMuonTrack(n);
149
150     if (mt->GetNHit() == 0) continue;
151     nTrack++;
152
153     rt.fLabel = n;
154
155     AliEveMUONTrack* track = new AliEveMUONTrack(&rt, lt->GetPropagator());
156
157     track->MakeESDTrack(mt);
158
159     gEve->AddElement(track, lt);
160   }
161
162 }
163