2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
11 class AliEveEventManager;
13 AliEveMUONData *g_muon_data = 0;
15 Int_t g_currentEvent = -1;
16 Bool_t g_fromRaw = kFALSE;
18 void MUON_displayData(Bool_t fromRaw = kFALSE, Bool_t showTracks = kTRUE, Bool_t clustersFromESD = kTRUE)
21 // display from real data, eventually with recreated digits
25 if (!AliMpSegmentation::Instance()) AliMpCDB::LoadMpSegmentation();
26 if (!AliMpDDLStore::Instance()) AliMpCDB::LoadDDLStore();
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);
33 // set the magnetic field for track extrapolations
34 AliMUONTrackExtrap::SetField();
40 if (AliEveEventManager::GetMaster() == 0) {
41 printf("No alieve event: use alieve_init(...) \n");
45 if (g_currentEvent == AliEveEventManager::GetMaster()->GetEventId()) {
46 if (g_fromRaw == fromRaw) {
47 printf("Same event... \n");
51 printf("Same event with digits.\n");
52 AliEveEventManager::GetMaster()->GotoEvent(g_currentEvent);
54 printf("Same event with raw.\n");
55 AliEveEventManager::GetMaster()->GotoEvent(g_currentEvent);
62 TString dataPath = TString(AliEveEventManager::GetMaster()->GetTitle());
63 dataPath.Append("/raw.root");
65 AliRunLoader* rl = AliEveEventManager::AssertRunLoader();
66 g_muon_data = new AliEveMUONData;
69 rl->LoadDigits("MUON");
70 dt = rl->GetTreeD("MUON", false);
72 cout << "No digits produced!" << endl;
74 cout << "With aliroot digits!" << endl;
75 g_muon_data->LoadDigits(dt);
78 if (gSystem->AccessPathName(dataPath.Data(),kFileExists)) {
79 cout << "No raw data produced!" << endl;
81 cout << "With raw digits!" << endl;
82 g_muon_data->LoadRaw(dataPath.Data());
86 TString esdDataPath = TString(AliEveEventManager::GetMaster()->GetTitle());
87 esdDataPath.Append("/AliESDs.root");
88 if (clustersFromESD) {
89 g_muon_data->LoadRecPointsFromESD(esdDataPath.Data());
91 rl->LoadRecPoints("MUON");
92 ct = rl->GetTreeR("MUON", false);
93 g_muon_data->LoadRecPoints(ct);
96 g_currentEvent = AliEveEventManager::GetMaster()->GetEventId();
98 gStyle->SetPalette(1, 0);
100 gEve->DisableRedraw();
102 TEveElementList* l = new TEveElementList("MUONChambers");
103 l->SetTitle("MUON chambers");
107 for (Int_t ic = 0; ic < 14; ic++)
109 AliEveMUONChamber* mucha = new AliEveMUONChamber(ic);
111 mucha->SetFrameColor(2);
112 mucha->SetChamberID(ic);
114 mucha->SetDataSource(g_muon_data);
116 l->AddElement(mucha);
123 gEve->Redraw3D(kTRUE);
124 gEve->EnableRedraw();
127 //______________________________________________________________________________
128 void MUON_ESD_tracks()
130 AliESDEvent* esd = AliEveEventManager::AssertESD();
132 // TEveTrackList* lt = new TEveTrackList("ESD-Tracks");
133 AliEveMUONTrackList* lt = new TEveTrackList("ESD-Tracks");
137 gEve->AddElement(lt);
141 Int_t nMuonTracks = esd->GetNumberOfMuonTracks();
143 for (Int_t n = 0; n < nMuonTracks; n++)
145 mt = esd->GetMuonTrack(n);
147 if (mt->GetNHit() == 0) continue;
152 AliEveMUONTrack* track = new AliEveMUONTrack(&rt, lt->GetPropagator());
154 track->MakeESDTrack(mt);
156 lt->AddElement(track);
158 lt->HackMomentumLimits();