]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Alieve/TRDModule.cxx
Runloader is updated when moving to next file (quick fix).
[u/mrichter/AliRoot.git] / EVE / Alieve / TRDModule.cxx
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
15 using namespace Reve;
16 using namespace Alieve;
17 //using namespace std;
18
19 ClassImp(TRDModule)
20 ClassImp(TRDModuleEditor)
21
22 //________________________________________________________
23 TRDModule::TRDModule(const char *typ, Int_t det) :
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
42         fDigitsThreshold = 15;
43 }
44
45
46
47 ///////////////////////////////////////////////////////////
48 /////////////   TRDModuleEditor       /////////////////////
49 ///////////////////////////////////////////////////////////
50
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)
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 //________________________________________________________
154 TRDModuleEditor::~TRDModuleEditor()
155 {}
156
157 //_________________________________________________________
158 void TRDModuleEditor::SetModel(TObject* obj)
159 {
160 // Takes care to update UI state according to model state
161
162         fM = dynamic_cast<TRDModule*>(obj);
163         if(TRDNode *node = dynamic_cast<TRDNode*>(fM)) node->UpdateNode();
164         
165         fDisplayHits->SetEnabled(fM->fLoadHits);
166         if(fM->fLoadHits) fDisplayHits->SetState( fM->fRnrHits ? kButtonDown : kButtonUp);
167                 
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);
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);
180                 fThreshold->SetState(fM->kDigitsNeedRecompute ? kButtonDown : kButtonUp);
181         }
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 //_________________________________________________________
191 void TRDModuleEditor::ModifyDigitsView()
192 {
193         fM->kDigitsNeedRecompute = kTRUE;
194         UpdateChamber();
195 }
196
197 //________________________________________________________
198 void TRDModuleEditor::SetThreshold(Long_t tres)
199 {
200         if(!fM->fLoadDigits) return;
201         
202         fM->fDigitsThreshold = (tres == 0) ? (int)fThresValue->GetNumber():tres;
203         fM->kDigitsNeedRecompute = fThreshold->IsDown();
204         UpdateChamber();
205 }
206
207
208 //_________________________________________________________
209 void 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 //_________________________________________________________
237 void 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 //_________________________________________________________
249 void 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 }