]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPedestalSubprocessor.cxx
Revised version of Theta() function
[u/mrichter/AliRoot.git] / MUON / AliMUONPedestalSubprocessor.cxx
index 43135bcc5b2c5c376245835b79a768ac5ecab08e..30a925106179cac359f7906d66fcb624007b519c 100644 (file)
 
 // $Id$
 
-#include <sstream>
-
-#include <Riostream.h>
-#include <TList.h>
-#include <TObjString.h>
-#include <TSystem.h>
+#include "AliMUONPedestalSubprocessor.h"
 
 #include "AliCDBMetaData.h"
 #include "AliLog.h"
 #include "AliMUON2DMap.h"
-#include "AliMUONCalibParam2F.h"
-#include "AliMUONConstants.h"
-#include "AliMUONObjectPair.h"
-#include "AliMUONPedestalSubprocessor.h"
+#include "AliMUON2DStoreValidator.h"
+#include "AliMUONCalibParamNF.h"
 #include "AliMUONPreprocessor.h"
-#include "AliMUONVDataIterator.h"
+#include "AliMpConstants.h"
 #include "AliMpDDLStore.h"
+#include "TObjString.h"
+#include <Riostream.h>
+#include <TList.h>
+#include <TObjString.h>
+#include <TSystem.h>
+#include <sstream>
 
-///
+//-----------------------------------------------------------------------------
 /// \class AliMUONPedestalSubprocessor
 ///
 /// Implementation of AliMUONVSubprocessor class to deal with MUON TRK pedestals.
@@ -44,7 +43,7 @@
 ///---------------------------------------------------------------------------\n
 ///
 /// \author L. Aphecetche
-///
+//-----------------------------------------------------------------------------
 
 /// \cond CLASSIMP
 ClassImp(AliMUONPedestalSubprocessor)
@@ -57,13 +56,13 @@ AliMUONPedestalSubprocessor::AliMUONPedestalSubprocessor(AliMUONPreprocessor* ma
                        "Upload MUON Tracker pedestals to OCDB"),
 fPedestals(0x0)
 {
-  // default ctor
+  /// default ctor
 }
 
 //_____________________________________________________________________________
 AliMUONPedestalSubprocessor::~AliMUONPedestalSubprocessor()
 {
-  // dtor
+  /// dtor
   delete fPedestals;
 }
 
@@ -114,10 +113,39 @@ AliMUONPedestalSubprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endT
 UInt_t 
 AliMUONPedestalSubprocessor::Process(TMap* /*dcsAliasMap*/)
 {
-  // Store the pedestals into the CDB
+  /// Store the pedestals into the CDB
   
-  if (!fPedestals) return 0;
+  if (!fPedestals) 
+  {
+    // this is the only reason to fail for the moment : getting no pedestal
+    // at all.
+    return 1;
+  }
     
+  AliMUON2DStoreValidator validator;
+
+  Master()->Log("Validating");
+
+  TObjArray* chambers = validator.Validate(*fPedestals);
+  
+  if (chambers)
+  {
+    // we hereby report what's missing, but this is not a reason to fail ;-)
+    // the only reason to fail would be if we got no pedestal at all
+    TList lines;
+    lines.SetOwner(kTRUE);
+  
+    validator.Report(lines,*chambers);
+  
+    TIter next(&lines);
+    TObjString* line;
+  
+    while ( ( line = static_cast<TObjString*>(next()) ) )
+    {
+      Master()->Log(line->String().Data());
+    }
+  }
+  
   Master()->Log("Storing pedestals");
   
   AliCDBMetaData metaData;
@@ -126,23 +154,23 @@ AliMUONPedestalSubprocessor::Process(TMap* /*dcsAliasMap*/)
        metaData.SetComment("Computed by AliMUONPedestalSubprocessor $Id$");
   
   Bool_t validToInfinity = kTRUE;
-       UInt_t result = Master()->Store("Calib", "Pedestals", fPedestals, &metaData, 0, validToInfinity);
+       Bool_t result = Master()->Store("Calib", "Pedestals", fPedestals, &metaData, 0, validToInfinity);
   
-  return result;  
+  return ( result != kTRUE ); // return 0 if everything is ok.  
 }
 
 //_____________________________________________________________________________
 Int_t
 AliMUONPedestalSubprocessor::ReadFile(const char* filename)
 {
-  // Read the pedestals from an ASCII file.
-  // Format of that file is one line per channel :
-  //---------------------------------------------------------------------------
-  // BUS_PATCH MANU_ADDR CHANNEL      MEAN       SIGMA
-  //---------------------------------------------------------------------------
-  //
-  // Return kFALSE if reading was not successfull.
-  //
+  /// Read the pedestals from an ASCII file.                                  \n
+  /// Format of that file is one line per channel :                           \n
+  ///-------------------------------------------------------------------------\n
+  /// BUS_PATCH MANU_ADDR CHANNEL      MEAN       SIGMA                       \n
+  ///-------------------------------------------------------------------------\n
+  ///                                                                         \n
+  /// Return kFALSE if reading was not successfull.                           \n
+  ///
   
   TString sFilename(gSystem->ExpandPathName(filename));
   
@@ -156,8 +184,7 @@ AliMUONPedestalSubprocessor::ReadFile(const char* filename)
   char line[80];
   Int_t busPatchID, manuID, manuChannel;
   Float_t pedMean, pedSigma;
-  static const Int_t kNchannels(64);
-  static Bool_t replace(kFALSE);
+  static const Int_t kNchannels(AliMpConstants::ManuNofChannels());
   Int_t n(0);
   
   while ( in.getline(line,80) )
@@ -170,12 +197,14 @@ AliMUONPedestalSubprocessor::ReadFile(const char* filename)
              busPatchID,detElemID,manuID,manuChannel,pedMean,pedSigma));
     
     AliMUONVCalibParam* ped = 
-      static_cast<AliMUONVCalibParam*>(fPedestals->Get(detElemID,manuID));
+      static_cast<AliMUONVCalibParam*>(fPedestals->FindObject(detElemID,manuID));
     
     if (!ped) 
     {
-      ped = new AliMUONCalibParam2F(kNchannels,AliMUONCalibParam2F::InvalidFloatValue());  
-      fPedestals->Set(detElemID,manuID,ped,replace);
+      ped = new AliMUONCalibParamNF(2,kNchannels,
+                                    detElemID,manuID,
+                                    AliMUONVCalibParam::InvalidFloatValue());  
+      fPedestals->Add(ped);
     }
     ped->SetValueAsFloat(manuChannel,0,pedMean);
     ped->SetValueAsFloat(manuChannel,1,pedSigma);
@@ -191,12 +220,5 @@ void
 AliMUONPedestalSubprocessor::Print(Option_t* opt) const
 {
   /// ouput to screen
-  AliMUONVDataIterator* it = fPedestals->Iterator();
-  AliMUONObjectPair* p;
-
-  while ( ( p = static_cast<AliMUONObjectPair*>(it->Next() ) ) )
-  {
-    AliMUONVCalibParam* value = static_cast<AliMUONVCalibParam*>(p->Value());
-    value->Print(opt);
-  }
+  if (fPedestals) fPedestals->Print("",opt);
 }