#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
//_____________________________________________________________________________
AliMUONDigitCalibrator::AliMUONDigitCalibrator(const AliMUONCalibrationData& calib,
- const AliMUONRecoParam* recoParams,
+ const AliMUONRecoParam* recoParams,
const char* calibMode)
: TObject(),
fLogger(new AliMUONLogger(20000)),
fApplyGains(0),
fCapacitances(0x0),
fNumberOfBadPads(0),
-fNumberOfPads(0)
+fNumberOfPads(0),
+fChargeSigmaCut(0)
{
/// ctor
fApplyGains(0),
fCapacitances(0x0),
fNumberOfBadPads(0),
-fNumberOfPads(0)
+fNumberOfPads(0),
+fChargeSigmaCut(0)
{
/// ctor
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());
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;
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()));
}
else
{
- nsigmas = 3.0;
+ nsigmas = fChargeSigmaCut;
}
}
}
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));
}
else
{
- isSaturated = kFALSE;
+ *isSaturated = kFALSE;
}
}