void pythia_next_event() { gTrackList->DestroyElements(); TPythia6& P = * g_pythia; P.GenerateEvent(); int nh = P.GetMSTU(72); // printf("N = %d, Nhard = %d :: NumSec = %d, separators (%d,%d,%d,%d)\n", // P.GetN(), nh, P.GetMSTU(70), P.GetMSTU(71), P.GetMSTU(72), P.GetMSTU(73), P.GetMSTU(74)); // 2->2 hard postfrag final TEveTrackPropagator *trkProp = gTrackList->GetPropagator(); TClonesArray &MC = * (TClonesArray*) P.GetListOfParticles(); for (Int_t i = 0; i < 7; ++i) { TMCParticle& p = * MC[nh+i]; TParticle pb(p.GetKF(), p.GetKS(), 0, 0, p.GetFirstChild()-nh-1, p.GetLastChild()-nh-1, p.GetPx(), p.GetPy(), p.GetPz(), p.GetEnergy(), p.GetVx(), p.GetVy(), p.GetVz(), p.GetTime()); TEveTrack* track = new TEveTrack(&pb, i, trkProp); track->SetName(Form("%s [%d]", pb.GetName(), i)); track->SetStdTitle(); track->SetAttLineAttMarker(gTrackList); if (i == 0) track->SetLineColor(kColors[0]); else if (i <= 2) track->SetLineColor(kColors[1]); gTrackList->AddElement(track); /* printf("%d - %d %d %d %d %d %d\n", i, p.GetKF(), p.GetKS(), 0, 0, p.GetFirstChild()-nh-1, p.GetLastChild()-nh-1); printf("%d - %f %f %f %f\n", i, p.GetPx(), p.GetPy(), p.GetPz(), p.GetEnergy(), printf("%d - %f %f %f %f\n", i, p.GetVx(), p.GetVy(), p.GetVz(), p.GetTime()); */ } gTrackList->MakeTracks(); TEveElement* top = gEve->GetCurrentEvent(); gMultiView->DestroyEventRPhi(); gMultiView->ImportEventRPhi(top); gMultiView->DestroyEventRhoZ(); gMultiView->ImportEventRhoZ(top); gEve->Redraw3D(); }
void ProcessVisualize() { TEveManager::Create(); TEvePointSetArray *evp = new TEvePointSetArray("Event points", "Event points"); TEvePointSetArray *chp = new TEvePointSetArray("Chamber points", "Chamber points"); evp->SetMarkerColor(kGreen); evp->InitBins("Event cause", 8, 0.5, 8.5); chp->SetMarkerColor(kCyan); chp->InitBins("Nothing", 1, -0.5, 0.5); TEveTrackList *list = new TEveTrackList(); list->SetLineColor(kMagenta); list->SetName("Incident tracks"); TEveTrackPropagator* prop = list->GetPropagator(); prop->SetMaxR(2000); prop->SetMaxZ(4000); int j = 0; BOOST_FOREACH(event_t &e, vis_result) { evp->Fill(e.i1.x, e.i1.y, e.i1.z, e.event_cause); chp->Fill(e.inc.a(0), e.inc.a(1), e.inc.a(2), 0); chp->Fill(e.l.a(0), e.l.a(1), e.l.a(2), 0); chp->Fill(e.r.a(0), e.r.a(1), e.r.a(2), 0); if ((++j % 1000) == 0) { TEveTrack *track = make_track(e.inc, prop); track->SetLineColor(list->GetLineColor()); list->AddElement(track); track = make_track(e.l, prop); track->SetLineColor(list->GetLineColor()); list->AddElement(track); track = make_track(e.r, prop); track->SetLineColor(list->GetLineColor()); list->AddElement(track); } }