]>
Commit | Line | Data |
---|---|---|
d810d0de | 1 | // $Id$ |
2 | // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007 | |
3 | ||
4 | /************************************************************************** | |
5 | * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * | |
6 | * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * | |
51346b82 | 7 | * full copyright notice. * |
d810d0de | 8 | **************************************************************************/ |
9 | #include "AliEveTRDModule.h" | |
10 | #include "AliEveTRDModuleImp.h" | |
a282bf09 | 11 | |
12 | #include "TGButton.h" | |
13 | #include "TGColorSelect.h" | |
14 | #include "TGNumberEntry.h" | |
15 | #include "TG3DLine.h" | |
16 | //#include "TColor.h" | |
17 | //#include "TMath.h" | |
18 | ||
84aff7a4 | 19 | #include "TEveManager.h" |
20 | #include "TEveTrack.h" | |
a282bf09 | 21 | |
a282bf09 | 22 | |
d810d0de | 23 | ClassImp(AliEveTRDModule) |
24 | ClassImp(AliEveTRDModuleEditor) | |
a282bf09 | 25 | |
26 | //________________________________________________________ | |
d810d0de | 27 | AliEveTRDModule::AliEveTRDModule(const char *typ, Int_t det) : |
a282bf09 | 28 | TNamed(Form("%s%03d", typ, det), ""), fDet(det) |
29 | { | |
30 | fLoadHits = kFALSE; | |
31 | fRnrHits = kTRUE; | |
51346b82 | 32 | |
a282bf09 | 33 | fLoadDigits = kFALSE; |
34 | fRnrDigits = kTRUE; | |
35 | fDigitsLog = kFALSE; | |
36 | fDigitsBox = kFALSE; | |
37 | ||
38 | fLoadRecPoints = kFALSE; | |
39 | fRnrRecPoints = kTRUE; | |
40 | ||
41 | fLoadTracklets = kFALSE; | |
42 | fRnrTracklets = kTRUE; | |
43 | ||
44 | kDigitsNeedRecompute = kTRUE; | |
45 | ||
14217b5f | 46 | fDigitsThreshold = 15; |
a282bf09 | 47 | } |
48 | ||
49 | ||
50 | ||
51 | /////////////////////////////////////////////////////////// | |
d810d0de | 52 | ///////////// AliEveTRDModuleEditor ///////////////////// |
a282bf09 | 53 | /////////////////////////////////////////////////////////// |
54 | ||
55 | //________________________________________________________ | |
d810d0de | 56 | AliEveTRDModuleEditor::AliEveTRDModuleEditor(const TGWindow* p, Int_t width, Int_t height, UInt_t options, Pixel_t back) : TGedFrame(p, width, height, options | kVerticalFrame, back) |
a282bf09 | 57 | { |
58 | MakeTitle("TRD Detector"); | |
51346b82 | 59 | |
a282bf09 | 60 | // "Hits" group frame |
61 | TGGroupFrame *fGroupFrame615 = new TGGroupFrame(this,"Hits"); | |
62 | fDisplayHits = new TGCheckButton(fGroupFrame615,"Display"); | |
63 | fDisplayHits->SetToolTipText("Display hits attached to chamber"); | |
64 | fDisplayHits->SetState(kButtonDown); | |
65 | fGroupFrame615->AddFrame(fDisplayHits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
66 | fDisplayHits->Connect("Clicked()", | |
d810d0de | 67 | "AliEveTRDModuleEditor", this, "UpdateChamber()"); |
a282bf09 | 68 | |
69 | // color select widget | |
70 | ULong_t ColPar1; | |
71 | gClient->GetColorByName("#ff00ff", ColPar1); | |
72 | fHitsColor = new TGColorSelect(fGroupFrame615, ColPar1, -1); | |
73 | ||
74 | fGroupFrame615->AddFrame(fHitsColor, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2)); | |
75 | fHitsColor->Connect("ColorSelected(Pixel_t)", | |
d810d0de | 76 | "AliEveTRDModuleEditor", this, "UpdateHits(Pixel_t)"); |
51346b82 | 77 | |
a282bf09 | 78 | fGroupFrame615->SetLayoutManager(new TGVerticalLayout(fGroupFrame615)); |
79 | AddFrame(fGroupFrame615, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
80 | ||
81 | // "Digits" group frame | |
82 | TGGroupFrame *fGroupFrame636 = new TGGroupFrame(this,"Digits"); | |
83 | TGVerticalFrame *fVerticalFrame538 = new TGVerticalFrame(fGroupFrame636,68,63,kVerticalFrame); | |
84 | fDisplayDigits = new TGCheckButton(fVerticalFrame538,"Display"); | |
85 | fDisplayDigits->SetState(kButtonDown); | |
86 | fDisplayDigits->SetToolTipText("Toggle display digits attached to chamber"); | |
87 | fVerticalFrame538->AddFrame(fDisplayDigits, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
88 | fDisplayDigits->Connect("Clicked()", | |
d810d0de | 89 | "AliEveTRDModuleEditor", this, "UpdateChamber()"); |
a282bf09 | 90 | fToggleLog = new TGCheckButton(fVerticalFrame538,"Log"); |
91 | fToggleLog->SetState(kButtonUp); | |
92 | fToggleLog->SetToolTipText("Toggle logarithmic representation of digits"); | |
93 | fVerticalFrame538->AddFrame(fToggleLog, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
94 | fToggleLog->Connect("Clicked()", | |
d810d0de | 95 | "AliEveTRDModuleEditor", this, "ModifyDigitsView()"); |
a282bf09 | 96 | |
97 | fToggleBox = new TGCheckButton(fVerticalFrame538,"Box"); | |
98 | fToggleBox->SetState(kButtonUp); | |
99 | fToggleBox->SetToolTipText("Toggle display digits as boxes"); | |
100 | fVerticalFrame538->AddFrame(fToggleBox, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
101 | fToggleBox->Connect("Clicked()", | |
d810d0de | 102 | "AliEveTRDModuleEditor", this, "ModifyDigitsView()"); |
a282bf09 | 103 | fGroupFrame636->AddFrame(fVerticalFrame538, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2)); |
51346b82 | 104 | |
a282bf09 | 105 | TGVertical3DLine *fVertical3DLine773 = new TGVertical3DLine(fGroupFrame636,8,63); |
106 | fGroupFrame636->AddFrame(fVertical3DLine773, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsExpandY,2,2,2,2)); | |
51346b82 | 107 | |
a282bf09 | 108 | // vertical frame |
109 | TGVerticalFrame *fVerticalFrame543 = new TGVerticalFrame(fGroupFrame636,81,47,kVerticalFrame); | |
110 | fThreshold = new TGCheckButton(fVerticalFrame543, "Threshold"); | |
111 | fThreshold->SetToolTipText("Toggle threshold updating display"); | |
112 | fVerticalFrame543->AddFrame(fThreshold, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
113 | fThresValue = new TGNumberEntry(fVerticalFrame543, (Int_t)10, 5, -1, TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive, TGNumberFormat::kNELLimitMinMax, 0, 1024); | |
114 | fThresValue->Connect("ValueSet(Long_t)", | |
d810d0de | 115 | "AliEveTRDModuleEditor", this, "SetThreshold(Long_t)"); |
a282bf09 | 116 | fVerticalFrame543->AddFrame(fThresValue, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); |
117 | ||
118 | fGroupFrame636->AddFrame(fVerticalFrame543, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2)); | |
119 | ||
120 | fGroupFrame636->SetLayoutManager(new TGHorizontalLayout(fGroupFrame636)); | |
121 | AddFrame(fGroupFrame636, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
122 | ||
123 | // "Clusters" group frame | |
124 | TGGroupFrame *fGroupFrame649 = new TGGroupFrame(this,"Clusters"); | |
125 | fDisplayClusters = new TGCheckButton(fGroupFrame649,"Display"); | |
126 | fDisplayClusters->SetToolTipText("Display clusters attached to chamber"); | |
127 | fGroupFrame649->AddFrame(fDisplayClusters, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
128 | fDisplayClusters->SetState(kButtonDown); | |
129 | fDisplayClusters->Connect("Clicked()", | |
d810d0de | 130 | "AliEveTRDModuleEditor", this, "UpdateChamber()"); |
a282bf09 | 131 | |
132 | // color select widget | |
133 | ULong_t ColPar2; | |
134 | gClient->GetColorByName("#ff00ff", ColPar2); | |
135 | fClustersColor = new TGColorSelect(fGroupFrame649, ColPar2, -1); | |
136 | ||
137 | fGroupFrame649->AddFrame(fClustersColor, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop | kLHintsCenterY,2,2,2,2)); | |
138 | fClustersColor->Connect("ColorSelected(Pixel_t)", | |
d810d0de | 139 | "AliEveTRDModuleEditor", this, "UpdateClusters(Pixel_t)"); |
a282bf09 | 140 | |
141 | fGroupFrame649->SetLayoutManager(new TGVerticalLayout(fGroupFrame649)); | |
142 | AddFrame(fGroupFrame649, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
143 | ||
144 | // "Tracks" group frame | |
145 | TGGroupFrame *fGroupFrame676 = new TGGroupFrame(this,"Tracklets"); | |
146 | fDisplayTracks = new TGCheckButton(fGroupFrame676,"Display"); | |
147 | fDisplayTracks->SetToolTipText("Display MCM tracklets attached to chamber"); | |
148 | fGroupFrame676->AddFrame(fDisplayTracks, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
149 | fDisplayTracks->SetState(kButtonDown); | |
150 | fDisplayTracks->Connect("Clicked()", | |
d810d0de | 151 | "AliEveTRDModuleEditor", this, "UpdateChamber()"); |
a282bf09 | 152 | |
153 | fGroupFrame676->SetLayoutManager(new TGVerticalLayout(fGroupFrame676)); | |
154 | AddFrame(fGroupFrame676, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterY | kLHintsExpandX,2,2,2,2)); | |
155 | } | |
156 | ||
157 | //________________________________________________________ | |
d810d0de | 158 | AliEveTRDModuleEditor::~AliEveTRDModuleEditor() |
a282bf09 | 159 | {} |
160 | ||
161 | //_________________________________________________________ | |
d810d0de | 162 | void AliEveTRDModuleEditor::SetModel(TObject* obj) |
a282bf09 | 163 | { |
164 | // Takes care to update UI state according to model state | |
165 | ||
d810d0de | 166 | fM = dynamic_cast<AliEveTRDModule*>(obj); |
167 | if(AliEveTRDNode *node = dynamic_cast<AliEveTRDNode*>(fM)) node->UpdateNode(); | |
51346b82 | 168 | |
14217b5f | 169 | fDisplayHits->SetEnabled(fM->fLoadHits); |
170 | if(fM->fLoadHits) fDisplayHits->SetState( fM->fRnrHits ? kButtonDown : kButtonUp); | |
51346b82 | 171 | |
14217b5f | 172 | fDisplayDigits->SetEnabled(fM->fLoadDigits); |
173 | fToggleLog->SetEnabled(fM->fLoadDigits); | |
174 | fToggleBox->SetEnabled(fM->fLoadDigits); | |
175 | fThreshold->SetEnabled(fM->fLoadDigits); | |
176 | fThresValue->GetNumberEntry()->SetEnabled(fM->fLoadDigits); | |
177 | fThresValue->GetButtonDown()->SetEnabled(fM->fLoadDigits); | |
178 | fThresValue->GetButtonUp()->SetEnabled(fM->fLoadDigits); | |
179 | fThresValue->SetIntNumber(fM->fDigitsThreshold); | |
a282bf09 | 180 | if(fM->fLoadDigits){ |
181 | fDisplayDigits->SetState(fM->fRnrDigits ? kButtonDown : kButtonUp); | |
182 | fToggleLog->SetState(fM->fDigitsLog ? kButtonDown : kButtonUp); | |
183 | fToggleBox->SetState(fM->fDigitsBox ? kButtonDown : kButtonUp); | |
14217b5f | 184 | fThreshold->SetState(fM->kDigitsNeedRecompute ? kButtonDown : kButtonUp); |
a282bf09 | 185 | } |
51346b82 | 186 | |
a282bf09 | 187 | if(fM->fLoadRecPoints) fDisplayClusters->SetState(fM->fRnrRecPoints ? kButtonDown : kButtonUp); |
188 | else fDisplayClusters->SetEnabled(kFALSE); | |
51346b82 | 189 | |
a282bf09 | 190 | if(fM->fLoadTracklets) fDisplayTracks->SetState(fM->fRnrTracklets ? kButtonDown : kButtonUp); |
191 | else fDisplayTracks->SetEnabled(kFALSE); | |
192 | } | |
193 | ||
194 | //_________________________________________________________ | |
d810d0de | 195 | void AliEveTRDModuleEditor::ModifyDigitsView() |
a282bf09 | 196 | { |
197 | fM->kDigitsNeedRecompute = kTRUE; | |
198 | UpdateChamber(); | |
199 | } | |
200 | ||
201 | //________________________________________________________ | |
d810d0de | 202 | void AliEveTRDModuleEditor::SetThreshold(Long_t tres) |
a282bf09 | 203 | { |
204 | if(!fM->fLoadDigits) return; | |
51346b82 | 205 | |
14217b5f | 206 | fM->fDigitsThreshold = (tres == 0) ? (int)fThresValue->GetNumber():tres; |
207 | fM->kDigitsNeedRecompute = fThreshold->IsDown(); | |
a282bf09 | 208 | UpdateChamber(); |
209 | } | |
210 | ||
211 | ||
212 | //_________________________________________________________ | |
d810d0de | 213 | void AliEveTRDModuleEditor::UpdateChamber() |
a282bf09 | 214 | { |
215 | // Info("UpdateChamber()", ""); | |
216 | ||
217 | fM->fRnrHits = kFALSE; | |
218 | if(fDisplayHits->IsDown()) fM->fRnrHits = kTRUE; | |
51346b82 | 219 | |
a282bf09 | 220 | fM->fRnrDigits = kFALSE; |
221 | if(fDisplayDigits->IsDown()){ | |
222 | fM->fRnrDigits = kTRUE; | |
223 | if(fToggleLog->IsDown()) fM->fDigitsLog = kTRUE; | |
224 | else fM->fDigitsLog = kFALSE; | |
225 | if(fToggleBox->IsDown()) fM->fDigitsBox = kTRUE; | |
226 | else fM->fDigitsBox = kFALSE; | |
227 | } | |
51346b82 | 228 | |
a282bf09 | 229 | fM->fRnrRecPoints = kFALSE; |
230 | if(fDisplayClusters->IsDown()) fM->fRnrRecPoints = kTRUE; | |
51346b82 | 231 | |
a282bf09 | 232 | fM->fRnrTracklets = kFALSE; |
233 | if(fDisplayTracks->IsDown()) fM->fRnrTracklets = kTRUE; | |
234 | ||
d810d0de | 235 | if(dynamic_cast<AliEveTRDNode*>(fM)) (dynamic_cast<AliEveTRDNode*>(fM))->UpdateLeaves(); |
a282bf09 | 236 | |
84aff7a4 | 237 | gEve->Redraw3D(); |
a282bf09 | 238 | } |
239 | ||
240 | //_________________________________________________________ | |
d810d0de | 241 | void AliEveTRDModuleEditor::UpdateClusters(Pixel_t /*col*/) |
a282bf09 | 242 | { |
243 | // Info("UpdateClusters()",""); | |
51346b82 | 244 | /* |
a282bf09 | 245 | if(fM->fRecPoints){ |
246 | fM->fRecPoints->SetMarkerColor(col ? fHitsColor->GetColor() : col); | |
84aff7a4 | 247 | gEve->Redraw3D(); |
a282bf09 | 248 | } |
249 | */ | |
250 | } | |
251 | ||
252 | //_________________________________________________________ | |
d810d0de | 253 | void AliEveTRDModuleEditor::UpdateHits(Pixel_t /*col*/) |
a282bf09 | 254 | { |
255 | // Info("UpdateHits()",""); | |
51346b82 | 256 | /* |
a282bf09 | 257 | if(fM->fHits){ |
258 | fM->fHits->SetMarkerColor(col ? fClustersColor->GetColor() : col); | |
84aff7a4 | 259 | gEve->Redraw3D(); |
a282bf09 | 260 | } |
261 | */ | |
262 | } |