11 #ifndef ROOT_TGDockableFrame
17 #ifndef ROOT_TGMdiDecorFrame
23 #ifndef ROOT_TGMdiFrame
26 #ifndef ROOT_TGMdiMainFrame
29 #ifndef ROOT_TGMdiMenu
32 #ifndef ROOT_TGListBox
35 #ifndef ROOT_TGNumberEntry
38 #ifndef ROOT_TGScrollBar
41 #ifndef ROOT_TRootBrowser
47 #ifndef ROOT_TGFileDialog
50 #ifndef ROOT_TGShutter
53 #ifndef ROOT_TGButtonGroup
59 #ifndef ROOT_TGFSContainer
62 #ifndef ROOT_TGFSComboBox
74 #ifndef ROOT_TGListView
77 #ifndef ROOT_TGSplitter
80 #ifndef ROOT_TGStatusBar
83 #ifndef ROOT_TGListTree
86 #ifndef ROOT_TGToolTip
89 #ifndef ROOT_TGToolBar
101 #include "KVConfig.h"
128 CreateMainWindow(p,
main, w,
h);
130 if (runs.IsEmpty()) fSetRuns->SetEnabled(
kFALSE);
132 Connect(
"UpdateRunlist()",
"KVINDRARunSheetGUI",
const_cast<TGWindow*
>(
main),
"UpdateListOfRuns()");
134 gClient->WaitFor(fMainFrame1475);
145 if (fMainFrame1475) {
146 delete fMainFrame1475;
181 if (!fSystem)
return;
182 TString answer(fSystem->GetName());
184 new KVInputDialog(fMainFrame1475,
"Do you really want to delete this system ?", &answer, &ok,
185 "Click OK to delete, Cancel to leave");
188 fSystem->RemoveAllRuns();
217 if (IsProjectileDefined() && IsTargetDefined()) {
218 sys_name.
Form(
"%ld%s + %s %.3g MeV/A",
219 fNumberEntry1499->GetIntNumber(),
220 fTextEntry1490->GetText(),
222 fNumberEntry1509->GetNumber()
229 "Enter name for new system",
234 cout <<
"Creating system : " << sys_name.
Data() << endl;
236 if (IsProjectileDefined()) {
237 Int_t Z = (
Int_t)fNumberEntry1493->GetIntNumber();
238 fSystem->SetZbeam(Z);
239 Int_t A = (
Int_t)fNumberEntry1499->GetIntNumber();
240 fSystem->SetAbeam(A);
241 Double_t E = fNumberEntry1509->GetNumber();
242 fSystem->SetEbeam(
E);
244 if (IsTargetDefined()) {
245 fSystem->SetTarget(fTarget);
246 sys_name.
Form(
"%d", (
Int_t)fTarget->GetLayerByIndex(1)->GetZ());
249 "Enter Z of target nucleus",
253 fSystem->SetZtarget(sys_name.
Atoi());
254 sys_name.
Form(
"%d", (
Int_t)fTarget->GetLayerByIndex(1)->GetMass());
257 "Enter A of target nucleus",
261 fSystem->SetAtarget(sys_name.
Atoi());
268 fComboBox1476->Select(fComboBox1476->GetNumberOfEntries() - 2);
270 fCreateSystem->SetEnabled(
kFALSE);
313 KVString old_vers = fUndo->GetPreviousVersion(fCurrentSystemsFile.Data());
314 if (old_vers ==
"")
return;
327 fCurrentSystemsFile = old_vers;
349 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
350 RemoveAll(fComboBox1476);
352 fComboBox1476->RemoveAll();
354 fComboBox1476->Select(-1);
356 Int_t index_selected = 0;
359 TIter itsys(syslist);
362 while ((o = itsys())) {
363 if ((
KVDBSystem*)o == fSystem) index_selected = index;
364 fComboBox1476->AddEntry(o->
GetName(), index++);
367 fComboBox1476->AddEntry(
"NEW SYSTEM", index++);
368 fComboBox1476->Select(index_selected);
379 if (index < fComboBox1476->GetNumberOfEntries() - 1) {
381 fCreateSystem->SetEnabled(
kFALSE);
382 fSetRuns->SetEnabled(!fRuns.IsEmpty());
385 fCreateSystem->SetEnabled(
kTRUE);
386 fSetRuns->SetEnabled(
kFALSE);
390 UpdateSystemProperties();
401 UpdateProjectileProperties();
402 UpdateTargetProperties();
413 fTextEntry1490->SetEnabled(on);
414 fNumberEntry1493->SetState(on);
415 fNumberEntry1499->SetState(on);
416 fNumberEntry1509->SetState(on);
432 EnableProjectileProperties(
kFALSE);
435 KVNucleus proj(fSystem->GetZproj(), fSystem->GetAproj());
437 if (proj.
GetZ() == 0) {
439 EnableProjectileProperties(
kFALSE);
443 EnableProjectileProperties(
kTRUE);
446 fTextEntry1490->SetText(proj.
GetSymbol(
"EL"));
448 fNumberEntry1493->SetNumber(proj.
GetZ());
450 fNumberEntry1499->SetNumber(proj.
GetA());
452 fNumberEntry1509->SetNumber(fSystem->GetEproj());
468 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
469 RemoveAll(fComboBox1515);
471 fComboBox1515->RemoveAll();
473 fComboBox1515->Select(-1);
474 if (fSystem) fTarget = fSystem->GetTarget();
476 fNumberEntry1532->SetNumber(0);
477 UpdateTargetLayerProperties(-1);
481 fNumberEntry1532->SetNumber(fTarget->GetAngleToBeam());
483 TIter next(fTarget->GetLayers());
485 while ((obj = next())) {
486 fComboBox1515->AddEntry(obj->
GetName(), index++);
488 fComboBox1515->Select(0);
503 fNumberEntry1526->SetNumber(0);
504 fNumberEntry1537->SetNumber(0);
506 fTextButton1554->SetEnabled(
kFALSE);
509 fLayer = (
KVMaterial*)fTarget->GetLayers()->At(ind);
513 fNumberEntry1537->SetNumber(fLayer->GetMass());
515 fLabel1530->SetText(
"mg/cm2");
517 fTextButton1554->SetEnabled(
kTRUE);
539 fNumberEntry1493->SetNumber(
r.GetZ());
541 fNumberEntry1499->SetNumber(
r.GetA());
543 fSystem->SetZbeam(
r.GetZ());
544 fSystem->SetAbeam(
r.GetA());
560 Int_t Z = (
Int_t)fNumberEntry1493->GetIntNumber();
562 fTextEntry1490->SetText(
r.GetSymbol(
"EL"));
564 fNumberEntry1499->SetNumber(A);
566 fSystem->SetZbeam(
r.GetZ());
567 fSystem->SetAbeam(
r.GetA());
583 Int_t A = (
Int_t)fNumberEntry1499->GetIntNumber();
584 if (fSystem) fSystem->SetAbeam(A);
599 Double_t E = fNumberEntry1509->GetNumber();
600 if (fSystem) fSystem->SetEbeam(
E);
615 Double_t t = fNumberEntry1526->GetNumber();
629 Double_t A = fNumberEntry1537->GetNumber();
643 Double_t A = fNumberEntry1532->GetNumber();
644 fTarget->SetAngleToBeam(A);
665 TNamed* mat = (
TNamed*)fMaterialsList->At(fComboBox1542->GetSelected());
673 fSystem->SetTarget(fTarget);
674 cout <<
"Created target for system : " << fSystem->
GetName() << endl;
680 fTarget->AddLayer(mat->
GetTitle(), 0.1);
682 Int_t nlay = fComboBox1515->GetNumberOfEntries();
683 fComboBox1515->AddEntry(mat->
GetName(), nlay);
684 fComboBox1515->Select(nlay + 1);
685 cout <<
"Added layer " << mat->
GetTitle() <<
" to target" << endl;
700 cout <<
"Removing layer : " << fLayer->GetName() <<
" from target !" << endl;
701 if (fTarget->NumberOfLayers() == 1) {
705 if (fSystem) fSystem->SetTarget(0);
710 TIter next(fTarget->GetLayers());
720 if (fSystem) fSystem->SetTarget(new_target);
723 UpdateTargetProperties();
751 while (!fRuns.End()) fSystem->AddRun(fRuns.Next());
758 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
767 Int_t n =
box->GetListBox()->GetNumberOfEntries();
768 if (n)
box->RemoveEntries(0, n - 1);
769 if (
box->GetSelectedEntry()) {
774 box->GetTextEntry()->SetTitle(
"");
788 if (n)
box->RemoveEntries(0, n - 1);
789 if (
box->GetSelectedEntry()) {
808 fMainFrame1475->SetLayoutBroken(
kTRUE);
809 fMainFrame1475->Connect(
"CloseWindow()",
"KVDBSystemDialog",
this,
811 fMainFrame1475->DontCallClose();
815 ULong_t red, cyan, green, yellow, magenta;
816 gClient->GetColorByName(
"#ff00ff", magenta);
817 gClient->GetColorByName(
"#ff0000", red);
818 gClient->GetColorByName(
"#00ff00", green);
819 gClient->GetColorByName(
"#00ffff", cyan);
820 gClient->GetColorByName(
"#ffff00", yellow);
824 fComboBox1476->Select(-1);
826 fComboBox1476->MoveResize(88, 8, 296, 22);
827 fComboBox1476->Connect(
"Selected(Int_t)",
828 "KVDBSystemDialog",
this,
829 "SelectSystem(Int_t)");
840 fCheckButton1376 =
new TGCheckButton(fGroupFrame1488,
"Projectile");
841 fCheckButton1376->SetToolTipText(
"Define projectile for system");
843 fCheckButton1376->MoveResize(18, 24, 72, 19);
844 fCheckButton1376->Connect(
"Toggled(Bool_t)",
845 "KVDBSystemDialog",
this,
846 "EnableProjectileProperties(Bool_t)");
849 ufont =
gClient->GetFont(
"-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1");
862 fTextEntry1490->SetMaxLength(3);
864 fTextEntry1490->SetText(
"p");
865 fTextEntry1490->Resize(24, fTextEntry1490->GetDefaultHeight());
866 fTextEntry1490->SetToolTipText(
"Chemical symbol for projectile nuclei");
867 fTextEntry1490->Connect(
"ReturnPressed()",
868 "KVDBSystemDialog",
this,
"ProjectileSymbolChanged()");
871 fTextEntry1490->MoveResize(100, 24, 24, 22);
874 fNumberEntry1493->MoveResize(158, 24, 43, 22);
875 fNumberEntry1493->Connect(
"ValueSet(Long_t)",
876 "KVDBSystemDialog",
this,
"ProjectileZChanged(Long_t)");
888 fNumberEntry1499->MoveResize(232, 24, 43, 22);
889 fNumberEntry1499->Connect(
"ValueSet(Long_t)",
890 "KVDBSystemDialog",
this,
"ProjectileAChanged(Long_t)");
900 fNumberEntry1504->
MoveResize(312, 24, 43, 22);
909 fNumberEntry1509->MoveResize(152, 56, 80, 22);
910 fNumberEntry1509->Connect(
"ValueSet(Long_t)",
911 "KVDBSystemDialog",
this,
"ProjectileEChanged(Long_t)");
913 TGLabel* fLabel1513 =
new TGLabel(fGroupFrame1488,
"MeV/nucleon");
925 fComboBox1515->Resize(104, 22);
926 fComboBox1515->Select(-1);
927 fComboBox1515->Connect(
"Selected(Int_t)",
928 "KVDBSystemDialog",
this,
"UpdateTargetLayerProperties(Int_t)");
931 fComboBox1515->MoveResize(80, 48, 104, 22);
934 fNumberEntry1526->MoveResize(8, 80, 59, 22);
935 fNumberEntry1526->Connect(
"ValueSet(Long_t)",
936 "KVDBSystemDialog",
this,
"TargetLayerThicknessChanged(Long_t)");
938 fLabel1530 =
new TGLabel(fGroupFrame1514,
"mg/cm2");
939 fLabel1530->SetTextJustify(36);
941 fLabel1530->MoveResize(72, 80, 46, 18);
948 fNumberEntry1532->MoveResize(152, 16, 75, 22);
949 fNumberEntry1532->Connect(
"ValueSet(Long_t)",
950 "KVDBSystemDialog",
this,
"TargetAngleChanged(Long_t)");
958 fNumberEntry1537->MoveResize(160, 80, 64, 22);
959 fNumberEntry1537->Connect(
"ValueSet(Long_t)",
960 "KVDBSystemDialog",
this,
"TargetLayerAChanged(Long_t)");
969 fComboBox1542->Resize(80, 22);
973 TIter it_mat(fMaterialsList.get());
976 while ((obj = it_mat())) {
977 fComboBox1542->AddEntry(obj->
GetName(), ind++);
979 fComboBox1542->Select(0);
981 fComboBox1542->MoveResize(16, 24, 80, 22);
982 fTextButton1553 =
new TGTextButton(fGroupFrame1541,
"Add");
983 fTextButton1553->SetTextJustify(36);
984 fTextButton1553->Resize(56, 24);
986 fTextButton1553->MoveResize(24, 56, 56, 24);
987 fTextButton1553->Connect(
"Clicked()",
988 "KVDBSystemDialog",
this,
"AddNewTargetLayer()");
991 fGroupFrame1541->
Resize(112, 104);
993 fGroupFrame1541->
MoveResize(232, 40, 112, 104);
994 fTextButton1554 =
new TGTextButton(fGroupFrame1514,
"Remove");
995 fTextButton1554->SetTextJustify(36);
996 fTextButton1554->Resize(56, 24);
998 fTextButton1554->MoveResize(80, 112, 56, 24);
999 fTextButton1554->SetEnabled(
kFALSE);
1000 fTextButton1554->Connect(
"Clicked()",
1001 "KVDBSystemDialog",
this,
"RemoveTargetLayer()");
1009 fGroupFrame1514->
Resize(360, 168);
1011 fGroupFrame1514->
MoveResize(8, 80, 360, 168);
1017 fCreateSystem =
new TGTextButton(fGroupFrame1488,
"Create");
1018 fCreateSystem->SetTextJustify(36);
1019 fCreateSystem->Resize(48, 24);
1020 fCreateSystem->ChangeBackground(green);
1021 fCreateSystem->SetToolTipText(
"Create new system with current properties");
1023 fCreateSystem->MoveResize(36, 280, 60, 24);
1024 fCreateSystem->Connect(
"Clicked()",
1025 "KVDBSystemDialog",
this,
"CreateNewSystem()");
1026 fCreateSystem->SetEnabled(
kFALSE);
1030 fTextButton1573->
Resize(48, 24);
1033 fTextButton1573->
MoveResize(100, 280, 60, 24);
1034 fTextButton1573->
SetToolTipText(
"Delete the currently selected system");
1035 fTextButton1573->
Connect(
"Clicked()",
1036 "KVDBSystemDialog",
this,
"DeleteSystem()");
1038 fSetRuns =
new TGTextButton(fGroupFrame1488,
"Set Runs");
1039 fSetRuns->SetTextJustify(36);
1040 fSetRuns->Resize(48, 24);
1041 fSetRuns->ChangeBackground(yellow);
1043 fSetRuns->MoveResize(164, 280, 60, 24);
1044 fSetRuns->SetToolTipText(
"Set runs for selected system");
1045 fSetRuns->Connect(
"Clicked()",
1046 "KVDBSystemDialog",
this,
"SetRuns()");
1048 fSaveButton =
new TGTextButton(fGroupFrame1488,
"Save");
1049 fSaveButton->SetTextJustify(36);
1050 fSaveButton->Resize(48, 24);
1053 fSaveButton->MoveResize(228, 280, 60, 24);
1054 fSaveButton->SetToolTipText(
"Save changes to systems");
1055 fSaveButton->Connect(
"Clicked()",
1056 "KVDBSystemDialog",
this,
"SaveSystems()");
1060 fcloseButton->
Resize(48, 24);
1065 fcloseButton->
Connect(
"Clicked()",
1066 "KVDBSystemDialog",
this,
"DoClose()");
1069 fGroupFrame1488->
Resize(376, 320);
1071 fGroupFrame1488->
MoveResize(8, 32, 376, 320);
1073 fMainFrame1475->MapSubwindows();
1074 fMainFrame1475->Resize(fMainFrame1475->GetDefaultSize());
1075 fMainFrame1475->CenterOnParent();
1076 fMainFrame1475->SetWindowName(
"Set system properties for runs");
1077 fMainFrame1475->MapWindow();
1078 fMainFrame1475->Resize(394, 358);
const Mask_t kGCBackground
const Mask_t kGCForeground
const Mask_t kGCFillStyle
const Mask_t kGCGraphicsExposures
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
double pow(double, double)
R__EXTERN TSystem * gSystem
static void BackupFileWithDate(const Char_t *path)
const Char_t * GetType() const
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
Dialog box for setting system parameters associated to runs.
void DeleteSystem()
Delete the currently selected system.
void TargetAngleChanged(Long_t)
Called when target angle is changed.
void ProjectileZChanged(Long_t)
void RemoveAll(TGComboBox *)
void ProjectileEChanged(Long_t)
void UpdateSystemProperties()
Update displayed system properties, e.g. when a new system is selected in fComboBox1476.
void UpdateTargetLayerProperties(Int_t)
void UpdateProjectileProperties()
void ProjectileSymbolChanged()
void CreateMainWindow(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h)
Creates main window and displays it.
void TargetLayerAChanged(Long_t)
Called when target layer A is changed.
virtual ~KVDBSystemDialog()
Destructor.
void TargetLayerThicknessChanged(Long_t)
void UpdateTargetProperties()
void SelectSystem(Int_t)
Called when a new system is selected in fComboBox1476.
void ProjectileAChanged(Long_t)
void EnableProjectileProperties(Bool_t)
Called when "Projectile" check box is checked (on=kTRUE) or unchecked (on=kFALSE)
Database class used to store information on different colliding systems studied during an experiment.
const Char_t * GetDataSetDir() const
const Char_t * GetDataSetEnv(const Char_t *type, const Char_t *defval="") const
KVExpDB * GetDataBase(Option_t *opt="") const
Handles a set of different versions of files with the same base name and a timestamp.
void AddSystem(KVDBSystem *r)
void RemoveSystem(KVDBSystem *s)
virtual KVSeqCollection * GetSystems() const
virtual void Save(const Char_t *)
Abstract base class for calculation of range & energy loss of charged particles in matter.
virtual Double_t GetAtomicMass(const Char_t *)
Returns atomic mass of a material in the range tables.
virtual TObjArray * GetListOfMaterials()=0
virtual Double_t GetZ(const Char_t *)
Returns atomic number of a material in the range tables.
Description of physical materials used to construct detectors; interface to range tables.
static KVIonRangeTable * GetRangeTable()
Double_t GetAreaDensity() const
Return area density of material in g/cm**2.
Description of properties and kinematics of atomic nuclei.
const Char_t * GetSymbol(Option_t *opt="") const
Int_t GetZ() const
Return the number of proton / atomic number.
Strings used to represent a set of ranges of values.
KaliVeda extensions to ROOT collection classes.
virtual TObject * At(Int_t idx) const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Calculation/correction of energy losses of particles through an experimental target.
void SetAngleToBeam(Double_t a)
void AddLayer(const Char_t *material, Double_t thick)
virtual void ls(Option_t *option="") const
virtual void SetLayoutBroken(Bool_t on=kTRUE)
virtual void SetLayoutManager(TGLayoutManager *l)
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
FontStruct_t GetFontStruct() const
FontH_t GetFontHandle() const
virtual void Resize(TGDimension size)
virtual void ChangeBackground(Pixel_t back)
virtual void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0)
void SetTextJustify(Int_t tmode)
virtual void Disable(Bool_t on=kTRUE)
virtual void SetState(Bool_t enable=kTRUE)
virtual void SetTextJustify(Int_t tmode)
virtual const char * GetName() const
virtual const char * GetTitle() const
virtual const char * GetName() const
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
const char * Data() const
void Form(const char *fmt,...)
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
static void SingleShot(Int_t milliSec, const char *receiver_class, void *receiver, const char *method)
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
int main(int argc, char **argv)
Bool_t fGraphicsExposures