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