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, const 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 = 10;
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(dynamic_cast<TRDNode*>(fM)) dynamic_cast<TRDNode*>(fM)->UpdateNode();
165 if(fM->fLoadHits) fDisplayHits->SetState(fM->fRnrHits ? kButtonDown : kButtonUp);
166 else fDisplayHits->SetEnabled(kFALSE);
169 fDisplayDigits->SetState(fM->fRnrDigits ? kButtonDown : kButtonUp);
170 fToggleLog->SetState(fM->fDigitsLog ? kButtonDown : kButtonUp);
171 fToggleBox->SetState(fM->fDigitsBox ? kButtonDown : kButtonUp);
172 fThresValue->SetIntNumber(fM->fDigitsThreshold);
174 fDisplayDigits->SetEnabled(kFALSE);
175 fToggleLog->SetEnabled(kFALSE);
176 fToggleBox->SetEnabled(kFALSE);
178 fThreshold->SetEnabled(fM->fLoadDigits);
181 if(fM->fLoadRecPoints) fDisplayClusters->SetState(fM->fRnrRecPoints ? kButtonDown : kButtonUp);
182 else fDisplayClusters->SetEnabled(kFALSE);
184 if(fM->fLoadTracklets) fDisplayTracks->SetState(fM->fRnrTracklets ? kButtonDown : kButtonUp);
185 else fDisplayTracks->SetEnabled(kFALSE);
188 //_________________________________________________________
189 void TRDModuleEditor::ModifyDigitsView()
191 fM->kDigitsNeedRecompute = kTRUE;
195 //________________________________________________________
196 void TRDModuleEditor::SetThreshold(Long_t tres)
198 if(!fM->fLoadDigits) return;
199 tres = (tres == 0) ? (int)fThresValue->GetNumber():tres;
201 fM->fDigitsThreshold = tres;
202 if(fThreshold->IsDown()) fM->kDigitsNeedRecompute = kTRUE;
207 //_________________________________________________________
208 void TRDModuleEditor::UpdateChamber()
210 // Info("UpdateChamber()", "");
212 fM->fRnrHits = kFALSE;
213 if(fDisplayHits->IsDown()) fM->fRnrHits = kTRUE;
215 fM->fRnrDigits = kFALSE;
216 if(fDisplayDigits->IsDown()){
217 fM->fRnrDigits = kTRUE;
218 if(fToggleLog->IsDown()) fM->fDigitsLog = kTRUE;
219 else fM->fDigitsLog = kFALSE;
220 if(fToggleBox->IsDown()) fM->fDigitsBox = kTRUE;
221 else fM->fDigitsBox = kFALSE;
224 fM->fRnrRecPoints = kFALSE;
225 if(fDisplayClusters->IsDown()) fM->fRnrRecPoints = kTRUE;
227 fM->fRnrTracklets = kFALSE;
228 if(fDisplayTracks->IsDown()) fM->fRnrTracklets = kTRUE;
230 if(dynamic_cast<TRDNode*>(fM)) (dynamic_cast<TRDNode*>(fM))->UpdateLeaves();
235 //_________________________________________________________
236 void TRDModuleEditor::UpdateClusters(Pixel_t /*col*/)
238 // Info("UpdateClusters()","");
241 fM->fRecPoints->SetMarkerColor(col ? fHitsColor->GetColor() : col);
247 //_________________________________________________________
248 void TRDModuleEditor::UpdateHits(Pixel_t /*col*/)
250 // Info("UpdateHits()","");
253 fM->fHits->SetMarkerColor(col ? fClustersColor->GetColor() : col);