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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Thu Nov 8 14:00:53 2007 UTC (17 years ago) by mocchiut
Branch: MAIN
Changes since 1.5: +80 -8 lines
Bugs fixed, getL2 feature implemented

1 mocchiut 1.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 mocchiut 1.4 #include <PamLevel2.h>
50     //
51 mocchiut 1.1 #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 mocchiut 1.3 cframe1 = new TGCompositeFrame(this, 280, 40, kVerticalFrame);
108 mocchiut 1.1 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 mocchiut 1.3 TGCompositeFrame *cframe5 = new TGCompositeFrame(this, 280, 60, kVerticalFrame);
112     gf = new TGGroupFrame(cframe1, "Detectors");
113     TGGroupFrame *gf2 = new TGGroupFrame(cframe5, "Appearance");
114 mocchiut 1.1 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 mocchiut 1.3 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 mocchiut 1.1 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 mocchiut 1.3 htext->AddFrame(Load, new TGLayoutHints(kLHintsCenterX,0,5,5,5));
139 mocchiut 1.1 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 mocchiut 1.2 Load2->SetToolTipText("Clear box and click to unload file");
147 mocchiut 1.1 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 mocchiut 1.3 htext2->AddFrame(Load2, new TGLayoutHints(kLHintsCenterX,0,5,5,5));
151 mocchiut 1.1 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 mocchiut 1.3 //
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 mocchiut 1.1 fchktof->Connect("Clicked()","PAMevcontrol", this,"chktof()");
201     if ( cvar->TOF ) fchktof->SetState(kButtonDown);
202 mocchiut 1.3 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 mocchiut 1.1 //
221 mocchiut 1.3 fchkac = new TGCheckButton(hframedec[5], "Show");
222 mocchiut 1.1 fchkac->Connect("Clicked()","PAMevcontrol", this,"chkac()");
223     if ( cvar->AC ) fchkac->SetState(kButtonDown);
224 mocchiut 1.3 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 mocchiut 1.1 //
230 mocchiut 1.3 // 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 mocchiut 1.1 //
245 mocchiut 1.3 // S4
246 mocchiut 1.1 //
247 mocchiut 1.3 fchks4 = new TGCheckButton(hframedec[7], "Show");
248 mocchiut 1.1 fchks4->Connect("Clicked()","PAMevcontrol",this,"chks4()");
249     if ( cvar->S4 ) fchks4->SetState(kButtonDown);
250 mocchiut 1.3 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 mocchiut 1.1 //
258 mocchiut 1.3 fchknd = new TGCheckButton(hframedec[8], "Show");
259 mocchiut 1.1 fchknd->Connect("Clicked()","PAMevcontrol",this,"chknd()");
260     if ( cvar->ND ) fchknd->SetState(kButtonDown);
261 mocchiut 1.3 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 mocchiut 1.5 fshowsi->Connect("Clicked()","PAMevcontrol", this,"showsidata()");
271 mocchiut 1.3 if ( !cvar->RUN ) fshoworb->SetState(kButtonDisabled);
272     hframedec[9]->AddFrame(fshoworb, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
273 mocchiut 1.1 //
274 mocchiut 1.3 // All data
275     //
276     fshowall = new TGTextButton(hframedec[10], "Show Data");
277 mocchiut 1.5 fshowall->Connect("Clicked()","PAMevcontrol", this,"showalldata()");
278 mocchiut 1.3 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 mocchiut 1.1 //
284 mocchiut 1.3 // 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 mocchiut 1.1 //
288 mocchiut 1.2 fchkinfo = new TGCheckButton(hframe3, "Infos");
289 mocchiut 1.1 fchkinfo->Connect("Clicked()","PAMevcontrol",this,"chkinfo()");
290     if ( cvar->INFOS ) fchkinfo->SetState(kButtonDown);
291 mocchiut 1.3 hframe3->AddFrame(fchkinfo, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,0,5,5,5));
292 mocchiut 1.1 //
293 mocchiut 1.2 fchknames = new TGCheckButton(hframe3, "Names");
294 mocchiut 1.1 fchknames->Connect("Clicked()","PAMevcontrol",this,"chknames()");
295     if ( cvar->VINFOS ) fchknames->SetState(kButtonDown);
296 mocchiut 1.3 hframe3->AddFrame(fchknames, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,5,5,5));
297 mocchiut 1.2 fchkpalette = new TGCheckButton(hframe3, "Palette");
298 mocchiut 1.1 fchkpalette->Connect("Clicked()","PAMevcontrol",this,"chkpalette()");
299     if ( cvar->PALETTE) fchkpalette->SetState(kButtonDown);
300 mocchiut 1.3 hframe3->AddFrame(fchkpalette, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,10,5,5,5));
301     gf2->AddFrame(hframe3, new TGLayoutHints(kLHintsExpandX));
302 mocchiut 1.1 //
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 mocchiut 1.4 hframe4->AddFrame(group,new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,5,2,5,5));
314 mocchiut 1.1 //
315     //
316 mocchiut 1.4 // 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 mocchiut 1.1 ffl0->Connect("Clicked()","PAMevcontrol",this,"forcel0()");
327     if ( cvar->fl0 ) ffl0->SetState(kButtonDown);
328     if ( !cvar->fl0 ) ffl0->SetState(kButtonUp);
329 mocchiut 1.4 hframe5->AddFrame(ffl0, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,2,5,5,5));
330 mocchiut 1.3 //
331     hframe4->AddFrame(hframe5, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsCenterY|kLHintsExpandX,10,5,5,5));
332     gf2->AddFrame(hframe4, new TGLayoutHints(kLHintsExpandX));
333 mocchiut 1.1 //
334 mocchiut 1.3 cframe1->AddFrame(gf, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
335     // cframe1->Resize(280,10);
336     // cframe1->GetLayoutManager()->SetDefaultHeight(5);
337     // MapWindow();
338 mocchiut 1.1 //
339 mocchiut 1.3 cframe5->AddFrame(gf2, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
340 mocchiut 1.1 //
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 mocchiut 1.3 htexts->AddFrame(fCombo, new TGLayoutHints(kLHintsExpandY | kLHintsExpandY| kLHintsRight, 2, 2, 2, 1));
385 mocchiut 1.1 //
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 mocchiut 1.3 AddFrame(cframe5, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
422 mocchiut 1.1 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 mocchiut 1.3 AddFrame(hframe, new TGLayoutHints(kLHintsExpandX,1,1,1,1));
426 mocchiut 1.1 // 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 mocchiut 1.3 //
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 mocchiut 1.1 }
443    
444     void PAMevcontrol::DIALOG(Int_t ty, TString warn){
445     //
446     // ty = 0 -> INFO, ty = 1 -> WARNING, ty = 3 -> ERROR
447     //
448     Int_t retval;
449     TString title;
450     EMsgBoxIcon mb_icon = kMBIconStop;
451     if ( ty == 0 ){
452     title="INFO";
453     mb_icon = kMBIconAsterisk;
454     };
455     if ( ty == 1 ){
456     title="WARNING!";
457     mb_icon = kMBIconExclamation;
458     };
459     if ( ty == 2 ){
460     title="ERROR!!";
461     mb_icon = kMBIconStop;
462     };
463     new TGMsgBox(gClient->GetRoot(), this, title.Data(), warn.Data(), mb_icon, kMBOk, &retval);
464     }
465    
466 mocchiut 1.3 void PAMevcontrol::refreshdec(Int_t n){
467     //
468     for (Int_t i=0; i<11; i++){
469     gf->HideFrame(hframedec[i]);
470     };
471     //
472     if ( n < 11 ){
473     gf->ShowFrame(hframedec[n]);
474     };
475     };
476    
477    
478     void PAMevcontrol::showorbdata(){
479 mocchiut 1.5 cvar->showorb = !cvar->showorb;
480     if ( !cvar->showorb ) fshoworb->SetText("Show Data");
481     if ( cvar->showorb ) fshoworb->SetText("Hide Data");
482     // printf("orb \n");
483 mocchiut 1.3 };
484    
485     void PAMevcontrol::showtrgdata(){
486 mocchiut 1.5 cvar->showtrg = !cvar->showtrg;
487     if ( !cvar->showtrg ) fshowtrg->SetText("Show Data");
488     if ( cvar->showtrg ) fshowtrg->SetText("Hide Data");
489     // printf("trg \n");
490 mocchiut 1.3 };
491    
492     void PAMevcontrol::showrundata(){
493 mocchiut 1.5 cvar->showrun = !cvar->showrun;
494     if ( !cvar->showrun ) fshowrun->SetText("Show Data");
495     if ( cvar->showrun ) fshowrun->SetText("Hide Data");
496     // printf("run \n");
497 mocchiut 1.3 };
498    
499     void PAMevcontrol::showcaldata(){
500 mocchiut 1.5 cvar->showcal = !cvar->showcal;
501     if ( !cvar->showcal ) fshowcal->SetText("Show Data");
502     if ( cvar->showcal ) fshowcal->SetText("Hide Data");
503     // printf("cal \n");
504 mocchiut 1.3 };
505    
506     void PAMevcontrol::chkcalost(){
507 mocchiut 1.4 if ( cvar->CALOT ) {
508     cvar->CALOT = 0;
509 mocchiut 1.3 } else {
510 mocchiut 1.4 cvar->CALOT = 1;
511 mocchiut 1.3 };
512     cvar->i--;
513     cvar->nevents = 0;
514     cvar->firstevno = 0;
515     cvar->lastevno = 0;
516     cvar->refresh = true;
517     };
518    
519     void PAMevcontrol::showtrkdata(){
520 mocchiut 1.5 cvar->showtrk = !cvar->showtrk;
521     if ( !cvar->showtrk ) fshowtrk->SetText("Show Data");
522     if ( cvar->showtrk ) fshowtrk->SetText("Hide Data");
523     // printf("trk \n");
524 mocchiut 1.3 };
525    
526     void PAMevcontrol::showtofdata(){
527 mocchiut 1.5 cvar->showtof = !cvar->showtof;
528     if ( !cvar->showtof ) fshowtof->SetText("Show Data");
529     if ( cvar->showtof ) fshowtof->SetText("Hide Data");
530     // printf("tof \n");
531 mocchiut 1.3 };
532    
533     void PAMevcontrol::showacdata(){
534 mocchiut 1.5 cvar->showac = !cvar->showac;
535     if ( !cvar->showac ) fshowac->SetText("Show Data");
536     if ( cvar->showac ) fshowac->SetText("Hide Data");
537     // printf("ac \n");
538 mocchiut 1.3 };
539    
540     void PAMevcontrol::shownddata(){
541 mocchiut 1.5 cvar->shownd = !cvar->shownd;
542     if ( !cvar->shownd ) fshownd->SetText("Show Data");
543     if ( cvar->shownd ) fshownd->SetText("Hide Data");
544     // printf("nd \n");
545 mocchiut 1.3 };
546    
547     void PAMevcontrol::shows4data(){
548 mocchiut 1.5 cvar->shows4 = !cvar->shows4;
549     if ( !cvar->shows4 ) fshows4->SetText("Show Data");
550     if ( cvar->shows4 ) fshows4->SetText("Hide Data");
551     // printf("s4 \n");
552 mocchiut 1.3 };
553    
554     void PAMevcontrol::showsidata(){
555 mocchiut 1.5 cvar->showsi = !cvar->showsi;
556     if ( !cvar->showsi ) fshowsi->SetText("Show Data");
557     if ( cvar->showsi ) fshowsi->SetText("Hide Data");
558     // printf("si \n");
559 mocchiut 1.3 };
560    
561     void PAMevcontrol::showalldata(){
562 mocchiut 1.5 cvar->showall = !cvar->showall;
563     if ( !cvar->showall ) fshowall->SetText("Show Data");
564     if ( cvar->showall ) fshowall->SetText("Hide Data");
565     // printf("all \n");
566 mocchiut 1.3 };
567 mocchiut 1.1
568     void PAMevcontrol::SetFilename() {
569     TGTextEntry *entry = (TGTextEntry*)gTQSender;
570     TString text = entry->GetText();
571     cvar->thefilename=text.Data();
572     cvar->nevents = 0;
573     cvar->firstevno = 0;
574     cvar->lastevno = 0;
575     if ( cvar->fl0 ) {
576     cvar->fl0 = false;
577     ffl0->SetState(kButtonUp);
578     };
579     cvar->restart = true;
580     cvar->waitforever = false;
581     }
582    
583 mocchiut 1.4 void PAMevcontrol::getl0file() {
584     //
585     TString host = "mysql://localhost/pamelaprod";
586     TString user = "anonymous";
587     TString psw = "";
588     const char *pamdbhost=gSystem->Getenv("PAM_DBHOST");
589     const char *pamdbuser=gSystem->Getenv("PAM_DBUSER");
590     const char *pamdbpsw=gSystem->Getenv("PAM_DBPSW");
591     if ( !pamdbhost ) pamdbhost = "";
592     if ( !pamdbuser ) pamdbuser = "";
593     if ( !pamdbpsw ) pamdbpsw = "";
594     if ( strcmp(pamdbhost,"") ) host = pamdbhost;
595     if ( strcmp(pamdbuser,"") ) user = pamdbuser;
596     if ( strcmp(pamdbpsw,"") ) psw = pamdbpsw;
597     cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
598     cout<<"Connecting to DB"<<endl;
599     cout<<"HOST "<<host<<endl;
600     cout<<"USER "<<user<<endl;
601     cout<<"PSW "<<psw<<endl;
602     cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
603     TSQLServer *dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());
604 mocchiut 1.6 //
605     TSQLResult *pResult;
606     TSQLRow *Row;
607     //
608 mocchiut 1.4 if( dbc && dbc->IsConnected() ){
609     //
610 mocchiut 1.6 // Retrieve the file
611 mocchiut 1.4 //
612     if ( clev->file == 2 ){
613 mocchiut 1.6 //
614     // Starting from level2
615     //
616 mocchiut 1.4 GL_ROOT glroot = GL_ROOT();
617     if( !glroot.Query_GL_ROOT(cvar->idroot,dbc) ){
618     //
619     cvar->thefilename= glroot.PATH + glroot.NAME;
620     cvar->nevents = 0;
621     cvar->firstevno = 0;
622     cvar->lastevno = 0;
623     if ( cvar->fl0 ) {
624     cvar->fl0 = false;
625     ffl0->SetState(kButtonUp);
626     };
627     cvar->restart = true;
628     cvar->waitforever = false;
629     //
630     if ( cvar->thefilter != "" ){
631     cvar->thefilter="";
632     cvar->selex = true;
633     };
634 mocchiut 1.6 cvar->i = cvar->EVF + cvar->i ;
635 mocchiut 1.4 //cvar->refresh = true;
636     // cvar->file = 0;
637     //
638 mocchiut 1.6 } else {
639 mocchiut 1.4 stringstream warning;
640     warning.str("");
641     warning << " Problems getting Level0 file ";
642     DIALOG(2,warning.str().c_str());
643     };
644 mocchiut 1.6 } else {
645 mocchiut 1.4 //
646     // starting from L0
647     //
648 mocchiut 1.6 stringstream query;
649     query.str("");
650     query << " SELECT ID FROM GL_ROOT WHERE NAME='"<< gSystem->BaseName(cvar->thefilename.Data()) <<"' order by INSERT_TIME desc limit 1;";
651     // printf(" query is %s \n",query.str().c_str());
652     pResult = dbc->Query(query.str().c_str());
653     Row = pResult->Next();
654     UInt_t idrl0 = 0;
655     if ( Row ){
656     idrl0 = (UInt_t)atoll(Row->GetField(0));
657     };
658     //
659     query.str("");
660     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 <<";";
661     // printf(" query is %s \n",query.str().c_str());
662     pResult = dbc->Query(query.str().c_str());
663     Row = pResult->Next();
664     UInt_t idrl2 = 0;
665     UInt_t idrlun = 0;
666     UInt_t evfrom = 0;
667     if ( Row ){
668     idrlun = (UInt_t)atoll(Row->GetField(0));
669     idrl2 = (UInt_t)atoll(Row->GetField(1));
670     evfrom = (UInt_t)atoll(Row->GetField(2));
671     };
672     //
673     query.str("");
674     query << " SELECT ID,NEVENTS FROM GL_RUN WHERE ID_ROOT_L2="<< idrl2 <<" order by RUNHEADER_TIME asc;";
675     // printf(" query is %s \n",query.str().c_str());
676     pResult = dbc->Query(query.str().c_str());
677     Row = pResult->Next();
678     UInt_t coren = 0;
679     while ( Row ){
680     if ( (UInt_t)atoll(Row->GetField(0)) == idrlun ) break;
681     coren += (UInt_t)atoll(Row->GetField(1));
682     Row = pResult->Next();
683     };
684     coren += cvar->i - evfrom;
685     //
686     GL_ROOT glroot = GL_ROOT();
687     if( !glroot.Query_GL_ROOT(idrl2,dbc) ){
688     //
689     cvar->i = coren;
690     //
691     cvar->thefilename= glroot.PATH + glroot.NAME;
692     cvar->nevents = 0;
693     cvar->firstevno = 0;
694     cvar->lastevno = 0;
695     if ( cvar->fl0 ) {
696     cvar->fl0 = false;
697     ffl0->SetState(kButtonUp);
698     };
699     cvar->restart = true;
700     cvar->waitforever = false;
701     //
702     if ( cvar->thefilter != "" ){
703     cvar->thefilter="";
704     cvar->selex = true;
705     };
706     //
707     } else {
708     stringstream warning;
709     warning.str("");
710     warning << " Problems getting Level2 file ";
711     DIALOG(2,warning.str().c_str());
712     };
713     // stringstream warning;
714     // warning.str("");
715     // warning << " Not yet implemented ";
716     // DIALOG(2,warning.str().c_str());
717 mocchiut 1.4 };
718     //
719     } else {
720     stringstream warning;
721     warning.str("");
722     warning << " Problems connectiong to DB! ";
723     DIALOG(2,warning.str().c_str());
724     };
725     dbc->Close();
726     };
727    
728 mocchiut 1.1 void PAMevcontrol::CheckLevel() {
729     if ( clev->file == 2 ){
730     ffl0->SetState(kButtonDisabled);
731 mocchiut 1.4 // if ( !cvar->tracknds4 ) {
732     // ftrks4->SetState(kButtonUp);
733     // } else {
734     // ftrks4->SetState(kButtonDown);
735     // };
736 mocchiut 1.1 } else {
737 mocchiut 1.4 //ftrks4->SetState(kButtonDisabled);
738 mocchiut 1.1 if ( !cvar->fl0 ) {
739     ffl0->SetState(kButtonUp);
740     } else {
741     ffl0->SetState(kButtonDown);
742     };
743     };
744 mocchiut 1.5 if ( clev->file == 2 ){
745     fgetl0->SetText("Get L0 file");
746     } else {
747     fgetl0->SetText("Get L2 file");
748     };
749 mocchiut 1.1 }
750    
751     void PAMevcontrol::SetSearching() {
752     bstop->SetState(kButtonUp);
753     };
754    
755     void PAMevcontrol::StopSearching() {
756     bstop->SetState(kButtonDisabled);
757     };
758    
759 mocchiut 1.2 void PAMevcontrol::RefreshButtons() {
760     if ( cvar->jumprog ){
761     jbwc1->SetState(kButtonDown);
762     } else {
763     jbwc0->SetState(kButtonDown);
764     };
765     if ( cvar->fl0 ){
766     ffl0->SetState(kButtonDown);
767     } else {
768     ffl0->SetState(kButtonUp);
769     };
770 mocchiut 1.4 // if ( cvar->tracknds4) ftrks4->SetState(kButtonDown);
771 mocchiut 1.2 if ( cvar->bw ){
772     bwc1->SetState(kButtonDown);
773     } else {
774     bwc0->SetState(kButtonDown);
775     };
776     if ( cvar->PALETTE) fchkpalette->SetState(kButtonDown); else fchkpalette->SetState(kButtonUp);
777     if ( cvar->VINFOS ) fchknames->SetState(kButtonDown); else fchknames->SetState(kButtonUp);
778     if ( cvar->INFOS ) fchkinfo->SetState(kButtonDown); else fchkinfo->SetState(kButtonUp);
779 mocchiut 1.4 //
780 mocchiut 1.3 if ( cvar->CALOT ) fchkcalost->SetState(kButtonDown); else fchkcalost->SetState(kButtonUp);
781 mocchiut 1.4 if ( cvar->CALO ){
782     fchkcalo->SetState(kButtonDown);
783     fshowcal->SetState(kButtonUp);
784     } else {
785     fchkcalo->SetState(kButtonUp);
786     fchkcalost->SetState(kButtonDisabled);
787     fshowcal->SetState(kButtonDisabled);
788     };
789     //
790     if ( cvar->ND ){
791     fchknd->SetState(kButtonDown);
792     fshownd->SetState(kButtonUp);
793     } else {
794     fchknd->SetState(kButtonUp);
795     fshownd->SetState(kButtonDisabled);
796     };
797     //
798     if ( cvar->S4 ){
799     fchks4->SetState(kButtonDown);
800     fshows4->SetState(kButtonUp);
801     } else {
802     fchks4->SetState(kButtonUp);
803     fshows4->SetState(kButtonDisabled);
804     };
805     //
806     if ( cvar->TRK ){
807     fchktrk->SetState(kButtonDown);
808     fshowtrk->SetState(kButtonUp);
809     } else {
810     fchktrk->SetState(kButtonUp);
811     fshowtrk->SetState(kButtonDisabled);
812     }
813     //
814     if ( cvar->AC ){
815     fchkac->SetState(kButtonDown);
816     fshowac->SetState(kButtonUp);
817     } else {
818     fchkac->SetState(kButtonUp);
819     fshowac->SetState(kButtonDisabled);
820     };
821     //
822     if ( cvar->TOF ){
823     fchktof->SetState(kButtonDown);
824     fshowtof->SetState(kButtonUp);
825     } else {
826     fchktof->SetState(kButtonUp);
827     fshowtof->SetState(kButtonDisabled);
828     };
829     //
830     CheckLevel();
831     //
832 mocchiut 1.2 };
833    
834 mocchiut 1.1 void PAMevcontrol::SetFilter() {
835     TGTextEntry *entry = (TGTextEntry*)gTQSender;
836     TString text = entry->GetText();
837     cvar->thefilter=text.Data();
838     cvar->i--;
839     cvar->selex = true;
840     cvar->nevents = 0;
841     cvar->firstevno = 0;
842     cvar->lastevno = 0;
843     cvar->refresh = true;
844     }
845    
846     void PAMevcontrol::CompleteText() {
847     TGTextEntry *entry = (TGTextEntry*)gTQSender;
848     TString text = entry->GetText();
849     Int_t curspos = entry->GetCursorPosition();
850     Int_t ncurspos = 0;
851     TString textrem;
852     stringcopy(textrem,text,curspos,text.Length());
853     text.Resize(curspos);
854     if ( !strcmp(text.Data(),"") ) {
855     stringstream ntext;
856     ntext.str("");
857     ntext << gSystem->ExpandPathName("$HOME");
858     text = ntext.str().c_str();
859     curspos=ntext.str().length();
860     };
861     char *test = gSystem->ExpandPathName(text.Data());
862     const char *dir = gSystem->DirName(test);
863     const char *base = gSystem->BaseName(test);
864     TString lbase = base;
865     Int_t lenbase = lbase.Length();
866     TSystemDirectory *tsd = new TSystemDirectory("",dir);
867     TSystemFile *file;
868     TList *lsmatch = new TList;
869     Int_t numf = 0;
870     Int_t numgo = 0;
871     Int_t charmac = 0;
872     TString tbase;
873     Int_t k = 0;
874     stringstream newtext;
875     TSystemFile *mfile;
876     TSystemFile nfile;
877     TList *lsf = new TList;
878     const char *ctbase;
879     if ( !tsd->GetListOfFiles() ){
880     gVirtualX->Bell(0);
881     goto end;
882     };
883     lsf = tsd->GetListOfFiles();
884     file = (TSystemFile*)lsf->First();
885     //
886     while( (TSystemFile*)lsf->After(file) ){
887     numf++;
888     file = (TSystemFile*)lsf->After(file);
889     if ( !strncmp(file->GetName(),base,lenbase) ){
890     numgo++;
891     lsmatch->AddLast(file);
892     const char *ctbase = file->GetName();
893     tbase = ctbase;
894     charmac = tbase.Length();
895     };
896     };
897     newtext.str("");
898     if ( numgo > 0 ){
899     mfile = (TSystemFile*)lsmatch->First();
900     ctbase = mfile->GetName();
901     while ( (!strcmp(ctbase,"..") || !strcmp(ctbase,".")) && (TSystemFile*)lsmatch->After(mfile) ) {
902     mfile = (TSystemFile*)lsmatch->After(mfile);
903     ctbase = mfile->GetName();
904     };
905     tbase = ctbase;
906     base = ctbase;
907     charmac = tbase.Length();;
908     while( (TSystemFile*)lsmatch->After(mfile) ){
909     mfile = (TSystemFile*)lsmatch->After(mfile);
910     ctbase = mfile->GetName();
911     while ( (!strcmp(ctbase,"..") || !strcmp(ctbase,".")) && (TSystemFile*)lsmatch->After(mfile) ) {
912     mfile = (TSystemFile*)lsmatch->After(mfile);
913     ctbase = mfile->GetName();
914     };
915     tbase = ctbase;
916     k = 0;
917     for ( Int_t i=lenbase; i<=tbase.Length(); i++){
918     if ( !strncmp(tbase.Data(),base,i) && strcmp(tbase.Data(),base) ){
919     k = i;
920     };
921     };
922     if ( k <= charmac){
923     charmac = k;
924     };
925     };
926     gVirtualX->Bell(0);
927     };
928     if ( !charmac ) {
929     gVirtualX->Bell(0);
930     goto end;
931     };
932     tbase.Resize(charmac);
933     if ( !strcmp(dir,"") || !strcmp(dir,"/") ){
934     newtext << "/" << tbase.Data();
935     } else {
936     newtext << dir << "/" << tbase.Data();
937     };
938     nfile = TSystemFile(tbase.Data(),dir);
939     if ( nfile.IsDirectory() && numgo == 1 ) newtext << "/";
940     ncurspos = newtext.str().length();
941     if ( textrem.Length() ) newtext << textrem.Data();
942     entry->SetText(newtext.str().c_str());
943     entry->SetCursorPosition(ncurspos);
944     end:
945     lsf->Clear();
946     lsmatch->Clear();
947     }
948    
949     void PAMevcontrol::saveas() {
950     TString text = fText4->GetText();
951     Int_t sel=fCombo->GetSelected();
952     TString ty;
953     switch (sel){
954     case (0):
955     ty = ".ps";
956     break;
957     case (1):
958     ty = ".eps";
959     break;
960     case (2):
961     ty = ".gif";
962     break;
963     case (3):
964     ty = ".jpg";
965     break;
966     case (4):
967     ty = ".tiff";
968     break;
969     case (5):
970     ty = ".xpm";
971     break;
972     case (6):
973     ty = ".pdf";
974     break;
975     case (7):
976     ty = ".xml";
977     break;
978     case (8):
979     ty = ".png";
980     break;
981     case (9):
982     ty = ".svg";
983     break;
984     case (10):
985     ty = ".root";
986     break;
987     case (11):
988     ty = ".C";
989     break;
990     };
991     if ( sel == 0 ) ty = ".ps";
992     stringstream name;
993     if ( strcmp(text.Data(),"") ){
994     name.str("");
995     name << text.Data();
996     name << ty.Data();
997     thefigure->SaveAs(name.str().c_str());
998     name.str("");
999     name << " Saved as ";
1000     name << text.Data();
1001     name << ty.Data();
1002     DIALOG(0,name.str().c_str());
1003     printf(" Saved as %s%s \n",text.Data(),ty.Data());
1004     };
1005     }
1006    
1007     void PAMevcontrol::increment(float val) {
1008     fHProg1->Reset();
1009     fHProg1->SetPosition(val);
1010     gSystem->ProcessEvents();
1011     }
1012    
1013     void PAMevcontrol::forcel0() {
1014 mocchiut 1.5 cvar->fl0 = !cvar->fl0;
1015     cvar->alrforc = false;
1016     cvar->i--;
1017     cvar->nevents = 0;
1018     cvar->firstevno = 0;
1019     cvar->lastevno = 0;
1020     cvar->refresh = true;
1021 mocchiut 1.1 }
1022    
1023     void PAMevcontrol::clearselfi(){
1024     fText2->SetText("");
1025     }
1026    
1027     void PAMevcontrol::upgrnamfi(){
1028     fText4->SetText(cvar->svas.Data());
1029     fText4->SetCursorPosition(fText4->GetMaxLength());
1030     }
1031    
1032     void PAMevcontrol::jumpto() {
1033     TGTextEntry *entry = (TGTextEntry*)gTQSender;
1034     TString text = entry->GetText();
1035     Int_t j;
1036     j = atoi(text.Data());
1037     if ( cvar->jumprog ){
1038     if ( j < 1 || j > cvar->nevents ) {
1039     printf("\n You can choose between 1 and %i \n",(int)cvar->nevents);
1040     stringstream warning;
1041     warning.str("");
1042     warning << "You can choose between 1 and ";
1043     warning << (int)cvar->nevents;
1044     DIALOG(1,warning.str().c_str());
1045     } else {
1046     stringstream warning;
1047     // warning.str("");
1048     // warning << "Jumping to progressive number ";
1049     // warning << j;
1050     // DIALOG(0,warning.str().c_str());
1051     printf("\n Jumping to progressive number %i\n\n",j);
1052     cvar->i = j-2;
1053     cvar->goon = true;
1054     SetSearching();
1055     };
1056     } else {
1057     if ( j < cvar->firstevno || j > cvar->lastevno ) {
1058     printf("\n You can choose between %i and %i \n",cvar->firstevno,cvar->lastevno);
1059     stringstream warning;
1060     warning.str("");
1061     warning << "You can choose between ";
1062     warning << cvar->firstevno;
1063     warning << " and ";
1064     warning << cvar->lastevno;
1065     DIALOG(1,warning.str().c_str());
1066     } else {
1067     // stringstream warning;
1068     // warning.str("");
1069     // warning << "Jumping to event number ";
1070     // warning << j;
1071     // DIALOG(0,warning.str().c_str());
1072     printf("\n Jumping to packet number %i\n\n",j);
1073     cvar->jumpto = j;
1074     cvar->jumpen = true;
1075     cvar->goon = true;
1076     SetSearching();
1077     };
1078     };
1079     entry->SetText("");
1080     }
1081    
1082     void PAMevcontrol::radioevent() {
1083     cvar->jumprog = false;
1084     }
1085    
1086     void PAMevcontrol::radioprog() {
1087     cvar->jumprog = true;
1088     }
1089    
1090     void PAMevcontrol::radiocolor() {
1091     if ( !cvar->goon ){
1092     if ( cvar->bw ) {
1093     cvar->bw = 0;
1094     cvar->i--;
1095     cvar->goon = true;
1096     };
1097     };
1098     }
1099    
1100     void PAMevcontrol::radiobw() {
1101     if ( !cvar->goon ){
1102     if ( !cvar->bw ) {
1103     cvar->bw = 1;
1104     cvar->i--;
1105     cvar->goon = true;
1106     };
1107     };
1108     }
1109    
1110     void PAMevcontrol::radiotrack() {
1111     if ( cvar->tracknds4 ) {
1112     cvar->tracknds4 = 0;
1113     } else {
1114     cvar->tracknds4 = 1;
1115     };
1116     cvar->i--;
1117     cvar->goon = true;
1118     }
1119    
1120     void PAMevcontrol::chktof() {
1121     if ( cvar->TOF ) {
1122     cvar->TOF = 0;
1123     } else {
1124     cvar->TOF = 1;
1125     };
1126     cvar->i--;
1127     cvar->nevents = 0;
1128     cvar->firstevno = 0;
1129     cvar->lastevno = 0;
1130     cvar->refresh = true;
1131     }
1132    
1133     void PAMevcontrol::chkac() {
1134     if ( cvar->AC ) {
1135     cvar->AC = 0;
1136     } else {
1137     cvar->AC = 1;
1138     };
1139     cvar->i--;
1140     cvar->nevents = 0;
1141     cvar->firstevno = 0;
1142     cvar->lastevno = 0;
1143     cvar->refresh = true;
1144     }
1145    
1146     void PAMevcontrol::chktrk() {
1147     if ( cvar->TRK ) {
1148     cvar->TRK = 0;
1149     } else {
1150     cvar->TRK = 1;
1151     };
1152     cvar->i--;
1153     cvar->nevents = 0;
1154     cvar->firstevno = 0;
1155     cvar->lastevno = 0;
1156     cvar->refresh = true;
1157     }
1158    
1159     void PAMevcontrol::chkcalo() {
1160     if ( cvar->CALO ) {
1161     cvar->CALO = 0;
1162     } else {
1163     cvar->CALO = 1;
1164     };
1165     cvar->i--;
1166     cvar->nevents = 0;
1167     cvar->firstevno = 0;
1168     cvar->lastevno = 0;
1169     cvar->refresh = true;
1170     }
1171    
1172     void PAMevcontrol::chks4() {
1173     if ( cvar->S4 ) {
1174     cvar->S4 = 0;
1175     } else {
1176     cvar->S4 = 1;
1177     };
1178     cvar->i--;
1179     cvar->nevents = 0;
1180     cvar->firstevno = 0;
1181     cvar->lastevno = 0;
1182     cvar->refresh = true;
1183     }
1184    
1185     void PAMevcontrol::chknd() {
1186     if ( cvar->ND ) {
1187     cvar->ND = 0;
1188     } else {
1189     cvar->ND = 1;
1190     };
1191     cvar->i--;
1192     cvar->nevents = 0;
1193     cvar->firstevno = 0;
1194     cvar->lastevno = 0;
1195     cvar->refresh = true;
1196     }
1197    
1198     void PAMevcontrol::chkinfo() {
1199     if ( cvar->INFOS ) {
1200     cvar->INFOS = 0;
1201     } else {
1202     cvar->INFOS = 1;
1203     };
1204     cvar->i--;
1205     cvar->goon = true;
1206     }
1207    
1208     void PAMevcontrol::chknames() {
1209     if ( cvar->VINFOS ) {
1210     cvar->VINFOS = 0;
1211     } else {
1212     cvar->VINFOS = 1;
1213     };
1214     cvar->i--;
1215     cvar->goon = true;
1216     }
1217    
1218     void PAMevcontrol::chkpalette() {
1219     if ( cvar->PALETTE ) {
1220     cvar->PALETTE = 0;
1221     } else {
1222     cvar->PALETTE = 1;
1223     };
1224     cvar->i--;
1225     cvar->goon = true;
1226     }
1227    
1228     void PAMevcontrol::next() {
1229     SetSearching();
1230     if ( cvar->i == cvar->nevents-1 ) {
1231     printf("This is the last event, you can't go forward! \n");
1232     DIALOG(1,"This is the last event!");
1233     } else {
1234     cvar->goon = true;
1235     cvar->doflag = 1;
1236     };
1237     }
1238    
1239     void PAMevcontrol::stop() {
1240     DIALOG(1,"Stop searching");
1241     cvar->doflag = 3;
1242     }
1243    
1244     void PAMevcontrol::prev() {
1245     SetSearching();
1246     if ( cvar->i > 0 ) {
1247     printf("WARNING: going backward!\n\n");
1248     cvar->doflag = 2;
1249     cvar->goon = true;
1250     } else {
1251     printf("This is the first event, you can't go backward! \n");
1252     DIALOG(1,"This is the first event!");
1253     };
1254     }
1255    
1256     void PAMevcontrol::Terminate() {
1257     gSystem->ProcessEvents();
1258     gApplication->Terminate(0);
1259     }
1260    
1261     PAMevcontrol::~PAMevcontrol() {
1262     // Clean up used widgets: frames, buttons, layouthints
1263     Cleanup();
1264     delete this;
1265     }

  ViewVC Help
Powered by ViewVC 1.1.23