4 #include "G4ParticleTable.hh" 28 QTabWidget* BeamType =
new QTabWidget;
33 BeamType->addTab(pbeamtab, tr(
"Primary Particle"));
34 BeamType->addTab(lbeamtab, tr(
"Primary Beam"));
35 BeamType->addTab(lbeamtab2, tr(
"Secondary Beam"));
37 QPushButton *BeamOn =
new QPushButton(tr(
"Beam On"));
38 connect ( BeamOn , SIGNAL( pressed() ),
this, SLOT( beamOn() ) );
40 QPushButton *BeamE2S =
new QPushButton(tr(
"Beam Every 2 seconds"));
41 connect ( BeamE2S , SIGNAL( pressed() ),
this, SLOT( beam_every2sec() ) );
45 QGroupBox *neventsGroup =
new QGroupBox(tr(
"Number of Events"));
47 QLabel *set_nevents =
new QLabel(tr(
"Set N:"));
49 n_units =
new QComboBox;
50 n_units->addItem(tr(
"1")); n_units->addItem(tr(
"5"));
51 n_units->addItem(tr(
"10")); n_units->addItem(tr(
"15"));
52 n_units->addItem(tr(
"20")); n_units->addItem(tr(
"25"));
53 n_units->addItem(tr(
"30")); n_units->addItem(tr(
"35"));
54 n_units->addItem(tr(
"40")); n_units->addItem(tr(
"45"));
55 n_units->addItem(tr(
"50")); n_units->addItem(tr(
"55"));
56 n_units->addItem(tr(
"60")); n_units->addItem(tr(
"65"));
57 n_units->addItem(tr(
"70")); n_units->addItem(tr(
"75"));
58 n_units->addItem(tr(
"80")); n_units->addItem(tr(
"85"));
59 n_units->addItem(tr(
"90")); n_units->addItem(tr(
"95"));
60 n_units->setMaximumWidth(55);
61 connect ( n_units , SIGNAL( currentIndexChanged(
int) ),
this, SLOT( set_beam_values() ) );
64 QLabel *times =
new QLabel(tr(
"X"));
66 n_mult =
new QComboBox;
67 n_mult->addItem(tr(
"1"));
68 n_mult->addItem(tr(
"10"));
69 n_mult->addItem(tr(
"100"));
70 n_mult->addItem(tr(
"1000"));
71 n_mult->addItem(tr(
"10000"));
72 n_mult->addItem(tr(
"100000"));
73 n_mult->addItem(tr(
"1000000"));
74 n_mult->setMaximumWidth(95);
75 connect ( n_mult , SIGNAL( currentIndexChanged(
int) ),
this, SLOT( set_beam_values() ) );
77 nevents =
new QLabel(tr(
""));
81 QHBoxLayout *bottomLayout =
new QHBoxLayout;
82 bottomLayout->addWidget(set_nevents);
83 bottomLayout->addWidget(n_units);
84 bottomLayout->addWidget(times);
85 bottomLayout->addWidget(n_mult);
86 bottomLayout->addSpacing(30);
87 bottomLayout->addWidget(nevents);
88 bottomLayout->addSpacing(30);
89 bottomLayout->addWidget(BeamE2S);
90 bottomLayout->addStretch(2);
91 neventsGroup->setLayout(bottomLayout);
93 QVBoxLayout *mainLayout =
new QVBoxLayout;
94 mainLayout->addWidget(BeamType);
95 mainLayout->addWidget(neventsGroup);
96 mainLayout->addSpacing(10);
97 mainLayout->addWidget(BeamOn);
98 setLayout(mainLayout);
111 cout << hd_msg <<
" Run Control Widget Deleted." << endl;
117 string hd_msg = Opts->
args[
"LOG_MSG"].args +
" Beam Settings >> " ;
118 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
121 vector<string> values;
139 G4ParticleDefinition *Particle = particleTable->FindParticle(pname);
141 cout << hd_msg <<
" Particle " << pname <<
" not found in G4 table." << endl << endl;
144 QGroupBox *momentumGroup =
new QGroupBox(tr(
""));
146 QLabel *beam_particleLabel =
new QLabel(tr(
"Particle Type:"));
154 for(
int i=0; i<particleTable->entries(); i++)
155 beam_particle->addItem(particleTable->GetParticleName(i).c_str());
156 QHBoxLayout *beam_particleLayout =
new QHBoxLayout;
157 beam_particleLayout->addSpacing(40);
158 beam_particleLayout->addWidget(beam_particleLabel);
160 beam_particleLayout->addSpacing(80);
161 connect (
beam_particle , SIGNAL( currentIndexChanged(
int) ), parent, SLOT( set_beam_values() ) );
164 QLabel *col1Label =
new QLabel(tr(
""));
165 QLabel *col2Label =
new QLabel(tr(
"Value"));
166 QLabel *col3Label =
new QLabel(tr(
"Dispersion"));
167 QHBoxLayout *explanaLayout =
new QHBoxLayout;
168 explanaLayout->addWidget(col1Label);
169 explanaLayout->addWidget(col2Label);
170 explanaLayout->addWidget(col3Label);
172 QLabel *momentumLabel =
new QLabel(tr(
"p:"));
179 connect (
momentum_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
180 connect (
rmomentum_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
183 QHBoxLayout *momentumLayout =
new QHBoxLayout;
184 momentumLayout->addWidget(momentumLabel);
185 momentumLayout->addSpacing(27);
189 QLabel *thetaLabel =
new QLabel(tr(
"theta:"));
192 theta_slider->setSliderPosition( (
int) (20.0*arg_theta/deg));
195 rtheta_slider->setSliderPosition((
int) (20.0*arg_dtheta/deg));
196 connect (
theta_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
197 connect (
rtheta_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
200 QHBoxLayout *thetaLayout =
new QHBoxLayout;
201 thetaLayout->addWidget(thetaLabel);
206 QLabel *phiLabel =
new QLabel(tr(
"phi:"));
209 phi_slider->setSliderPosition((
int) (20*arg_phi/deg));
212 rphi_slider->setSliderPosition((
int) (20*arg_dphi/deg));
213 connect (
phi_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
214 connect (
rphi_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
216 QHBoxLayout *phiLayout =
new QHBoxLayout;
217 phiLayout->addWidget(phiLabel);
218 phiLayout->addSpacing(14);
222 QVBoxLayout *mLayout =
new QVBoxLayout;
223 mLayout->addLayout(beam_particleLayout);
224 mLayout->addSpacing(10);
225 mLayout->addLayout(explanaLayout);
226 mLayout->addLayout(momentumLayout);
227 mLayout->addLayout(thetaLayout);
228 mLayout->addLayout(phiLayout);
229 momentumGroup->setLayout(mLayout);
233 QGroupBox *mroGroup =
new QGroupBox(tr(
"Beam Values"));
235 QLabel *rmomentumLabel =
new QLabel(tr(
"p:"));
237 QHBoxLayout *momentum_roLayout =
new QHBoxLayout;
238 momentum_roLayout->addWidget(rmomentumLabel);
241 QLabel *rthetaLabel =
new QLabel(tr(
"theta:"));
243 QHBoxLayout *theta_roLayout =
new QHBoxLayout;
244 theta_roLayout->addWidget(rthetaLabel);
245 theta_roLayout->addWidget(
theta_ro);
247 QLabel *rphiLabel =
new QLabel(tr(
"phi:"));
248 phi_ro =
new QLabel(tr(
""));
249 QHBoxLayout *phi_roLayout =
new QHBoxLayout;
250 phi_roLayout->addWidget(rphiLabel);
251 phi_roLayout->addWidget(
phi_ro);
253 QVBoxLayout *mroLayout =
new QVBoxLayout;
254 mroLayout->addLayout(momentum_roLayout);
255 mroLayout->addLayout(theta_roLayout);
256 mroLayout->addLayout(phi_roLayout);
257 mroGroup->setLayout(mroLayout);
260 QGroupBox *vroGroup =
new QGroupBox(tr(
"Vertex Values"));
262 QLabel *rvxyzLabel =
new QLabel(tr(
"(x,y,z):"));
263 vxyz_ro =
new QLabel(tr(
"(0, 0, 0) mm"));
264 QHBoxLayout *vxy_roLayout =
new QHBoxLayout;
265 vxy_roLayout->addWidget(rvxyzLabel);
266 vxy_roLayout->addWidget(
vxyz_ro);
268 QLabel *rvdrLabel =
new QLabel(tr(
"radius:"));
269 vdr_ro =
new QLabel(tr(
"0 mm"));
270 QHBoxLayout *vdr_roLayout =
new QHBoxLayout;
271 vdr_roLayout->addWidget(rvdrLabel);
272 vdr_roLayout->addWidget(
vdr_ro);
274 QLabel *rvdzLabel =
new QLabel(tr(
"delta z:"));
275 vdz_ro =
new QLabel(tr(
"0 mm"));
276 QHBoxLayout *vdz_roLayout =
new QHBoxLayout;
277 vdz_roLayout->addWidget(rvdzLabel);
278 vdz_roLayout->addWidget(
vdz_ro);
280 QVBoxLayout *vroLayout =
new QVBoxLayout;
281 vroLayout->addLayout(vxy_roLayout);
282 vroLayout->addLayout(vdr_roLayout);
283 vroLayout->addLayout(vdz_roLayout);
284 vroGroup->setLayout(vroLayout);
287 QHBoxLayout *beamroLayout =
new QHBoxLayout;
288 beamroLayout->addWidget(mroGroup);
289 beamroLayout->addWidget(vroGroup);
296 double cvx =
get_number(values[0] +
"*" + units);
297 double cvy =
get_number(values[1] +
"*" + units);
298 double cvz =
get_number(values[2] +
"*" + units);
303 double cdvr =
get_number(values[0] +
"*" + units);
304 double cdvz =
get_number(values[1] +
"*" + units);
310 QGroupBox *vertexGroup =
new QGroupBox(tr(
"Vertex"));
312 QLabel *col1Label2 =
new QLabel(tr(
""));
313 QLabel *col2Label2 =
new QLabel(tr(
"Value"));
314 QLabel *col3Label2 =
new QLabel(tr(
"Dispersion"));
315 QHBoxLayout *explanaLayout2 =
new QHBoxLayout;
316 explanaLayout2->addWidget(col1Label2);
317 explanaLayout2->addWidget(col2Label2);
318 explanaLayout2->addWidget(col3Label2);
320 QLabel *vxLabel =
new QLabel(tr(
"vx:"));
323 vx_slider->setSliderPosition((
int) (cvx/mm));
324 QLabel *vrLabel =
new QLabel(tr(
"radius:"));
327 rv_slider->setSliderPosition((
int) (cdvr/mm));
328 QHBoxLayout *vxLayout =
new QHBoxLayout;
329 vxLayout->addWidget(vxLabel);
331 vxLayout->addSpacing(30);
332 vxLayout->addWidget(vrLabel);
334 connect (
vx_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
335 connect (
rv_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
338 QLabel *vyLabel =
new QLabel(tr(
"vy:"));
341 vy_slider->setSliderPosition((
int) (cvy/mm));
342 QLabel *rvzLabel =
new QLabel(tr(
"dvz:"));
345 rvz_slider->setSliderPosition((
int) (cdvz/mm));
346 QHBoxLayout *vyLayout =
new QHBoxLayout;
347 vyLayout->addWidget(vyLabel);
349 vyLayout->addSpacing(46);
350 vyLayout->addWidget(rvzLabel);
352 connect (
vy_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
353 connect (
rvz_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
355 QLabel *vzLabel =
new QLabel(tr(
"vz:"));
359 vz_slider->setSliderPosition((
int) (cvz/mm));
360 QHBoxLayout *vzLayout =
new QHBoxLayout;
361 vzLayout->addWidget(vzLabel);
363 vzLayout->addSpacing(236);
364 QVBoxLayout *vLayout =
new QVBoxLayout;
365 vLayout->addLayout(explanaLayout2);
366 vLayout->addLayout(vxLayout);
367 vLayout->addLayout(vyLayout);
368 vLayout->addLayout(vzLayout);
369 vertexGroup->setLayout(vLayout);
370 connect (
vz_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
373 momentumGroup->setStyleSheet(
" * { background-color: rgb(215, 220, 215);} QLabel {background-color: transparent; }");
374 mroGroup->setStyleSheet(
" * { background-color: rgb(215, 220, 215);} QLabel {background-color: transparent; }");
375 vroGroup->setStyleSheet(
" * { background-color: rgb(215, 215, 220);} QLabel {background-color: transparent; }");
376 vertexGroup->setStyleSheet(
" * { background-color: rgb(215, 215, 220);} QLabel {background-color: transparent; }");
379 QVBoxLayout *mainLayout =
new QVBoxLayout;
380 mainLayout->addWidget(momentumGroup);
381 mainLayout->addLayout(beamroLayout);
382 mainLayout->addSpacing(10);
383 mainLayout->addWidget(vertexGroup);
384 setLayout(mainLayout);
392 string hd_msg = Opts->
args[
"LOG_MSG"].args +
" Beam Settings >> " ;
393 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
396 vector<string> values;
410 QGroupBox *LumiGroup =
new QGroupBox(tr(
""));
412 QLabel *neventLabel =
new QLabel(tr(
"N. Particles/Event"));
413 QLabel *timewindowLabel = NULL;
414 if(type==1) timewindowLabel =
new QLabel(tr(
"Time Window\n"));
415 if(type==2) timewindowLabel =
new QLabel(tr(
"Time Window\n Set on\n Primary Tab"));
416 QLabel *bunchLabel =
new QLabel(tr(
"Bunch Time"));
417 QHBoxLayout *lumiHLayout =
new QHBoxLayout;
418 lumiHLayout->addSpacing(45);
419 lumiHLayout->addWidget(neventLabel);
420 lumiHLayout->addWidget(timewindowLabel);
421 lumiHLayout->addSpacing(20);
422 lumiHLayout->addWidget(bunchLabel);
430 QHBoxLayout *lumiHLayout2 =
new QHBoxLayout;
431 lumiHLayout2->addWidget(
nevents);
432 if(type==1) lumiHLayout2->addWidget(
timewindow);
433 if(type==2) lumiHLayout2->addSpacing(135);
436 QString L_ne =
stringify(lnevents).c_str();
439 QString L_tw =
stringify(twindow/ns).c_str() + QString(
"*ns");
442 QString L_tb =
stringify(tbunch/ns).c_str() + QString(
"*ns");
445 connect (
nevents , SIGNAL( textChanged(
const QString & ) ), parent, SLOT( set_beam_values() ) );
446 connect (
timewindow , SIGNAL( textChanged(
const QString & ) ), parent, SLOT( set_beam_values() ) );
447 connect (
time_bunch , SIGNAL( textChanged(
const QString & ) ), parent, SLOT( set_beam_values() ) );
450 QVBoxLayout *LLayout =
new QVBoxLayout;
451 LLayout->addLayout(lumiHLayout);
452 LLayout->addLayout(lumiHLayout2);
453 LumiGroup->setLayout(LLayout);
466 G4ParticleDefinition *Particle = particleTable->FindParticle(pname);
468 cout << hd_msg <<
" Particle " << pname <<
" not found in G4 table." << endl << endl;
471 QGroupBox *momentumGroup =
new QGroupBox(tr(
""));
473 QLabel *beam_particleLabel =
new QLabel(tr(
"Particle Type:"));
477 for(
int i=0; i<particleTable->entries(); i++)
478 beam_particle->addItem(particleTable->GetParticleName(i).c_str());
479 QHBoxLayout *beam_particleLayout =
new QHBoxLayout;
480 beam_particleLayout->addSpacing(40);
481 beam_particleLayout->addWidget(beam_particleLabel);
483 beam_particleLayout->addSpacing(80);
484 connect (
beam_particle , SIGNAL( currentIndexChanged(
int) ), parent, SLOT( set_beam_values() ) );
488 QLabel *momentumLabel =
new QLabel(tr(
"p:"));
494 connect (
momentum_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
497 QHBoxLayout *momentumLayout =
new QHBoxLayout;
498 momentumLayout->addWidget(momentumLabel);
499 momentumLayout->addSpacing(27);
502 QLabel *thetaLabel =
new QLabel(tr(
"theta:"));
505 theta_slider->setSliderPosition((
int) (20.0*arg_theta/deg));
506 connect (
theta_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
509 QHBoxLayout *thetaLayout =
new QHBoxLayout;
510 thetaLayout->addWidget(thetaLabel);
513 QLabel *phiLabel =
new QLabel(tr(
"phi:"));
516 phi_slider->setSliderPosition((
int) (20.0*arg_phi/deg));
517 connect (
phi_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_beam_values() ) );
519 QHBoxLayout *phiLayout =
new QHBoxLayout;
520 phiLayout->addWidget(phiLabel);
521 phiLayout->addSpacing(14);
524 QVBoxLayout *mLayout =
new QVBoxLayout;
525 mLayout->addLayout(beam_particleLayout);
526 mLayout->addSpacing(10);
527 mLayout->addLayout(momentumLayout);
528 mLayout->addLayout(thetaLayout);
529 mLayout->addLayout(phiLayout);
530 momentumGroup->setLayout(mLayout);
534 QGroupBox *mroGroup =
new QGroupBox(tr(
"Beam Values"));
536 QLabel *rmomentumLabel =
new QLabel(tr(
"p:"));
538 QHBoxLayout *momentum_roLayout =
new QHBoxLayout;
539 momentum_roLayout->addWidget(rmomentumLabel);
542 QLabel *rthetaLabel =
new QLabel(tr(
"theta:"));
544 QHBoxLayout *theta_roLayout =
new QHBoxLayout;
545 theta_roLayout->addWidget(rthetaLabel);
546 theta_roLayout->addWidget(
theta_ro);
548 QLabel *rphiLabel =
new QLabel(tr(
"phi:"));
549 phi_ro =
new QLabel(tr(
""));
550 QHBoxLayout *phi_roLayout =
new QHBoxLayout;
551 phi_roLayout->addWidget(rphiLabel);
552 phi_roLayout->addWidget(
phi_ro);
554 QVBoxLayout *mroLayout =
new QVBoxLayout;
555 mroLayout->addLayout(momentum_roLayout);
556 mroLayout->addLayout(theta_roLayout);
557 mroLayout->addLayout(phi_roLayout);
558 mroGroup->setLayout(mroLayout);
561 QGroupBox *vroGroup =
new QGroupBox(tr(
"Vertex Values"));
563 QLabel *rvxyzLabel =
new QLabel(tr(
"(x,y,z):"));
564 vxyz_ro =
new QLabel(tr(
"(0, 0, 0) mm"));
565 QHBoxLayout *vxy_roLayout =
new QHBoxLayout;
566 vxy_roLayout->addWidget(rvxyzLabel);
567 vxy_roLayout->addWidget(
vxyz_ro);
570 QVBoxLayout *vroLayout =
new QVBoxLayout;
571 vroLayout->addLayout(vxy_roLayout);
572 vroGroup->setLayout(vroLayout);
575 QHBoxLayout *beamroLayout =
new QHBoxLayout;
576 beamroLayout->addWidget(mroGroup);
577 beamroLayout->addWidget(vroGroup);
588 double cvx =
get_number(values[0] +
"*" + units);
589 double cvy =
get_number(values[1] +
"*" + units);
590 double cvz =
get_number(values[2] +
"*" + units);
594 QGroupBox *vertexGroup =
new QGroupBox(tr(
"Vertex"));
596 QLabel *vxLabel =
new QLabel(tr(
"vx:"));
599 vx_slider->setSliderPosition((
int) (cvx/mm));
600 QHBoxLayout *vxLayout =
new QHBoxLayout;
601 vxLayout->addWidget(vxLabel);
603 connect (
vx_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
606 QLabel *vyLabel =
new QLabel(tr(
"vy:"));
609 vy_slider->setSliderPosition((
int) (cvy/mm));
610 QHBoxLayout *vyLayout =
new QHBoxLayout;
611 vyLayout->addWidget(vyLabel);
613 connect (
vy_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
615 QLabel *vzLabel =
new QLabel(tr(
"vz:"));
618 vz_slider->setSliderPosition((
int) (cvz/mm));
619 QHBoxLayout *vzLayout =
new QHBoxLayout;
620 vzLayout->addWidget(vzLabel);
622 QVBoxLayout *vLayout =
new QVBoxLayout;
623 vLayout->addLayout(vxLayout);
624 vLayout->addLayout(vyLayout);
625 vLayout->addLayout(vzLayout);
626 vertexGroup->setLayout(vLayout);
627 connect (
vz_slider , SIGNAL( valueChanged(
int) ), parent, SLOT( set_vertex_values() ) );
630 momentumGroup->setStyleSheet(
" * { background-color: rgb(225, 210, 210);} QLabel {background-color: transparent; }");
631 mroGroup->setStyleSheet(
" * { background-color: rgb(225, 210, 210);} QLabel {background-color: transparent; }");
632 vroGroup->setStyleSheet(
" * { background-color: rgb(210, 220, 210);} QLabel {background-color: transparent; }");
633 vertexGroup->setStyleSheet(
" * { background-color: rgb(210, 220, 210);} QLabel {background-color: transparent; }");
636 QVBoxLayout *mainLayout =
new QVBoxLayout;
637 mainLayout->addWidget(LumiGroup);
638 mainLayout->addWidget(momentumGroup);
639 mainLayout->addLayout(beamroLayout);
640 mainLayout->addSpacing(10);
641 mainLayout->addWidget(vertexGroup);
642 setLayout(mainLayout);
646 void run_control::beamOn()
648 double N_units = atoi(
gemc_tostring(n_units->currentText()).c_str());
649 double N_mult = atoi(
gemc_tostring(n_mult->currentText()).c_str());
650 double NEVENTS = N_units*N_mult;
651 gemcOpt->args[
"N"].arg = NEVENTS;
654 sprintf(command,
"/run/beamOn %d", (
int) NEVENTS);
655 UImanager->ApplyCommand(command);
658 void run_control::beam_every2sec()
662 for(
int s=0; s<7200; s++)
666 sprintf(command,
"/vis/viewer/refresh");
667 UImanager->ApplyCommand(command);
669 clock_t endwait = clock () + 2 * CLOCKS_PER_SEC ;
670 while (clock() < endwait) {}
672 sprintf(command,
"/run/beamOn 1");
673 UImanager->ApplyCommand(command);
684 void run_control::set_beam_values()
687 double mom = pbeamtab->momentum_slider->sliderPosition()*10;
688 double rmom = pbeamtab->rmomentum_slider->sliderPosition()*10;
691 mro.append(QString::fromUtf8(
" ± "));
694 pbeamtab->momentum_ro->setText(mro);
696 double the = pbeamtab->theta_slider->sliderPosition()/20.0;
697 double rthe = pbeamtab->rtheta_slider->sliderPosition()/20.0;
700 tro.append(QString::fromUtf8(
" ± "));
703 pbeamtab->theta_ro->setText(tro);
705 double phi = pbeamtab->phi_slider->sliderPosition()/20.0;
706 double rphi = pbeamtab->rphi_slider->sliderPosition()/20.0;
709 pro.append(QString::fromUtf8(
" ± "));
712 pbeamtab->phi_ro->setText(pro);
714 double N_units = atoi(
gemc_tostring(n_units->currentText()).c_str());
715 double N_mult = atoi(
gemc_tostring(n_mult->currentText()).c_str());
716 double NEVENTS = N_units*N_mult;
717 QString nev =
"Number of Events: " ;
723 double L_mom = lbeamtab->momentum_slider->sliderPosition()*10;
724 QString L_mro =
stringify(L_mom).c_str();
725 L_mro.append(
" MeV");
726 lbeamtab->momentum_ro->setText(L_mro);
728 double L_theta = lbeamtab->theta_slider->sliderPosition()/20.0;
729 QString L_tro =
stringify(L_theta).c_str();
730 L_tro.append(
" deg");
731 lbeamtab->theta_ro->setText(L_tro);
733 double L_phi = lbeamtab->phi_slider->sliderPosition()/20.0;
734 QString L_pro =
stringify(L_phi).c_str();
735 L_pro.append(
" deg");
736 lbeamtab->phi_ro->setText(L_pro);
740 double L_mom2 = lbeamtab2->momentum_slider->sliderPosition()*10;
741 QString L_mro2 =
stringify(L_mom2).c_str();
742 L_mro2.append(
" MeV");
743 lbeamtab2->momentum_ro->setText(L_mro2);
745 double L_theta2 = lbeamtab2->theta_slider->sliderPosition()/20.0;
746 QString L_tro2 =
stringify(L_theta2).c_str();
747 L_tro2.append(
" deg");
748 lbeamtab2->theta_ro->setText(L_tro2);
750 double L_phi2 = lbeamtab2->phi_slider->sliderPosition()/20.0;
751 QString L_pro2 =
stringify(L_phi2).c_str();
752 L_pro2.append(
" deg");
753 lbeamtab2->phi_ro->setText(L_pro2);
758 void run_control::set_vertex_values()
761 double vx = pbeamtab->vx_slider->sliderPosition();
762 double vy = pbeamtab->vy_slider->sliderPosition();
763 double vz = pbeamtab->vz_slider->sliderPosition();
772 pbeamtab->vxyz_ro->setText(vro);
775 double dvr = pbeamtab->rv_slider->sliderPosition();
778 pbeamtab->vdr_ro->setText(dvro);
780 double dvz = pbeamtab->rvz_slider->sliderPosition();
783 pbeamtab->vdz_ro->setText(dvzro);
786 double L_vx = lbeamtab->vx_slider->sliderPosition();
787 double L_vy = lbeamtab->vy_slider->sliderPosition();
788 double L_vz = lbeamtab->vz_slider->sliderPosition();
796 L_vro.append(
") mm");
797 lbeamtab->vxyz_ro->setText(L_vro);
800 double L_vx2 = lbeamtab2->vx_slider->sliderPosition();
801 double L_vy2 = lbeamtab2->vy_slider->sliderPosition();
802 double L_vz2 = lbeamtab2->vz_slider->sliderPosition();
804 QString L_vro2 =
"(";
810 L_vro2.append(
") mm");
811 lbeamtab2->vxyz_ro->setText(L_vro2);
817 void run_control::change_beam_pars()
819 string hd_msg = gemcOpt->args[
"LOG_MSG"].args +
" Beam Settings >> " ;
822 string particle =
gemc_tostring(pbeamtab->beam_particle->currentText());
823 double mom = pbeamtab->momentum_slider->sliderPosition()*10*MeV;
824 double theta = pbeamtab->theta_slider->sliderPosition()/20.0*deg;
825 double phi = pbeamtab->phi_slider->sliderPosition()/20.0*deg;
827 string beam_p = particle +
", " +
832 gemcOpt->args[
"BEAM_P"].args = beam_p;
835 double dmom = pbeamtab->rmomentum_slider->sliderPosition()*10*MeV;
836 double dtheta = pbeamtab->rtheta_slider->sliderPosition()/20.0*deg;
837 double dphi = pbeamtab->rphi_slider->sliderPosition()/20.0*deg;
839 string spread_p =
stringify(dmom/MeV) +
"*MeV" +
", " +
843 gemcOpt->args[
"SPREAD_P"].args = spread_p;
850 string L_event = L_ne +
", " + L_tw +
", " + L_tb;
851 gemcOpt->args[
"LUMI_EVENT"].args = L_event;
857 string L_event2 = L_ne2 +
", " + L_tb2;
858 gemcOpt->args[
"LUMI2_EVENT"].args = L_event2;
862 string L_particle =
gemc_tostring(lbeamtab->beam_particle->currentText());
863 double L_mom = lbeamtab->momentum_slider->sliderPosition()*10*MeV;
864 double L_theta = lbeamtab->theta_slider->sliderPosition()/20.0*deg;
865 double L_phi = lbeamtab->phi_slider->sliderPosition()/20.0*deg;
867 string L_beam_p = L_particle +
", " +
872 gemcOpt->args[
"LUMI_P"].args = L_beam_p;
875 string L_particle2 =
gemc_tostring(lbeamtab2->beam_particle->currentText());
876 double L_mom2 = lbeamtab2->momentum_slider->sliderPosition()*10*MeV;
877 double L_theta2 = lbeamtab2->theta_slider->sliderPosition()/20.0*deg;
878 double L_phi2 = lbeamtab2->phi_slider->sliderPosition()/20.0*deg;
880 string L_beam_p2 = L_particle2 +
", " +
882 stringify(L_theta2/deg) +
"*deg" +
", " +
885 gemcOpt->args[
"LUMI2_P"].args = L_beam_p2;
890 double vx = pbeamtab->vx_slider->sliderPosition()*mm;
891 double vy = pbeamtab->vy_slider->sliderPosition()*mm;
892 double vz = pbeamtab->vz_slider->sliderPosition()*mm;
894 string beam_v =
"(" +
899 gemcOpt->args[
"BEAM_V"].args = beam_v;
904 double vdr = pbeamtab->rv_slider->sliderPosition()*mm;
905 double vdz = pbeamtab->rvz_slider->sliderPosition()*mm;
906 string spread_v =
"(" +
910 gemcOpt->args[
"SPREAD_V"].args = spread_v;
913 double L_vx = lbeamtab->vx_slider->sliderPosition()*mm;
914 double L_vy = lbeamtab->vy_slider->sliderPosition()*mm;
915 double L_vz = lbeamtab->vz_slider->sliderPosition()*mm;
917 string L_beam_v =
"(" +
922 gemcOpt->args[
"LUMI_V"].args = L_beam_v;
925 double L_vx2 = lbeamtab2->vx_slider->sliderPosition()*mm;
926 double L_vy2 = lbeamtab2->vy_slider->sliderPosition()*mm;
927 double L_vz2 = lbeamtab2->vz_slider->sliderPosition()*mm;
929 string L_beam_v2 =
"(" +
934 gemcOpt->args[
"LUMI2_V"].args = L_beam_v2;
vector< string > get_info(string input)
get information from strings such as "5*GeV, 2*deg, 10*deg"
run_control(QWidget *parent, gemc_opts *)
string gemc_tostring(QString input)
string stringify(double x)
QComboBox * beam_particle
QSlider * rmomentum_slider
LuminosityBeamTab(QWidget *parent=0, gemc_opts *=0, int type=1)
QSlider * momentum_slider
map< string, opts > args
Options map.
QComboBox * beam_particle
string TrimSpaces(string in)
Removes leading and trailing spaces.
QSlider * momentum_slider
double get_number(string)
Returns dimension from string, i.e. 100*cm.
PrimaryBeamTab(QWidget *parent=0, gemc_opts *=0)