namespace {
- typedef std::map<Int_t, TEveTrack*> TrackMap_t;
+ // Map to store label-to-track association.
+ //
+ // multimap is used as there are cases when initial particles (in
+ // particular resonances) are not assigned proper status-codes
+ // and can thus be found several times in the eve-track-list.
+
+ typedef std::multimap<Int_t, TEveTrack*> TrackMap_t;
+ typedef std::multimap<Int_t, TEveTrack*>::const_iterator TrackMap_ci;
void MapTracks(TrackMap_t& map, TEveElement* cont, Bool_t recurse)
{
TEveElement::List_i i = cont->BeginChildren();
while (i != cont->EndChildren()) {
TEveTrack* track = dynamic_cast<TEveTrack*>(*i);
- map[track->GetLabel()] = track;
+ map.insert(std::make_pair(track->GetLabel(), track));
if (recurse)
MapTracks(map, track, recurse);
++i;
treeTR->GetEntry(te);
Int_t last_label = -1;
- TrackMap_t::iterator iter = map.end();
+ std::pair<TrackMap_ci, TrackMap_ci> range;
Int_t nArrEntries = arr->GetEntriesFast();
// printf("tree-entry %d, n-arr-entries %d\n", te, nArrEntries);
if (label != last_label)
{
- iter = map.find(label);
+ range = map.equal_range(label);
last_label = label;
}
- if (iter != map.end())
+ for (TrackMap_ci i = range.first; i != range.second; ++i)
{
- iter->second->AddPathMark
+ i->second->AddPathMark
(TEvePathMark(isRef ? TEvePathMark::kReference : TEvePathMark::kDecay,
TEveVector(atr->X(), atr->Y(), atr->Z()),
TEveVector(atr->Px(), atr->Py(), atr->Pz()),
Warning("on_new_event", "g_esd_tracks_by_category_container not initialized.");
}
- AliESDEvent* esd = AliEveEventManager::AssertESD();
+ Double_t x[3] = { 0, 0, 0};
+
+ if (AliEveEventManager::HasESD())
{
+ AliESDEvent* esd = AliEveEventManager::AssertESD();
+ esd->GetPrimaryVertex()->GetXYZ(x);
+
TTimeStamp ts(esd->GetTimeStamp());
TString win_title("Eve Main Window -- Timestamp: ");
win_title += ts.AsString("s");
win_title += esd->GetEventNumberInFile();
gEve->GetBrowser()->SetWindowName(win_title);
}
- Double_t x[3];
- esd->GetPrimaryVertex()->GetXYZ(x);
TEveElement* top = gEve->GetCurrentEvent();
void visscan_init()
{
TEveUtil::LoadMacro("alieve_init.C");
- alieve_init(".", -1);
+ alieve_init(".", -1, 0, 0, 0, 0, kFALSE, kTRUE, kFALSE, kFALSE);
AliEveTrackFitter* fitter = new AliEveTrackFitter();
gEve->AddToListTree(fitter, 1);