/[PAMELA software]/eventviewer/flight/src/FEVpamevcontrol.cpp
ViewVC logotype

Contents of /eventviewer/flight/src/FEVpamevcontrol.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (show annotations) (download)
Mon Jun 22 09:30:01 2009 UTC (15 years, 5 months ago) by mocchiut
Branch: MAIN
Changes since 1.10: +58 -14 lines
Possible bug in TRK cluster visualization fixed, new transient windows appearance

1 #include <math.h>
2 #include <stdio.h>
3 #include <iostream>
4 #include <iomanip>
5 #include <fstream>
6 #include <sstream>
7 #if (__GNUC__ == 3) && (__GNUC_MINOR__ == 2)
8 char* operator+( std::streampos&, char* );
9 #endif
10 //
11 #include <TObjectTable.h>
12 #include <TGClient.h>
13 #include <TGButton.h>
14 #include <TGComboBox.h>
15 #include <TGLabel.h>
16 #include <TGTextEntry.h>
17 #include <TGFrame.h>
18 #include <TGButtonGroup.h>
19 #include <TGProgressBar.h>
20 #include <TGMsgBox.h>
21 #include <TGComboBox.h>
22 #include <TTree.h>
23 #include <TClassEdit.h>
24 #include <TObject.h>
25 #include <TList.h>
26 #include <TSystem.h>
27 #include <TSystemDirectory.h>
28 #include <TString.h>
29 #include <TFile.h>
30 #include <TClass.h>
31 #include <TCanvas.h>
32 #include <TH1.h>
33 #include <TH1F.h>
34 #include <TH2D.h>
35 #include <TLatex.h>
36 #include <TPad.h>
37 #include <TPaveLabel.h>
38 #include <TLine.h>
39 #include <TPolyLine.h>
40 #include <TChain.h>
41 #include <TApplication.h>
42 #include <TVirtualX.h>
43 #include <TGClient.h>
44 #include <TGWindow.h>
45 #include <TEllipse.h>
46 #include <TArrow.h>
47 #include <TStyle.h>
48 //
49 #include <PamLevel2.h>
50 //
51 #include <FEVpamevcontrol.h>
52 //
53 ClassImp(PAMevcontrol);
54 ClassImp(CalorimeterCalibration);
55 //
56
57 using namespace std;
58
59 void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){
60 if ( to == 0 ){
61 Int_t t2length = s2.Length();
62 s1 = "";
63 to = t2length;
64 };
65 for (Int_t i = from; i<to; i++){
66 s1.Append(s2[i],1);
67 };
68 }
69
70 void stringappend(TString& s1, const TString& s2){
71 Int_t t2length = s2.Length();
72 for (Int_t i = 0; i<t2length; i++){
73 s1.Append(s2[i],1);
74 };
75 }
76
77 CalorimeterCalibration::CalorimeterCalibration() {
78 fname = "dw_000000_000.dat";
79 status = 0;
80 for (Int_t i=0; i<2;i++){
81 for (Int_t j=0; j<22;j++){
82 for (Int_t m=0; m<96;m++){
83 mip[i][j][m] = 0.;
84 ermip[i][j][m] = 0.;
85 chi2[i][j][m] = 0.;
86 ndf[i][j][m] = 0.;
87 mask[i][j][m] = 0.;
88 for (Int_t a = 0; a < 4 ; a++){
89 fp[a][i][j][m] = 0.;
90 fpe[a][i][j][m] = 0.;
91 };
92 };
93 };
94 };
95 };
96
97 PAMevcontrol::PAMevcontrol(const TGWindow *p,UInt_t w,UInt_t h,Variables & var, Levels &level, TCanvas &figure) : TGMainFrame(p, w, h){
98 //
99 SetCleanup(kDeepCleanup);
100 DontCallClose();
101 Connect("CloseWindow()","PAMevcontrol",this,"Terminate()");
102 //
103 clev = &level;
104 cvar = &var;
105 thefigure = &figure;
106 //
107 cframe1 = new TGCompositeFrame(this, 280, 40, kVerticalFrame);
108 TGCompositeFrame *cframe2 = new TGCompositeFrame(this, 280, 60, kVerticalFrame);
109 TGCompositeFrame *cframe3 = new TGCompositeFrame(this, 280, 60, kVerticalFrame);
110 TGCompositeFrame *cframe4 = new TGCompositeFrame(this, 280, 60, kVerticalFrame);
111 TGCompositeFrame *cframe5 = new TGCompositeFrame(this, 280, 60, kVerticalFrame);
112 gf = new TGGroupFrame(cframe1, "Detectors");
113 TGGroupFrame *gf2 = new TGGroupFrame(cframe5, "Appearance");
114 TGGroupFrame *inputf = new TGGroupFrame(cframe2, "Input");
115 TGGroupFrame *jumpf = new TGGroupFrame(cframe3, "Jump to");
116 TGGroupFrame *savef = new TGGroupFrame(cframe4, "Save figure as");
117 //
118 TGHorizontalFrame *htexts = new TGHorizontalFrame(savef,400,800);
119 TGHorizontalFrame *htextsl = new TGHorizontalFrame(cframe4,400,800);
120 TGHorizontalFrame *htext = new TGHorizontalFrame(inputf,400,800);
121 TGHorizontalFrame *htext2 = new TGHorizontalFrame(inputf,400,800);
122 TGHorizontalFrame *htext3 = new TGHorizontalFrame(jumpf,400,800);
123 TGHorizontalFrame *htext4 = new TGHorizontalFrame(jumpf,400,80);
124 TGHorizontalFrame *hframe = new TGHorizontalFrame(this,400,800);
125 for (Int_t fr=0; fr<12; fr++) hframedec[fr] = new TGHorizontalFrame(gf, 7, 7);
126 TGHorizontalFrame *hframe3 = new TGHorizontalFrame(gf2, 280, 40);
127 TGHorizontalFrame *hframe4 = new TGHorizontalFrame(gf2,280,10);
128 TGVerticalFrame *hframe5 = new TGVerticalFrame(hframe4, 280, 40);
129 TGHorizontalFrame *hfrprog = new TGHorizontalFrame(this,400,800);
130 //
131 TGTextEntry *fText = new TGTextEntry(htext, new TGTextBuffer(20),-1);
132 fText->SetText(cvar->thefilename.Data());
133 TGTextButton *Load = new TGTextButton(htext,"Load");
134 Load->Connect("Pressed()","TGTextEntry",fText,"ReturnPressed()");
135 fText->Connect("ReturnPressed()", "PAMevcontrol", this,"SetFilename()");
136 fText->Connect("TabPressed()", "PAMevcontrol", this,"CompleteText()");
137 htext->AddFrame(fText, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY, 0, 5, 5, 5));
138 htext->AddFrame(Load, new TGLayoutHints(kLHintsCenterX,0,5,5,5));
139 inputf->AddFrame(new TGLabel(inputf, new TGHotString("Filename:")));
140 inputf->AddFrame(htext, new TGLayoutHints(kLHintsExpandX));
141 //
142 fText2 = new TGTextEntry(htext2, new TGTextBuffer(20),-1);
143 fText2->SetText(cvar->thefilter.Data());
144 TGTextButton *Load2 = new TGTextButton(htext2,"Load");
145 Load2->Connect("Clicked()","TGTextEntry",fText2,"ReturnPressed()");
146 Load2->SetToolTipText("Clear box and click to unload file");
147 fText2->Connect("ReturnPressed()", "PAMevcontrol", this,"SetFilter()");
148 fText2->Connect("TabPressed()", "PAMevcontrol", this,"CompleteText()");
149 htext2->AddFrame(fText2, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY, 0, 5, 5, 5));
150 htext2->AddFrame(Load2, new TGLayoutHints(kLHintsCenterX,0,5,5,5));
151 inputf->AddFrame(new TGLabel(inputf, new TGHotString("Selection file:")));
152 inputf->AddFrame(htext2, new TGLayoutHints(kLHintsExpandX));
153 //
154 cframe2->AddFrame(inputf,new TGLayoutHints(kLHintsExpandX,5,5,5,5));
155 //
156 //
157 //
158 fComboDec = new TGComboBox(gf, 98);
159 fComboDec->AddEntry(" - Select Detector -", 11);
160 fComboDec->AddEntry("PSCU - ORB", 0);
161 fComboDec->AddEntry("Run", 1);
162 fComboDec->AddEntry("Trigger", 2);
163 fComboDec->AddEntry("ToF", 3);
164 fComboDec->AddEntry("Tracker", 4);
165 fComboDec->AddEntry("Anticounter", 5);
166 fComboDec->AddEntry("Calorimeter", 6);
167 fComboDec->AddEntry("S4", 7);
168 fComboDec->AddEntry("ND", 8);
169 fComboDec->AddEntry("Software info", 9);
170 fComboDec->AddEntry("ALL", 10);
171 fComboDec->Select(11);
172 fComboDec->Resize(150,23);
173 gf->AddFrame(fComboDec, new TGLayoutHints(kLHintsCenterY | kLHintsExpandX| kLHintsLeft, 5, 7, 7, 7));
174 fComboDec->Connect("Selected(Int_t)","PAMevcontrol",this,"refreshdec(Int_t)");
175 //
176 // PSCU/Orbital
177 //
178 fshoworb = new TGTextButton(hframedec[0], "Show Data");
179 fshoworb->Connect("Clicked()","PAMevcontrol", this,"showorbdata()");
180 if ( !cvar->ORB ) fshoworb->SetState(kButtonDisabled);
181 hframedec[0]->AddFrame(fshoworb, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
182 //
183 // RUN
184 //
185 fshowrun = new TGTextButton(hframedec[1], "Show Data");
186 fshowrun->Connect("Clicked()","PAMevcontrol", this,"showrundata()");
187 if ( !cvar->RUN ) fshoworb->SetState(kButtonDisabled);
188 hframedec[1]->AddFrame(fshowrun, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
189 //
190 // Trigger
191 //
192 fshowtrg = new TGTextButton(hframedec[2], "Show Data");
193 fshowtrg->Connect("Clicked()","PAMevcontrol", this,"showtrgdata()");
194 if ( !cvar->TRG ) fshowtrg->SetState(kButtonDisabled);
195 hframedec[2]->AddFrame(fshowtrg, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
196 //
197 // TOF
198 //
199 fchktof = new TGCheckButton(hframedec[3], "Show");
200 fchktof->Connect("Clicked()","PAMevcontrol", this,"chktof()");
201 if ( cvar->TOF ) fchktof->SetState(kButtonDown);
202 hframedec[3]->AddFrame(fchktof, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
203 fshowtof = new TGTextButton(hframedec[3], "Show Data");
204 fshowtof->Connect("Clicked()","PAMevcontrol", this,"showtofdata()");
205 if ( !cvar->TOF ) fshowtof->SetState(kButtonDisabled);
206 hframedec[3]->AddFrame(fshowtof, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
207 //
208 // Tracker
209 //
210 fchktrk = new TGCheckButton(hframedec[4], "Show");
211 fchktrk->Connect("Clicked()","PAMevcontrol",this,"chktrk()");
212 if ( cvar->TRK ) fchktrk->SetState(kButtonDown);
213 hframedec[4]->AddFrame(fchktrk, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
214 fshowtrk = new TGTextButton(hframedec[4], "Show Data");
215 fshowtrk->Connect("Clicked()","PAMevcontrol", this,"showtrkdata()");
216 if ( !cvar->TRK ) fshowtrk->SetState(kButtonDisabled);
217 hframedec[4]->AddFrame(fshowtrk, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
218 //
219 // AC
220 //
221 fchkac = new TGCheckButton(hframedec[5], "Show");
222 fchkac->Connect("Clicked()","PAMevcontrol", this,"chkac()");
223 if ( cvar->AC ) fchkac->SetState(kButtonDown);
224 hframedec[5]->AddFrame(fchkac, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
225 fshowac = new TGTextButton(hframedec[5], "Show Data");
226 fshowac->Connect("Clicked()","PAMevcontrol", this,"showacdata()");
227 if ( !cvar->AC ) fshowac->SetState(kButtonDisabled);
228 hframedec[5]->AddFrame(fshowac, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
229 //
230 // Calorimeter
231 //
232 fchkcalo = new TGCheckButton(hframedec[6], "Show");
233 fchkcalo->Connect("Clicked()","PAMevcontrol",this,"chkcalo()");
234 if ( cvar->CALO ) fchkcalo->SetState(kButtonDown);
235 hframedec[6]->AddFrame(fchkcalo, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
236 fchkcalost = new TGCheckButton(hframedec[6], "Track");
237 fchkcalost->Connect("Clicked()","PAMevcontrol",this,"chkcalost()");
238 if ( cvar->CALO ) fchkcalost->SetState(kButtonUp);
239 hframedec[6]->AddFrame(fchkcalost, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,2,5,5));
240 fshowcal = new TGTextButton(hframedec[6], "Show Data");
241 fshowcal->Connect("Clicked()","PAMevcontrol", this,"showcaldata()");
242 if ( !cvar->CALO ) fshowcal->SetState(kButtonDisabled);
243 hframedec[6]->AddFrame(fshowcal, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
244 //
245 // S4
246 //
247 fchks4 = new TGCheckButton(hframedec[7], "Show");
248 fchks4->Connect("Clicked()","PAMevcontrol",this,"chks4()");
249 if ( cvar->S4 ) fchks4->SetState(kButtonDown);
250 hframedec[7]->AddFrame(fchks4, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
251 fshows4 = new TGTextButton(hframedec[7], "Show Data");
252 fshows4->Connect("Clicked()","PAMevcontrol", this,"shows4data()");
253 if ( !cvar->S4 ) fshows4->SetState(kButtonDisabled);
254 hframedec[7]->AddFrame(fshows4, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
255 //
256 // ND
257 //
258 fchknd = new TGCheckButton(hframedec[8], "Show");
259 fchknd->Connect("Clicked()","PAMevcontrol",this,"chknd()");
260 if ( cvar->ND ) fchknd->SetState(kButtonDown);
261 hframedec[8]->AddFrame(fchknd, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
262 fshownd = new TGTextButton(hframedec[8], "Show Data");
263 fshownd->Connect("Clicked()","PAMevcontrol", this,"shownddata()");
264 if ( !cvar->ND ) fshownd->SetState(kButtonDisabled);
265 hframedec[8]->AddFrame(fshownd, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
266 //
267 // Software infos
268 //
269 fshowsi = new TGTextButton(hframedec[9], "Show Data");
270 fshowsi->Connect("Clicked()","PAMevcontrol", this,"showsidata()");
271 if ( !cvar->RUN ) fshoworb->SetState(kButtonDisabled);
272 hframedec[9]->AddFrame(fshoworb, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
273 //
274 // All data
275 //
276 fshowall = new TGTextButton(hframedec[10], "Show Data");
277 fshowall->Connect("Clicked()","PAMevcontrol", this,"showalldata()");
278 hframedec[10]->AddFrame(fshowall, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
279 //
280 // for (Int_t fr=0; fr<11; fr++) gf->AddFrame(hframedec[fr], new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,1,1,1,1));
281 //
282 gf->AddFrame(hframedec[11], new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,17,17));
283 //
284 // for (Int_t fr=0; fr<11; fr++) gf->AddFrame(hframedec[fr],new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,0,5,5,5));
285 // gf->GetLayoutManager()->SetPadBottom(5);
286 // gf->MapSubwindows();
287 //
288 fchkinfo = new TGCheckButton(hframe3, "Infos");
289 fchkinfo->Connect("Clicked()","PAMevcontrol",this,"chkinfo()");
290 if ( cvar->INFOS ) fchkinfo->SetState(kButtonDown);
291 hframe3->AddFrame(fchkinfo, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,0,5,5,5));
292 //
293 fchknames = new TGCheckButton(hframe3, "Names");
294 fchknames->Connect("Clicked()","PAMevcontrol",this,"chknames()");
295 if ( cvar->VINFOS ) fchknames->SetState(kButtonDown);
296 hframe3->AddFrame(fchknames, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
297 fchkpalette = new TGCheckButton(hframe3, "Palette");
298 fchkpalette->Connect("Clicked()","PAMevcontrol",this,"chkpalette()");
299 if ( cvar->PALETTE) fchkpalette->SetState(kButtonDown);
300 hframe3->AddFrame(fchkpalette, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,10,5,5,5));
301 gf2->AddFrame(hframe3, new TGLayoutHints(kLHintsExpandX));
302 //
303 TGVButtonGroup *group = new TGVButtonGroup(hframe4);
304 bwc0 = new TGRadioButton(group, "Colour");
305 bwc1 = new TGRadioButton(group, "B/W");
306 if ( cvar->bw ){
307 bwc1->SetState(kButtonDown);
308 } else {
309 bwc0->SetState(kButtonDown);
310 };
311 bwc0->Connect("Pressed()", "PAMevcontrol",this,"radiocolor()");
312 bwc1->Connect("Pressed()", "PAMevcontrol",this,"radiobw()");
313 hframe4->AddFrame(group,new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
314 //
315 //
316 // ftrks4 = new TGCheckButton(hframe5, "Track in S4/ND");
317 // ftrks4->Connect("Clicked()","PAMevcontrol",this,"radiotrack()");
318 // if ( cvar->tracknds4) ftrks4->SetState(kButtonDown);
319 // hframe5->AddFrame(ftrks4, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
320
321 fgetl0 = new TGTextButton(hframe5, "Get L0 file");
322 fgetl0->Connect("Clicked()","PAMevcontrol", this,"getl0file()");
323 hframe5->AddFrame(fgetl0, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
324
325 ffl0 = new TGCheckButton(hframe5, "Force RAW");
326 ffl0->Connect("Clicked()","PAMevcontrol",this,"forcel0()");
327 if ( cvar->fl0 ) ffl0->SetState(kButtonDown);
328 if ( !cvar->fl0 ) ffl0->SetState(kButtonUp);
329 hframe5->AddFrame(ffl0, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
330 //
331 hframe4->AddFrame(hframe5, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,10,5,5,5));
332 gf2->AddFrame(hframe4, new TGLayoutHints(kLHintsExpandX));
333 //
334 cframe1->AddFrame(gf, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
335 // cframe1->Resize(280,10);
336 // cframe1->GetLayoutManager()->SetDefaultHeight(5);
337 // MapWindow();
338 //
339 cframe5->AddFrame(gf2, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
340 //
341 TGHButtonGroup *jgroup = new TGHButtonGroup(htext4);
342 jbwc0 = new TGRadioButton(jgroup, "packet ");
343 jbwc1 = new TGRadioButton(jgroup, "progressive");
344 jbwc1->SetState(kButtonDown);
345 jbwc0->Connect("Pressed()", "PAMevcontrol",this,"radioevent()");
346 jbwc1->Connect("Pressed()", "PAMevcontrol",this,"radioprog()");
347 htext4->AddFrame(jgroup,new TGLayoutHints(kLHintsExpandX,1,1,0,0));
348 //
349 TGTextEntry *fText3 = new TGTextEntry(htext3, new TGTextBuffer(6),-1);
350 TGTextButton *Jump = new TGTextButton(htext3,"go");
351 Jump->Connect("Clicked()","TGTextEntry",fText3,"ReturnPressed()");
352 fText3->Connect("ReturnPressed()", "PAMevcontrol", this,"jumpto()");
353 htext3->AddFrame(new TGLabel(htext3, new TGHotString("number")), new TGLayoutHints(kLHintsExpandX,0,0,1,1));
354 htext3->AddFrame(fText3, new TGLayoutHints(kLHintsExpandX, 0, 8, 0, 0));
355 htext3->AddFrame(Jump, new TGLayoutHints(kLHintsExpandX,0,0,0,0));
356 jumpf->AddFrame(htext4, new TGLayoutHints(kLHintsExpandX,0,0,1,1)); //
357 jumpf->AddFrame(htext3, new TGLayoutHints(kLHintsExpandX,0,0,0,1)); //
358 //
359 cframe3->AddFrame(jumpf,new TGLayoutHints(kLHintsExpandX,5,5,5,5));
360 //
361 fText4 = new TGTextEntry(htexts, new TGTextBuffer(18),-1);
362 TGTextButton *save = new TGTextButton(htextsl,"save");
363 save->Connect("Clicked()","TGTextEntry",fText4,"ReturnPressed()");
364 fText4->Connect("ReturnPressed()", "PAMevcontrol", this,"saveas()");
365 fText4->Connect("TabPressed()", "PAMevcontrol", this,"CompleteText()");
366 htexts->AddFrame(fText4, new TGLayoutHints(kLHintsExpandX, 0, 8, 1, 1));
367 //
368 fCombo = new TGComboBox(htexts, 98);
369 fCombo->AddEntry(".ps", 0);
370 fCombo->AddEntry(".eps", 1);
371 fCombo->AddEntry(".gif", 2);
372 fCombo->AddEntry(".jpg", 3);
373 fCombo->AddEntry(".tiff", 4);
374 fCombo->AddEntry(".xpm", 5);
375 fCombo->AddEntry(".pdf", 6);
376 fCombo->AddEntry(".xml", 7);
377 fCombo->AddEntry(".png", 8);
378 fCombo->AddEntry(".svg", 9);
379 fCombo->AddEntry(".root", 10);
380 fCombo->AddEntry(".C", 11);
381 fCombo->Select(0);
382 fCombo->Resize(50,23);
383 // htexts->AddFrame(fCombo, new TGLayoutHints(kLHintsCenterX | kLHintsTop | kLHintsLeft | kLHintsCenterY | kLHintsExpandX, 0, 8, 1, 1));
384 htexts->AddFrame(fCombo, new TGLayoutHints(kLHintsExpandY | kLHintsExpandY| kLHintsRight, 2, 2, 2, 1));
385 //
386 htextsl->AddFrame(save, new TGLayoutHints(kLHintsExpandX,0,0,2,1));
387 savef->AddFrame(htexts, new TGLayoutHints(kLHintsExpandX,0,0,2,5));
388 // savef->AddFrame(htextsl, new TGLayoutHints(kLHintsExpandX,5,2,5,2));
389 savef->AddFrame(htextsl, new TGLayoutHints(kLHintsExpandX,8,0,5,2));
390 //
391 cframe4->AddFrame(savef,new TGLayoutHints(kLHintsExpandX,5,5,5,5));
392 //
393 fHProg1 = new TGHProgressBar(hfrprog, TGProgressBar::kFancy, 260);
394 fHProg1->SetBarColor("green");
395 fHProg1->ShowPosition();
396 hfrprog->AddFrame(fHProg1, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY | kLHintsExpandX,5,5,5,5));
397 //
398 //
399 TGTextButton *prev = new TGTextButton(hframe,"< &Back");
400 prev->Connect("Clicked()","PAMevcontrol",this,"prev()");
401 hframe->AddFrame(prev, new TGLayoutHints(kLHintsCenterX | kLHintsExpandX,5,5,3,4));
402 //
403 TGTextButton *exit = new TGTextButton(hframe,"E&xit");//,"gApplication->Terminate(0)");
404 exit->Connect("Clicked()","PAMevcontrol",this,"Terminate()");
405 exit->SetToolTipText("Quit the event viewer");
406 hframe->AddFrame(exit, new TGLayoutHints(kLHintsCenterX | kLHintsExpandX,5,5,3,4));
407 //
408 bstop = new TGTextButton(hframe,"&Stop");
409 bstop->Connect("Clicked()","PAMevcontrol",this,"stop()");
410 hframe->AddFrame(bstop, new TGLayoutHints(kLHintsCenterX | kLHintsExpandX,5,5,3,4));
411 bstop->SetState(kButtonDisabled);
412 //
413 TGTextButton *next = new TGTextButton(hframe,"&Next >");
414 next->Connect("Clicked()","PAMevcontrol",this,"next()");
415 hframe->AddFrame(next, new TGLayoutHints(kLHintsCenterX | kLHintsExpandX,5,5,3,4));
416 //
417 //
418 // AddFrame(htext, new TGLayoutHints(kLHintsExpandX,2,2,15,1));
419 AddFrame(cframe2, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
420 AddFrame(cframe1, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
421 AddFrame(cframe5, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
422 AddFrame(cframe3, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
423 AddFrame(cframe4, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
424 AddFrame(hfrprog, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
425 AddFrame(hframe, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
426 // Set a name to the main frame
427 SetWindowName("PAMELA Event Viewer control panel");
428 // Map all subwindows of main frame
429 MapSubwindows();
430 // Initialize the layout algorithm
431 Resize(GetDefaultSize());
432 // Map main frame
433 MapWindow();
434 //
435 gf->HideFrame(hframedec[11]);
436 for (Int_t fr=0; fr<11; fr++){
437 gf->AddFrame(hframedec[fr],new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,0,5,5,5));
438 gf->HideFrame(hframedec[fr]);
439 };
440 gf->MapSubwindows();
441 //
442 }
443
444 void PAMevcontrol::Refresh(){
445 // bah
446 return;
447 this->Clear();
448 MapSubwindows();
449 // Initialize the layout algorithm
450 Resize(GetDefaultSize());
451 // Map main frame
452 MapWindow();
453 }
454
455 void PAMevcontrol::DIALOG(Int_t ty, TString warn){
456 //
457 // ty = 0 -> INFO, ty = 1 -> WARNING, ty = 2 -> ERROR
458 //
459 Int_t retval;
460 TString title;
461 EMsgBoxIcon mb_icon = kMBIconStop;
462 if ( ty == 2 || ty == 3 ){
463 if ( ty == 2 ){
464 title="ERROR!!";
465 mb_icon = kMBIconStop;
466 new TGMsgBox(gClient->GetRoot(), this, title.Data(), warn.Data(), mb_icon, kMBOk, &retval);
467 } else {
468 title="HELP";
469 mb_icon = kMBIconQuestion;
470 new TGMsgBox(gClient->GetRoot(), this, title.Data(), warn.Data(), mb_icon, kMBOk, &retval);
471 };
472 } else {
473 if ( ty == 0 ){
474 title="INFO";
475 mb_icon = kMBIconAsterisk;
476 };
477 if ( ty == 1 ){
478 title="WARNING!";
479 mb_icon = kMBIconExclamation;
480 };
481 if ( ty == 4 ){
482 title="DATA";
483 mb_icon = kMBIconExclamation;
484 };
485 const TGPicture *icon_pic;
486 switch (mb_icon) {
487 case kMBIconStop:
488 icon_pic = gClient->GetPicture("mb_stop_s.xpm");
489 if (!icon_pic) Error("TGMsgBox", "mb_stop_s.xpm not found");
490 break;
491
492 case kMBIconQuestion:
493 icon_pic = gClient->GetPicture("mb_question_s.xpm");
494 if (!icon_pic) Error("TGMsgBox", "mb_question_s.xpm not found");
495 break;
496
497 case kMBIconExclamation:
498 icon_pic = gClient->GetPicture("mb_exclamation_s.xpm");
499 if (!icon_pic) Error("TGMsgBox", "mb_exclamation_s.xpm not found");
500 break;
501
502 case kMBIconAsterisk:
503 icon_pic = gClient->GetPicture("mb_asterisk_s.xpm");
504 if (!icon_pic) Error("TGMsgBox", "mb_asterisk_s.xpm not found");
505 break;
506
507 default:
508 icon_pic = 0;
509 break;
510 }
511 //
512 if ( ty == 4 ){// non funziona il recupero dei puntatori a questi oggetti come e` possibile?
513 // gObjectTable->Print();
514 TGLabel *la=dynamic_cast<TGLabel*>(gDirectory->FindObject("la"));
515 TGHorizontalFrame *fLabelFrame=dynamic_cast<TGHorizontalFrame*>(gDirectory->FindObject("fLabelFrame"));
516 TGTransientFrame *compofra=dynamic_cast<TGTransientFrame*>(gDirectory->FindObject("compofra"));
517 if ( la ) la->Delete();
518 if ( fLabelFrame ) fLabelFrame->Delete();
519 if ( compofra ){
520 compofra->DestroyWindow();
521 compofra->Delete();
522 };
523 };
524 TGTransientFrame *compofra = new TGTransientFrame(gClient->GetRoot(), 0, 200, 80, kHorizontalFrame);
525 TGHorizontalFrame *fIconFrame = NULL;
526 TGIcon *fIcon = NULL;
527 if ( ty != 4 ){
528 compofra->DontCallClose();
529 fIconFrame = new TGHorizontalFrame(compofra, 98, 78);
530 fIcon = new TGIcon(fIconFrame, icon_pic, icon_pic->GetWidth(), icon_pic->GetHeight());
531 fIconFrame->AddFrame(fIcon, new TGLayoutHints(kLHintsCenterX|kLHintsCenterY, 1, 1, 1, 1));
532 compofra->AddFrame(fIconFrame, new TGLayoutHints(kLHintsCenterX|kLHintsCenterY, 1, 1, 1, 1));
533 };
534 //
535 TGHorizontalFrame *fLabelFrame = new TGHorizontalFrame(compofra, 98, 78);
536 TGLabel *la=new TGLabel(fLabelFrame,warn.Data());
537 la->SetTextJustify(kLHintsCenterX);
538 fLabelFrame->AddFrame(la, new TGLayoutHints(kLHintsCenterX|kLHintsCenterY, 1, 1, 1, 1));
539 compofra->AddFrame(fLabelFrame, new TGLayoutHints(kLHintsCenterX|kLHintsCenterY, 1, 1, 1, 1));
540 //
541 compofra->SetWindowName(title.Data());
542 compofra->MapSubwindows();
543 if ( ty != 4 ){
544 compofra->Resize(compofra->GetDefaultWidth(),80);
545 } else {
546 compofra->Resize(compofra->GetDefaultSize());
547 };
548 compofra->CenterOnParent();
549 compofra->MapWindow();
550 //
551 if ( ty != 4 ){
552 Int_t kkk = 0;
553 while ( kkk < 200 ){
554 gSystem->ProcessEvents();
555 gSystem->Sleep(10);
556 kkk++;
557 };
558 };
559 if ( compofra && ty != 4 ){
560 la->Delete();
561 fLabelFrame->Delete();
562 if ( fIcon ) fIcon->Delete();
563 if ( fIconFrame ) fIconFrame->Delete();
564 compofra->DestroyWindow();
565 compofra->Delete();
566 };
567 };
568 //
569 }
570
571 void PAMevcontrol::refreshdec(Int_t n){
572 //
573 for (Int_t i=0; i<11; i++){
574 gf->HideFrame(hframedec[i]);
575 };
576 //
577 if ( n < 11 ){
578 gf->ShowFrame(hframedec[n]);
579 };
580 };
581
582
583 void PAMevcontrol::showorbdata(){
584 cvar->showorb = !cvar->showorb;
585 if ( !cvar->showorb ) fshoworb->SetText("Show Data");
586 if ( cvar->showorb ) fshoworb->SetText("Hide Data");
587 // printf("orb \n");
588 };
589
590 void PAMevcontrol::showtrgdata(){
591 cvar->showtrg = !cvar->showtrg;
592 if ( !cvar->showtrg ) fshowtrg->SetText("Show Data");
593 if ( cvar->showtrg ) fshowtrg->SetText("Hide Data");
594 // printf("trg \n");
595 };
596
597 void PAMevcontrol::showrundata(){
598 cvar->showrun = !cvar->showrun;
599 if ( !cvar->showrun ) fshowrun->SetText("Show Data");
600 if ( cvar->showrun ) fshowrun->SetText("Hide Data");
601 // printf("run \n");
602 };
603
604 void PAMevcontrol::showcaldata(){
605 cvar->showcal = !cvar->showcal;
606 if ( !cvar->showcal ) fshowcal->SetText("Show Data");
607 if ( cvar->showcal ) fshowcal->SetText("Hide Data");
608 // printf("cal \n");
609 };
610
611 void PAMevcontrol::chkcalost(){
612 if ( cvar->CALOT ) {
613 cvar->CALOT = 0;
614 } else {
615 cvar->CALOT = 1;
616 };
617 cvar->i--;
618 cvar->nevents = 0;
619 cvar->firstevno = 0;
620 cvar->lastevno = 0;
621 cvar->refresh = true;
622 };
623
624 void PAMevcontrol::showtrkdata(){
625 cvar->showtrk = !cvar->showtrk;
626 if ( !cvar->showtrk ) fshowtrk->SetText("Show Data");
627 if ( cvar->showtrk ) fshowtrk->SetText("Hide Data");
628 // printf("trk \n");
629 };
630
631 void PAMevcontrol::showtofdata(){
632 cvar->showtof = !cvar->showtof;
633 if ( !cvar->showtof ) fshowtof->SetText("Show Data");
634 if ( cvar->showtof ) fshowtof->SetText("Hide Data");
635 // printf("tof \n");
636 };
637
638 void PAMevcontrol::showacdata(){
639 cvar->showac = !cvar->showac;
640 if ( !cvar->showac ) fshowac->SetText("Show Data");
641 if ( cvar->showac ) fshowac->SetText("Hide Data");
642 // printf("ac \n");
643 };
644
645 void PAMevcontrol::shownddata(){
646 cvar->shownd = !cvar->shownd;
647 if ( !cvar->shownd ) fshownd->SetText("Show Data");
648 if ( cvar->shownd ) fshownd->SetText("Hide Data");
649 // printf("nd \n");
650 };
651
652 void PAMevcontrol::shows4data(){
653 cvar->shows4 = !cvar->shows4;
654 if ( !cvar->shows4 ) fshows4->SetText("Show Data");
655 if ( cvar->shows4 ) fshows4->SetText("Hide Data");
656 // printf("s4 \n");
657 };
658
659 void PAMevcontrol::showsidata(){
660 cvar->showsi = !cvar->showsi;
661 if ( !cvar->showsi ) fshowsi->SetText("Show Data");
662 if ( cvar->showsi ) fshowsi->SetText("Hide Data");
663 // printf("si \n");
664 };
665
666 void PAMevcontrol::showalldata(){
667 cvar->showall = !cvar->showall;
668 if ( !cvar->showall ) fshowall->SetText("Show Data");
669 if ( cvar->showall ) fshowall->SetText("Hide Data");
670 // printf("all \n");
671 };
672
673 void PAMevcontrol::SetFilename() {
674 TGTextEntry *entry = (TGTextEntry*)gTQSender;
675 TString text = entry->GetText();
676 cvar->thefilename=text.Data();
677 cvar->i = 0;
678 cvar->nevents = 0;
679 cvar->firstevno = 0;
680 cvar->lastevno = 0;
681 if ( cvar->fl0 ) {
682 cvar->fl0 = false;
683 ffl0->SetState(kButtonUp);
684 };
685 cvar->restart = true;
686 cvar->waitforever = false;
687 }
688
689 void PAMevcontrol::getl0file() {
690 //
691 TString host = "mysql://localhost/pamelaprod";
692 TString user = "anonymous";
693 TString psw = "";
694 const char *pamdbhost=gSystem->Getenv("PAM_DBHOST");
695 const char *pamdbuser=gSystem->Getenv("PAM_DBUSER");
696 const char *pamdbpsw=gSystem->Getenv("PAM_DBPSW");
697 if ( !pamdbhost ) pamdbhost = "";
698 if ( !pamdbuser ) pamdbuser = "";
699 if ( !pamdbpsw ) pamdbpsw = "";
700 if ( strcmp(pamdbhost,"") ) host = pamdbhost;
701 if ( strcmp(pamdbuser,"") ) user = pamdbuser;
702 if ( strcmp(pamdbpsw,"") ) psw = pamdbpsw;
703 cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
704 cout<<"Connecting to DB"<<endl;
705 cout<<"HOST "<<host<<endl;
706 cout<<"USER "<<user<<endl;
707 cout<<"PSW "<<psw<<endl;
708 cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
709 TSQLServer *dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());
710 //
711 TSQLResult *pResult;
712 TSQLRow *Row;
713 //
714 if( dbc && dbc->IsConnected() ){
715 //
716 // Retrieve the file
717 //
718 if ( clev->file == 2 ){
719 //
720 // Starting from level2
721 //
722 GL_ROOT glroot = GL_ROOT();
723 if( !glroot.Query_GL_ROOT(cvar->idroot,dbc) ){
724 //
725 cvar->thefilename= glroot.PATH + glroot.NAME;
726 cvar->nevents = 0;
727 cvar->firstevno = 0;
728 cvar->lastevno = 0;
729 if ( cvar->fl0 ) {
730 cvar->fl0 = false;
731 ffl0->SetState(kButtonUp);
732 };
733 cvar->restart = true;
734 cvar->waitforever = false;
735 //
736 if ( cvar->thefilter != "" ){
737 cvar->thefilter="";
738 cvar->selex = true;
739 };
740 cvar->i = cvar->EVF + cvar->i ;
741 //cvar->refresh = true;
742 // cvar->file = 0;
743 //
744 } else {
745 stringstream warning;
746 warning.str("");
747 warning << " Problems getting Level0 file ";
748 DIALOG(2,warning.str().c_str());
749 };
750 } else {
751 //
752 // starting from L0
753 //
754 stringstream query;
755 query.str("");
756 query << " SELECT ID FROM GL_ROOT WHERE NAME='"<< gSystem->BaseName(cvar->thefilename.Data()) <<"' order by INSERT_TIME desc limit 1;";
757 // printf(" query is %s \n",query.str().c_str());
758 pResult = dbc->Query(query.str().c_str());
759 Row = pResult->Next();
760 UInt_t idrl0 = 0;
761 if ( Row ){
762 idrl0 = (UInt_t)atoll(Row->GetField(0));
763 };
764 //
765 query.str("");
766 query << " SELECT ID,ID_ROOT_L2,EV_FROM FROM GL_RUN WHERE EV_FROM<="<<cvar->i<<" AND EV_TO>="<< cvar->i<<" AND ID_ROOT_L0="<< idrl0 <<";";
767 // printf(" query is %s \n",query.str().c_str());
768 pResult = dbc->Query(query.str().c_str());
769 Row = pResult->Next();
770 UInt_t idrl2 = 0;
771 UInt_t idrlun = 0;
772 UInt_t evfrom = 0;
773 if ( Row ){
774 idrlun = (UInt_t)atoll(Row->GetField(0));
775 idrl2 = (UInt_t)atoll(Row->GetField(1));
776 evfrom = (UInt_t)atoll(Row->GetField(2));
777 };
778 //
779 query.str("");
780 query << " SELECT ID,NEVENTS FROM GL_RUN WHERE ID_ROOT_L2="<< idrl2 <<" order by RUNHEADER_TIME asc;";
781 // printf(" query is %s \n",query.str().c_str());
782 pResult = dbc->Query(query.str().c_str());
783 Row = pResult->Next();
784 UInt_t coren = 0;
785 while ( Row ){
786 if ( (UInt_t)atoll(Row->GetField(0)) == idrlun ) break;
787 coren += (UInt_t)atoll(Row->GetField(1));
788 Row = pResult->Next();
789 };
790 coren += cvar->i - evfrom;
791 //
792 GL_ROOT glroot = GL_ROOT();
793 if( !glroot.Query_GL_ROOT(idrl2,dbc) ){
794 //
795 cvar->i = coren;
796 //
797 cvar->thefilename= glroot.PATH + glroot.NAME;
798 cvar->nevents = 0;
799 cvar->firstevno = 0;
800 cvar->lastevno = 0;
801 if ( cvar->fl0 ) {
802 cvar->fl0 = false;
803 ffl0->SetState(kButtonUp);
804 };
805 cvar->restart = true;
806 cvar->waitforever = false;
807 //
808 if ( cvar->thefilter != "" ){
809 cvar->thefilter="";
810 cvar->selex = true;
811 };
812 //
813 } else {
814 stringstream warning;
815 warning.str("");
816 warning << " Problems getting Level2 file ";
817 DIALOG(2,warning.str().c_str());
818 };
819 // stringstream warning;
820 // warning.str("");
821 // warning << " Not yet implemented ";
822 // DIALOG(2,warning.str().c_str());
823 };
824 //
825 } else {
826 stringstream warning;
827 warning.str("");
828 warning << " Problems connectiong to DB! ";
829 DIALOG(2,warning.str().c_str());
830 };
831 dbc->Close();
832 };
833
834 void PAMevcontrol::CheckLevel() {
835 if ( clev->file == 2 ){
836 ffl0->SetState(kButtonDisabled);
837 // if ( !cvar->tracknds4 ) {
838 // ftrks4->SetState(kButtonUp);
839 // } else {
840 // ftrks4->SetState(kButtonDown);
841 // };
842 } else {
843 //ftrks4->SetState(kButtonDisabled);
844 if ( !cvar->fl0 ) {
845 ffl0->SetState(kButtonUp);
846 } else {
847 ffl0->SetState(kButtonDown);
848 };
849 };
850 if ( clev->file == 2 ){
851 fgetl0->SetText("Get L0 file");
852 } else {
853 fgetl0->SetText("Get L2 file");
854 };
855 }
856
857 void PAMevcontrol::SetSearching() {
858 bstop->SetState(kButtonUp);
859 };
860
861 void PAMevcontrol::StopSearching() {
862 bstop->SetState(kButtonDisabled);
863 };
864
865 void PAMevcontrol::RefreshButtons() {
866 if ( cvar->jumprog ){
867 jbwc1->SetState(kButtonDown);
868 jbwc0->SetState(kButtonUp);
869 } else {
870 jbwc1->SetState(kButtonUp);
871 jbwc0->SetState(kButtonDown);
872 };
873 if ( cvar->fl0 ){
874 ffl0->SetState(kButtonDown);
875 } else {
876 ffl0->SetState(kButtonUp);
877 };
878 // if ( cvar->tracknds4) ftrks4->SetState(kButtonDown);
879 if ( cvar->bw ){
880 bwc1->SetState(kButtonDown);
881 bwc0->SetState(kButtonUp);
882 } else {
883 bwc0->SetState(kButtonDown);
884 bwc1->SetState(kButtonUp);
885 };
886 if ( cvar->PALETTE) fchkpalette->SetState(kButtonDown); else fchkpalette->SetState(kButtonUp);
887 if ( cvar->VINFOS ) fchknames->SetState(kButtonDown); else fchknames->SetState(kButtonUp);
888 if ( cvar->INFOS ) fchkinfo->SetState(kButtonDown); else fchkinfo->SetState(kButtonUp);
889 //
890 if ( cvar->CALOT ) fchkcalost->SetState(kButtonDown); else fchkcalost->SetState(kButtonUp);
891 if ( cvar->CALO ){
892 fchkcalo->SetState(kButtonDown);
893 fshowcal->SetState(kButtonUp);
894 } else {
895 fchkcalo->SetState(kButtonUp);
896 fchkcalost->SetState(kButtonDisabled);
897 fshowcal->SetState(kButtonDisabled);
898 };
899 //
900 if ( cvar->ND ){
901 fchknd->SetState(kButtonDown);
902 fshownd->SetState(kButtonUp);
903 } else {
904 fchknd->SetState(kButtonUp);
905 fshownd->SetState(kButtonDisabled);
906 };
907 //
908 if ( cvar->S4 ){
909 fchks4->SetState(kButtonDown);
910 fshows4->SetState(kButtonUp);
911 } else {
912 fchks4->SetState(kButtonUp);
913 fshows4->SetState(kButtonDisabled);
914 };
915 //
916 if ( cvar->TRK ){
917 fchktrk->SetState(kButtonDown);
918 fshowtrk->SetState(kButtonUp);
919 } else {
920 fchktrk->SetState(kButtonUp);
921 fshowtrk->SetState(kButtonDisabled);
922 }
923 //
924 if ( cvar->AC ){
925 fchkac->SetState(kButtonDown);
926 fshowac->SetState(kButtonUp);
927 } else {
928 fchkac->SetState(kButtonUp);
929 fshowac->SetState(kButtonDisabled);
930 };
931 //
932 if ( cvar->TOF ){
933 fchktof->SetState(kButtonDown);
934 fshowtof->SetState(kButtonUp);
935 } else {
936 fchktof->SetState(kButtonUp);
937 fshowtof->SetState(kButtonDisabled);
938 };
939 //
940 CheckLevel();
941 //
942 };
943
944 void PAMevcontrol::SetFilter() {
945 TGTextEntry *entry = (TGTextEntry*)gTQSender;
946 TString text = entry->GetText();
947 cvar->thefilter=text.Data();
948 cvar->i--;
949 cvar->selex = true;
950 cvar->nevents = 0;
951 cvar->firstevno = 0;
952 cvar->lastevno = 0;
953 cvar->refresh = true;
954 }
955
956 void PAMevcontrol::CompleteText() {
957 TGTextEntry *entry = (TGTextEntry*)gTQSender;
958 TString text = entry->GetText();
959 Int_t curspos = entry->GetCursorPosition();
960 Int_t ncurspos = 0;
961 TString textrem;
962 stringcopy(textrem,text,curspos,text.Length());
963 text.Resize(curspos);
964 if ( !strcmp(text.Data(),"") ) {
965 stringstream ntext;
966 ntext.str("");
967 ntext << gSystem->ExpandPathName("$HOME");
968 text = ntext.str().c_str();
969 curspos=ntext.str().length();
970 };
971 char *test = gSystem->ExpandPathName(text.Data());
972 const char *dir = gSystem->DirName(test);
973 const char *base = gSystem->BaseName(test);
974 TString lbase = base;
975 Int_t lenbase = lbase.Length();
976 TSystemDirectory *tsd = new TSystemDirectory("",dir);
977 TSystemFile *file;
978 TList *lsmatch = new TList;
979 Int_t numf = 0;
980 Int_t numgo = 0;
981 Int_t charmac = 0;
982 TString tbase;
983 Int_t k = 0;
984 stringstream newtext;
985 TSystemFile *mfile;
986 TSystemFile nfile;
987 TList *lsf = new TList;
988 const char *ctbase;
989 if ( !tsd->GetListOfFiles() ){
990 gVirtualX->Bell(0);
991 goto end;
992 };
993 lsf = tsd->GetListOfFiles();
994 file = (TSystemFile*)lsf->First();
995 //
996 while( (TSystemFile*)lsf->After(file) ){
997 numf++;
998 file = (TSystemFile*)lsf->After(file);
999 if ( !strncmp(file->GetName(),base,lenbase) ){
1000 numgo++;
1001 lsmatch->AddLast(file);
1002 const char *ctbase = file->GetName();
1003 tbase = ctbase;
1004 charmac = tbase.Length();
1005 };
1006 };
1007 newtext.str("");
1008 if ( numgo > 0 ){
1009 mfile = (TSystemFile*)lsmatch->First();
1010 ctbase = mfile->GetName();
1011 while ( (!strcmp(ctbase,"..") || !strcmp(ctbase,".")) && (TSystemFile*)lsmatch->After(mfile) ) {
1012 mfile = (TSystemFile*)lsmatch->After(mfile);
1013 ctbase = mfile->GetName();
1014 };
1015 tbase = ctbase;
1016 base = ctbase;
1017 charmac = tbase.Length();;
1018 while( (TSystemFile*)lsmatch->After(mfile) ){
1019 mfile = (TSystemFile*)lsmatch->After(mfile);
1020 ctbase = mfile->GetName();
1021 while ( (!strcmp(ctbase,"..") || !strcmp(ctbase,".")) && (TSystemFile*)lsmatch->After(mfile) ) {
1022 mfile = (TSystemFile*)lsmatch->After(mfile);
1023 ctbase = mfile->GetName();
1024 };
1025 tbase = ctbase;
1026 k = 0;
1027 for ( Int_t i=lenbase; i<=tbase.Length(); i++){
1028 if ( !strncmp(tbase.Data(),base,i) && strcmp(tbase.Data(),base) ){
1029 k = i;
1030 };
1031 };
1032 if ( k <= charmac){
1033 charmac = k;
1034 };
1035 };
1036 gVirtualX->Bell(0);
1037 };
1038 if ( !charmac ) {
1039 gVirtualX->Bell(0);
1040 goto end;
1041 };
1042 tbase.Resize(charmac);
1043 if ( !strcmp(dir,"") || !strcmp(dir,"/") ){
1044 newtext << "/" << tbase.Data();
1045 } else {
1046 newtext << dir << "/" << tbase.Data();
1047 };
1048 nfile = TSystemFile(tbase.Data(),dir);
1049 if ( nfile.IsDirectory() && numgo == 1 ) newtext << "/";
1050 ncurspos = newtext.str().length();
1051 if ( textrem.Length() ) newtext << textrem.Data();
1052 entry->SetText(newtext.str().c_str());
1053 entry->SetCursorPosition(ncurspos);
1054 end:
1055 lsf->Clear();
1056 lsmatch->Clear();
1057 }
1058
1059 void PAMevcontrol::saveas() {
1060 TString text = fText4->GetText();
1061 Int_t sel=fCombo->GetSelected();
1062 TString ty;
1063 switch (sel){
1064 case (0):
1065 ty = ".ps";
1066 break;
1067 case (1):
1068 ty = ".eps";
1069 break;
1070 case (2):
1071 ty = ".gif";
1072 break;
1073 case (3):
1074 ty = ".jpg";
1075 break;
1076 case (4):
1077 ty = ".tiff";
1078 break;
1079 case (5):
1080 ty = ".xpm";
1081 break;
1082 case (6):
1083 ty = ".pdf";
1084 break;
1085 case (7):
1086 ty = ".xml";
1087 break;
1088 case (8):
1089 ty = ".png";
1090 break;
1091 case (9):
1092 ty = ".svg";
1093 break;
1094 case (10):
1095 ty = ".root";
1096 break;
1097 case (11):
1098 ty = ".C";
1099 break;
1100 };
1101 if ( sel == 0 ) ty = ".ps";
1102 stringstream name;
1103 if ( strcmp(text.Data(),"") ){
1104 name.str("");
1105 name << text.Data();
1106 name << ty.Data();
1107 thefigure->SaveAs(name.str().c_str());
1108 name.str("");
1109 name << " Saved as ";
1110 name << text.Data();
1111 name << ty.Data();
1112 DIALOG(0,name.str().c_str());
1113 printf(" Saved as %s%s \n",text.Data(),ty.Data());
1114 };
1115 }
1116
1117 void PAMevcontrol::increment(float val) {
1118 fHProg1->Reset();
1119 fHProg1->SetPosition(val);
1120 gSystem->ProcessEvents();
1121 }
1122
1123 void PAMevcontrol::forcel0() {
1124 cvar->fl0 = !cvar->fl0;
1125 cvar->alrforc = false;
1126 cvar->i--;
1127 cvar->nevents = 0;
1128 cvar->firstevno = 0;
1129 cvar->lastevno = 0;
1130 cvar->refresh = true;
1131 }
1132
1133 void PAMevcontrol::clearselfi(){
1134 fText2->SetText("");
1135 }
1136
1137 void PAMevcontrol::upgrnamfi(){
1138 fText4->SetText(cvar->svas.Data());
1139 fText4->SetCursorPosition(fText4->GetMaxLength());
1140 }
1141
1142 void PAMevcontrol::jumpto() {
1143 TGTextEntry *entry = (TGTextEntry*)gTQSender;
1144 TString text = entry->GetText();
1145 Int_t j;
1146 j = atoi(text.Data());
1147 if ( cvar->jumprog ){
1148 if ( j < 1 || j > cvar->nevents ) {
1149 printf("\n You can choose between 1 and %i \n",(int)cvar->nevents);
1150 stringstream warning;
1151 warning.str("");
1152 warning << "You can choose between 1 and ";
1153 warning << (int)cvar->nevents;
1154 DIALOG(1,warning.str().c_str());
1155 } else {
1156 stringstream warning;
1157 // warning.str("");
1158 // warning << "Jumping to progressive number ";
1159 // warning << j;
1160 // DIALOG(0,warning.str().c_str());
1161 printf("\n Jumping to progressive number %i\n\n",j);
1162 cvar->i = j-2;
1163 cvar->goon = true;
1164 SetSearching();
1165 };
1166 } else {
1167 if ( j < cvar->firstevno || j > cvar->lastevno ) {
1168 printf("\n You can choose between %i and %i \n",cvar->firstevno,cvar->lastevno);
1169 stringstream warning;
1170 warning.str("");
1171 warning << "You can choose between ";
1172 warning << cvar->firstevno;
1173 warning << " and ";
1174 warning << cvar->lastevno;
1175 DIALOG(1,warning.str().c_str());
1176 } else {
1177 // stringstream warning;
1178 // warning.str("");
1179 // warning << "Jumping to event number ";
1180 // warning << j;
1181 // DIALOG(0,warning.str().c_str());
1182 printf("\n Jumping to packet number %i\n\n",j);
1183 cvar->jumpto = j;
1184 cvar->jumpen = true;
1185 cvar->goon = true;
1186 SetSearching();
1187 };
1188 };
1189 entry->SetText("");
1190 }
1191
1192 void PAMevcontrol::radioevent() {
1193 cvar->jumprog = false;
1194 }
1195
1196 void PAMevcontrol::radioprog() {
1197 cvar->jumprog = true;
1198 }
1199
1200 void PAMevcontrol::radiocolor() {
1201 if ( !cvar->goon ){
1202 if ( cvar->bw ) {
1203 cvar->bw = 0;
1204 cvar->i--;
1205 cvar->goon = true;
1206 };
1207 };
1208 }
1209
1210 void PAMevcontrol::radiobw() {
1211 if ( !cvar->goon ){
1212 if ( !cvar->bw ) {
1213 cvar->bw = 1;
1214 cvar->i--;
1215 cvar->goon = true;
1216 };
1217 };
1218 }
1219
1220 void PAMevcontrol::radiotrack() {
1221 if ( cvar->tracknds4 ) {
1222 cvar->tracknds4 = 0;
1223 } else {
1224 cvar->tracknds4 = 1;
1225 };
1226 cvar->i--;
1227 cvar->goon = true;
1228 }
1229
1230 void PAMevcontrol::chktof() {
1231 if ( cvar->TOF ) {
1232 cvar->TOF = 0;
1233 } else {
1234 cvar->TOF = 1;
1235 };
1236 cvar->i--;
1237 cvar->nevents = 0;
1238 cvar->firstevno = 0;
1239 cvar->lastevno = 0;
1240 cvar->refresh = true;
1241 }
1242
1243 void PAMevcontrol::chkac() {
1244 if ( cvar->AC ) {
1245 cvar->AC = 0;
1246 } else {
1247 cvar->AC = 1;
1248 };
1249 cvar->i--;
1250 cvar->nevents = 0;
1251 cvar->firstevno = 0;
1252 cvar->lastevno = 0;
1253 cvar->refresh = true;
1254 }
1255
1256 void PAMevcontrol::chktrk() {
1257 if ( cvar->TRK ) {
1258 cvar->TRK = 0;
1259 } else {
1260 cvar->TRK = 1;
1261 };
1262 cvar->i--;
1263 cvar->nevents = 0;
1264 cvar->firstevno = 0;
1265 cvar->lastevno = 0;
1266 cvar->refresh = true;
1267 }
1268
1269 void PAMevcontrol::chkcalo() {
1270 if ( cvar->CALO ) {
1271 cvar->CALO = 0;
1272 } else {
1273 cvar->CALO = 1;
1274 };
1275 cvar->i--;
1276 cvar->nevents = 0;
1277 cvar->firstevno = 0;
1278 cvar->lastevno = 0;
1279 cvar->refresh = true;
1280 }
1281
1282 void PAMevcontrol::chks4() {
1283 if ( cvar->S4 ) {
1284 cvar->S4 = 0;
1285 } else {
1286 cvar->S4 = 1;
1287 };
1288 cvar->i--;
1289 cvar->nevents = 0;
1290 cvar->firstevno = 0;
1291 cvar->lastevno = 0;
1292 cvar->refresh = true;
1293 }
1294
1295 void PAMevcontrol::chknd() {
1296 if ( cvar->ND ) {
1297 cvar->ND = 0;
1298 } else {
1299 cvar->ND = 1;
1300 };
1301 cvar->i--;
1302 cvar->nevents = 0;
1303 cvar->firstevno = 0;
1304 cvar->lastevno = 0;
1305 cvar->refresh = true;
1306 }
1307
1308 void PAMevcontrol::chkinfo() {
1309 if ( cvar->INFOS ) {
1310 cvar->INFOS = 0;
1311 } else {
1312 cvar->INFOS = 1;
1313 };
1314 cvar->i--;
1315 cvar->goon = true;
1316 }
1317
1318 void PAMevcontrol::chknames() {
1319 if ( cvar->VINFOS ) {
1320 cvar->VINFOS = 0;
1321 } else {
1322 cvar->VINFOS = 1;
1323 };
1324 cvar->i--;
1325 cvar->goon = true;
1326 }
1327
1328 void PAMevcontrol::chkpalette() {
1329 if ( cvar->PALETTE ) {
1330 cvar->PALETTE = 0;
1331 } else {
1332 cvar->PALETTE = 1;
1333 };
1334 cvar->i--;
1335 cvar->goon = true;
1336 }
1337
1338 void PAMevcontrol::next() {
1339 SetSearching();
1340 if ( cvar->i == cvar->nevents-1 ) {
1341 printf("This is the last event, you can't go forward! \n");
1342 DIALOG(1,"This is the last event!");
1343 } else {
1344 cvar->goon = true;
1345 cvar->doflag = 1;
1346 };
1347 }
1348
1349 void PAMevcontrol::stop() {
1350 DIALOG(1,"Stop searching");
1351 cvar->doflag = 3;
1352 }
1353
1354 void PAMevcontrol::prev() {
1355 SetSearching();
1356 if ( cvar->i > 0 ) {
1357 printf("WARNING: going backward!\n\n");
1358 cvar->doflag = 2;
1359 cvar->goon = true;
1360 } else {
1361 printf("This is the first event, you can't go backward! \n");
1362 DIALOG(1,"This is the first event!");
1363 };
1364 }
1365
1366 void PAMevcontrol::Terminate() {
1367 gSystem->ProcessEvents();
1368 gApplication->Terminate(0);
1369 }
1370
1371 PAMevcontrol::~PAMevcontrol() {
1372 // Clean up used widgets: frames, buttons, layouthints
1373 Cleanup();
1374 delete this;
1375 }

  ViewVC Help
Powered by ViewVC 1.1.23