2 #include "TRDModuleImp.h"
5 #include "TGColorSelect.h"
6 #include "TGNumberEntry.h"
11 #include "Reve/RGTopFrame.h"
12 #include "Reve/Track.h"
16 using namespace Alieve;
17 //using namespace std;
20 ClassImp(TRDModuleEditor)
22 //________________________________________________________
23 TRDModule::TRDModule(const char *typ, Int_t det) :
24 TNamed(Form("%s%03d", typ, det), ""), fDet(det)
34 fLoadRecPoints = kFALSE;
35 fRnrRecPoints = kTRUE;
37 fLoadTracklets = kFALSE;
38 fRnrTracklets = kTRUE;
40 kDigitsNeedRecompute = kTRUE;
42 fDigitsThreshold = 15;
47 ///////////////////////////////////////////////////////////
48 ///////////// TRDModuleEditor /////////////////////
49 ///////////////////////////////////////////////////////////
51 //________________________________________________________
52 TRDModuleEditor::TRDModuleEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back)
54 MakeTitle("TRD Detector");
57 TGGroupFrame *fGroupFrame615 = new TGGroupFrame(this,"Hits");
58 fDisplayHits = new TGCheckButton(fGroupFrame615,"Display");
59 fDisplayHits->SetToolTipText("Display hits attached to chamber");
60 fDisplayHits->SetState(kButtonDown);
61 fGroupFrame615->AddFrame(fDisplayHits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
62 fDisplayHits->Connect("Clicked()",
63 "Alieve::TRDModuleEditor", this, "UpdateChamber()");
65 // color select widget
67 gClient->GetColorByName("#ff00ff", ColPar1);
68 fHitsColor = new TGColorSelect(fGroupFrame615, ColPar1, -1);
70 fGroupFrame615->AddFrame(fHitsColor, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2));
71 fHitsColor->Connect("ColorSelected(Pixel_t)",
72 "Alieve::TRDModuleEditor", this, "UpdateHits(Pixel_t)");
74 fGroupFrame615->SetLayoutManager(new TGVerticalLayout(fGroupFrame615));
75 AddFrame(fGroupFrame615, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
77 // "Digits" group frame
78 TGGroupFrame *fGroupFrame636 = new TGGroupFrame(this,"Digits");
79 TGVerticalFrame *fVerticalFrame538 = new TGVerticalFrame(fGroupFrame636,68,63,kVerticalFrame);
80 fDisplayDigits = new TGCheckButton(fVerticalFrame538,"Display");
81 fDisplayDigits->SetState(kButtonDown);
82 fDisplayDigits->SetToolTipText("Toggle display digits attached to chamber");
83 fVerticalFrame538->AddFrame(fDisplayDigits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
84 fDisplayDigits->Connect("Clicked()",
85 "Alieve::TRDModuleEditor", this, "UpdateChamber()");
86 fToggleLog = new TGCheckButton(fVerticalFrame538,"Log");
87 fToggleLog->SetState(kButtonUp);
88 fToggleLog->SetToolTipText("Toggle logarithmic representation of digits");
89 fVerticalFrame538->AddFrame(fToggleLog, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
90 fToggleLog->Connect("Clicked()",
91 "Alieve::TRDModuleEditor", this, "ModifyDigitsView()");
93 fToggleBox = new TGCheckButton(fVerticalFrame538,"Box");
94 fToggleBox->SetState(kButtonUp);
95 fToggleBox->SetToolTipText("Toggle display digits as boxes");
96 fVerticalFrame538->AddFrame(fToggleBox, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
97 fToggleBox->Connect("Clicked()",
98 "Alieve::TRDModuleEditor", this, "ModifyDigitsView()");
99 fGroupFrame636->AddFrame(fVerticalFrame538, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
101 TGVertical3DLine *fVertical3DLine773 = new TGVertical3DLine(fGroupFrame636,8,63);
102 fGroupFrame636->AddFrame(fVertical3DLine773, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsExpandY,2,2,2,2));
105 TGVerticalFrame *fVerticalFrame543 = new TGVerticalFrame(fGroupFrame636,81,47,kVerticalFrame);
106 fThreshold = new TGCheckButton(fVerticalFrame543, "Threshold");
107 fThreshold->SetToolTipText("Toggle threshold updating display");
108 fVerticalFrame543->AddFrame(fThreshold, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
109 fThresValue = new TGNumberEntry(fVerticalFrame543, (Int_t)10, 5, -1, TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive, TGNumberFormat::kNELLimitMinMax, 0, 1024);
110 fThresValue->Connect("ValueSet(Long_t)",
111 "Alieve::TRDModuleEditor", this, "SetThreshold(Long_t)");
112 fVerticalFrame543->AddFrame(fThresValue, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
114 fGroupFrame636->AddFrame(fVerticalFrame543, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
116 fGroupFrame636->SetLayoutManager(new TGHorizontalLayout(fGroupFrame636));
117 AddFrame(fGroupFrame636, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
119 // "Clusters" group frame
120 TGGroupFrame *fGroupFrame649 = new TGGroupFrame(this,"Clusters");
121 fDisplayClusters = new TGCheckButton(fGroupFrame649,"Display");
122 fDisplayClusters->SetToolTipText("Display clusters attached to chamber");
123 fGroupFrame649->AddFrame(fDisplayClusters, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
124 fDisplayClusters->SetState(kButtonDown);
125 fDisplayClusters->Connect("Clicked()",
126 "Alieve::TRDModuleEditor", this, "UpdateChamber()");
128 // color select widget
130 gClient->GetColorByName("#ff00ff", ColPar2);
131 fClustersColor = new TGColorSelect(fGroupFrame649, ColPar2, -1);
133 fGroupFrame649->AddFrame(fClustersColor, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2));
134 fClustersColor->Connect("ColorSelected(Pixel_t)",
135 "Alieve::TRDModuleEditor", this, "UpdateClusters(Pixel_t)");
137 fGroupFrame649->SetLayoutManager(new TGVerticalLayout(fGroupFrame649));
138 AddFrame(fGroupFrame649, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
140 // "Tracks" group frame
141 TGGroupFrame *fGroupFrame676 = new TGGroupFrame(this,"Tracklets");
142 fDisplayTracks = new TGCheckButton(fGroupFrame676,"Display");
143 fDisplayTracks->SetToolTipText("Display MCM tracklets attached to chamber");
144 fGroupFrame676->AddFrame(fDisplayTracks, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
145 fDisplayTracks->SetState(kButtonDown);
146 fDisplayTracks->Connect("Clicked()",
147 "Alieve::TRDModuleEditor", this, "UpdateChamber()");
149 fGroupFrame676->SetLayoutManager(new TGVerticalLayout(fGroupFrame676));
150 AddFrame(fGroupFrame676, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
153 //________________________________________________________
154 TRDModuleEditor::~TRDModuleEditor()
157 //_________________________________________________________
158 void TRDModuleEditor::SetModel(TObject* obj)
160 // Takes care to update UI state according to model state
162 fM = dynamic_cast<TRDModule*>(obj);
163 if(TRDNode *node = dynamic_cast<TRDNode*>(fM)) node->UpdateNode();
165 fDisplayHits->SetEnabled(fM->fLoadHits);
166 if(fM->fLoadHits) fDisplayHits->SetState( fM->fRnrHits ? kButtonDown : kButtonUp);
168 fDisplayDigits->SetEnabled(fM->fLoadDigits);
169 fToggleLog->SetEnabled(fM->fLoadDigits);
170 fToggleBox->SetEnabled(fM->fLoadDigits);
171 fThreshold->SetEnabled(fM->fLoadDigits);
172 fThresValue->GetNumberEntry()->SetEnabled(fM->fLoadDigits);
173 fThresValue->GetButtonDown()->SetEnabled(fM->fLoadDigits);
174 fThresValue->GetButtonUp()->SetEnabled(fM->fLoadDigits);
175 fThresValue->SetIntNumber(fM->fDigitsThreshold);
177 fDisplayDigits->SetState(fM->fRnrDigits ? kButtonDown : kButtonUp);
178 fToggleLog->SetState(fM->fDigitsLog ? kButtonDown : kButtonUp);
179 fToggleBox->SetState(fM->fDigitsBox ? kButtonDown : kButtonUp);
180 fThreshold->SetState(fM->kDigitsNeedRecompute ? kButtonDown : kButtonUp);
183 if(fM->fLoadRecPoints) fDisplayClusters->SetState(fM->fRnrRecPoints ? kButtonDown : kButtonUp);
184 else fDisplayClusters->SetEnabled(kFALSE);
186 if(fM->fLoadTracklets) fDisplayTracks->SetState(fM->fRnrTracklets ? kButtonDown : kButtonUp);
187 else fDisplayTracks->SetEnabled(kFALSE);
190 //_________________________________________________________
191 void TRDModuleEditor::ModifyDigitsView()
193 fM->kDigitsNeedRecompute = kTRUE;
197 //________________________________________________________
198 void TRDModuleEditor::SetThreshold(Long_t tres)
200 if(!fM->fLoadDigits) return;
202 fM->fDigitsThreshold = (tres == 0) ? (int)fThresValue->GetNumber():tres;
203 fM->kDigitsNeedRecompute = fThreshold->IsDown();
208 //_________________________________________________________
209 void TRDModuleEditor::UpdateChamber()
211 // Info("UpdateChamber()", "");
213 fM->fRnrHits = kFALSE;
214 if(fDisplayHits->IsDown()) fM->fRnrHits = kTRUE;
216 fM->fRnrDigits = kFALSE;
217 if(fDisplayDigits->IsDown()){
218 fM->fRnrDigits = kTRUE;
219 if(fToggleLog->IsDown()) fM->fDigitsLog = kTRUE;
220 else fM->fDigitsLog = kFALSE;
221 if(fToggleBox->IsDown()) fM->fDigitsBox = kTRUE;
222 else fM->fDigitsBox = kFALSE;
225 fM->fRnrRecPoints = kFALSE;
226 if(fDisplayClusters->IsDown()) fM->fRnrRecPoints = kTRUE;
228 fM->fRnrTracklets = kFALSE;
229 if(fDisplayTracks->IsDown()) fM->fRnrTracklets = kTRUE;
231 if(dynamic_cast<TRDNode*>(fM)) (dynamic_cast<TRDNode*>(fM))->UpdateLeaves();
236 //_________________________________________________________
237 void TRDModuleEditor::UpdateClusters(Pixel_t /*col*/)
239 // Info("UpdateClusters()","");
242 fM->fRecPoints->SetMarkerColor(col ? fHitsColor->GetColor() : col);
248 //_________________________________________________________
249 void TRDModuleEditor::UpdateHits(Pixel_t /*col*/)
251 // Info("UpdateHits()","");
254 fM->fHits->SetMarkerColor(col ? fClustersColor->GetColor() : col);