]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Alieve/TRDModule.cxx
Missing initialization; fiddle with the track marker-style a bit more.
[u/mrichter/AliRoot.git] / EVE / Alieve / TRDModule.cxx
CommitLineData
a282bf09 1#include "TRDModule.h"
2#include "TRDModuleImp.h"
3
4#include "TGButton.h"
5#include "TGColorSelect.h"
6#include "TGNumberEntry.h"
7#include "TG3DLine.h"
8//#include "TColor.h"
9//#include "TMath.h"
10
11#include "Reve/RGTopFrame.h"
12#include "Reve/Track.h"
13
14
15using namespace Reve;
16using namespace Alieve;
17//using namespace std;
18
19ClassImp(TRDModule)
20ClassImp(TRDModuleEditor)
21
22//________________________________________________________
f5790a4c 23TRDModule::TRDModule(const char *typ, Int_t det) :
a282bf09 24 TNamed(Form("%s%03d", typ, det), ""), fDet(det)
25{
26 fLoadHits = kFALSE;
27 fRnrHits = kTRUE;
28
29 fLoadDigits = kFALSE;
30 fRnrDigits = kTRUE;
31 fDigitsLog = kFALSE;
32 fDigitsBox = kFALSE;
33
34 fLoadRecPoints = kFALSE;
35 fRnrRecPoints = kTRUE;
36
37 fLoadTracklets = kFALSE;
38 fRnrTracklets = kTRUE;
39
40 kDigitsNeedRecompute = kTRUE;
41
14217b5f 42 fDigitsThreshold = 15;
a282bf09 43}
44
45
46
47///////////////////////////////////////////////////////////
48///////////// TRDModuleEditor /////////////////////
49///////////////////////////////////////////////////////////
50
51//________________________________________________________
52TRDModuleEditor::TRDModuleEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back)
53{
54 MakeTitle("TRD Detector");
55
56 // "Hits" group frame
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()");
64
65 // color select widget
66 ULong_t ColPar1;
67 gClient->GetColorByName("#ff00ff", ColPar1);
68 fHitsColor = new TGColorSelect(fGroupFrame615, ColPar1, -1);
69
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)");
73
74 fGroupFrame615->SetLayoutManager(new TGVerticalLayout(fGroupFrame615));
75 AddFrame(fGroupFrame615, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
76
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()");
92
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));
100
101 TGVertical3DLine *fVertical3DLine773 = new TGVertical3DLine(fGroupFrame636,8,63);
102 fGroupFrame636->AddFrame(fVertical3DLine773, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsExpandY,2,2,2,2));
103
104 // vertical frame
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));
113
114 fGroupFrame636->AddFrame(fVerticalFrame543, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
115
116 fGroupFrame636->SetLayoutManager(new TGHorizontalLayout(fGroupFrame636));
117 AddFrame(fGroupFrame636, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
118
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()");
127
128 // color select widget
129 ULong_t ColPar2;
130 gClient->GetColorByName("#ff00ff", ColPar2);
131 fClustersColor = new TGColorSelect(fGroupFrame649, ColPar2, -1);
132
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)");
136
137 fGroupFrame649->SetLayoutManager(new TGVerticalLayout(fGroupFrame649));
138 AddFrame(fGroupFrame649, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
139
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()");
148
149 fGroupFrame676->SetLayoutManager(new TGVerticalLayout(fGroupFrame676));
150 AddFrame(fGroupFrame676, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2));
151}
152
153//________________________________________________________
154TRDModuleEditor::~TRDModuleEditor()
155{}
156
157//_________________________________________________________
158void TRDModuleEditor::SetModel(TObject* obj)
159{
160// Takes care to update UI state according to model state
161
162 fM = dynamic_cast<TRDModule*>(obj);
14217b5f 163 if(TRDNode *node = dynamic_cast<TRDNode*>(fM)) node->UpdateNode();
a282bf09 164
14217b5f 165 fDisplayHits->SetEnabled(fM->fLoadHits);
166 if(fM->fLoadHits) fDisplayHits->SetState( fM->fRnrHits ? kButtonDown : kButtonUp);
a282bf09 167
14217b5f 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);
a282bf09 176 if(fM->fLoadDigits){
177 fDisplayDigits->SetState(fM->fRnrDigits ? kButtonDown : kButtonUp);
178 fToggleLog->SetState(fM->fDigitsLog ? kButtonDown : kButtonUp);
179 fToggleBox->SetState(fM->fDigitsBox ? kButtonDown : kButtonUp);
14217b5f 180 fThreshold->SetState(fM->kDigitsNeedRecompute ? kButtonDown : kButtonUp);
a282bf09 181 }
a282bf09 182
183 if(fM->fLoadRecPoints) fDisplayClusters->SetState(fM->fRnrRecPoints ? kButtonDown : kButtonUp);
184 else fDisplayClusters->SetEnabled(kFALSE);
185
186 if(fM->fLoadTracklets) fDisplayTracks->SetState(fM->fRnrTracklets ? kButtonDown : kButtonUp);
187 else fDisplayTracks->SetEnabled(kFALSE);
188}
189
190//_________________________________________________________
191void TRDModuleEditor::ModifyDigitsView()
192{
193 fM->kDigitsNeedRecompute = kTRUE;
194 UpdateChamber();
195}
196
197//________________________________________________________
198void TRDModuleEditor::SetThreshold(Long_t tres)
199{
200 if(!fM->fLoadDigits) return;
a282bf09 201
14217b5f 202 fM->fDigitsThreshold = (tres == 0) ? (int)fThresValue->GetNumber():tres;
203 fM->kDigitsNeedRecompute = fThreshold->IsDown();
a282bf09 204 UpdateChamber();
205}
206
207
208//_________________________________________________________
209void TRDModuleEditor::UpdateChamber()
210{
211// Info("UpdateChamber()", "");
212
213 fM->fRnrHits = kFALSE;
214 if(fDisplayHits->IsDown()) fM->fRnrHits = kTRUE;
215
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;
223 }
224
225 fM->fRnrRecPoints = kFALSE;
226 if(fDisplayClusters->IsDown()) fM->fRnrRecPoints = kTRUE;
227
228 fM->fRnrTracklets = kFALSE;
229 if(fDisplayTracks->IsDown()) fM->fRnrTracklets = kTRUE;
230
231 if(dynamic_cast<TRDNode*>(fM)) (dynamic_cast<TRDNode*>(fM))->UpdateLeaves();
232
233 gReve->Redraw3D();
234}
235
236//_________________________________________________________
237void TRDModuleEditor::UpdateClusters(Pixel_t /*col*/)
238{
239// Info("UpdateClusters()","");
240/*
241 if(fM->fRecPoints){
242 fM->fRecPoints->SetMarkerColor(col ? fHitsColor->GetColor() : col);
243 gReve->Redraw3D();
244 }
245*/
246}
247
248//_________________________________________________________
249void TRDModuleEditor::UpdateHits(Pixel_t /*col*/)
250{
251// Info("UpdateHits()","");
252/*
253 if(fM->fHits){
254 fM->fHits->SetMarkerColor(col ? fClustersColor->GetColor() : col);
255 gReve->Redraw3D();
256 }
257*/
258}