In trigger classes:
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Apr 2011 12:27:37 +0000 (12:27 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Apr 2011 12:27:37 +0000 (12:27 +0000)
- Provide an external access to the trigger chamber efficiency graphs and errors
- Minor fix to access the efficiency objects stored on grid
- Minor change in the display of the non-bending plane object
(Diego)

MUON/AliMUONTriggerChamberEfficiency.cxx
MUON/AliMUONTriggerChamberEfficiency.h
MUON/AliMUONTriggerDisplay.cxx
MUON/AliMUONTriggerEfficiencyCells.cxx

index 34f3cfd..cb12a04 100755 (executable)
@@ -139,6 +139,32 @@ Float_t AliMUONTriggerChamberEfficiency::GetCellEfficiency(Int_t detElemId, Int_
 
 
 //__________________________________________________________________________
+Float_t AliMUONTriggerChamberEfficiency::GetCellEfficiencyError(Int_t detElemId, Int_t localBoard, Int_t hType, Int_t errType) const
+{
+  /// Get the efficiencie errors of the 2 cathodes at a given local board
+  /// errype 0 -> low error
+  /// errype 1 -> high error
+  
+  Int_t chamber = FindChamberIndex(detElemId);
+  Int_t index = GetIndex(kHboardEff, hType, chamber);
+  TGraphAsymmErrors* effGraph = ((TGraphAsymmErrors*)fEfficiencyObjects->At(index));
+  
+  // Some graphs are not available in the old implementation
+  if ( ! effGraph ) return -1.;
+
+  Float_t err = -1.;
+  if ( errType == 0 ) { // low error
+    err = effGraph->GetErrorYlow(localBoard-1);
+  }
+  else if ( errType == 1 ) { // up error
+    err = effGraph->GetErrorYhigh(localBoard-1);
+  }
+  
+  return err;
+}
+
+
+//__________________________________________________________________________
 void 
 AliMUONTriggerChamberEfficiency::IsTriggered(Int_t detElemId, Int_t localBoard, Bool_t &trigBend, Bool_t &trigNonBend) const
 {
@@ -239,8 +265,6 @@ AliMUONTriggerChamberEfficiency::FillFromList(Bool_t useMeanValues)
 
        index = GetIndex(deTypeEff[ide], hType, ich);
        TGraphAsymmErrors* effGraph = GetEfficiencyGraph(histoNum,histoDen);
-       histoName.ReplaceAll("Count","Eff");
-       effGraph->SetName(histoName.Data());
        fEfficiencyObjects->AddAt(effGraph, index);
 
        TString debugString = Form("Adding object %s",effGraph->GetName());
@@ -262,8 +286,6 @@ AliMUONTriggerChamberEfficiency::FillFromList(Bool_t useMeanValues)
          }
          index = GetIndex(kHboardEff, hType, ich);
          effGraph = GetEfficiencyGraph(auxHistoNum,auxHistoDen);
-         histoName.ReplaceAll("Count","Eff");
-         effGraph->SetName(histoName.Data());
          fEfficiencyObjects->AddAt(effGraph, index);
          AliDebug(5,Form("Adding object %s (%s/%s) at index %i",effGraph->GetName(),histoNum->GetName(),histoDen->GetName(),index));
          delete auxHistoNum;
@@ -407,6 +429,19 @@ AliMUONTriggerChamberEfficiency::GetIndex(Int_t histoType, Int_t countType,
   //chamber;
 }
 
+
+//_____________________________________________________________________________
+TObject* AliMUONTriggerChamberEfficiency::GetEffObject(Int_t histoType, Int_t countType, 
+                                                                 Int_t chamber)
+{
+  //
+  /// Get efficiency object
+  //
+  Int_t index = GetIndex(histoType, countType, chamber);
+  return fEfficiencyObjects->At(index);
+}
+
+
 //_____________________________________________________________________________
 TGraphAsymmErrors* AliMUONTriggerChamberEfficiency::GetEfficiencyGraph(TH1* histoNum, TH1* histoDen)
 {
@@ -422,6 +457,10 @@ TGraphAsymmErrors* AliMUONTriggerChamberEfficiency::GetEfficiencyGraph(TH1* hist
 
   Int_t npoints = histoNum->GetNbinsX();
   TGraphAsymmErrors* effGraph = new TGraphAsymmErrors(npoints);
+  TString histoName = histoNum->GetName();
+  histoName.ReplaceAll("Count","Eff");
+  effGraph->SetName(histoName.Data());
+  effGraph->SetTitle(histoName.Data());
   Double_t oldX, oldY;
   for ( Int_t ibin=0; ibin<npoints; ibin++ ) {
     Int_t foundPoint = -1;
index e542ab4..6d896c6 100755 (executable)
@@ -32,6 +32,8 @@ public:
   virtual ~AliMUONTriggerChamberEfficiency();
 
   Float_t GetCellEfficiency(Int_t detElemId, Int_t localBoard, Int_t hType) const;
+  Float_t GetCellEfficiencyError(Int_t detElemId, Int_t localBoard, Int_t hType, Int_t errType) const;
+  TObject* GetEffObject(Int_t histoType, Int_t countType, Int_t chamber);
     
   void IsTriggered(Int_t detElemId, Int_t localBoard, Bool_t &trigBend, Bool_t &trigNonBend) const;
 
index 6e2b47e..19269b7 100644 (file)
@@ -310,6 +310,10 @@ Bool_t AliMUONTriggerDisplay::InitOrDisplayTriggerInfo(TObject* inputObject, TH2
        AliMpPad pad = seg[cath]->PadByLocation(iBoard,ibitxy+offset,kFALSE);
 
        if (!pad.IsValid()) continue;
+        
+  // For non-bending plane fill only the first board covered by the strip
+  // i.e. avoide filling many times the same information
+  if ( cath == 1 && pad.GetLocalBoardId(0) != iBoard ) continue;
 
        xWidth = pad.GetDimensionX();
        yWidth = pad.GetDimensionY();
index 3189558..29d2dce 100755 (executable)
@@ -161,7 +161,7 @@ AliMUONTriggerEfficiencyCells::ResetHistos(Bool_t deleteObjects)
 void AliMUONTriggerEfficiencyCells::ReadFile(const Char_t* filename, const Char_t* listname)
 {
 ///  Structure of file (.root) containing local board efficency
-    TFile *file = new TFile(filename, "read");
+    TFile *file = TFile::Open(filename);
     if(!file || !file->IsOpen()) {
       AliError(Form("Can't read file %s",filename));
       return;