]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPainterDataSourceFrame.cxx
Remove the dollar-id-dollar in the responsible name which interfere with CDB_MD metad...
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterDataSourceFrame.cxx
index 599646eba89f09ccf9318f11b24c6ca7a392fa0f..6a2c8b24abb9352247238818bba53ff17077c241 100644 (file)
@@ -19,6 +19,8 @@
 #include "AliMUONPainterDataSourceFrame.h"
 
 #include "AliLog.h"
+#include "AliCDBEntry.h"
+#include "AliCDBManager.h"
 #include "AliMUONChamberPainter.h"
 #include "AliMUONMchViewApplication.h"
 #include "AliMUONPainterDataRegistry.h"
@@ -68,6 +70,7 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p,
   fRawSelector2(new TGCompositeFrame(fRawSelector,w,h,kVerticalFrame)),
   fRawSelector21(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
   fRawSelector22(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
+  fRawSelector24(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)")),
@@ -76,12 +79,15 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p,
   fHistogramButton(new TGCheckButton(fRawSelector23,"Histogram")),
   fHistoMin(new TGNumberEntry(fRawSelector23,0)),
   fHistoMax(new TGNumberEntry(fRawSelector23,4096)),
-  fRawOCDBPath(new TGTextEntry(fRawSelector22,"")),
+  fEventRangeButton(new TGCheckButton(fRawSelector23,"Event range")),
+  fEventMin(new TGNumberEntry(fRawSelector23,-1,10)),
+  fEventMax(new TGNumberEntry(fRawSelector23,-1,10)),
+  fRawOCDBPath(new TGTextEntry(fRawSelector24,"alien://folder=/alice/data/2012/OCDB")),
   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)),
+  fOCDBPath(new TGTextEntry(fOCDBSelector,"alien://folder=/alice/data/2012/OCDB")),
+  fRunSelector(new TGNumberEntry(fOCDBSelector,0,10)),
   fOCDBTypes(new TGComboBox(fOCDBSelector)),
   fRecentSources(new TGComboBox(fRecentSourceSelector)),
   fItems(new TObjArray),
@@ -135,6 +141,7 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p,
                                         
     fRawSelector2->AddFrame(fRawSelector21, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
     fRawSelector2->AddFrame(fRawSelector22, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
+    fRawSelector2->AddFrame(fRawSelector24, new TGLayoutHints(kLHintsTop,5,5,5,5));
     fRawSelector2->AddFrame(fRawSelector23, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
 
     fRawSelector21->AddFrame(openButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
@@ -144,19 +151,29 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p,
     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));
+  
+    fRawSelector24->AddFrame(fRawOCDBPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
     fRawOCDBPath->SetEnabled(kFALSE);
     
-    fRawSelector23->AddFrame(fHistogramButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
-    
+    fRawSelector23->AddFrame(fHistogramButton,new TGLayoutHints(kLHintsTop,5,5,5,5));    
     fHistogramButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"HistogramButtonClicked()");
-    
     fHistoMin->SetState(kFALSE);
-    fHistoMax->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));
     
+
+  fRawSelector23->AddFrame(fEventRangeButton,new TGLayoutHints(kLHintsTop,5,5,5,5));    
+  fEventRangeButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"EventRangeButtonClicked()");
+  fEventMin->SetState(kFALSE);
+  fEventMax->SetState(kFALSE);      
+  
+  fEventMin->SetFormat(TGNumberFormat::kNESInteger);
+  fEventMax->SetFormat(TGNumberFormat::kNESInteger);
+
+  fRawSelector23->AddFrame(fEventMin,new TGLayoutHints(kLHintsTop,5,5,5,5));
+  fRawSelector23->AddFrame(fEventMax,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));
@@ -187,8 +204,9 @@ AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p,
   fOCDBTypes->AddEntry("StatusMap",5);
   fOCDBTypes->AddEntry("Status",6);
   fOCDBTypes->AddEntry("Capacitances",2);
+  fOCDBTypes->AddEntry("RejectList",8);
   fOCDBTypes->Select(0);
-  fOCDBTypes->Resize(100,20);
+  fOCDBTypes->Resize(80,20);
     
     TGButton* createOCDBButton = new TGTextButton(fOCDBSelector,"Create data source");
     createOCDBButton->Connect("Clicked()",
@@ -321,6 +339,26 @@ AliMUONPainterDataSourceFrame::HistogramButtonClicked()
   }
 }
 
