10 #ifndef __RUN_PYTHIA_DISPLAY__
14 TString dir = gSystem->UnixPathName(__FILE__);
15 dir.ReplaceAll(
"pythia_display.C",
"");
16 dir.ReplaceAll(
"/./",
"/");
17 gROOT->LoadMacro(dir +
"MultiView.C+");
19 #ifndef G__WIN32 // libPythia6 is a static library on Windoze
20 if (gSystem->Load(
"libPythia6") < 0)
22 Error(
"pythia_display()",
23 "Could not load 'libPythia6', make sure it is available!");
27 gSystem->Load(
"libEGPythia6");
29 gROOT->ProcessLine(
"#define __RUN_PYTHIA_DISPLAY__ 1");
30 gROOT->ProcessLine(
"#include \"pythia_display.C\"");
31 gROOT->ProcessLine(
"run_pythia_display()");
32 gROOT->ProcessLine(
"#undef __RUN_PYTHIA_DISPLAY__");
41 const Double_t kR_min = 240;
42 const Double_t kR_max = 250;
43 const Double_t kZ_d = 300;
46 const Double_t kMagField = 4;
49 const Color_t kColors[3] = { kRed, kGreen, kYellow };
59 TPythia6 *g_pythia = 0;
63 MultiView* gMultiView = 0;
65 TEveTrackList *gTrackList = 0;
71 void pythia_next_event();
72 void pythia_make_gui();
78 void run_pythia_display()
82 Warning(
"pythia_display()",
"Already initialized.");
90 g_pythia =
new TPythia6;
91 TPythia6& P = * g_pythia;
99 P.SetPMAS(25, 1, 180);
112 for (Int_t i = 210; i <= 288; ++i)
114 P.SetMDME(225, 1, 1);
117 for (Int_t i = 174; i <= 189; ++i)
119 P.SetMDME(184, 1, 1);
122 P.Initialize(
"cms",
"p",
"p", 14000);
128 TEveManager::Create();
130 TEveElementList *fake_geom =
new TEveElementList(
"Geometry");
134 b =
new TEveGeoShape(
"Barell 1");
135 b->SetShape(
new TGeoTube(kR_min, kR_max, kZ_d));
136 b->SetMainColor(kCyan);
137 b->SetMainTransparency(80);
138 fake_geom->AddElement(b);
140 b =
new TEveGeoShape(
"Barell 2");
141 b->SetShape(
new TGeoTube(2*kR_min, 2*kR_max, 2*kZ_d));
142 b->SetMainColor(kPink-3);
143 b->SetMainTransparency(80);
144 fake_geom->AddElement(b);
146 gEve->AddGlobalElement(fake_geom);
149 gMultiView =
new MultiView;
151 gMultiView->ImportGeomRPhi(fake_geom);
152 gMultiView->ImportGeomRhoZ(fake_geom);
154 gEve->GetBrowser()->GetTabRight()->SetTab(1);
156 gTrackList =
new TEveTrackList(
"Pythia Tracks");
157 gTrackList->SetMainColor(kYellow);
158 gTrackList->SetMarkerColor(kRed);
159 gTrackList->SetMarkerStyle(4);
160 gTrackList->SetMarkerSize(0.5);
161 gEve->AddElement(gTrackList);
163 TEveTrackPropagator* trkProp = gTrackList->GetPropagator();
164 trkProp->SetMagField(kMagField);
165 trkProp->SetMaxR(2*kR_max);
166 trkProp->SetMaxZ(2*kZ_d);
174 gEve->Redraw3D(kTRUE);
182 void pythia_next_event()
184 gTrackList->DestroyElements();
186 TPythia6& P = * g_pythia;
190 int nh = P.GetMSTU(72);
196 TEveTrackPropagator *trkProp = gTrackList->GetPropagator();
197 TClonesArray &MC = * (TClonesArray*) P.GetListOfParticles();
198 for (Int_t i = 0; i < 7; ++i)
200 TMCParticle& p = (TMCParticle&)*MC[nh+i];
201 TParticle pb(p.GetKF(), p.GetKS(), 0, 0,
202 p.GetFirstChild()-nh-1, p.GetLastChild()-nh-1,
203 p.GetPx(), p.GetPy(), p.GetPz(), p.GetEnergy(),
204 p.GetVx(), p.GetVy(), p.GetVz(), p.GetTime());
206 TEveTrack* track =
new TEveTrack(&pb, i, trkProp);
207 track->SetName(Form(
"%s [%d]", pb.GetName(), i));
208 track->SetStdTitle();
209 track->SetAttLineAttMarker(gTrackList);
211 track->SetLineColor(kColors[0]);
213 track->SetLineColor(kColors[1]);
215 gTrackList->AddElement(track);
228 gTrackList->MakeTracks();
231 TEveElement* top = gEve->GetCurrentEvent();
233 gMultiView->DestroyEventRPhi();
234 gMultiView->ImportEventRPhi(top);
236 gMultiView->DestroyEventRhoZ();
237 gMultiView->ImportEventRhoZ(top);
258 void pythia_make_gui()
262 TEveBrowser* browser = gEve->GetBrowser();
263 browser->StartEmbedding(TRootBrowser::kLeft);
265 TGMainFrame* frmMain =
new TGMainFrame(gClient->GetRoot(), 1000, 600);
266 frmMain->SetWindowName(
"XX GUI");
267 frmMain->SetCleanup(kDeepCleanup);
269 TGHorizontalFrame* hf =
new TGHorizontalFrame(frmMain);
272 TString icondir( Form(
"%s/icons/", gSystem->Getenv(
"ROOTSYS")) );
273 TGPictureButton* b = 0;
274 EvNavHandler *fh =
new EvNavHandler;
276 b =
new TGPictureButton(hf, gClient->GetPicture(icondir+
"GoBack.gif"));
277 b->SetEnabled(kFALSE);
278 b->SetToolTipText(
"Go to previous event - not supported.");
280 b->Connect(
"Clicked()",
"EvNavHandler", fh,
"Bck()");
282 b =
new TGPictureButton(hf, gClient->GetPicture(icondir+
"GoForward.gif"));
283 b->SetToolTipText(
"Generate new event.");
285 b->Connect(
"Clicked()",
"EvNavHandler", fh,
"Fwd()");
287 frmMain->AddFrame(hf);
289 frmMain->MapSubwindows();
291 frmMain->MapWindow();
293 browser->StopEmbedding();
294 browser->SetTabTitle(
"Event Control", 0);