// $Id$
+#include <cstdlib>
#include "AliMUONPainterDataSourceFrame.h"
+#include "AliLog.h"
#include "AliMUONPainterDataSourceItem.h"
#include "AliMUONPainterEnv.h"
#include "AliMUONPainterHelper.h"
-#include "AliMUONPainterRegistry.h"
-#include "AliMUONTrackerOCDBDataMaker.h"
-#include "AliMUONTrackerRawDataMaker.h"
-#include "AliMUONVTrackerDataMaker.h"
-#include "AliLog.h"
-#include "AliRawReaderDate.h"
-#include "AliRawReaderRoot.h"
+#include "AliMUONPainterDataRegistry.h"
+#include "AliMUONRecoParam.h"
+#include "AliMUONTrackerConditionDataMaker.h"
+#include "AliMUONTrackerDataMaker.h"
+#include "AliRawReader.h"
#include <TGButton.h>
#include <TGComboBox.h>
#include <TGFileDialog.h>
//_____________________________________________________________________________
AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p, UInt_t w, UInt_t h)
: TGCompositeFrame(p,w,h,kVerticalFrame),
- fRecentSourceSelector(new TGGroupFrame(p,"Recent sources",kHorizontalFrame)),
- fRawSelector(new TGGroupFrame(p,"Raw file URI",kHorizontalFrame)),
- fOCDBSelector(new TGGroupFrame(p,"OCDB Path",kHorizontalFrame)),
- fDataReaders(new TGGroupFrame(p,"Data sources")),
- fFilePath(new TGTextEntry(fRawSelector,"")),
- fRawOCDBPath(new TGTextEntry(fRawSelector,"")),
- fOCDBPath(new TGTextEntry(fOCDBSelector,"")),
+ fRecentSourceSelector(new TGGroupFrame(this,"Recent sources",kHorizontalFrame)),
+ fRawSelector(new TGGroupFrame(this,"Raw file URI",kHorizontalFrame)),
+ fRawSelector2(new TGCompositeFrame(fRawSelector,w,h,kVerticalFrame)),
+ fRawSelector21(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
+ fRawSelector22(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
+ fRawSelector23(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
+ fCalibrateNoGain(new TGCheckButton(fRawSelector22,"Ped sub")),
+ fCalibrateGainConstantCapa(new TGCheckButton(fRawSelector22,"Ped sub+gain (capa cste)")),
+ fCalibrateGain(new TGCheckButton(fRawSelector22,"Full calib (Ped sub+gain w/ capa)")),
+ fCalibrateEmelecGain(new TGCheckButton(fRawSelector22,"Full calib (Ped sub+inj gain w/ capa)")),
+ fHistogramButton(new TGCheckButton(fRawSelector23,"Histogram")),
+ fHistoMin(new TGNumberEntry(fRawSelector23,0)),
+ fHistoMax(new TGNumberEntry(fRawSelector23,4096)),
+ fRawOCDBPath(new TGTextEntry(fRawSelector22,"")),
+ fOCDBSelector(new TGGroupFrame(this,"OCDB Path",kHorizontalFrame)),
+ fDataReaders(new TGGroupFrame(this,"Data sources")),
+ fFilePath(new TGTextEntry(fRawSelector21,"")),
+ fOCDBPath(new TGTextEntry(fOCDBSelector,"alien://folder=/alice/data/2009/OCDB")),
fRunSelector(new TGNumberEntry(fOCDBSelector,0)),
fOCDBTypes(new TGComboBox(fOCDBSelector)),
fRecentSources(new TGComboBox(fRecentSourceSelector)),
- fItems(new TObjArray)
+ fItems(new TObjArray),
+ fACFSelector(new TGGroupFrame(this,"ASCII Calib File",kHorizontalFrame)),
+ fACFPath(new TGTextEntry(fACFSelector,"")),
+ fACFTypes(new TGComboBox(fACFSelector))
{
/// Ctor
- AliMUONPainterRegistry* reg = AliMUONPainterRegistry::Instance();
+ AliMUONPainterDataRegistry* reg = AliMUONPainterDataRegistry::Instance();
- reg->Connect("DataReaderWasRegistered(AliMUONVTrackerDataMaker*)",
+ reg->Connect("DataMakerWasRegistered(AliMUONVTrackerDataMaker*)",
"AliMUONPainterDataSourceFrame",
this,
- "DataReaderWasRegistered(AliMUONVTrackerDataMaker*)");
+ "DataMakerWasRegistered(AliMUONVTrackerDataMaker*)");
- reg->Connect("DataReaderWasUnregistered(AliMUONVTrackerDataMaker*)",
+ reg->Connect("DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)",
"AliMUONPainterDataSourceFrame",
this,
- "DataReaderWasUnregistered(AliMUONVTrackerDataMaker*)");
+ "DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)");
fItems->SetOwner(kFALSE);
fRecentSourceSelector->AddFrame(fRecentSources,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
fRecentSourceSelector->AddFrame(createRecentButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
-
+
/// Raw file selection
- TGButton* openButton = new TGPictureButton(fRawSelector,
+ TGButton* openButton = new TGPictureButton(fRawSelector21,
gClient->GetPicture("fileopen.xpm"));
openButton->SetToolTipText("Click to open file dialog");
- TGButton* createRawButton = new TGTextButton(fRawSelector,"Create data source");
+ fRawSelector2->AddFrame(fRawSelector21, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
+ fRawSelector2->AddFrame(fRawSelector22, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
+ fRawSelector2->AddFrame(fRawSelector23, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
+
+ fRawSelector21->AddFrame(openButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fRawSelector21->AddFrame(fFilePath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
+
+ fRawSelector22->AddFrame(fCalibrateNoGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fRawSelector22->AddFrame(fCalibrateGainConstantCapa, new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fRawSelector22->AddFrame(fCalibrateGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fRawSelector22->AddFrame(fCalibrateEmelecGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fRawSelector22->AddFrame(fRawOCDBPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
+ fRawOCDBPath->SetEnabled(kFALSE);
+
+ fRawSelector23->AddFrame(fHistogramButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
+
+ fHistogramButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"HistogramButtonClicked()");
- fRawSelector->AddFrame(fFilePath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
- fRawSelector->AddFrame(fRawOCDBPath, new TGLayoutHints(kLHintsTop,5,5,5,5));
- fRawSelector->AddFrame(openButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
- fRawSelector->AddFrame(createRawButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fHistoMin->SetState(kFALSE);
+ fHistoMax->SetState(kFALSE);
+ fRawSelector23->AddFrame(fHistoMin,new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fRawSelector23->AddFrame(fHistoMax,new TGLayoutHints(kLHintsTop,5,5,5,5));
+
+ TGButton* createRawButton = new TGTextButton(fRawSelector,"Create data source");
+
+ fRawSelector->AddFrame(fRawSelector2, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
+ fRawSelector->AddFrame(createRawButton, new TGLayoutHints(kLHintsCenterY,5,5,5,5));
+
+ fCalibrateNoGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
+ fCalibrateGainConstantCapa->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
+ fCalibrateGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
+ fCalibrateEmelecGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
+
openButton->Connect("Clicked()",
"AliMUONPainterDataSourceFrame",
this,
/// OCDB selection
- fOCDBTypes->AddEntry("Pedestals",0);
- fOCDBTypes->AddEntry("Gains",1);
- fOCDBTypes->AddEntry("Capacitances",2);
- fOCDBTypes->Select(0);
- fOCDBTypes->Resize(100,20);
+ fOCDBTypes->AddEntry("Config",7);
+ fOCDBTypes->AddEntry("Occupancy",4);
+ fOCDBTypes->AddEntry("HV",3);
+ fOCDBTypes->AddEntry("Pedestals",0);
+ fOCDBTypes->AddEntry("Gains",1);
+ fOCDBTypes->AddEntry("StatusMap",5);
+ fOCDBTypes->AddEntry("Status",6);
+ fOCDBTypes->AddEntry("Capacitances",2);
+ fOCDBTypes->Select(0);
+ fOCDBTypes->Resize(100,20);
TGButton* createOCDBButton = new TGTextButton(fOCDBSelector,"Create data source");
createOCDBButton->Connect("Clicked()",
"AliMUONPainterDataSourceFrame",
this,
"CreateOCDBDataSource()");
-
-
+
+ const char* ocdbToolTip = "Use URL style for either alien or local OCDB (foo://bar). For example :\n"
+ "alien://folder=/alice/data.../OCDB\n"
+ "or\nlocal:///home/user/aliroot (mind the 3 slashes there !)";
+
+ fRawOCDBPath->SetToolTipText(ocdbToolTip);
+ fOCDBPath->SetToolTipText(ocdbToolTip);
+
fOCDBSelector->AddFrame(fOCDBPath,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
fOCDBSelector->AddFrame(fRunSelector,new TGLayoutHints(kLHintsTop,5,5,5,5));
fOCDBSelector->AddFrame(fOCDBTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
fOCDBSelector->AddFrame(createOCDBButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
+
+
+ /// ASCII calibration file selection
+
+ TGButton* openButtonACF = new TGPictureButton(fACFSelector,
+ gClient->GetPicture("fileopen.xpm"));
+ openButtonACF->SetToolTipText("Click to open file dialog");
+
+ fACFTypes->AddEntry("Config",7);
+ fACFTypes->AddEntry("Occupancy",4);
+ fACFTypes->AddEntry("Pedestals",0);
+ fACFTypes->AddEntry("Gains",1);
+ fACFTypes->AddEntry("Capacitances",2);
+ fACFTypes->Select(0);
+ fACFTypes->Resize(100,20);
+
+ fACFSelector->AddFrame(openButtonACF,new TGLayoutHints(kLHintsTop,5,5,5,5));
+ fACFSelector->AddFrame(fACFPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
+ fACFSelector->AddFrame(fACFTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
+
+ TGButton* createACFButton = new TGTextButton(fACFSelector,"Create data source");
+ createACFButton->Connect("Clicked()",
+ "AliMUONPainterDataSourceFrame",
+ this,
+ "CreateACFDataSource()");
+
+ openButtonACF->Connect("Clicked()",
+ "AliMUONPainterDataSourceFrame",
+ this,
+ "OpenFileDialogACF()");
+
+ fACFSelector->AddFrame(createACFButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
AddFrame(fRecentSourceSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
AddFrame(fOCDBSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
+ AddFrame(fACFSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
+
AddFrame(fDataReaders, new TGLayoutHints(kLHintsExpandX,10,10,10,10));
}
fRecentSources->Layout();
}
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::CalibrateButtonClicked()
+{
+ /// Calibrate button was clicked.
+
+ if ( fCalibrateNoGain->IsOn() ||
+ fCalibrateGainConstantCapa->IsOn() ||
+ fCalibrateGain->IsOn() ||
+ fCalibrateEmelecGain->IsOn() )
+ {
+ fRawOCDBPath->SetEnabled(kTRUE);
+ fRawOCDBPath->SetFocus();
+ }
+ else
+ {
+ fRawOCDBPath->SetEnabled(kFALSE);
+ }
+}
+
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::HistogramButtonClicked()
+{
+ /// Histogram button was clicked.
+
+ if ( fHistogramButton->IsOn() )
+ {
+ fHistoMin->SetState(kTRUE);
+ fHistoMax->SetState(kTRUE);
+ }
+ else
+ {
+ fHistoMin->SetState(kFALSE);
+ fHistoMax->SetState(kFALSE);
+ }
+}
+
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::CreateACFDataSource()
+{
+ /// Create an ACF data source (using information from the widgets)
+
+ TString acfPath = fACFPath->GetText();
+ TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fACFTypes->GetSelectedEntry());
+ TString type = t->GetText()->GetString();
+
+ CreateACFDataSource(acfPath,type);
+
+ fACFPath->SetText("");
+}
+
+
//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateOCDBDataSource()
TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fOCDBTypes->GetSelectedEntry());
TString type = t->GetText()->GetString();
- CreateOCDBDataSource(cdbPath,runNumber,type);
+ CreateOCDBDataSource(cdbPath,runNumber,type);
+}
+
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& uri)
+{
+ /// Create an ACF data source, given it's URI
- fOCDBPath->SetText("");
- fRunSelector->SetNumber(0);
+ TObjArray* a = uri.Tokenize(";");
+ TString acfPath = static_cast<TObjString*>(a->At(1))->String();
+ TString type = static_cast<TObjString*>(a->At(2))->String();
+
+ CreateACFDataSource(acfPath,type);
+
+ delete a;
}
+
//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& uri)
delete a;
}
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& acfPath, const TString& type)
+{
+ /// Create an ACF data source for a given (path,type)
+
+ AliMUONVTrackerDataMaker* reader = new AliMUONTrackerConditionDataMaker(acfPath.Data(),
+ type.Data());
+
+ if ( reader->IsValid() )
+ {
+ AliMUONPainterDataRegistry::Instance()->Register(reader);
+
+ AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
+
+ Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
+
+ env->Set(fgkNumberOfDataSourcesKey,n+1);
+
+ TString ds(Form("ACF;%s;%s",acfPath.Data(),type.Data()));
+
+ env->Set(Form(fgkDataSourceURIKey,n),ds.Data());
+
+ env->Save();
+
+ AddRecentSource(ds.Data());
+ }
+
+}
+
//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& cdbPath,
{
/// Create an OCDB data source for a given (path,runnumber,type) triplet
- AliMUONVTrackerDataMaker* reader = new AliMUONTrackerOCDBDataMaker(cdbPath.Data(),
- runNumber,
- type.Data());
+ AliMUONVTrackerDataMaker* reader = new AliMUONTrackerConditionDataMaker(runNumber,
+ cdbPath.Data(),
+ type.Data());
if ( reader->IsValid() )
{
- AliMUONPainterRegistry::Instance()->Register(reader);
+ AliMUONPainterDataRegistry::Instance()->Register(reader);
AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
/// Create a new raw data source (using info from the widgets)
TString uri(gSystem->ExpandPathName(fFilePath->GetText()));
+
+ TString name("RAW");
+ Bool_t fromMemory(kFALSE);
- if ( gSystem->AccessPathName(uri.Data()) )
+ if ( uri.Contains(TRegexp("^mem")) )
{
- AliError(Form("File %s does not exist",uri.Data()));
- fFilePath->SetText("");
- return;
+ fromMemory = kTRUE;
+ }
+ else
+ {
+ if ( gSystem->AccessPathName(uri.Data()) )
+ {
+ AliError(Form("File %s does not exist",uri.Data()));
+ fFilePath->SetText("");
+ return;
+ }
+ }
+
+ TString calibMode("");
+
+ if ( fCalibrateGain->IsOn() )
+ {
+ calibMode = "GAIN";
+ name = "CALC";
+ }
+
+ if ( fCalibrateGainConstantCapa->IsOn() )
+ {
+ calibMode = "GAINCONSTANTCAPA";
+ name = "CALG";
}
- uri = Form("RAW;%s;%s",uri.Data(),fRawOCDBPath->GetText());
+ if ( fCalibrateEmelecGain->IsOn() )
+ {
+ calibMode = "INJECTIONGAIN";
+ name = "CALE";
+ }
+
+ if ( fCalibrateNoGain->IsOn() )
+ {
+ calibMode = "NOGAIN";
+ name = "CALZ";
+ }
+
+ uri = Form("%s%s%s;%s;%s;%s;%s;%s",
+ ( fHistogramButton->IsOn() ? "H":""),
+ ( fromMemory ? "M" : ""),
+ name.Data(),uri.Data(),
+ ( strlen(fRawOCDBPath->GetText()) > 0 ? fRawOCDBPath->GetText() : " "),
+ ( calibMode.Length() > 0 ? calibMode.Data() : " "),
+ Form("%e",fHistoMin->GetNumber()),
+ Form("%e",fHistoMax->GetNumber()));
if ( CreateRawDataSource(uri) )
{
TString filename;
TString ocdbPath;
+ TString calibMode;
+ TString sxmin("0.0");
+ TString sxmax("4096.0");
TObjArray* a = uri.Tokenize(";");
if ( a->GetLast() > 1 )
{
ocdbPath = static_cast<TObjString*>(a->At(2))->String();
+ if ( ocdbPath == " " ) ocdbPath = "";
+ }
+
+ if ( a->GetLast() > 2 )
+ {
+ calibMode = static_cast<TObjString*>(a->At(3))->String();
+ if ( calibMode == " " ) calibMode = "";
+ }
+
+ if ( a->GetLast() > 3 )
+ {
+ sxmin = static_cast<TObjString*>(a->At(4))->String();
+ }
+
+ if ( a->GetLast() > 4 )
+ {
+ sxmax = static_cast<TObjString*>(a->At(5))->String();
}
AliRawReader* rawReader = 0x0;
- if ( filename.Contains(TRegexp(".root$")) )
+ if ( filename.Contains(TRegexp("^alien")) )
{
- AliDebug(1,"Using RawReaderRoot");
- if ( filename.Contains(TRegexp("^alien")) )
+ // insure we've initialized the grid...
+ if (!gGrid)
{
- // insure we've initialized the grid...
- if (!gGrid)
- {
- TGrid::Connect("alien://");
- }
+ TGrid::Connect("alien://");
}
-
- rawReader = new AliRawReaderRoot(filename.Data());
}
- else if ( uri.Contains(TRegexp(".raw$")) )
+
+ rawReader = AliRawReader::Create(filename.Data());
+
+ if (!rawReader)
{
- AliDebug(1,"Using RawReaderDate");
- rawReader = new AliRawReaderDate(filename.Data());
+ AliError(Form("Could not open file %s",filename.Data()));
+ fFilePath->SetText("");
+ return kFALSE;
}
- else
+
+ /// Basic test to see if the file is correct
+ Bool_t ok = rawReader->NextEvent();
+ if (!ok)
{
- AliError(Form("Don't know how to open that file : %s\nURI=%s",filename.Data(),uri.Data()));
+ AliError(Form("File %s does not seem to be a raw data file",filename.Data()));
+ fFilePath->SetText("");
return kFALSE;
}
- AliMUONTrackerRawDataMaker* reader = new AliMUONTrackerRawDataMaker(rawReader,ocdbPath.Data());
+ rawReader->RewindEvents();
+
+ AliMUONVTrackerDataMaker* reader(0x0);
+ Bool_t histogram(kFALSE);
+
+ if ( uri.Contains(TRegexp("^H")) ) histogram = kTRUE;
+
+ if ( ocdbPath.Length() > 0 )
+ {
+ AliMUONRecoParam* recoParam = AliMUONRecoParam::GetCosmicParam();
+
+ // FIXME: where to get the reco params from in reality ?
+
+ reader = new AliMUONTrackerDataMaker(recoParam,
+ rawReader,
+ ocdbPath.Data(),
+ calibMode.Data(),
+ histogram,
+ sxmin.Atof(),
+ sxmax.Atof());
+ }
+ else
+ {
+ reader = new AliMUONTrackerDataMaker(rawReader,histogram);
+ }
reader->SetSource(filename.Data());
- AliMUONPainterRegistry::Instance()->Register(reader);
+ AliMUONPainterDataRegistry::Instance()->Register(reader);
AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
env->Set(fgkNumberOfDataSourcesKey,n+1);
- TString ds(Form("RAW;%s;%s",filename.Data(),ocdbPath.Data()));
+ env->Set(Form(fgkDataSourceURIKey,n),uri.Data());
- env->Set(Form(fgkDataSourceURIKey,n),ds.Data());
-
- AddRecentSource(ds.Data());
+ AddRecentSource(uri.Data());
env->Save();
//_____________________________________________________________________________
void
-AliMUONPainterDataSourceFrame::DataReaderWasRegistered(AliMUONVTrackerDataMaker* reader)
+AliMUONPainterDataSourceFrame::DataMakerWasRegistered(AliMUONVTrackerDataMaker* reader)
{
/// Update ourselves as a new data reader was created
- AliInfo(Form("%s",reader->GetName()));
-
AliMUONPainterDataSourceItem* item = new AliMUONPainterDataSourceItem(fDataReaders,100,20,reader);
+ item->Connect("StartRunning()",
+ "AliMUONPainterDataSourceFrame",
+ this,
+ "StartRunning()");
+
+ item->Connect("StopRunning()",
+ "AliMUONPainterDataSourceFrame",
+ this,
+ "StopRunning()");
+
fDataReaders->AddFrame(item);
fItems->Add(item);
//_____________________________________________________________________________
void
-AliMUONPainterDataSourceFrame::DataReaderWasUnregistered(AliMUONVTrackerDataMaker* reader)
+AliMUONPainterDataSourceFrame::DataMakerWasUnregistered(AliMUONVTrackerDataMaker* maker)
{
- /// Update ourselves as a new data reader was deleted
+ /// Update ourselves as a data reader was deleted
+
+ AliMUONPainterDataSourceItem* theItem(0x0);
+
+ TIter next(fItems);
+ AliMUONPainterDataSourceItem* item;
+
+ while ( ( item = static_cast<AliMUONPainterDataSourceItem*>(next()) ) && !theItem )
+ {
+ if ( item->DataMaker() == maker )
+ {
+ theItem = item;
+ }
+ }
+
+ if (!theItem) return;
- AliInfo(Form("%s",reader->GetName()));
-
+ fDataReaders->RemoveFrame(theItem);
+ fItems->Remove(theItem);
+ theItem->DestroyWindow();
+ delete theItem;
+
+ fDataReaders->MapSubwindows();
+ fDataReaders->Resize();
+
}
//_____________________________________________________________________________
TGFileInfo fileInfo;
+ const char* fileTypes[] = {
+ "ROOT files","*.root",
+ "DATE files","*.raw",
+ "All files","*",
+ 0,0 };
+
+ fileInfo.fFileTypes = fileTypes;
+ delete[] fileInfo.fIniDir;
+
+ AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
+
+ fileInfo.fIniDir = StrDup(env->String("LastOpenDir","."));
+
new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
kFDOpen,&fileInfo);
-
fFilePath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
+
+ env->Set("LastOpenDir",fileInfo.fIniDir);
+ env->Save();
+}
+
+
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::OpenFileDialogACF()
+{
+ /// Open a file dialog to select an ASCII calibration file to be read
+
+ TGFileInfo fileInfo;
+
+ const char* fileTypes[] = {
+ "All files","*",
+ 0,0 };
+
+ fileInfo.fFileTypes = fileTypes;
+ delete[] fileInfo.fIniDir;
+
+ AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
+
+ fileInfo.fIniDir = StrDup(env->String("LastOpenDirACF","."));
+
+ new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
+ kFDOpen,&fileInfo);
+
+ fACFPath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
+
+ env->Set("LastOpenDirACF",fileInfo.fIniDir);
+ env->Save();
}
TString uri(t->GetText()->GetString());
- if ( uri.Contains(TRegexp("^RAW")) )
+ if ( uri.Contains(TRegexp("^RAW")) || uri.Contains(TRegexp("^HRAW")) ||
+ uri.Contains(TRegexp("^CAL")) || uri.Contains(TRegexp("^HCAL")) ||
+ uri.Contains(TRegexp("^MEM")) )
{
CreateRawDataSource(uri);
}
{
CreateOCDBDataSource(uri);
}
+ else if ( uri.Contains(TRegexp("^ACF")) )
+ {
+ CreateACFDataSource(uri);
+ }
fRecentSources->Select(-1);
}
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::StartRunning()
+{
+ /// One data source starts running. Disable the Run button of the other ones
+
+ AliMUONPainterDataSourceItem* item = reinterpret_cast<AliMUONPainterDataSourceItem*> (gTQSender);
+
+ AliInfo("");
+
+ TIter next(fItems);
+ AliMUONPainterDataSourceItem* o;
+ while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )
+ {
+ if ( o != item )
+ {
+ o->DisableRun();
+ }
+ }
+}
+
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::StopRunning()
+{
+ /// One data source stops running. Enable the Run button of all items
+
+ TIter next(fItems);
+ AliMUONPainterDataSourceItem* o;
+ while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )
+ {
+ o->EnableRun();
+ }
+}
+