+//_____________________________________________________________________________
+void
+AliMUONPainterDataSourceFrame::EventRangeButtonClicked()
+{
+  /// EventRange button was clicked.
+  
+  if ( fEventRangeButton->IsOn() )
+  {
+    fEventMin->SetState(kTRUE);
+    fEventMax->SetState(kTRUE);
+  }
+  else
+  {
+    fEventMin->SetIntNumber(-1);
+    fEventMax->SetIntNumber(-1);
+    fEventMin->SetState(kFALSE);
+    fEventMax->SetState(kFALSE);
+  }
+}
+
 //_____________________________________________________________________________
 void
 AliMUONPainterDataSourceFrame::CreateACFDataSource()
@@ -583,14 +621,16 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource()
     name = "CALZ";
   }
   
-  uri = Form("%s%s%s;%s;%s;%s;%s;%s",
+  uri = Form("%s%s%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()));
+             Form("%e",fHistoMax->GetNumber()),
+             Form("%d",(Int_t)(fEventMin->GetIntNumber())),
+             Form("%d",(Int_t)(fEventMax->GetIntNumber())));
   
   if ( CreateRawDataSource(uri) )
   {
@@ -610,6 +650,8 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
   TString calibMode;
   TString sxmin("0.0");
   TString sxmax("4096.0");
+  TString emin("-1");
+  TString emax("-1");
   
   TObjArray* a = uri.Tokenize(";");
   
@@ -637,6 +679,16 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
     sxmax = static_cast<TObjString*>(a->At(5))->String();
   }
   
+  if ( a->GetLast() > 5 )
+  {
+    emin = static_cast<TObjString*>(a->At(6))->String();
+  }
+
+  if ( a->GetLast() > 6 )
+  {
+    emax = static_cast<TObjString*>(a->At(7))->String();
+  }
+  
   AliRawReader* rawReader = 0x0;
 
   if ( filename.Contains(TRegexp("^alien")) )
@@ -658,14 +710,20 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
   }
   
   /// Basic test to see if the file is correct
+  /// and to get run numbre
+  Int_t runNumber(-1);
   Bool_t ok = rawReader->NextEvent();
   if (!ok)
   {
-    AliError(Form("File %s does not seem to be a raw data file",filename.Data()));
+    AliError(Form("File %s does not seem to be a raw data file",filename.Data()));    
     fFilePath->SetText("");
     return kFALSE;
   }
-  
+  else
+  {
+    runNumber = rawReader->GetRunNumber();    
+  }
+
   rawReader->RewindEvents();
   
   AliMUONVTrackerDataMaker* reader(0x0);
@@ -675,9 +733,27 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
 
   if ( ocdbPath.Length() > 0 ) 
   {
-    AliMUONRecoParam* recoParam = AliMUONRecoParam::GetCosmicParam();
+        
+    AliMUONRecoParam* recoParam(0x0);
     
-    // FIXME: where to get the reco params from in reality ?
+    AliCDBEntry* e = AliCDBManager::Instance()->Get("MUON/Calib/RecoParam",runNumber);
+    if (e)
+    {
+      TObject* o = e->GetObject();
+      if ( o->IsA() == TObjArray::Class() )
+      {
+        TIter next(static_cast<TObjArray*>(o));
+        AliMUONRecoParam* p;
+        while ( ( p = static_cast<AliMUONRecoParam*>(next()) ))
+        {
+          if ( p->IsDefault()) recoParam = p;
+        }
+      }
+      else
+      {
+        recoParam = static_cast<AliMUONRecoParam*>(o);
+      }
+    }
     
     reader = new AliMUONTrackerDataMaker(recoParam,
                                          rawReader,
@@ -692,9 +768,26 @@ AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
     reader = new AliMUONTrackerDataMaker(rawReader,histogram);
   }
 
+  reader->SetEventRange(emin.Atoi(),emax.Atoi());
+  
   reader->SetSource(filename.Data());
 
-  RegisterDataSource(reader,uri.Data());
+  TString dsName(uri);
+  
+  if ( emin.Atoi() <= emax.Atoi() )
+  {
+    // we have an event range
+    if ( emin.Atoi() == emax.Atoi())
+    {
+      dsName += Form("[%d]",emin.Atoi());
+    }
+    else
+    {
+      dsName += Form("[%d,%d]",emin.Atoi(),emax.Atoi());
+    }
+  }
+  
+  RegisterDataSource(reader,dsName.Data());
                        
   return kTRUE;
 }
@@ -727,7 +820,7 @@ AliMUONPainterDataSourceFrame::DataMakerWasRegistered(AliMUONVTrackerDataMaker*
 
 //_____________________________________________________________________________
 void 
-AliMUONPainterDataSourceFrame::DataMakerWasUnregistered(AliMUONVTrackerDataMaker* maker)
+AliMUONPainterDataSourceFrame::DataMakerWasUnregistered(const AliMUONVTrackerDataMaker* maker)
 {
   /// Update ourselves as a data reader was deleted