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 "AliMUONPainterRegistry.h"
26 #include "AliMUONRecoParam.h"
27 #include "AliMUONTrackerACFDataMaker.h"
28 #include "AliMUONTrackerCalibratedDataMaker.h"
29 #include "AliMUONTrackerOCDBDataMaker.h"
30 #include "AliMUONTrackerRawDataMaker.h"
31 #include "AliRawReader.h"
33 #include <TGComboBox.h>
34 #include <TGFileDialog.h>
35 #include <TGNumberEntry.h>
36 #include <TGTextEntry.h>
38 #include <TObjArray.h>
39 #include <TObjString.h>
44 ///\class AliMUONPainterDataSourceFrame
46 /// A complete frame to select and display various data sources to
47 /// be displayed : either raw data or OCDB data.
48 /// Later on we might add digits and clusters for instance.
50 ///\author Laurent Aphecetche, Subatech
52 const char* AliMUONPainterDataSourceFrame::fgkNumberOfDataSourcesKey = "NumberOfDataSources";
53 const char* AliMUONPainterDataSourceFrame::fgkDataSourceURIKey = "DataSourceURI.%d";
56 ClassImp(AliMUONPainterDataSourceFrame)
59 //_____________________________________________________________________________
60 AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p, UInt_t w, UInt_t h)
61 : TGCompositeFrame(p,w,h,kVerticalFrame),
62 fRecentSourceSelector(new TGGroupFrame(this,"Recent sources",kHorizontalFrame)),
63 fRawSelector(new TGGroupFrame(this,"Raw file URI",kHorizontalFrame)),
64 fRawSelector2(new TGCompositeFrame(fRawSelector,w,h,kVerticalFrame)),
65 fRawSelector21(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
66 fRawSelector22(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
67 fRawSelector23(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
68 fCalibrateNoGain(new TGCheckButton(fRawSelector22,"Ped subraction")),
69 fCalibrateGainConstantCapa(new TGCheckButton(fRawSelector22,"Ped subraction + gain (capa cste)")),
70 fCalibrateGain(new TGCheckButton(fRawSelector22,"Full calib (Ped subraction + gain with capa)")),
71 fHistogramButton(new TGCheckButton(fRawSelector23,"Histogram")),
72 fHistoMin(new TGNumberEntry(fRawSelector23,0)),
73 fHistoMax(new TGNumberEntry(fRawSelector23,4096)),
74 fRawOCDBPath(new TGTextEntry(fRawSelector22,"")),
75 fOCDBSelector(new TGGroupFrame(this,"OCDB Path",kHorizontalFrame)),
76 fDataReaders(new TGGroupFrame(this,"Data sources")),
77 fFilePath(new TGTextEntry(fRawSelector21,"")),
78 fOCDBPath(new TGTextEntry(fOCDBSelector,"")),
79 fRunSelector(new TGNumberEntry(fOCDBSelector,0)),
80 fOCDBTypes(new TGComboBox(fOCDBSelector)),
81 fRecentSources(new TGComboBox(fRecentSourceSelector)),
82 fItems(new TObjArray),
83 fACFSelector(new TGGroupFrame(this,"ASCII Calib File",kHorizontalFrame)),
84 fACFPath(new TGTextEntry(fACFSelector,"")),
85 fACFTypes(new TGComboBox(fACFSelector))
89 AliMUONPainterRegistry* reg = AliMUONPainterRegistry::Instance();
91 reg->Connect("DataMakerWasRegistered(AliMUONVTrackerDataMaker*)",
92 "AliMUONPainterDataSourceFrame",
94 "DataMakerWasRegistered(AliMUONVTrackerDataMaker*)");
96 reg->Connect("DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)",
97 "AliMUONPainterDataSourceFrame",
99 "DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)");
101 fItems->SetOwner(kFALSE);
103 /// Recent source selection
105 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
107 Int_t nsources = env->Integer(fgkNumberOfDataSourcesKey);
109 for ( Int_t i = 0; i < nsources; ++i )
111 AddRecentSource(env->String(Form(fgkDataSourceURIKey,i)));
114 fRecentSources->Resize(100,20);
116 TGButton* createRecentButton = new TGTextButton(fRecentSourceSelector,"Create data source");
117 createRecentButton->Connect("Clicked()",
118 "AliMUONPainterDataSourceFrame",
120 "OpenRecentSource()");
122 fRecentSourceSelector->AddFrame(fRecentSources,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
123 fRecentSourceSelector->AddFrame(createRecentButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
125 /// Raw file selection
127 TGButton* openButton = new TGPictureButton(fRawSelector21,
128 gClient->GetPicture("fileopen.xpm"));
129 openButton->SetToolTipText("Click to open file dialog");
131 fRawSelector2->AddFrame(fRawSelector21, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
132 fRawSelector2->AddFrame(fRawSelector22, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
133 fRawSelector2->AddFrame(fRawSelector23, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
135 fRawSelector21->AddFrame(openButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
136 fRawSelector21->AddFrame(fFilePath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
138 fRawSelector22->AddFrame(fCalibrateNoGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
139 fRawSelector22->AddFrame(fCalibrateGainConstantCapa, new TGLayoutHints(kLHintsTop,5,5,5,5));
140 fRawSelector22->AddFrame(fCalibrateGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
141 fRawSelector22->AddFrame(fRawOCDBPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
142 fRawOCDBPath->SetEnabled(kFALSE);
144 fRawSelector23->AddFrame(fHistogramButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
146 fHistogramButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"HistogramButtonClicked()");
148 fHistoMin->SetState(kFALSE);
149 fHistoMax->SetState(kFALSE);
151 fRawSelector23->AddFrame(fHistoMin,new TGLayoutHints(kLHintsTop,5,5,5,5));
152 fRawSelector23->AddFrame(fHistoMax,new TGLayoutHints(kLHintsTop,5,5,5,5));
154 TGButton* createRawButton = new TGTextButton(fRawSelector,"Create data source");
156 fRawSelector->AddFrame(fRawSelector2, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
157 fRawSelector->AddFrame(createRawButton, new TGLayoutHints(kLHintsCenterY,5,5,5,5));
159 fCalibrateNoGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
160 fCalibrateGainConstantCapa->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
161 fCalibrateGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
163 openButton->Connect("Clicked()",
164 "AliMUONPainterDataSourceFrame",
168 createRawButton->Connect("Clicked()",
169 "AliMUONPainterDataSourceFrame",
171 "CreateRawDataSource()");
175 fOCDBTypes->AddEntry("Pedestals",0);
176 fOCDBTypes->AddEntry("Gains",1);
177 fOCDBTypes->AddEntry("Capacitances",2);
178 fOCDBTypes->AddEntry("HV",3);
179 fOCDBTypes->Select(0);
180 fOCDBTypes->Resize(100,20);
182 TGButton* createOCDBButton = new TGTextButton(fOCDBSelector,"Create data source");
183 createOCDBButton->Connect("Clicked()",
184 "AliMUONPainterDataSourceFrame",
186 "CreateOCDBDataSource()");
188 const char* ocdbToolTip = "Use URL style for either alien or local OCDB (foo://bar). For example :\n"
189 "alien://folder=/alice/data.../OCDB\n"
190 "or\nlocal:///home/user/aliroot (mind the 3 slashes there !)";
192 fRawOCDBPath->SetToolTipText(ocdbToolTip);
193 fOCDBPath->SetToolTipText(ocdbToolTip);
195 fOCDBSelector->AddFrame(fOCDBPath,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
196 fOCDBSelector->AddFrame(fRunSelector,new TGLayoutHints(kLHintsTop,5,5,5,5));
197 fOCDBSelector->AddFrame(fOCDBTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
198 fOCDBSelector->AddFrame(createOCDBButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
201 /// ASCII calibration file selection
203 TGButton* openButtonACF = new TGPictureButton(fACFSelector,
204 gClient->GetPicture("fileopen.xpm"));
205 openButtonACF->SetToolTipText("Click to open file dialog");
207 fACFTypes->AddEntry("Pedestals",0);
208 fACFTypes->AddEntry("Gains",1);
209 fACFTypes->AddEntry("Capacitances",2);
210 fACFTypes->Select(0);
211 fACFTypes->Resize(100,20);
213 fACFSelector->AddFrame(openButtonACF,new TGLayoutHints(kLHintsTop,5,5,5,5));
214 fACFSelector->AddFrame(fACFPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
215 fACFSelector->AddFrame(fACFTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
217 TGButton* createACFButton = new TGTextButton(fACFSelector,"Create data source");
218 createACFButton->Connect("Clicked()",
219 "AliMUONPainterDataSourceFrame",
221 "CreateACFDataSource()");
223 openButtonACF->Connect("Clicked()",
224 "AliMUONPainterDataSourceFrame",
226 "OpenFileDialogACF()");
228 fACFSelector->AddFrame(createACFButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
230 AddFrame(fRecentSourceSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
232 AddFrame(fRawSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
234 AddFrame(fOCDBSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
236 AddFrame(fACFSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
238 AddFrame(fDataReaders, new TGLayoutHints(kLHintsExpandX,10,10,10,10));
242 //_____________________________________________________________________________
243 AliMUONPainterDataSourceFrame::~AliMUONPainterDataSourceFrame()
250 //_____________________________________________________________________________
252 AliMUONPainterDataSourceFrame::AddRecentSource(const char* name)
254 /// Add a source to the list of recently used sources
256 TGListBox* lb = fRecentSources->GetListBox();
258 for ( Int_t i = 0; i < lb->GetNumberOfEntries(); ++i )
260 TGTextLBEntry* t = (TGTextLBEntry*)lb->GetEntry(i);
261 TString s(t->GetText()->GetString());
268 fRecentSources->AddEntry(name,lb->GetNumberOfEntries());
269 fRecentSources->MapSubwindows();
270 fRecentSources->Layout();
273 //_____________________________________________________________________________
275 AliMUONPainterDataSourceFrame::CalibrateButtonClicked()
277 /// Calibrate button was clicked.
279 if ( fCalibrateNoGain->IsOn() ||
280 fCalibrateGainConstantCapa->IsOn() ||
281 fCalibrateGain->IsOn() )
283 fRawOCDBPath->SetEnabled(kTRUE);
284 fRawOCDBPath->SetFocus();
288 fRawOCDBPath->SetEnabled(kFALSE);
292 //_____________________________________________________________________________
294 AliMUONPainterDataSourceFrame::HistogramButtonClicked()
296 /// Histogram button was clicked.
298 if ( fHistogramButton->IsOn() )
300 fHistoMin->SetState(kTRUE);
301 fHistoMax->SetState(kTRUE);
305 fHistoMin->SetState(kFALSE);
306 fHistoMax->SetState(kFALSE);
310 //_____________________________________________________________________________
312 AliMUONPainterDataSourceFrame::CreateACFDataSource()
314 /// Create an ACF data source (using information from the widgets)
316 TString acfPath = fACFPath->GetText();
317 TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fACFTypes->GetSelectedEntry());
318 TString type = t->GetText()->GetString();
320 CreateACFDataSource(acfPath,type);
322 fACFPath->SetText("");
326 //_____________________________________________________________________________
328 AliMUONPainterDataSourceFrame::CreateOCDBDataSource()
330 /// Create an OCDB data source (using information from the widgets)
332 TString cdbPath = fOCDBPath->GetText();
333 Int_t runNumber = fRunSelector->GetIntNumber();
334 TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fOCDBTypes->GetSelectedEntry());
335 TString type = t->GetText()->GetString();
337 CreateOCDBDataSource(cdbPath,runNumber,type);
339 fOCDBPath->SetText("");
340 fRunSelector->SetNumber(0);
343 //_____________________________________________________________________________
345 AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& uri)
347 /// Create an ACF data source, given it's URI
349 TObjArray* a = uri.Tokenize(";");
350 TString acfPath = static_cast<TObjString*>(a->At(1))->String();
351 TString type = static_cast<TObjString*>(a->At(2))->String();
353 CreateACFDataSource(acfPath,type);
359 //_____________________________________________________________________________
361 AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& uri)
363 /// Create an OCDB data source, given it's URI
365 TObjArray* a = uri.Tokenize(";");
366 TString cdbPath = static_cast<TObjString*>(a->At(1))->String();
367 TString srun = static_cast<TObjString*>(a->At(2))->String();
368 TString type = static_cast<TObjString*>(a->At(3))->String();
370 CreateOCDBDataSource(cdbPath,atoi(srun.Data()),type);
375 //_____________________________________________________________________________
377 AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& acfPath, const TString& type)
379 /// Create an ACF data source for a given (path,type)
381 AliMUONVTrackerDataMaker* reader = new AliMUONTrackerACFDataMaker(acfPath.Data(),
384 if ( reader->IsValid() )
386 AliMUONPainterRegistry::Instance()->Register(reader);
388 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
390 Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
392 env->Set(fgkNumberOfDataSourcesKey,n+1);
394 TString ds(Form("ACF;%s;%s",acfPath.Data(),type.Data()));
396 env->Set(Form(fgkDataSourceURIKey,n),ds.Data());
400 AddRecentSource(ds.Data());
405 //_____________________________________________________________________________
407 AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& cdbPath,
411 /// Create an OCDB data source for a given (path,runnumber,type) triplet
413 AliMUONVTrackerDataMaker* reader = new AliMUONTrackerOCDBDataMaker(cdbPath.Data(),
417 if ( reader->IsValid() )
419 AliMUONPainterRegistry::Instance()->Register(reader);
421 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
423 Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
425 env->Set(fgkNumberOfDataSourcesKey,n+1);
427 TString ds(Form("OCDB;%s;%d;%s",cdbPath.Data(),runNumber,type.Data()));
429 env->Set(Form(fgkDataSourceURIKey,n),ds.Data());
433 AddRecentSource(ds.Data());
437 //_____________________________________________________________________________
439 AliMUONPainterDataSourceFrame::CreateRawDataSource()
441 /// Create a new raw data source (using info from the widgets)
443 TString uri(gSystem->ExpandPathName(fFilePath->GetText()));
445 if ( gSystem->AccessPathName(uri.Data()) )
447 AliError(Form("File %s does not exist",uri.Data()));
448 fFilePath->SetText("");
452 TString calibMode("");
455 if ( fCalibrateGain->IsOn() )
461 if ( fCalibrateGainConstantCapa->IsOn() )
463 calibMode = "GAINCONSTANTCAPA";
467 if ( fCalibrateNoGain->IsOn() )
469 calibMode = "NOGAIN";
473 uri = Form("%s%s;%s;%s;%s;%s;%s",
474 ( fHistogramButton->IsOn() ? "H":""),
475 name.Data(),uri.Data(),
476 ( strlen(fRawOCDBPath->GetText()) > 0 ? fRawOCDBPath->GetText() : " "),
477 ( calibMode.Length() > 0 ? calibMode.Data() : " "),
478 Form("%e",fHistoMin->GetNumber()),
479 Form("%e",fHistoMax->GetNumber()));
481 if ( CreateRawDataSource(uri) )
483 fFilePath->SetText("");
484 fRawOCDBPath->SetText("");
488 //_____________________________________________________________________________
490 AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
492 /// Create a new raw data source, given its URI
497 TString sxmin("0.0");
498 TString sxmax("4096.0");
500 TObjArray* a = uri.Tokenize(";");
502 filename = static_cast<TObjString*>(a->At(1))->String();
504 if ( a->GetLast() > 1 )
506 ocdbPath = static_cast<TObjString*>(a->At(2))->String();
507 if ( ocdbPath == " " ) ocdbPath = "";
510 if ( a->GetLast() > 2 )
512 calibMode = static_cast<TObjString*>(a->At(3))->String();
513 if ( calibMode == " " ) calibMode = "";
516 if ( a->GetLast() > 3 )
518 sxmin = static_cast<TObjString*>(a->At(4))->String();
521 if ( a->GetLast() > 4 )
523 sxmax = static_cast<TObjString*>(a->At(5))->String();
526 AliRawReader* rawReader = 0x0;
528 if ( filename.Contains(TRegexp("^alien")) )
530 // insure we've initialized the grid...
533 TGrid::Connect("alien://");
537 rawReader = AliRawReader::Create(filename.Data());
541 AliError(Form("Could not open file %s",filename.Data()));
542 fFilePath->SetText("");
546 /// Basic test to see if the file is correct
547 Bool_t ok = rawReader->NextEvent();
550 AliError(Form("File %s does not seem to be a raw data file",filename.Data()));
551 fFilePath->SetText("");
555 rawReader->RewindEvents();
557 AliMUONVTrackerDataMaker* reader(0x0);
558 Bool_t histogram(kFALSE);
560 if ( uri.Contains(TRegexp("^H")) ) histogram = kTRUE;
562 if ( ocdbPath.Length() > 0 )
564 AliMUONRecoParam* recoParam = AliMUONRecoParam::GetCosmicParam();
566 // FIXME: where to get the reco params from in reality ?
568 reader = new AliMUONTrackerCalibratedDataMaker(recoParam,
578 reader = new AliMUONTrackerRawDataMaker(rawReader,histogram);
581 reader->SetSource(filename.Data());
583 AliMUONPainterRegistry::Instance()->Register(reader);
585 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
587 Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
589 env->Set(fgkNumberOfDataSourcesKey,n+1);
591 env->Set(Form(fgkDataSourceURIKey,n),uri.Data());
593 AddRecentSource(uri.Data());
600 //_____________________________________________________________________________
602 AliMUONPainterDataSourceFrame::DataMakerWasRegistered(AliMUONVTrackerDataMaker* reader)
604 /// Update ourselves as a new data reader was created
606 AliMUONPainterDataSourceItem* item = new AliMUONPainterDataSourceItem(fDataReaders,100,20,reader);
608 item->Connect("StartRunning()",
609 "AliMUONPainterDataSourceFrame",
613 item->Connect("StopRunning()",
614 "AliMUONPainterDataSourceFrame",
618 fDataReaders->AddFrame(item);
622 fDataReaders->MapSubwindows();
623 fDataReaders->Resize();
626 //_____________________________________________________________________________
628 AliMUONPainterDataSourceFrame::DataMakerWasUnregistered(AliMUONVTrackerDataMaker* maker)
630 /// Update ourselves as a data reader was deleted
632 AliMUONPainterDataSourceItem* theItem(0x0);
635 AliMUONPainterDataSourceItem* item;
637 while ( ( item = static_cast<AliMUONPainterDataSourceItem*>(next()) ) && !theItem )
639 if ( item->DataMaker() == maker )
645 if (!theItem) return;
647 fDataReaders->RemoveFrame(theItem);
648 fItems->Remove(theItem);
649 theItem->DestroyWindow();
652 fDataReaders->MapSubwindows();
653 fDataReaders->Resize();
657 //_____________________________________________________________________________
659 AliMUONPainterDataSourceFrame::OpenFileDialog()
661 /// Open a file dialog to select a file to be read
665 const char* fileTypes[] = {
666 "ROOT files","*.root",
667 "DATE files","*.raw",
671 fileInfo.fFileTypes = fileTypes;
672 delete[] fileInfo.fIniDir;
674 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
676 fileInfo.fIniDir = StrDup(env->String("LastOpenDir","."));
678 new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
681 fFilePath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
683 env->Set("LastOpenDir",fileInfo.fIniDir);
688 //_____________________________________________________________________________
690 AliMUONPainterDataSourceFrame::OpenFileDialogACF()
692 /// Open a file dialog to select an ASCII calibration file to be read
696 const char* fileTypes[] = {
700 fileInfo.fFileTypes = fileTypes;
701 delete[] fileInfo.fIniDir;
703 AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
705 fileInfo.fIniDir = StrDup(env->String("LastOpenDirACF","."));
707 new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
710 fACFPath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
712 env->Set("LastOpenDirACF",fileInfo.fIniDir);
717 //_____________________________________________________________________________
719 AliMUONPainterDataSourceFrame::OpenRecentSource()
721 /// Open one source from the recently used ones
723 TGTextLBEntry* t = (TGTextLBEntry*)fRecentSources->GetSelectedEntry();
725 TString uri(t->GetText()->GetString());
727 if ( uri.Contains(TRegexp("^RAW")) || uri.Contains(TRegexp("^HRAW")) ||
728 uri.Contains(TRegexp("^CAL")) || uri.Contains(TRegexp("^HCAL")) )
730 CreateRawDataSource(uri);
732 else if ( uri.Contains(TRegexp("^OCDB")) )
734 CreateOCDBDataSource(uri);
736 else if ( uri.Contains(TRegexp("^ACF")) )
738 CreateACFDataSource(uri);
741 fRecentSources->Select(-1);
744 //_____________________________________________________________________________
746 AliMUONPainterDataSourceFrame::StartRunning()
748 /// One data source starts running. Disable the Run button of the other ones
750 AliMUONPainterDataSourceItem* item = reinterpret_cast<AliMUONPainterDataSourceItem*> (gTQSender);
755 AliMUONPainterDataSourceItem* o;
756 while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )
765 //_____________________________________________________________________________
767 AliMUONPainterDataSourceFrame::StopRunning()
769 /// One data source stops running. Enable the Run button of all items
772 AliMUONPainterDataSourceItem* o;
773 while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )