]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPedestalSubprocessor.cxx
Updated list of MUON libraries
[u/mrichter/AliRoot.git] / MUON / AliMUONPedestalSubprocessor.cxx
index 5ca79237a52751b96d9c3b1e12b13c3e06242c3e..b4b1845c04d9bfb6f7f8e4c9904f34c40c14d5f7 100644 (file)
 #include "AliCDBMetaData.h"
 #include "AliLog.h"
 #include "AliMUON2DMap.h"
-#include "AliMUON2DStoreValidator.h"
-#include "AliMUONCalibParam2F.h"
-#include "AliMUONConstants.h"
+#include "AliMUONCalibParamNF.h"
 #include "AliMUONObjectPair.h"
 #include "AliMUONPedestalSubprocessor.h"
 #include "AliMUONPreprocessor.h"
 #include "AliMUONVDataIterator.h"
 #include "AliMpDDLStore.h"
+#include "AliMUON2DStoreValidator.h"
+#include "TObjString.h"
 
 ///
 /// \class AliMUONPedestalSubprocessor
@@ -58,13 +58,13 @@ AliMUONPedestalSubprocessor::AliMUONPedestalSubprocessor(AliMUONPreprocessor* ma
                        "Upload MUON Tracker pedestals to OCDB"),
 fPedestals(0x0)
 {
-  // default ctor
+  /// default ctor
 }
 
 //_____________________________________________________________________________
 AliMUONPedestalSubprocessor::~AliMUONPedestalSubprocessor()
 {
-  // dtor
+  /// dtor
   delete fPedestals;
 }
 
@@ -86,14 +86,27 @@ AliMUONPedestalSubprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endT
   TList* sources = Master()->GetFileSources(kSystem,kId);
   TIter next(sources);
   TObjString* o(0x0);
+  Int_t n(0);
+  
   while ( ( o = static_cast<TObjString*>(next()) ) )
   {
     TString fileName(Master()->GetFile(kSystem,kId,o->GetName()));
-    Bool_t ok = ReadFile(fileName.Data());
+    Int_t ok = ReadFile(fileName.Data());
     if (!ok)
     {
       Master()->Log(Form("Could not read file %s",fileName.Data()));
     }
+    else
+    {
+      n += ok;
+    }
+  }
+  
+  if (!n)
+  {
+    Master()->Log("Failed to read any pedestals");
+    delete fPedestals;
+    fPedestals = 0;
   }
   delete sources;
 }
@@ -102,27 +115,37 @@ 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;
-  
-  Master()->Log("Validating pedestals");
+  if (!fPedestals) 
+  {
+    // this is the only reason to fail for the moment : getting no pedestal
+    // at all.
+    return 1;
+  }
+    
   AliMUON2DStoreValidator validator;
-  TObjArray* missing =
-    validator.Validate(*fPedestals,AliMUONCalibParam2F::InvalidFloatValue());  
+
+  Master()->Log("Validating");
+
+  TObjArray* chambers = validator.Validate(*fPedestals);
   
-  if (missing)  
+  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,*missing);
+  
+    validator.Report(lines,*chambers);
+  
     TIter next(&lines);
-    TObjString* l;
-    while ( ( l = static_cast<TObjString*>(next())) )
+    TObjString* line;
+  
+    while ( ( line = static_cast<TObjString*>(next()) ) )
     {
-      Master()->Log(l->GetName());
+      Master()->Log(line->String().Data());
     }
-    return 0;
   }
   
   Master()->Log("Storing pedestals");
@@ -133,23 +156,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.  
 }
 
 //_____________________________________________________________________________
-Bool_t
+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));
   
@@ -158,13 +181,14 @@ AliMUONPedestalSubprocessor::ReadFile(const char* filename)
   std::ifstream in(sFilename.Data());
   if (!in.good()) 
   {
-    return kFALSE;
+    return 0;
   }
   char line[80];
   Int_t busPatchID, manuID, manuChannel;
   Float_t pedMean, pedSigma;
   static const Int_t kNchannels(64);
   static Bool_t replace(kFALSE);
+  Int_t n(0);
   
   while ( in.getline(line,80) )
   {
@@ -180,14 +204,15 @@ AliMUONPedestalSubprocessor::ReadFile(const char* filename)
     
     if (!ped) 
     {
-      ped = new AliMUONCalibParam2F(kNchannels,AliMUONCalibParam2F::InvalidFloatValue());  
+      ped = new AliMUONCalibParamNF(2,kNchannels,AliMUONVCalibParam::InvalidFloatValue());  
       fPedestals->Set(detElemID,manuID,ped,replace);
     }
     ped->SetValueAsFloat(manuChannel,0,pedMean);
     ped->SetValueAsFloat(manuChannel,1,pedSigma);
+    ++n;
   }
   in.close();
-  return kTRUE;
+  return n;
 }
 
 
@@ -203,5 +228,6 @@ AliMUONPedestalSubprocessor::Print(Option_t* opt) const
   {
     AliMUONVCalibParam* value = static_cast<AliMUONVCalibParam*>(p->Value());
     value->Print(opt);
+    if (it->IsOwner()) delete p;
   }
 }