]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigitCalibrator.cxx
New time interval for DCS DPs retrieval
[u/mrichter/AliRoot.git] / MUON / AliMUONDigitCalibrator.cxx
index 5aacb1bd586892c4299f339754d824ef82266ceb..aecf7077aba64020ca70b872375054f3bdde71c7 100644 (file)
 #include "AliMUONVStore.h"
 #include "AliMpBusPatch.h"
 #include "AliMpConstants.h"
+#include "AliMpCDB.h"
 #include "AliMpDDLStore.h"
 #include "AliMpDEIterator.h"
 #include "AliMpDetElement.h"
+#include "AliMpManuStore.h"
 
 //-----------------------------------------------------------------------------
 /// \class AliMUONDigitCalibrator
@@ -63,7 +65,7 @@ const Int_t AliMUONDigitCalibrator::fgkGain(2);
 
 //_____________________________________________________________________________
 AliMUONDigitCalibrator::AliMUONDigitCalibrator(const AliMUONCalibrationData& calib,
-                                                                                                                                                                                        const AliMUONRecoParam* recoParams,
+                                               const AliMUONRecoParam* recoParams,
                                                const char* calibMode)
 : TObject(),
 fLogger(new AliMUONLogger(20000)),
@@ -74,7 +76,8 @@ fGains(0x0),
 fApplyGains(0),
 fCapacitances(0x0),
 fNumberOfBadPads(0),
-fNumberOfPads(0)
+fNumberOfPads(0),
+fChargeSigmaCut(0)
 {
   /// ctor
   
@@ -93,7 +96,8 @@ fGains(0x0),
 fApplyGains(0),
 fCapacitances(0x0),
 fNumberOfBadPads(0),
-fNumberOfPads(0)
+fNumberOfPads(0),
+fChargeSigmaCut(0)
 {
   /// ctor
   
@@ -132,15 +136,23 @@ AliMUONDigitCalibrator::Ctor(const char* calibMode,
     fApplyGains = fgkNoGain;
   }
        
+  // Load mapping manu store
+  if ( ! AliMpCDB::LoadManuStore() ) {
+    AliFatal("Could not access manu store from OCDB !");
+  }
+
   fStatusMaker = new AliMUONPadStatusMaker(calib);
   
-       Int_t mask(0x8080);
+  // Set default values, as loose as reasonable
+
+  fChargeSigmaCut = 3.0;
+  
+       Int_t mask(0x8080); // reject pads where ped *or* hv are missing
        
-  // this is here that we decide on our "goodness" policy, i.e.
-  // what do we call an invalid pad (a pad maybe bad because its HV
-  // was too low, or its pedestals too high, etc..)
        if ( recoParams )
        {
+    // if we have reco params, we use limits and cuts from there :
+    
                fStatusMaker->SetHVSt12Limits(recoParams->HVSt12LowLimit(),recoParams->HVSt12HighLimit());
                fStatusMaker->SetHVSt345Limits(recoParams->HVSt345LowLimit(),recoParams->HVSt345HighLimit());
                fStatusMaker->SetPedMeanLimits(recoParams->PedMeanLowLimit(),recoParams->PedMeanHighLimit());
@@ -148,9 +160,12 @@ AliMUONDigitCalibrator::Ctor(const char* calibMode,
                fStatusMaker->SetGainA1Limits(recoParams->GainA1LowLimit(),recoParams->GainA1HighLimit());
                fStatusMaker->SetGainA2Limits(recoParams->GainA2LowLimit(),recoParams->GainA2HighLimit());
                fStatusMaker->SetGainThresLimits(recoParams->GainThresLowLimit(),recoParams->GainThresHighLimit());
-               mask = recoParams->PadGoodnessMask();
+               
+    mask = recoParams->PadGoodnessMask();
                //WARNING : getting this mask wrong is a very effective way of getting
                //no digits at all out of this class ;-)
+    
+    fChargeSigmaCut = recoParams->ChargeSigmaCut();
        }
   
   Bool_t deferredInitialization = kTRUE;
@@ -193,7 +208,7 @@ AliMUONDigitCalibrator::Calibrate(AliMUONVDigitStore& digitStore)
   TIter next(digitStore.CreateTrackerIterator());
   AliMUONVDigit* digit;
   Int_t detElemId(-1);
-  Double_t nsigmas(3.0);
+  Double_t nsigmas = fChargeSigmaCut;
   
   AliDebug(1,Form("# of digits = %d",digitStore.GetSize()));
   
@@ -223,7 +238,7 @@ AliMUONDigitCalibrator::Calibrate(AliMUONVDigitStore& digitStore)
       }
       else
       {
-        nsigmas = 3.0;
+        nsigmas = fChargeSigmaCut;
       }
     }
 
@@ -296,9 +311,10 @@ AliMUONDigitCalibrator::CalibrateDigit(Int_t detElemId, Int_t manuId, Int_t manu
   }
   else if ( fApplyGains == fgkGain ) 
   {
-    AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
     
-    Int_t serialNumber = de->GetManuSerialFromId(manuId);
+
+    Int_t serialNumber 
+      = AliMpManuStore::Instance()->GetManuSerial(detElemId, manuId);
     
     AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(fCapacitances->FindObject(serialNumber));
     
@@ -352,7 +368,7 @@ AliMUONDigitCalibrator::CalibrateDigit(Int_t detElemId, Int_t manuId, Int_t manu
     }
     else
     {
-      isSaturated = kFALSE;
+      *isSaturated = kFALSE;
     }
   }