+ /// designated ctor
+
+ TString cMode("NOGAIN");
+ if (recoParams) cMode=recoParams->GetCalibrationMode();
+ cMode.ToUpper();
+
+ if ( cMode == "NOGAIN" )
+ {
+ fApplyGains = fgkNoGain;
+ AliInfo("Will NOT apply gain correction");
+ }
+ else if ( cMode == "GAINCONSTANTCAPA" )
+ {
+ fApplyGains = fgkGainConstantCapa;
+ AliInfo("Will apply gain correction, but with constant capacitance");
+ }
+ else if ( cMode == "GAIN" )
+ {
+ fApplyGains = fgkGain;
+ AliInfo("Will apply gain correction, with measured capacitances");
+ }
+ else if ( cMode == "INJECTIONGAIN")
+ {
+ fApplyGains = fgkInjectionGain;
+ AliInfo("Will apply injection gain correction, with EMELEC factory gains");
+ }
+ else
+ {
+ AliError(Form("Invalid calib mode = %s. Will use NOGAIN instead",cMode.Data()));
+ fApplyGains = fgkNoGain;
+ }
+
+ // Load mapping manu store
+ if ( ! AliMpCDB::LoadManuStore() ) {
+ AliFatal("Could not access manu store from OCDB !");
+ }
+
+ fStatusMaker = new AliMUONPadStatusMaker(calib);
+
+ // Set default values, as loose as reasonable
+
+ fChargeSigmaCut = 3.0;
+
+ fMask = 0x8080; // reject pads where ped *or* hv are missing
+
+ if ( recoParams )
+ {
+ // if we have reco params, we use limits and cuts from there :
+
+ fStatusMaker->SetLimits(*recoParams);
+
+ fMask = 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();
+ }
+ else
+ {
+ fLogger->Log("No RecoParam available");
+ fLogger->Log(Form("SigmaCut=%e",fChargeSigmaCut));
+ }
+
+ fStatusMapMaker = new AliMUONPadStatusMapMaker(*fStatusMaker,fMask,deferredInitialization);
+
+ fPedestals = calib.Pedestals();
+
+ fGains = calib.Gains(); // we get gains whatever the calibMode is, in order
+ // to get the saturation value...
+
+ if ( fApplyGains == fgkGain || fApplyGains == fgkInjectionGain )
+ {
+ fCapacitances = calib.Capacitances();
+ }