]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveTRDModule.cxx
Move contents of EVE/Alieve to EVE/EveDet as most code will remain there.
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDModule.cxx
CommitLineData
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 23ClassImp(AliEveTRDModule)
24ClassImp(AliEveTRDModuleEditor)
a282bf09 25
26//________________________________________________________
d810d0de 27AliEveTRDModule::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 56AliEveTRDModuleEditor::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 158AliEveTRDModuleEditor::~AliEveTRDModuleEditor()
a282bf09 159{}
160
161//_________________________________________________________
d810d0de 162void 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 195void AliEveTRDModuleEditor::ModifyDigitsView()
a282bf09 196{
197 fM->kDigitsNeedRecompute = kTRUE;
198 UpdateChamber();
199}
200
201//________________________________________________________
d810d0de 202void 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 213void 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 241void 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 253void 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}