X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONPainterDataSourceFrame.cxx;h=599646eba89f09ccf9318f11b24c6ca7a392fa0f;hb=d7f41d16b19bdfaf7b69832df771e8567d87c89e;hp=d48913bf33941835affcdecbff944ccde2632626;hpb=6c870207b483004f4a40c082ad1fb2b5e48a2307;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONPainterDataSourceFrame.cxx b/MUON/AliMUONPainterDataSourceFrame.cxx index d48913bf339..599646eba89 100644 --- a/MUON/AliMUONPainterDataSourceFrame.cxx +++ b/MUON/AliMUONPainterDataSourceFrame.cxx @@ -19,15 +19,19 @@ #include "AliMUONPainterDataSourceFrame.h" #include "AliLog.h" +#include "AliMUONChamberPainter.h" +#include "AliMUONMchViewApplication.h" +#include "AliMUONPainterDataRegistry.h" #include "AliMUONPainterDataSourceItem.h" #include "AliMUONPainterEnv.h" #include "AliMUONPainterHelper.h" -#include "AliMUONPainterDataRegistry.h" +#include "AliMUONPainterMatrix.h" +#include "AliMUONPainterRegistry.h" #include "AliMUONRecoParam.h" -#include "AliMUONTrackerACFDataMaker.h" +#include "AliMUONTrackerConditionDataMaker.h" #include "AliMUONTrackerDataMaker.h" -#include "AliMUONTrackerOCDBDataMaker.h" #include "AliRawReader.h" +#include #include #include #include @@ -36,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -174,14 +179,14 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p, /// OCDB selection + fOCDBTypes->AddEntry("Config",7); + fOCDBTypes->AddEntry("Occupancy",4); + fOCDBTypes->AddEntry("HV",3); fOCDBTypes->AddEntry("Pedestals",0); fOCDBTypes->AddEntry("Gains",1); - fOCDBTypes->AddEntry("Capacitances",2); - fOCDBTypes->AddEntry("HV",3); - fOCDBTypes->AddEntry("Occupancy",4); fOCDBTypes->AddEntry("StatusMap",5); fOCDBTypes->AddEntry("Status",6); - fOCDBTypes->AddEntry("Config",7); + fOCDBTypes->AddEntry("Capacitances",2); fOCDBTypes->Select(0); fOCDBTypes->Resize(100,20); @@ -209,14 +214,14 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p, TGButton* openButtonACF = new TGPictureButton(fACFSelector, gClient->GetPicture("fileopen.xpm")); openButtonACF->SetToolTipText("Click to open file dialog"); - - fACFTypes->AddEntry("Pedestals",0); - fACFTypes->AddEntry("Gains",1); - fACFTypes->AddEntry("Capacitances",2); - fACFTypes->AddEntry("HV",3); + + fACFTypes->AddEntry("Config",7); fACFTypes->AddEntry("Occupancy",4); - fACFTypes->Select(0); - fACFTypes->Resize(100,20); + 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)); @@ -380,15 +385,19 @@ AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& uri) //_____________________________________________________________________________ void -AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& acfPath, const TString& type) +AliMUONPainterDataSourceFrame::RegisterDataSource(AliMUONVTrackerDataMaker* reader, + const char* dsName) { - /// Create an ACF data source for a given (path,type) - - AliMUONVTrackerDataMaker* reader = new AliMUONTrackerACFDataMaker(acfPath.Data(), - type.Data()); - - if ( reader->IsValid() ) + /// Register a new data source + + if ( reader && reader->IsValid() ) { + AliMUONMchViewApplication* app = dynamic_cast(gApplication); + if (!app) + { + AliError("Could not cast application to the expected type ! CHECK THAT !"); + } + AliMUONPainterDataRegistry::Instance()->Register(reader); AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env(); @@ -397,47 +406,130 @@ AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& acfPath, const env->Set(fgkNumberOfDataSourcesKey,n+1); - TString ds(Form("ACF;%s;%s",acfPath.Data(),type.Data())); - - env->Set(Form(fgkDataSourceURIKey,n),ds.Data()); + env->Set(Form(fgkDataSourceURIKey,n),dsName); env->Save(); - AddRecentSource(ds.Data()); - } - + AddRecentSource(dsName); + + if ( app ) + { + + TString name(dsName); + name.ToUpper(); + + if ( name.Contains("PED") ) + { + CreatePedestalCanvases(reader->Data()); + } + } + } } //_____________________________________________________________________________ void -AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& cdbPath, - Int_t runNumber, - const TString& type) +AliMUONPainterDataSourceFrame::CreatePedestalCanvases(AliMUONVTrackerData* data, + Double_t pedMin, Double_t pedMax, + Double_t sigmaMin, Double_t sigmaMax) { - /// Create an OCDB data source for a given (path,runnumber,type) triplet + /// Create 4 canvases with the pedestals contained in data + /// to show mean and sigma, for bending and non bending, with given limits + + TList matrices; + + AliMUONAttPainter att[2]; + + att[0].SetViewPoint(kTRUE,kFALSE); + att[0].SetCathode(kFALSE,kFALSE); + att[0].SetPlane(kTRUE,kFALSE); - AliMUONVTrackerDataMaker* reader = new AliMUONTrackerOCDBDataMaker(cdbPath.Data(), - runNumber, - type.Data()); + att[1].SetViewPoint(kTRUE,kFALSE); + att[1].SetCathode(kFALSE,kFALSE); + att[1].SetPlane(kFALSE,kTRUE); - if ( reader->IsValid() ) + for ( Int_t iatt = 0; iatt < 2; ++iatt ) { - AliMUONPainterDataRegistry::Instance()->Register(reader); - - AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env(); - - Int_t n = env->Integer(fgkNumberOfDataSourcesKey); - - env->Set(fgkNumberOfDataSourcesKey,n+1); + matrices.Add(CreateFullTracker(data,0,pedMin,pedMax,att[iatt])); + matrices.Add(CreateFullTracker(data,1,sigmaMin,sigmaMax,att[iatt])); + } + + TIter next(&matrices); + AliMUONPainterMatrix* matrix; + + Int_t w = TMath::Nint(gClient->GetDisplayWidth()*0.9); + Int_t h = TMath::Nint(gClient->GetDisplayHeight()*0.9); + + Int_t x[] = { 0, 0, 20 + w/2, 20 + w/2 }; + Int_t y[] = { 0, h/2+30, 0, h/2+30 }; + + Int_t i(0); + + while ( ( matrix = static_cast(next())) ) + { + TCanvas* c = matrix->CreateCanvas(x[i],y[i],w/2,h/2); + c->Draw(); + c->SaveAs(Form("%s.png",c->GetName())); + ++i; + } +} + +//_____________________________________________________________________________ +AliMUONPainterMatrix* +AliMUONPainterDataSourceFrame::CreateFullTracker(AliMUONVTrackerData* data, + Int_t dim, + Double_t xmin, Double_t xmax, + const AliMUONAttPainter& att) +{ + /// Generate, draw and register a matrix of 10 painters to show all the tracker + /// chambers - TString ds(Form("OCDB;%s;%d;%s",cdbPath.Data(),runNumber,type.Data())); + AliMUONPainterMatrix* matrix = new AliMUONPainterMatrix("Tracker",5,2); + + for ( Int_t ichamber = 0; ichamber < 10; ++ichamber ) + { + AliMUONVPainter* painter = new AliMUONChamberPainter(att,ichamber); - env->Set(Form(fgkDataSourceURIKey,n),ds.Data()); + painter->SetResponder("BUSPATCH"); - env->Save(); + painter->SetOutlined("*",kFALSE); - AddRecentSource(ds.Data()); + matrix->Adopt(painter); } + + matrix->SetData("MANU",data,dim); + matrix->SetDataRange(xmin,xmax); + + AliMUONPainterRegistry::Instance()->Register(matrix); + + return matrix; +} + + +//_____________________________________________________________________________ +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()); + + RegisterDataSource(reader,Form("ACF;%s;%s",acfPath.Data(),type.Data())); +} + +//_____________________________________________________________________________ +void +AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& cdbPath, + Int_t runNumber, + const TString& type) +{ + /// Create an OCDB data source for a given (path,runnumber,type) triplet + + AliMUONVTrackerDataMaker* reader = new AliMUONTrackerConditionDataMaker(runNumber, + cdbPath.Data(), + type.Data()); + + RegisterDataSource(reader,Form("OCDB;%s;%d;%s",cdbPath.Data(),runNumber,type.Data())); } //_____________________________________________________________________________ @@ -599,23 +691,11 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri) { reader = new AliMUONTrackerDataMaker(rawReader,histogram); } - + reader->SetSource(filename.Data()); - - AliMUONPainterDataRegistry::Instance()->Register(reader); - - AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env(); - - Int_t n = env->Integer(fgkNumberOfDataSourcesKey); - - env->Set(fgkNumberOfDataSourcesKey,n+1); - - env->Set(Form(fgkDataSourceURIKey,n),uri.Data()); - - AddRecentSource(uri.Data()); - - env->Save(); + RegisterDataSource(reader,uri.Data()); + return kTRUE; }