1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
19 #include "AliMUONPainterDataSourceFrame.h"
22 #include "AliMUONPainterDataSourceItem.h"
23 #include "AliMUONPainterEnv.h"
24 #include "AliMUONPainterHelper.h"
25 #include "AliMUONPainterDataRegistry.h"
26 #include "AliMUONRecoParam.h"
27 #include "AliMUONTrackerACFDataMaker.h"
28 #include "AliMUONTrackerDataMaker.h"
29 #include "AliMUONTrackerOCDBDataMaker.h"
30 #include "AliRawReader.h"
32 #include <TGComboBox.h>
33 #include <TGFileDialog.h>
34 #include <TGNumberEntry.h>
35 #include <TGTextEntry.h>
37 #include <TObjArray.h>
38 #include <TObjString.h>
43 ///\class AliMUONPainterDataSourceFrame
45 /// A complete frame to select and display various data sources to
46 /// be displayed : either raw data or OCDB data.
47 /// Later on we might add digits and clusters for instance.
49 ///\author Laurent Aphecetche, Subatech
51 const char* AliMUONPainterDataSourceFrame::fgkNumberOfDataSourcesKey = "NumberOfDataSources";
52 const char* AliMUONPainterDataSourceFrame::fgkDataSourceURIKey = "DataSourceURI.%d";
55 ClassImp(AliMUONPainterDataSourceFrame)
58 //_____________________________________________________________________________
59 AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p, UInt_t w, UInt_t h)
60 : TGCompositeFrame(p,w,h,kVerticalFrame),
61 fRecentSourceSelector(new TGGroupFrame(this,"Recent sources",kHorizontalFrame)),
62 fRawSelector(new TGGroupFrame(this,"Raw file URI",kHorizontalFrame)),
63 fRawSelector2(new TGCompositeFrame(fRawSelector,w,h,kVerticalFrame)),
64 fRawSelector21(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
65 fRawSelector22(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
66 fRawSelector23(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
67 fCalibrateNoGain(new TGCheckButton(fRawSelector22,"Ped subraction")),
68 fCalibrateGainConstantCapa(new TGCheckButton(fRawSelector22,"Ped subraction + gain (capa cste)")),
69 fCalibrateGain(new TGCheckButton(fRawSelector22,"Full calib (Ped subraction + gain with capa)")),
70 fHistogramButton(new TGCheckButton(fRawSelector23,"Histogram")),
71 fHistoMin(new TGNumberEntry(fRawSelector23,0)),
72 fHistoMax(new TGNumberEntry(fRawSelector23,4096)),
73 fRawOCDBPath(new TGTextEntry(fRawSelector22,"")),
74 fOCDBSelector(new TGGroupFrame(this,"OCDB Path",kHorizontalFrame)),
75 fDataReaders(new TGGroupFrame(this,"Data sources")),
76 fFilePath(new TGTextEntry(fRawSelector21,"")),
77 fOCDBPath(new TGTextEntry(fOCDBSelector,"")),
78 fRunSelector(new TGNumberEntry(fOCDBSelector,0)),
79 fOCDBTypes(new TGComboBox(fOCDBSelector)),
80 fRecentSources(new TGComboBox(fRecentSourceSelector)),
81 fItems(new TObjArray),
82 fACFSelector(new TGGroupFrame(this,"ASCII Calib File",kHorizontalFrame)),
83 fACFPath(new TGTextEntry(fACFSelector,"")),
84 fACFTypes(new TGComboBox(fACFSelector))
88 AliMUONPainterDataRegistry* reg = AliMUONPainterDataRegistry::Instance();
90 reg->Connect("DataMakerWasRegistered(AliMUONVTrackerDataMaker*)",
91 "AliMUONPainterDataSourceFrame",
93 "DataMakerWasRegistered(AliMUONVTrackerDataMaker*)");
95 reg->Connect("DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)",
96 "AliMUONPainterDataSourceFrame",
98 "DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)");
100 fItems->SetOwner(kFALSE);
102 /// Recent source selection
104 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
106 Int_t nsources = env->Integer(fgkNumberOfDataSourcesKey);
108 for ( Int_t i = 0; i < nsources; ++i )
110 AddRecentSource(env->String(Form(fgkDataSourceURIKey,i)));
113 fRecentSources->Resize(100,20);
115 TGButton* createRecentButton = new TGTextButton(fRecentSourceSelector,"Create data source");
116 createRecentButton->Connect("Clicked()",
117 "AliMUONPainterDataSourceFrame",
119 "OpenRecentSource()");
121 fRecentSourceSelector->AddFrame(fRecentSources,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
122 fRecentSourceSelector->AddFrame(createRecentButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
124 /// Raw file selection
126 TGButton* openButton = new TGPictureButton(fRawSelector21,
127 gClient->GetPicture("fileopen.xpm"));
128 openButton->SetToolTipText("Click to open file dialog");
130 fRawSelector2->AddFrame(fRawSelector21, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
131 fRawSelector2->AddFrame(fRawSelector22, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
132 fRawSelector2->AddFrame(fRawSelector23, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
134 fRawSelector21->AddFrame(openButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
135 fRawSelector21->AddFrame(fFilePath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
137 fRawSelector22->AddFrame(fCalibrateNoGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
138 fRawSelector22->AddFrame(fCalibrateGainConstantCapa, new TGLayoutHints(kLHintsTop,5,5,5,5));
139 fRawSelector22->AddFrame(fCalibrateGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
140 fRawSelector22->AddFrame(fRawOCDBPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
141 fRawOCDBPath->SetEnabled(kFALSE);
143 fRawSelector23->AddFrame(fHistogramButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
145 fHistogramButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"HistogramButtonClicked()");
147 fHistoMin->SetState(kFALSE);
148 fHistoMax->SetState(kFALSE);
150 fRawSelector23->AddFrame(fHistoMin,new TGLayoutHints(kLHintsTop,5,5,5,5));
151 fRawSelector23->AddFrame(fHistoMax,new TGLayoutHints(kLHintsTop,5,5,5,5));
153 TGButton* createRawButton = new TGTextButton(fRawSelector,"Create data source");
155 fRawSelector->AddFrame(fRawSelector2, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
156 fRawSelector->AddFrame(createRawButton, new TGLayoutHints(kLHintsCenterY,5,5,5,5));
158 fCalibrateNoGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
159 fCalibrateGainConstantCapa->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
160 fCalibrateGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
162 openButton->Connect("Clicked()",
163 "AliMUONPainterDataSourceFrame",
167 createRawButton->Connect("Clicked()",
168 "AliMUONPainterDataSourceFrame",
170 "CreateRawDataSource()");
174 fOCDBTypes->AddEntry("Pedestals",0);
175 fOCDBTypes->AddEntry("Gains",1);
176 fOCDBTypes->AddEntry("Capacitances",2);
177 fOCDBTypes->AddEntry("HV",3);
178 fOCDBTypes->Select(0);
179 fOCDBTypes->Resize(100,20);
181 TGButton* createOCDBButton = new TGTextButton(fOCDBSelector,"Create data source");
182 createOCDBButton->Connect("Clicked()",
183 "AliMUONPainterDataSourceFrame",
185 "CreateOCDBDataSource()");
187 const char* ocdbToolTip = "Use URL style for either alien or local OCDB (foo://bar). For example :\n"
188 "alien://folder=/alice/data.../OCDB\n"
189 "or\nlocal:///home/user/aliroot (mind the 3 slashes there !)";
191 fRawOCDBPath->SetToolTipText(ocdbToolTip);
192 fOCDBPath->SetToolTipText(ocdbToolTip);
194 fOCDBSelector->AddFrame(fOCDBPath,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
195 fOCDBSelector->AddFrame(fRunSelector,new TGLayoutHints(kLHintsTop,5,5,5,5));
196 fOCDBSelector->AddFrame(fOCDBTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
197 fOCDBSelector->AddFrame(createOCDBButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
200 /// ASCII calibration file selection
202 TGButton* openButtonACF = new TGPictureButton(fACFSelector,
203 gClient->GetPicture("fileopen.xpm"));
204 openButtonACF->SetToolTipText("Click to open file dialog");
206 fACFTypes->AddEntry("Pedestals",0);
207 fACFTypes->AddEntry("Gains",1);
208 fACFTypes->AddEntry("Capacitances",2);
209 fACFTypes->Select(0);
210 fACFTypes->Resize(100,20);
212 fACFSelector->AddFrame(openButtonACF,new TGLayoutHints(kLHintsTop,5,5,5,5));
213 fACFSelector->AddFrame(fACFPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
214 fACFSelector->AddFrame(fACFTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
216 TGButton* createACFButton = new TGTextButton(fACFSelector,"Create data source");
217 createACFButton->Connect("Clicked()",
218 "AliMUONPainterDataSourceFrame",
220 "CreateACFDataSource()");
222 openButtonACF->Connect("Clicked()",
223 "AliMUONPainterDataSourceFrame",
225 "OpenFileDialogACF()");
227 fACFSelector->AddFrame(createACFButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
229 AddFrame(fRecentSourceSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
231 AddFrame(fRawSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
233 AddFrame(fOCDBSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
235 AddFrame(fACFSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
237 AddFrame(fDataReaders, new TGLayoutHints(kLHintsExpandX,10,10,10,10));
241 //_____________________________________________________________________________
242 AliMUONPainterDataSourceFrame::~AliMUONPainterDataSourceFrame()
249 //_____________________________________________________________________________
251 AliMUONPainterDataSourceFrame::AddRecentSource(const char* name)
253 /// Add a source to the list of recently used sources
255 TGListBox* lb = fRecentSources->GetListBox();
257 for ( Int_t i = 0; i < lb->GetNumberOfEntries(); ++i )
259 TGTextLBEntry* t = (TGTextLBEntry*)lb->GetEntry(i);
260 TString s(t->GetText()->GetString());
267 fRecentSources->AddEntry(name,lb->GetNumberOfEntries());
268 fRecentSources->MapSubwindows();
269 fRecentSources->Layout();
272 //_____________________________________________________________________________
274 AliMUONPainterDataSourceFrame::CalibrateButtonClicked()
276 /// Calibrate button was clicked.
278 if ( fCalibrateNoGain->IsOn() ||
279 fCalibrateGainConstantCapa->IsOn() ||
280 fCalibrateGain->IsOn() )
282 fRawOCDBPath->SetEnabled(kTRUE);
283 fRawOCDBPath->SetFocus();
287 fRawOCDBPath->SetEnabled(kFALSE);
291 //_____________________________________________________________________________
293 AliMUONPainterDataSourceFrame::HistogramButtonClicked()
295 /// Histogram button was clicked.
297 if ( fHistogramButton->IsOn() )
299 fHistoMin->SetState(kTRUE);
300 fHistoMax->SetState(kTRUE);
304 fHistoMin->SetState(kFALSE);
305 fHistoMax->SetState(kFALSE);
309 //_____________________________________________________________________________
311 AliMUONPainterDataSourceFrame::CreateACFDataSource()
313 /// Create an ACF data source (using information from the widgets)
315 TString acfPath = fACFPath->GetText();
316 TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fACFTypes->GetSelectedEntry());
317 TString type = t->GetText()->GetString();
319 CreateACFDataSource(acfPath,type);
321 fACFPath->SetText("");
325 //_____________________________________________________________________________
327 AliMUONPainterDataSourceFrame::CreateOCDBDataSource()
329 /// Create an OCDB data source (using information from the widgets)
331 TString cdbPath = fOCDBPath->GetText();
332 Int_t runNumber = fRunSelector->GetIntNumber();
333 TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fOCDBTypes->GetSelectedEntry());
334 TString type = t->GetText()->GetString();
336 CreateOCDBDataSource(cdbPath,runNumber,type);
338 fOCDBPath->SetText("");
339 fRunSelector->SetNumber(0);
342 //_____________________________________________________________________________
344 AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& uri)
346 /// Create an ACF data source, given it's URI
348 TObjArray* a = uri.Tokenize(";");
349 TString acfPath = static_cast<TObjString*>(a->At(1))->String();
350 TString type = static_cast<TObjString*>(a->At(2))->String();
352 CreateACFDataSource(acfPath,type);
358 //_____________________________________________________________________________
360 AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& uri)
362 /// Create an OCDB data source, given it's URI
364 TObjArray* a = uri.Tokenize(";");
365 TString cdbPath = static_cast<TObjString*>(a->At(1))->String();
366 TString srun = static_cast<TObjString*>(a->At(2))->String();
367 TString type = static_cast<TObjString*>(a->At(3))->String();
369 CreateOCDBDataSource(cdbPath,atoi(srun.Data()),type);
374 //_____________________________________________________________________________
376 AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& acfPath, const TString& type)
378 /// Create an ACF data source for a given (path,type)
380 AliMUONVTrackerDataMaker* reader = new AliMUONTrackerACFDataMaker(acfPath.Data(),
383 if ( reader->IsValid() )
385 AliMUONPainterDataRegistry::Instance()->Register(reader);
387 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
389 Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
391 env->Set(fgkNumberOfDataSourcesKey,n+1);
393 TString ds(Form("ACF;%s;%s",acfPath.Data(),type.Data()));
395 env->Set(Form(fgkDataSourceURIKey,n),ds.Data());
399 AddRecentSource(ds.Data());
404 //_____________________________________________________________________________
406 AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& cdbPath,
410 /// Create an OCDB data source for a given (path,runnumber,type) triplet
412 AliMUONVTrackerDataMaker* reader = new AliMUONTrackerOCDBDataMaker(cdbPath.Data(),
416 if ( reader->IsValid() )
418 AliMUONPainterDataRegistry::Instance()->Register(reader);
420 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
422 Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
424 env->Set(fgkNumberOfDataSourcesKey,n+1);
426 TString ds(Form("OCDB;%s;%d;%s",cdbPath.Data(),runNumber,type.Data()));
428 env->Set(Form(fgkDataSourceURIKey,n),ds.Data());
432 AddRecentSource(ds.Data());
436 //_____________________________________________________________________________
438 AliMUONPainterDataSourceFrame::CreateRawDataSource()
440 /// Create a new raw data source (using info from the widgets)
442 TString uri(gSystem->ExpandPathName(fFilePath->GetText()));
445 Bool_t fromMemory(kFALSE);
447 if ( uri.Contains(TRegexp("^mem")) )
453 if ( gSystem->AccessPathName(uri.Data()) )
455 AliError(Form("File %s does not exist",uri.Data()));
456 fFilePath->SetText("");
461 TString calibMode("");
463 if ( fCalibrateGain->IsOn() )
469 if ( fCalibrateGainConstantCapa->IsOn() )
471 calibMode = "GAINCONSTANTCAPA";
475 if ( fCalibrateNoGain->IsOn() )
477 calibMode = "NOGAIN";
481 uri = Form("%s%s%s;%s;%s;%s;%s;%s",
482 ( fHistogramButton->IsOn() ? "H":""),
483 ( fromMemory ? "M" : ""),
484 name.Data(),uri.Data(),
485 ( strlen(fRawOCDBPath->GetText()) > 0 ? fRawOCDBPath->GetText() : " "),
486 ( calibMode.Length() > 0 ? calibMode.Data() : " "),
487 Form("%e",fHistoMin->GetNumber()),
488 Form("%e",fHistoMax->GetNumber()));
490 if ( CreateRawDataSource(uri) )
492 fFilePath->SetText("");
493 fRawOCDBPath->SetText("");
497 //_____________________________________________________________________________
499 AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
501 /// Create a new raw data source, given its URI
506 TString sxmin("0.0");
507 TString sxmax("4096.0");
509 TObjArray* a = uri.Tokenize(";");
511 filename = static_cast<TObjString*>(a->At(1))->String();
513 if ( a->GetLast() > 1 )
515 ocdbPath = static_cast<TObjString*>(a->At(2))->String();
516 if ( ocdbPath == " " ) ocdbPath = "";
519 if ( a->GetLast() > 2 )
521 calibMode = static_cast<TObjString*>(a->At(3))->String();
522 if ( calibMode == " " ) calibMode = "";
525 if ( a->GetLast() > 3 )
527 sxmin = static_cast<TObjString*>(a->At(4))->String();
530 if ( a->GetLast() > 4 )
532 sxmax = static_cast<TObjString*>(a->At(5))->String();
535 AliRawReader* rawReader = 0x0;
537 if ( filename.Contains(TRegexp("^alien")) )
539 // insure we've initialized the grid...
542 TGrid::Connect("alien://");
546 rawReader = AliRawReader::Create(filename.Data());
550 AliError(Form("Could not open file %s",filename.Data()));
551 fFilePath->SetText("");
555 /// Basic test to see if the file is correct
556 Bool_t ok = rawReader->NextEvent();
559 AliError(Form("File %s does not seem to be a raw data file",filename.Data()));
560 fFilePath->SetText("");
564 rawReader->RewindEvents();
566 AliMUONVTrackerDataMaker* reader(0x0);
567 Bool_t histogram(kFALSE);
569 if ( uri.Contains(TRegexp("^H")) ) histogram = kTRUE;
571 if ( ocdbPath.Length() > 0 )
573 AliMUONRecoParam* recoParam = AliMUONRecoParam::GetCosmicParam();
575 // FIXME: where to get the reco params from in reality ?
577 reader = new AliMUONTrackerDataMaker(recoParam,
587 reader = new AliMUONTrackerDataMaker(rawReader,histogram);
590 reader->SetSource(filename.Data());
592 AliMUONPainterDataRegistry::Instance()->Register(reader);
594 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
596 Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
598 env->Set(fgkNumberOfDataSourcesKey,n+1);
600 env->Set(Form(fgkDataSourceURIKey,n),uri.Data());
602 AddRecentSource(uri.Data());
609 //_____________________________________________________________________________
611 AliMUONPainterDataSourceFrame::DataMakerWasRegistered(AliMUONVTrackerDataMaker* reader)
613 /// Update ourselves as a new data reader was created
615 AliMUONPainterDataSourceItem* item = new AliMUONPainterDataSourceItem(fDataReaders,100,20,reader);
617 item->Connect("StartRunning()",
618 "AliMUONPainterDataSourceFrame",
622 item->Connect("StopRunning()",
623 "AliMUONPainterDataSourceFrame",
627 fDataReaders->AddFrame(item);
631 fDataReaders->MapSubwindows();
632 fDataReaders->Resize();
635 //_____________________________________________________________________________
637 AliMUONPainterDataSourceFrame::DataMakerWasUnregistered(AliMUONVTrackerDataMaker* maker)
639 /// Update ourselves as a data reader was deleted
641 AliMUONPainterDataSourceItem* theItem(0x0);
644 AliMUONPainterDataSourceItem* item;
646 while ( ( item = static_cast<AliMUONPainterDataSourceItem*>(next()) ) && !theItem )
648 if ( item->DataMaker() == maker )
654 if (!theItem) return;
656 fDataReaders->RemoveFrame(theItem);
657 fItems->Remove(theItem);
658 theItem->DestroyWindow();
661 fDataReaders->MapSubwindows();
662 fDataReaders->Resize();
666 //_____________________________________________________________________________
668 AliMUONPainterDataSourceFrame::OpenFileDialog()
670 /// Open a file dialog to select a file to be read
674 const char* fileTypes[] = {
675 "ROOT files","*.root",
676 "DATE files","*.raw",
680 fileInfo.fFileTypes = fileTypes;
681 delete[] fileInfo.fIniDir;
683 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
685 fileInfo.fIniDir = StrDup(env->String("LastOpenDir","."));
687 new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
690 fFilePath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
692 env->Set("LastOpenDir",fileInfo.fIniDir);
697 //_____________________________________________________________________________
699 AliMUONPainterDataSourceFrame::OpenFileDialogACF()
701 /// Open a file dialog to select an ASCII calibration file to be read
705 const char* fileTypes[] = {
709 fileInfo.fFileTypes = fileTypes;
710 delete[] fileInfo.fIniDir;
712 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
714 fileInfo.fIniDir = StrDup(env->String("LastOpenDirACF","."));
716 new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
719 fACFPath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
721 env->Set("LastOpenDirACF",fileInfo.fIniDir);
726 //_____________________________________________________________________________
728 AliMUONPainterDataSourceFrame::OpenRecentSource()
730 /// Open one source from the recently used ones
732 TGTextLBEntry* t = (TGTextLBEntry*)fRecentSources->GetSelectedEntry();
734 TString uri(t->GetText()->GetString());
736 if ( uri.Contains(TRegexp("^RAW")) || uri.Contains(TRegexp("^HRAW")) ||
737 uri.Contains(TRegexp("^CAL")) || uri.Contains(TRegexp("^HCAL")) ||
738 uri.Contains(TRegexp("^MEM")) )
740 CreateRawDataSource(uri);
742 else if ( uri.Contains(TRegexp("^OCDB")) )
744 CreateOCDBDataSource(uri);
746 else if ( uri.Contains(TRegexp("^ACF")) )
748 CreateACFDataSource(uri);
751 fRecentSources->Select(-1);
754 //_____________________________________________________________________________
756 AliMUONPainterDataSourceFrame::StartRunning()
758 /// One data source starts running. Disable the Run button of the other ones
760 AliMUONPainterDataSourceItem* item = reinterpret_cast<AliMUONPainterDataSourceItem*> (gTQSender);
765 AliMUONPainterDataSourceItem* o;
766 while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )
775 //_____________________________________________________________________________
777 AliMUONPainterDataSourceFrame::StopRunning()
779 /// One data source stops running. Enable the Run button of all items
782 AliMUONPainterDataSourceItem* o;
783 while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )