]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTriggerCrateStore.cxx
DQM configure file
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerCrateStore.cxx
index 2a2f715f466a1094e065f6b781363bb75f6e0ecd..28ec0bc0049edc78bcc96cff37505e2ae340fa5d 100644 (file)
@@ -16,7 +16,7 @@
 // $Id$
 
 #include "AliMUONTriggerCrateStore.h"
-
+#include "AliMpExMapIterator.h"
 #include "AliMUONTriggerCrate.h"
 #include "AliMUONLocalTriggerBoard.h"
 #include "AliMUONRegionalTriggerBoard.h"
@@ -36,6 +36,7 @@
 #include <TSystem.h>
 #include <Riostream.h>
 
+#include <cstdio>
 
 //-----------------------------------------------------------------------------
 /// \class AliMUONTriggerCrateStore
@@ -54,11 +55,7 @@ ClassImp(AliMUONTriggerCrateStore)
 AliMUONTriggerCrateStore::AliMUONTriggerCrateStore()
 : TObject(),
 fCrates(0x0),
-fLocalBoards(0x0),
-fCrateIterator(0x0),
-fLBIterator(0x0),
-fCurrentCrate(0x0),
-fCurrentLocalBoard(-1)
+fLocalBoards(0x0)
 {
 /// Default constructor
 }
@@ -67,8 +64,6 @@ fCurrentLocalBoard(-1)
 AliMUONTriggerCrateStore::~AliMUONTriggerCrateStore()
 {
 /// Destructor
-  delete fCrateIterator;
-  delete fLBIterator;
   delete fCrates;
   delete fLocalBoards;
 }
@@ -111,6 +106,24 @@ AliMUONTriggerCrateStore::LocalBoard(Int_t boardNumber) const
   return static_cast<AliMUONLocalTriggerBoard*>(fLocalBoards->GetValue(boardNumber));
 }
 
+//_____________________________________________________________________________
+TIterator*
+AliMUONTriggerCrateStore::CreateCrateIterator() const
+{
+  /// Create iterator over crates
+
+  return fCrates ? fCrates->CreateIterator() : 0x0;
+}
+
+//_____________________________________________________________________________
+TIterator*
+AliMUONTriggerCrateStore::CreateLocalBoardIterator() const
+{
+  /// Create iterator over local boards
+
+  return fLocalBoards ? fLocalBoards->CreateIterator() : 0x0;
+}
+
 //_____________________________________________________________________________
 AliMUONTriggerCrate* 
 AliMUONTriggerCrateStore::Crate(const char *name) const
@@ -147,7 +160,7 @@ TString AliMUONTriggerCrateStore::GetCrateName(Int_t ddl, Int_t reg) const
   switch(reg) {
       case 0:
       case 1:
-       sprintf(name,"%d", reg+1);
+       snprintf(name,10,"%d", reg+1);
        break;
       case 2:
        strcpy(name, "2-3");
@@ -157,112 +170,18 @@ TString AliMUONTriggerCrateStore::GetCrateName(Int_t ddl, Int_t reg) const
       case 5:
       case 6:
       case 7:
-       sprintf(name,"%d", reg);
+       snprintf(name,10,"%d", reg);
        break;
   }
 
   // crate Right for first DDL
   if (ddl == 0)
-    strcat(name, "R");
+    strncat(name, "R", 1);
   else 
-    strcat(name, "L"); 
+    strncat(name, "L", 1); 
 
   return TString(name);
 }
-//_____________________________________________________________________________
-void
-AliMUONTriggerCrateStore::FirstCrate()
-{
-  /// initialize iteration
-  if ( !fCrates )
-  {
-    AliError("Object not properly initialized");
-    return;
-  }
-  if (!fCrateIterator)
-  {
-    fCrateIterator = new TExMapIter(fCrates->GetIterator());
-  }
-  fCrateIterator->Reset();
-}
-
-//_____________________________________________________________________________
-void
-AliMUONTriggerCrateStore::FirstLocalBoard()
-{
-  /// Initialize iterator on local boards.
-  /// Please note that we're not using directly the FirstCrate() and
-  /// NextCrate() methods here to avoid mix and match between crate iterator
-  /// and local board iterator
-  fCurrentCrate = 0x0;
-  fCurrentLocalBoard = 0;
-
-  if ( !fLBIterator ) 
-  {
-    fLBIterator = new TExMapIter(fCrates->GetIterator());
-  }
-  fLBIterator->Reset();
-  Long_t key, value;
-  Bool_t ok = fLBIterator->Next(key,value);
-  if ( ok )
-  {
-    fCurrentCrate = reinterpret_cast<AliMUONTriggerCrate*>(value);
-    fCurrentLocalBoard = 1;
-  }
-}
-
-//_____________________________________________________________________________
-AliMUONTriggerCrate*
-AliMUONTriggerCrateStore::NextCrate()
-{
-  /// Return the next crate in iteration, or 0 if iteration is ended.
-  if (!fCrateIterator) return 0x0;
-  
-  Long_t key, value;
-  Bool_t ok = fCrateIterator->Next(key,value);
-  if (ok)
-  {
-    return reinterpret_cast<AliMUONTriggerCrate*>(value);
-  }
-  else
-  {
-    return 0x0;
-  }
-}
-
-//_____________________________________________________________________________
-AliMUONLocalTriggerBoard*
-AliMUONTriggerCrateStore::NextLocalBoard()
-{  
-  /// Return the next local board in iteration, or 0 if iteration is ended.
-  if ( !fLBIterator ) return 0x0;
-
-  if ( fCurrentLocalBoard >= fCurrentCrate->Boards()->GetLast() +1)
-//  if ( fCurrentLocalBoard >= fCurrentCrate->Boards()->GetLast() )
-  {
-    // try to go to next crate, if some are left
-    Long_t key, value;
-    Bool_t ok = fLBIterator->Next(key,value);
-    if ( ok )
-    {
-      fCurrentCrate = reinterpret_cast<AliMUONTriggerCrate*>(value);
-      fCurrentLocalBoard = 1;
-    }
-    else
-    {
-      fCurrentLocalBoard = 0;
-      return 0x0;
-    }
-  }
-
-  AliMUONLocalTriggerBoard* lb = static_cast<AliMUONLocalTriggerBoard*>
-    (fCurrentCrate->Boards()->At(fCurrentLocalBoard));
-  
-  ++fCurrentLocalBoard;
-  
-  return lb;
-}
-
 //_____________________________________________________________________________
 Int_t
 AliMUONTriggerCrateStore::NumberOfCrates() const
@@ -286,9 +205,9 @@ void
 AliMUONTriggerCrateStore::ReadFromFile(AliMUONCalibrationData* calibData) 
 {
   /// create crate and local board objects from mapping & calib (Ch.F)
-    fCrates = new AliMpExMap(kTRUE);
+    fCrates = new AliMpExMap;
     fCrates->SetOwner(kTRUE);
-    fLocalBoards = new AliMpExMap(kTRUE);
+    fLocalBoards = new AliMpExMap;
     fLocalBoards->SetOwner(kFALSE);
   
   
@@ -298,16 +217,16 @@ AliMUONTriggerCrateStore::ReadFromFile(AliMUONCalibrationData* calibData)
    AliWarning("No valid trigger LUT in CDB");
   
   AliMUONRegionalTriggerConfig* regionalConfig = calibData->RegionalTriggerConfig();
-  if (!regionalConfig)
-     AliWarning("No valid regional trigger configuration in CDB");
-  
-    TExMapIter itr = AliMpDDLStore::Instance()->GetTriggerCrateItr();
+  if (!regionalConfig) {
+     AliError("No valid regional trigger configuration in CDB");
+     return;
+  }   
   
-    Long_t key, value;
+  TIter next(AliMpDDLStore::Instance()->GetRegionalTrigger()->CreateCrateIterator());
+  AliMpTriggerCrate* crateMapping;
   
-    while(itr.Next(key, value))
+  while ( ( crateMapping = static_cast<AliMpTriggerCrate*>(next()) ) )
     {
-      AliMpTriggerCrate* crateMapping =  reinterpret_cast<AliMpTriggerCrate*>(value);
     
       TString crateName = crateMapping->GetName();
       AliMUONTriggerCrate *crate = Crate(crateName.Data());