CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
EcalUncalibRecHitWorkerMultiFit Class Referencefinal
Inheritance diagram for EcalUncalibRecHitWorkerMultiFit:
EcalUncalibRecHitWorkerBaseClass

Public Member Functions

 EcalUncalibRecHitWorkerMultiFit (const edm::ParameterSet &, edm::ConsumesCollector &c)
 
 EcalUncalibRecHitWorkerMultiFit ()
 
edm::ParameterSetDescription getAlgoDescription () override
 
- Public Member Functions inherited from EcalUncalibRecHitWorkerBaseClass
 EcalUncalibRecHitWorkerBaseClass (const edm::ParameterSet &, edm::ConsumesCollector &c)
 
 EcalUncalibRecHitWorkerBaseClass (const edm::ParameterSet &)
 
 EcalUncalibRecHitWorkerBaseClass ()
 
virtual ~EcalUncalibRecHitWorkerBaseClass ()
 

Private Types

enum  TimeAlgo { noMethod, ratioMethod, weightsMethod, crossCorrelationMethod }
 

Private Member Functions

const SampleMatrixnoisecor (bool barrel, int gain) const
 
const SampleMatrixGainArraynoisecor (bool barrel) const
 
void run (const edm::Event &evt, const EcalDigiCollection &digis, EcalUncalibratedRecHitCollection &result) override
 
void set (const edm::EventSetup &es) override
 
void set (const edm::Event &evt) override
 
double timeCorrection (float ampli, const std::vector< float > &amplitudeBins, const std::vector< float > &shiftBins)
 

Private Attributes

BXVector activeBX
 
double addPedestalUncertaintyEB_
 
double addPedestalUncertaintyEE_
 
bool ampErrorCalculation_
 
double amplitudeThreshEB_
 
double amplitudeThreshEE_
 
edm::EDGetTokenT< unsigned int > bunchSpacing_
 
int bunchSpacingManual_
 
double CCminTimeToBeLateMax_
 
double CCminTimeToBeLateMin_
 
double CCtargetTimePrecision_
 
double CCtargetTimePrecisionForDelayedPulses_
 
double CCTimeShiftWrtRations_
 
double chi2ThreshEB_
 
double chi2ThreshEE_
 
std::unique_ptr< EcalUncalibRecHitTimingCCAlgocomputeCC_
 
bool crossCorrelationUseSlewCorrectionEB_
 
bool crossCorrelationUseSlewCorrectionEE_
 
bool doPrefitEB_
 
bool doPrefitEE_
 
bool dynamicPedestalsEB_
 
bool dynamicPedestalsEE_
 
std::vector< double > EBamplitudeFitParameters_
 
std::vector< double > ebPulseShape_
 
double ebSpikeThresh_
 
double EBtimeConstantTerm_
 
std::pair< double, double > EBtimeFitLimits_
 
std::vector< double > EBtimeFitParameters_
 
double EBtimeNconst_
 
std::vector< double > EEamplitudeFitParameters_
 
std::vector< double > eePulseShape_
 
double EEtimeConstantTerm_
 
std::pair< double, double > EEtimeFitLimits_
 
std::vector< double > EEtimeFitParameters_
 
double EEtimeNconst_
 
edm::ESHandle< EcalGainRatiosgains
 
edm::ESGetToken< EcalGainRatios, EcalGainRatiosRcdgainsToken_
 
bool gainSwitchUseMaxSampleEB_
 
bool gainSwitchUseMaxSampleEE_
 
edm::ESHandle< EcalWeightXtalGroupsgrps
 
edm::ESGetToken< EcalWeightXtalGroups, EcalWeightXtalGroupsRcdgrpsToken_
 
edm::ESHandle< EcalTimeCalibConstantsitime
 
edm::ESGetToken< EcalTimeCalibConstants, EcalTimeCalibConstantsRcditimeToken_
 
bool kPoorRecoFlagEB_
 
bool kPoorRecoFlagEE_
 
bool mitigateBadSamplesEB_
 
bool mitigateBadSamplesEE_
 
EcalUncalibRecHitMultiFitAlgo multiFitMethod_
 
edm::ESGetToken< EcalSamplesCorrelation, EcalSamplesCorrelationRcdnoiseConvariancesToken_
 
std::array< SampleMatrixGainArray, 2 > noisecors_
 
edm::ESHandle< EcalSamplesCorrelationnoisecovariances
 
edm::ESHandle< EcalTimeOffsetConstantofftime
 
edm::ESGetToken< EcalTimeOffsetConstant, EcalTimeOffsetConstantRcdofftimeToken_
 
double outOfTimeThreshG12mEB_
 
double outOfTimeThreshG12mEE_
 
double outOfTimeThreshG12pEB_
 
double outOfTimeThreshG12pEE_
 
double outOfTimeThreshG61mEB_
 
double outOfTimeThreshG61mEE_
 
double outOfTimeThreshG61pEB_
 
double outOfTimeThreshG61pEE_
 
edm::ESHandle< EcalPedestalspeds
 
edm::ESGetToken< EcalPedestals, EcalPedestalsRcdpedsToken_
 
double prefitMaxChiSqEB_
 
double prefitMaxChiSqEE_
 
edm::ESGetToken< EcalPulseCovariances, EcalPulseCovariancesRcdpulseConvariancesToken_
 
edm::ESHandle< EcalPulseCovariancespulsecovariances
 
edm::ESHandle< EcalPulseShapespulseshapes
 
edm::ESGetToken< EcalPulseShapes, EcalPulseShapesRcdpulseShapesToken_
 
EcalUncalibRecHitRatioMethodAlgo< EBDataFrameratioMethod_barrel_
 
EcalUncalibRecHitRatioMethodAlgo< EEDataFrameratioMethod_endcap_
 
edm::ESHandle< EcalSampleMasksampleMaskHand_
 
edm::ESGetToken< EcalSampleMask, EcalSampleMaskRcdsampleMaskToken_
 
bool selectiveBadSampleCriteriaEB_
 
bool selectiveBadSampleCriteriaEE_
 
bool simplifiedNoiseModelForGainSwitch_
 
TimeAlgo timealgo_ = noMethod
 
edm::ESHandle< EcalTimeBiasCorrectionstimeCorrBias_
 
edm::ESGetToken< EcalTimeBiasCorrections, EcalTimeBiasCorrectionsRcdtimeCorrBiasToken_
 
bool useLumiInfoRunHeader_
 
const EcalWeightSet::EcalWeightMatrixweights [2]
 
EcalUncalibRecHitTimeWeightsAlgo< EBDataFrameweightsMethod_barrel_
 
EcalUncalibRecHitTimeWeightsAlgo< EEDataFrameweightsMethod_endcap_
 
edm::ESHandle< EcalTBWeightswgts
 
edm::ESGetToken< EcalTBWeights, EcalTBWeightsRcdwgtsToken_
 

Detailed Description

Definition at line 50 of file EcalUncalibRecHitWorkerMultiFit.cc.

Member Enumeration Documentation

◆ TimeAlgo

Constructor & Destructor Documentation

◆ EcalUncalibRecHitWorkerMultiFit() [1/2]

EcalUncalibRecHitWorkerMultiFit::EcalUncalibRecHitWorkerMultiFit ( const edm::ParameterSet ps,
edm::ConsumesCollector c 
)

Definition at line 176 of file EcalUncalibRecHitWorkerMultiFit.cc.

References activeBX, HLT_2024v13_cff::activeBXs, addPedestalUncertaintyEB_, addPedestalUncertaintyEE_, ampErrorCalculation_, amplitudeThreshEB_, amplitudeThreshEE_, bunchSpacing_, bunchSpacingManual_, DummyCfis::c, CCminTimeToBeLateMax_, CCminTimeToBeLateMin_, CCtargetTimePrecision_, CCtargetTimePrecisionForDelayedPulses_, CCTimeShiftWrtRations_, ecalcctiming::clockToNS, computeCC_, crossCorrelationMethod, crossCorrelationUseSlewCorrectionEB_, crossCorrelationUseSlewCorrectionEE_, doPrefitEB_, doPrefitEE_, dynamicPedestalsEB_, dynamicPedestalsEE_, EBamplitudeFitParameters_, EBtimeConstantTerm_, EBtimeFitLimits_, EBtimeFitParameters_, EBtimeNconst_, EEamplitudeFitParameters_, EEtimeConstantTerm_, EEtimeFitLimits_, EEtimeFitParameters_, EEtimeNconst_, gainsToken_, gainSwitchUseMaxSampleEB_, gainSwitchUseMaxSampleEE_, edm::ParameterSet::getParameter(), grpsToken_, ProducerED_cfi::InputTag, itimeToken_, mitigateBadSamplesEB_, mitigateBadSamplesEE_, noiseConvariancesToken_, offtimeToken_, outOfTimeThreshG12mEB_, outOfTimeThreshG12mEE_, outOfTimeThreshG12pEB_, outOfTimeThreshG12pEE_, outOfTimeThreshG61mEB_, outOfTimeThreshG61mEE_, outOfTimeThreshG61pEB_, outOfTimeThreshG61pEE_, pedsToken_, prefitMaxChiSqEB_, prefitMaxChiSqEE_, pulseConvariancesToken_, pulseShapesToken_, ratioMethod, BXVector< T >::resize(), sampleMaskToken_, selectiveBadSampleCriteriaEB_, selectiveBadSampleCriteriaEE_, simplifiedNoiseModelForGainSwitch_, beamSpotPI::startTime, AlCaHLTBitMon_QueryRunRegistry::string, timealgo_, timeCorrBiasToken_, useLumiInfoRunHeader_, weightsMethod, and wgtsToken_.

178  // get the BX for the pulses to be activated
179  std::vector<int32_t> activeBXs = ps.getParameter<std::vector<int32_t>>("activeBXs");
180  activeBX.resize(activeBXs.size());
181  for (unsigned int ibx = 0; ibx < activeBXs.size(); ++ibx) {
182  activeBX.coeffRef(ibx) = activeBXs[ibx];
183  }
184 
185  // uncertainty calculation (CPU intensive)
186  ampErrorCalculation_ = ps.getParameter<bool>("ampErrorCalculation");
187  useLumiInfoRunHeader_ = ps.getParameter<bool>("useLumiInfoRunHeader");
188 
189  if (useLumiInfoRunHeader_) {
190  bunchSpacing_ = c.consumes<unsigned int>(edm::InputTag("bunchSpacingProducer"));
192  } else {
193  bunchSpacingManual_ = ps.getParameter<int>("bunchSpacing");
194  }
195 
196  doPrefitEB_ = ps.getParameter<bool>("doPrefitEB");
197  doPrefitEE_ = ps.getParameter<bool>("doPrefitEE");
198 
199  prefitMaxChiSqEB_ = ps.getParameter<double>("prefitMaxChiSqEB");
200  prefitMaxChiSqEE_ = ps.getParameter<double>("prefitMaxChiSqEE");
201 
202  dynamicPedestalsEB_ = ps.getParameter<bool>("dynamicPedestalsEB");
203  dynamicPedestalsEE_ = ps.getParameter<bool>("dynamicPedestalsEE");
204  mitigateBadSamplesEB_ = ps.getParameter<bool>("mitigateBadSamplesEB");
205  mitigateBadSamplesEE_ = ps.getParameter<bool>("mitigateBadSamplesEE");
206  gainSwitchUseMaxSampleEB_ = ps.getParameter<bool>("gainSwitchUseMaxSampleEB");
207  gainSwitchUseMaxSampleEE_ = ps.getParameter<bool>("gainSwitchUseMaxSampleEE");
208  selectiveBadSampleCriteriaEB_ = ps.getParameter<bool>("selectiveBadSampleCriteriaEB");
209  selectiveBadSampleCriteriaEE_ = ps.getParameter<bool>("selectiveBadSampleCriteriaEE");
210  addPedestalUncertaintyEB_ = ps.getParameter<double>("addPedestalUncertaintyEB");
211  addPedestalUncertaintyEE_ = ps.getParameter<double>("addPedestalUncertaintyEE");
212  simplifiedNoiseModelForGainSwitch_ = ps.getParameter<bool>("simplifiedNoiseModelForGainSwitch");
213  pedsToken_ = c.esConsumes<EcalPedestals, EcalPedestalsRcd>();
220  wgtsToken_ = c.esConsumes<EcalTBWeights, EcalTBWeightsRcd>();
222  itimeToken_ =
225  ps.getParameter<edm::ESInputTag>("timeOffsetTag"));
226 
227  // algorithm to be used for timing
228  auto const& timeAlgoName = ps.getParameter<std::string>("timealgo");
229  if (timeAlgoName == "RatioMethod")
231  else if (timeAlgoName == "WeightsMethod")
233  else if (timeAlgoName == "crossCorrelationMethod") {
235  double startTime = ps.getParameter<double>("crossCorrelationStartTime");
236  double stopTime = ps.getParameter<double>("crossCorrelationStopTime");
237  CCtargetTimePrecision_ = ps.getParameter<double>("crossCorrelationTargetTimePrecision");
239  ps.getParameter<double>("crossCorrelationTargetTimePrecisionForDelayedPulses");
240  CCminTimeToBeLateMin_ = ps.getParameter<double>("crossCorrelationMinTimeToBeLateMin") / ecalcctiming::clockToNS;
241  CCminTimeToBeLateMax_ = ps.getParameter<double>("crossCorrelationMinTimeToBeLateMax") / ecalcctiming::clockToNS;
242  CCTimeShiftWrtRations_ = ps.getParameter<double>("crossCorrelationTimeShiftWrtRations");
243  crossCorrelationUseSlewCorrectionEB_ = ps.getParameter<bool>("crossCorrelationUseSlewCorrectionEB");
244  crossCorrelationUseSlewCorrectionEE_ = ps.getParameter<bool>("crossCorrelationUseSlewCorrectionEE");
245  computeCC_ = std::make_unique<EcalUncalibRecHitTimingCCAlgo>(startTime, stopTime);
246  } else if (timeAlgoName != "None")
247  edm::LogError("EcalUncalibRecHitError") << "No time estimation algorithm defined";
248 
249  // time reco parameters
250  EBtimeFitParameters_ = ps.getParameter<std::vector<double>>("EBtimeFitParameters");
251  EEtimeFitParameters_ = ps.getParameter<std::vector<double>>("EEtimeFitParameters");
252  EBamplitudeFitParameters_ = ps.getParameter<std::vector<double>>("EBamplitudeFitParameters");
253  EEamplitudeFitParameters_ = ps.getParameter<std::vector<double>>("EEamplitudeFitParameters");
254  EBtimeFitLimits_.first = ps.getParameter<double>("EBtimeFitLimits_Lower");
255  EBtimeFitLimits_.second = ps.getParameter<double>("EBtimeFitLimits_Upper");
256  EEtimeFitLimits_.first = ps.getParameter<double>("EEtimeFitLimits_Lower");
257  EEtimeFitLimits_.second = ps.getParameter<double>("EEtimeFitLimits_Upper");
258  EBtimeConstantTerm_ = ps.getParameter<double>("EBtimeConstantTerm");
259  EEtimeConstantTerm_ = ps.getParameter<double>("EEtimeConstantTerm");
260  EBtimeNconst_ = ps.getParameter<double>("EBtimeNconst");
261  EEtimeNconst_ = ps.getParameter<double>("EEtimeNconst");
262  outOfTimeThreshG12pEB_ = ps.getParameter<double>("outOfTimeThresholdGain12pEB");
263  outOfTimeThreshG12mEB_ = ps.getParameter<double>("outOfTimeThresholdGain12mEB");
264  outOfTimeThreshG61pEB_ = ps.getParameter<double>("outOfTimeThresholdGain61pEB");
265  outOfTimeThreshG61mEB_ = ps.getParameter<double>("outOfTimeThresholdGain61mEB");
266  outOfTimeThreshG12pEE_ = ps.getParameter<double>("outOfTimeThresholdGain12pEE");
267  outOfTimeThreshG12mEE_ = ps.getParameter<double>("outOfTimeThresholdGain12mEE");
268  outOfTimeThreshG61pEE_ = ps.getParameter<double>("outOfTimeThresholdGain61pEE");
269  outOfTimeThreshG61mEE_ = ps.getParameter<double>("outOfTimeThresholdGain61mEE");
270  amplitudeThreshEB_ = ps.getParameter<double>("amplitudeThresholdEB");
271  amplitudeThreshEE_ = ps.getParameter<double>("amplitudeThresholdEE");
272 }
edm::ESGetToken< EcalPulseCovariances, EcalPulseCovariancesRcd > pulseConvariancesToken_
EcalPulseShapesMap EcalPulseShapes
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::ESGetToken< EcalPulseShapes, EcalPulseShapesRcd > pulseShapesToken_
edm::ESGetToken< EcalGainRatios, EcalGainRatiosRcd > gainsToken_
EcalCondObjectContainer< EcalXtalGroupId > EcalWeightXtalGroups
Log< level::Error, false > LogError
constexpr const float clockToNS
Definition: EcalConstants.h:10
edm::ESGetToken< EcalSamplesCorrelation, EcalSamplesCorrelationRcd > noiseConvariancesToken_
edm::EDGetTokenT< unsigned int > bunchSpacing_
edm::ESGetToken< EcalPedestals, EcalPedestalsRcd > pedsToken_
edm::ESGetToken< EcalTBWeights, EcalTBWeightsRcd > wgtsToken_
EcalGainRatioMap EcalGainRatios
EcalPulseCovariancesMap EcalPulseCovariances
std::unique_ptr< EcalUncalibRecHitTimingCCAlgo > computeCC_
EcalPedestalsMap EcalPedestals
Definition: EcalPedestals.h:50
edm::ESGetToken< EcalTimeOffsetConstant, EcalTimeOffsetConstantRcd > offtimeToken_
EcalTimeCalibConstantMap EcalTimeCalibConstants
void resize(int bx, unsigned size)
edm::ESGetToken< EcalTimeBiasCorrections, EcalTimeBiasCorrectionsRcd > timeCorrBiasToken_
edm::ESGetToken< EcalSampleMask, EcalSampleMaskRcd > sampleMaskToken_
edm::ESGetToken< EcalTimeCalibConstants, EcalTimeCalibConstantsRcd > itimeToken_
edm::ESGetToken< EcalWeightXtalGroups, EcalWeightXtalGroupsRcd > grpsToken_

◆ EcalUncalibRecHitWorkerMultiFit() [2/2]

EcalUncalibRecHitWorkerMultiFit::EcalUncalibRecHitWorkerMultiFit ( )
inline

Definition at line 53 of file EcalUncalibRecHitWorkerMultiFit.cc.

53 {};

Member Function Documentation

◆ getAlgoDescription()

edm::ParameterSetDescription EcalUncalibRecHitWorkerMultiFit::getAlgoDescription ( )
overridevirtual

Implements EcalUncalibRecHitWorkerBaseClass.

Definition at line 734 of file EcalUncalibRecHitWorkerMultiFit.cc.

References edm::ParameterSetDescription::addNode().

734  {
736  psd.addNode(edm::ParameterDescription<std::vector<int>>("activeBXs", {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4}, true) and
737  edm::ParameterDescription<bool>("ampErrorCalculation", true, true) and
738  edm::ParameterDescription<bool>("useLumiInfoRunHeader", true, true) and
739  edm::ParameterDescription<int>("bunchSpacing", 0, true) and
740  edm::ParameterDescription<bool>("doPrefitEB", false, true) and
741  edm::ParameterDescription<bool>("doPrefitEE", false, true) and
742  edm::ParameterDescription<double>("prefitMaxChiSqEB", 25., true) and
743  edm::ParameterDescription<double>("prefitMaxChiSqEE", 10., true) and
744  edm::ParameterDescription<bool>("dynamicPedestalsEB", false, true) and
745  edm::ParameterDescription<bool>("dynamicPedestalsEE", false, true) and
746  edm::ParameterDescription<bool>("mitigateBadSamplesEB", false, true) and
747  edm::ParameterDescription<bool>("mitigateBadSamplesEE", false, true) and
748  edm::ParameterDescription<bool>("gainSwitchUseMaxSampleEB", true, true) and
749  edm::ParameterDescription<bool>("gainSwitchUseMaxSampleEE", false, true) and
750  edm::ParameterDescription<bool>("selectiveBadSampleCriteriaEB", false, true) and
751  edm::ParameterDescription<bool>("selectiveBadSampleCriteriaEE", false, true) and
752  edm::ParameterDescription<double>("addPedestalUncertaintyEB", 0., true) and
753  edm::ParameterDescription<double>("addPedestalUncertaintyEE", 0., true) and
754  edm::ParameterDescription<bool>("simplifiedNoiseModelForGainSwitch", true, true) and
755  edm::ParameterDescription<std::string>("timealgo", "RatioMethod", true) and
756  edm::ParameterDescription<std::vector<double>>("EBtimeFitParameters",
757  {-2.015452e+00,
758  3.130702e+00,
759  -1.234730e+01,
760  4.188921e+01,
761  -8.283944e+01,
762  9.101147e+01,
763  -5.035761e+01,
764  1.105621e+01},
765  true) and
766  edm::ParameterDescription<std::vector<double>>("EEtimeFitParameters",
767  {-2.390548e+00,
768  3.553628e+00,
769  -1.762341e+01,
770  6.767538e+01,
771  -1.332130e+02,
772  1.407432e+02,
773  -7.541106e+01,
774  1.620277e+01},
775  true) and
776  edm::ParameterDescription<std::vector<double>>("EBamplitudeFitParameters", {1.138, 1.652}, true) and
777  edm::ParameterDescription<std::vector<double>>("EEamplitudeFitParameters", {1.890, 1.400}, true) and
779  edm::ParameterDescription<edm::ESInputTag>("timeOffsetTag", edm::ESInputTag(), true) and
780  edm::ParameterDescription<double>("EBtimeFitLimits_Lower", 0.2, true) and
781  edm::ParameterDescription<double>("EBtimeFitLimits_Upper", 1.4, true) and
782  edm::ParameterDescription<double>("EEtimeFitLimits_Lower", 0.2, true) and
783  edm::ParameterDescription<double>("EEtimeFitLimits_Upper", 1.4, true) and
784  edm::ParameterDescription<double>("EBtimeConstantTerm", .6, true) and
785  edm::ParameterDescription<double>("EEtimeConstantTerm", 1.0, true) and
786  edm::ParameterDescription<double>("EBtimeNconst", 28.5, true) and
787  edm::ParameterDescription<double>("EEtimeNconst", 31.8, true) and
788  edm::ParameterDescription<double>("outOfTimeThresholdGain12pEB", 5., true) and
789  edm::ParameterDescription<double>("outOfTimeThresholdGain12mEB", 5., true) and
790  edm::ParameterDescription<double>("outOfTimeThresholdGain61pEB", 5., true) and
791  edm::ParameterDescription<double>("outOfTimeThresholdGain61mEB", 5., true) and
792  edm::ParameterDescription<double>("outOfTimeThresholdGain12pEE", 1000, true) and
793  edm::ParameterDescription<double>("outOfTimeThresholdGain12mEE", 1000, true) and
794  edm::ParameterDescription<double>("outOfTimeThresholdGain61pEE", 1000, true) and
795  edm::ParameterDescription<double>("outOfTimeThresholdGain61mEE", 1000, true) and
796  edm::ParameterDescription<double>("amplitudeThresholdEB", 10, true) and
797  edm::ParameterDescription<double>("amplitudeThresholdEE", 10, true) and
798  edm::ParameterDescription<bool>("crossCorrelationUseSlewCorrectionEB", true, true) and
799  edm::ParameterDescription<bool>("crossCorrelationUseSlewCorrectionEE", false, true) and
800  edm::ParameterDescription<double>("crossCorrelationStartTime", -25.0, true) and
801  edm::ParameterDescription<double>("crossCorrelationStopTime", 25.0, true) and
802  edm::ParameterDescription<double>("crossCorrelationTargetTimePrecision", 0.01, true) and
803  edm::ParameterDescription<double>("crossCorrelationTargetTimePrecisionForDelayedPulses", 0.05, true) and
804  edm::ParameterDescription<double>("crossCorrelationTimeShiftWrtRations", 0., true) and
805  edm::ParameterDescription<double>("crossCorrelationMinTimeToBeLateMin", 2., true) and
806  edm::ParameterDescription<double>("crossCorrelationMinTimeToBeLateMax", 5., true));
807 
808  return psd;
809 }
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)

◆ noisecor() [1/2]

const SampleMatrix& EcalUncalibRecHitWorkerMultiFit::noisecor ( bool  barrel,
int  gain 
) const
inlineprivate

◆ noisecor() [2/2]

const SampleMatrixGainArray& EcalUncalibRecHitWorkerMultiFit::noisecor ( bool  barrel) const
inlineprivate

Definition at line 78 of file EcalUncalibRecHitWorkerMultiFit.cc.

References Reference_intrackfit_cff::barrel, and noisecors_.

78 { return noisecors_[barrel ? 1 : 0]; }
std::array< SampleMatrixGainArray, 2 > noisecors_

◆ run()

void EcalUncalibRecHitWorkerMultiFit::run ( const edm::Event evt,
const EcalDigiCollection digis,
EcalUncalibratedRecHitCollection result 
)
overrideprivatevirtual

Implements EcalUncalibRecHitWorkerBaseClass.

Definition at line 400 of file EcalUncalibRecHitWorkerMultiFit.cc.

References funct::abs(), activeBX, addPedestalUncertaintyEB_, addPedestalUncertaintyEE_, CustomPhysics_cfi::amplitude, amplitudeThreshEB_, amplitudeThreshEE_, Reference_intrackfit_cff::barrel, edm::DataFrameContainer::begin(), CCtargetTimePrecision_, CCtargetTimePrecisionForDelayedPulses_, CCTimeShiftWrtRations_, ecalcctiming::clockToNS, EcalUncalibRecHitRatioMethodAlgo< C >::computeAmplitude(), computeCC_, EcalUncalibRecHitRatioMethodAlgo< C >::computeTime(), ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), crossCorrelationMethod, crossCorrelationUseSlewCorrectionEB_, crossCorrelationUseSlewCorrectionEE_, doPrefitEB_, doPrefitEE_, dynamicPedestalsEB_, dynamicPedestalsEE_, EBamplitudeFitParameters_, EBtimeConstantTerm_, EcalTimeBiasCorrections::EBTimeCorrAmplitudeBins, EcalTimeBiasCorrections::EBTimeCorrShiftBins, EBtimeFitLimits_, EBtimeFitParameters_, EBtimeNconst_, EcalBarrel, EcalEndcap, EEamplitudeFitParameters_, EEtimeConstantTerm_, EcalTimeBiasCorrections::EETimeCorrAmplitudeBins, EcalTimeBiasCorrections::EETimeCorrShiftBins, EEtimeFitLimits_, EEtimeFitParameters_, EEtimeNconst_, edm::DataFrameContainer::empty(), edm::DataFrameContainer::end(), EcalUncalibRecHitRatioMethodAlgo< C >::fixMGPAslew(), EcalMGPAGainRatio::gain12Over6(), EcalMGPAGainRatio::gain6Over1(), ecalLiteDTU::gainId(), gains, gainSwitchUseMaxSampleEB_, gainSwitchUseMaxSampleEE_, EcalUncalibRecHitRatioMethodAlgo< C >::getCalculatedRecHit(), EcalTimeOffsetConstant::getEBValue(), EcalTimeOffsetConstant::getEEValue(), EcalTBWeights::getMap(), EcalWeightSet::getWeightsAfterGainSwitch(), EcalWeightSet::getWeightsBeforeGainSwitch(), grps, ecalpyutils::hashedIndex(), EBDetId::hashedIndex(), EEDetId::hashedIndex(), Matriplex::hypot(), mps_fire::i, EcalXtalGroupId::id(), EcalUncalibRecHitRatioMethodAlgo< C >::init(), ALPAKA_ACCELERATOR_NAMESPACE::vertexFinder::it, itime, dqmiolumiharvest::j, EcalUncalibratedRecHit::kHasSwitchToGain1, EcalUncalibratedRecHit::kHasSwitchToGain6, EcalUncalibratedRecHit::kOutOfTime, EcalUncalibratedRecHit::kSaturated, EcalUncalibRecHitMultiFitAlgo::makeRecHit(), EcalDataFrame::MAXSAMPLES, mitigateBadSamplesEB_, mitigateBadSamplesEE_, multiFitMethod_, noisecor(), offtime, outOfTimeThreshG12mEB_, outOfTimeThreshG12mEE_, outOfTimeThreshG12pEB_, outOfTimeThreshG12pEE_, outOfTimeThreshG61mEB_, outOfTimeThreshG61mEE_, outOfTimeThreshG61pEB_, outOfTimeThreshG61pEE_, EcalCondDBWriter_cfi::pedestal, peds, funct::pow(), prefitMaxChiSqEB_, prefitMaxChiSqEE_, edm::ESHandle< T >::product(), pulsecovariances, pulseshapes, ratioMethod, ratioMethod_barrel_, ratioMethod_endcap_, mps_fire::result, ecalGpuTask_cfi::sample, sampleMaskHand_, selectiveBadSampleCriteriaEB_, selectiveBadSampleCriteriaEE_, EcalUncalibRecHitMultiFitAlgo::setAddPedestalUncertainty(), EcalUncalibRecHitMultiFitAlgo::setDoPrefit(), EcalUncalibRecHitMultiFitAlgo::setDynamicPedestals(), EcalUncalibRecHitMultiFitAlgo::setGainSwitchUseMaxSample(), EcalUncalibRecHitMultiFitAlgo::setMitigateBadSamples(), EcalUncalibRecHitMultiFitAlgo::setPrefitMaxChiSq(), EcalUncalibRecHitMultiFitAlgo::setSelectiveBadSampleCriteria(), EcalUncalibRecHitMultiFitAlgo::setSimplifiedNoiseModelForGainSwitch(), simplifiedNoiseModelForGainSwitch_, BXVector< T >::size(), edm::DataFrameContainer::size(), mathSSE::sqrt(), EcalPulseShape::TEMPLATESAMPLES, DiMuonV_cfg::threshold, EcalUncalibRecHitTimeWeightsAlgo< C >::time(), timealgo_, timeCorrBias_, timeCorrection(), weights, weightsMethod, weightsMethod_barrel_, weightsMethod_endcap_, and wgts.

402  {
403  if (digis.empty())
404  return;
405 
406  // assume all digis come from the same subdetector (either barrel or endcap)
407  DetId detid(digis.begin()->id());
408  bool barrel = (detid.subdetId() == EcalBarrel);
409 
411  if (barrel) {
419  } else {
427  }
428 
429  FullSampleVector fullpulse(FullSampleVector::Zero());
430  FullSampleMatrix fullpulsecov(FullSampleMatrix::Zero());
431 
432  result.reserve(result.size() + digis.size());
433  for (auto itdg = digis.begin(); itdg != digis.end(); ++itdg) {
434  DetId detid(itdg->id());
435 
436  const EcalSampleMask* sampleMask_ = sampleMaskHand_.product();
437 
438  // intelligence for recHit computation
439  float offsetTime = 0;
440 
441  const EcalPedestals::Item* aped = nullptr;
442  const EcalMGPAGainRatio* aGain = nullptr;
443  const EcalXtalGroupId* gid = nullptr;
444  const EcalPulseShapes::Item* aPulse = nullptr;
445  const EcalPulseCovariances::Item* aPulseCov = nullptr;
446 
447  if (barrel) {
448  unsigned int hashedIndex = EBDetId(detid).hashedIndex();
449  aped = &peds->barrel(hashedIndex);
450  aGain = &gains->barrel(hashedIndex);
451  gid = &grps->barrel(hashedIndex);
452  aPulse = &pulseshapes->barrel(hashedIndex);
453  aPulseCov = &pulsecovariances->barrel(hashedIndex);
454  offsetTime = offtime->getEBValue();
455  } else {
456  unsigned int hashedIndex = EEDetId(detid).hashedIndex();
457  aped = &peds->endcap(hashedIndex);
458  aGain = &gains->endcap(hashedIndex);
459  gid = &grps->endcap(hashedIndex);
460  aPulse = &pulseshapes->endcap(hashedIndex);
461  aPulseCov = &pulsecovariances->endcap(hashedIndex);
462  offsetTime = offtime->getEEValue();
463  }
464 
465  double pedVec[3] = {aped->mean_x12, aped->mean_x6, aped->mean_x1};
466  double pedRMSVec[3] = {aped->rms_x12, aped->rms_x6, aped->rms_x1};
467  double gainRatios[3] = {1., aGain->gain12Over6(), aGain->gain6Over1() * aGain->gain12Over6()};
468 
469  for (int i = 0; i < EcalPulseShape::TEMPLATESAMPLES; ++i)
470  fullpulse(i + 7) = aPulse->pdfval[i];
471 
472  for (int i = 0; i < EcalPulseShape::TEMPLATESAMPLES; i++)
473  for (int j = 0; j < EcalPulseShape::TEMPLATESAMPLES; j++)
474  fullpulsecov(i + 7, j + 7) = aPulseCov->covval[i][j];
475 
476  // compute the right bin of the pulse shape using time calibration constants
478  EcalTimeCalibConstant itimeconst = 0;
479  if (it != itime->end()) {
480  itimeconst = (*it);
481  } else {
482  edm::LogError("EcalRecHitError") << "No time intercalib const found for xtal " << detid.rawId()
483  << "! something wrong with EcalTimeCalibConstants in your DB? ";
484  }
485 
486  int lastSampleBeforeSaturation = -2;
487  for (unsigned int iSample = 0; iSample < EcalDataFrame::MAXSAMPLES; iSample++) {
488  if (((EcalDataFrame)(*itdg)).sample(iSample).gainId() == 0) {
489  lastSampleBeforeSaturation = iSample - 1;
490  break;
491  }
492  }
493 
494  // === amplitude computation ===
495 
496  if (lastSampleBeforeSaturation == 4) { // saturation on the expected max sample
497  result.emplace_back((*itdg).id(), 4095 * 12, 0, 0, 0);
498  auto& uncalibRecHit = result.back();
499  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kSaturated);
500  // do not propagate the default chi2 = -1 value to the calib rechit (mapped to 64), set it to 0 when saturation
501  uncalibRecHit.setChi2(0);
502  } else if (lastSampleBeforeSaturation >=
503  -1) { // saturation on other samples: cannot extrapolate from the fourth one
504  int gainId = ((EcalDataFrame)(*itdg)).sample(5).gainId();
505  if (gainId == 0)
506  gainId = 3;
507  auto pedestal = pedVec[gainId - 1];
508  auto gainratio = gainRatios[gainId - 1];
509  double amplitude = ((double)(((EcalDataFrame)(*itdg)).sample(5).adc()) - pedestal) * gainratio;
510  result.emplace_back((*itdg).id(), amplitude, 0, 0, 0);
511  auto& uncalibRecHit = result.back();
512  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kSaturated);
513  // do not propagate the default chi2 = -1 value to the calib rechit (mapped to 64), set it to 0 when saturation
514  uncalibRecHit.setChi2(0);
515  } else {
516  // multifit
517  const SampleMatrixGainArray& noisecors = noisecor(barrel);
518 
519  result.push_back(multiFitMethod_.makeRecHit(*itdg, aped, aGain, noisecors, fullpulse, fullpulsecov, activeBX));
520  auto& uncalibRecHit = result.back();
521 
522  // === time computation ===
523  if (timealgo_ == ratioMethod) {
524  // ratio method
525  constexpr float clockToNsConstant = 25.;
526  constexpr float invClockToNs = 1. / clockToNsConstant;
527  if (not barrel) {
528  ratioMethod_endcap_.init(*itdg, *sampleMask_, pedVec, pedRMSVec, gainRatios);
533  double theTimeCorrectionEE = timeCorrection(
535 
536  uncalibRecHit.setJitter(crh.timeMax - 5 + theTimeCorrectionEE);
537  uncalibRecHit.setJitterError(
538  std::sqrt(std::pow(crh.timeError, 2) + std::pow(EEtimeConstantTerm_ * invClockToNs, 2)));
539 
540  // consider flagging as kOutOfTime only if above noise
541  if (uncalibRecHit.amplitude() > pedRMSVec[0] * amplitudeThreshEE_) {
542  float outOfTimeThreshP = outOfTimeThreshG12pEE_;
543  float outOfTimeThreshM = outOfTimeThreshG12mEE_;
544  // determine if gain has switched away from gainId==1 (x12 gain)
545  // and determine cuts (number of 'sigmas') to ose for kOutOfTime
546  // >3k ADC is necessasry condition for gain switch to occur
547  if (uncalibRecHit.amplitude() > 3000.) {
548  for (int iSample = 0; iSample < EEDataFrame::MAXSAMPLES; iSample++) {
549  int GainId = ((EcalDataFrame)(*itdg)).sample(iSample).gainId();
550  if (GainId != 1) {
551  outOfTimeThreshP = outOfTimeThreshG61pEE_;
552  outOfTimeThreshM = outOfTimeThreshG61mEE_;
553  break;
554  }
555  }
556  }
557  float correctedTime = (crh.timeMax - 5) * clockToNsConstant + itimeconst + offsetTime;
558  float cterm = EEtimeConstantTerm_;
559  float sigmaped = pedRMSVec[0]; // approx for lower gains
560  float nterm = EEtimeNconst_ * sigmaped / uncalibRecHit.amplitude();
561  float sigmat = std::sqrt(nterm * nterm + cterm * cterm);
562  if ((correctedTime > sigmat * outOfTimeThreshP) || (correctedTime < -sigmat * outOfTimeThreshM)) {
563  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kOutOfTime);
564  }
565  }
566 
567  } else {
568  ratioMethod_barrel_.init(*itdg, *sampleMask_, pedVec, pedRMSVec, gainRatios);
574 
575  double theTimeCorrectionEB = timeCorrection(
577 
578  uncalibRecHit.setJitter(crh.timeMax - 5 + theTimeCorrectionEB);
579  uncalibRecHit.setJitterError(std::hypot(crh.timeError, EBtimeConstantTerm_ / clockToNsConstant));
580 
581  // consider flagging as kOutOfTime only if above noise
582  if (uncalibRecHit.amplitude() > pedRMSVec[0] * amplitudeThreshEB_) {
583  float outOfTimeThreshP = outOfTimeThreshG12pEB_;
584  float outOfTimeThreshM = outOfTimeThreshG12mEB_;
585  // determine if gain has switched away from gainId==1 (x12 gain)
586  // and determine cuts (number of 'sigmas') to ose for kOutOfTime
587  // >3k ADC is necessasry condition for gain switch to occur
588  if (uncalibRecHit.amplitude() > 3000.) {
589  for (int iSample = 0; iSample < EBDataFrame::MAXSAMPLES; iSample++) {
590  int GainId = ((EcalDataFrame)(*itdg)).sample(iSample).gainId();
591  if (GainId != 1) {
592  outOfTimeThreshP = outOfTimeThreshG61pEB_;
593  outOfTimeThreshM = outOfTimeThreshG61mEB_;
594  break;
595  }
596  }
597  }
598  float correctedTime = (crh.timeMax - 5) * clockToNsConstant + itimeconst + offsetTime;
599  float cterm = EBtimeConstantTerm_;
600  float sigmaped = pedRMSVec[0]; // approx for lower gains
601  float nterm = EBtimeNconst_ * sigmaped / uncalibRecHit.amplitude();
602  float sigmat = std::sqrt(nterm * nterm + cterm * cterm);
603  if ((correctedTime > sigmat * outOfTimeThreshP) || (correctedTime < -sigmat * outOfTimeThreshM)) {
604  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kOutOfTime);
605  }
606  }
607  }
608  } else if (timealgo_ == weightsMethod) {
609  // weights method on the PU subtracted pulse shape
610  std::vector<double> amplitudes;
611  for (unsigned int ibx = 0; ibx < activeBX.size(); ++ibx)
612  amplitudes.push_back(uncalibRecHit.outOfTimeAmplitude(ibx));
613 
614  EcalTBWeights::EcalTDCId tdcid(1);
615  EcalTBWeights::EcalTBWeightMap const& wgtsMap = wgts->getMap();
616  EcalTBWeights::EcalTBWeightMap::const_iterator wit;
617  wit = wgtsMap.find(std::make_pair(*gid, tdcid));
618  if (wit == wgtsMap.end()) {
619  edm::LogError("EcalUncalibRecHitError")
620  << "No weights found for EcalGroupId: " << gid->id() << " and EcalTDCId: " << tdcid
621  << "\n skipping digi with id: " << detid.rawId();
622  result.pop_back();
623  continue;
624  }
625  const EcalWeightSet& wset = wit->second; // this is the EcalWeightSet
626 
629 
630  weights[0] = &mat1;
631  weights[1] = &mat2;
632 
633  double timerh;
634  if (detid.subdetId() == EcalEndcap) {
635  timerh = weightsMethod_endcap_.time(*itdg, amplitudes, aped, aGain, fullpulse, weights);
636  } else {
637  timerh = weightsMethod_barrel_.time(*itdg, amplitudes, aped, aGain, fullpulse, weights);
638  }
639  uncalibRecHit.setJitter(timerh);
640  uncalibRecHit.setJitterError(0.); // not computed with weights
641 
642  } else if (timealgo_ == crossCorrelationMethod) {
643  std::vector<double> amplitudes(activeBX.size());
644  for (unsigned int ibx = 0; ibx < activeBX.size(); ++ibx)
645  amplitudes[ibx] = uncalibRecHit.outOfTimeAmplitude(ibx);
646 
647  bool const doSlewCorrection =
649 
650  float jitter = computeCC_->computeTimeCC(
651  *itdg, amplitudes, aped, aGain, fullpulse, CCtargetTimePrecision_, true, doSlewCorrection) +
653  float noCorrectedJitter = computeCC_->computeTimeCC(*itdg,
654  amplitudes,
655  aped,
656  aGain,
657  fullpulse,
659  false,
660  doSlewCorrection) +
662 
663  uncalibRecHit.setJitter(jitter);
664  uncalibRecHit.setNonCorrectedTime(jitter, noCorrectedJitter);
665 
666  float retreivedNonCorrectedTime = uncalibRecHit.nonCorrectedTime();
667  float noCorrectedTime = ecalcctiming::clockToNS * noCorrectedJitter;
668  if (retreivedNonCorrectedTime > -29.0 && std::abs(retreivedNonCorrectedTime - noCorrectedTime) > 0.05) {
669  edm::LogError("EcalUncalibRecHitError") << "Problem with noCorrectedJitter: true value:" << noCorrectedTime
670  << "\t received: " << retreivedNonCorrectedTime << std::endl;
671  } //<<>>if (abs(retreivedNonCorrectedTime - noCorrectedJitter)>1);
672 
673  // consider flagging as kOutOfTime only if above noise
674  float threshold, cterm, timeNconst;
675  float timeThrP = 0.;
676  float timeThrM = 0.;
677  if (barrel) {
678  threshold = pedRMSVec[0] * amplitudeThreshEB_;
679  cterm = EBtimeConstantTerm_;
680  timeNconst = EBtimeNconst_;
681  timeThrP = outOfTimeThreshG12pEB_;
682  timeThrM = outOfTimeThreshG12mEB_;
683  if (uncalibRecHit.amplitude() > 3000.) { // Gain switch
684  for (int iSample = 0; iSample < EBDataFrame::MAXSAMPLES; iSample++) {
685  int GainId = ((EcalDataFrame)(*itdg)).sample(iSample).gainId();
686  if (GainId != 1) {
687  timeThrP = outOfTimeThreshG61pEB_;
688  timeThrM = outOfTimeThreshG61mEB_;
689  break;
690  }
691  }
692  }
693  } else { //EndCap
694  threshold = pedRMSVec[0] * amplitudeThreshEE_;
695  cterm = EEtimeConstantTerm_;
696  timeNconst = EEtimeNconst_;
697  timeThrP = outOfTimeThreshG12pEE_;
698  timeThrM = outOfTimeThreshG12mEE_;
699  if (uncalibRecHit.amplitude() > 3000.) { // Gain switch
700  for (int iSample = 0; iSample < EEDataFrame::MAXSAMPLES; iSample++) {
701  int GainId = ((EcalDataFrame)(*itdg)).sample(iSample).gainId();
702  if (GainId != 1) {
703  timeThrP = outOfTimeThreshG61pEE_;
704  timeThrM = outOfTimeThreshG61mEE_;
705  break;
706  }
707  }
708  }
709  }
710  if (uncalibRecHit.amplitude() > threshold) {
711  float correctedTime = noCorrectedJitter * ecalcctiming::clockToNS + itimeconst + offsetTime;
712  float sigmaped = pedRMSVec[0]; // approx for lower gains
713  float nterm = timeNconst * sigmaped / uncalibRecHit.amplitude();
714  float sigmat = std::sqrt(nterm * nterm + cterm * cterm);
715  if ((correctedTime > sigmat * timeThrP) || (correctedTime < -sigmat * timeThrM))
716  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kOutOfTime);
717  }
718 
719  } else { // no time method;
720  uncalibRecHit.setJitter(0.);
721  uncalibRecHit.setJitterError(0.);
722  }
723  }
724 
725  // set flags if gain switch has occurred
726  auto& uncalibRecHit = result.back();
727  if (((EcalDataFrame)(*itdg)).hasSwitchToGain6())
728  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kHasSwitchToGain6);
729  if (((EcalDataFrame)(*itdg)).hasSwitchToGain1())
730  uncalibRecHit.setFlagBit(EcalUncalibratedRecHit::kHasSwitchToGain1);
731  }
732 }
MPlex< T, D1, D2, N > hypot(const MPlex< T, D1, D2, N > &a, const MPlex< T, D1, D2, N > &b)
Definition: Matriplex.h:436
void computeAmplitude(std::vector< double > &amplitudeFitParameters)
std::vector< float > EBTimeCorrShiftBins
EcalUncalibRecHitMultiFitAlgo multiFitMethod_
const EcalTBWeightMap & getMap() const
Definition: EcalTBWeights.h:28
std::array< SampleMatrix, NGains > SampleMatrixGainArray
EcalUncalibRecHitTimeWeightsAlgo< EEDataFrame > weightsMethod_endcap_
Eigen::Matrix< double, FullSampleVectorSize, FullSampleVectorSize > FullSampleMatrix
double time(const C &dataFrame, const std::vector< double > &amplitudes, const EcalPedestals::Item *aped, const EcalMGPAGainRatio *aGain, const FullSampleVector &fullpulse, const EcalWeightSet::EcalWeightMatrix **weights)
Compute time.
Eigen::Matrix< double, FullSampleVectorSize, 1 > FullSampleVector
std::map< std::pair< EcalXtalGroupId, EcalTDCId >, EcalWeightSet > EcalTBWeightMap
Definition: EcalTBWeights.h:18
void computeTime(std::vector< double > &timeFitParameters, std::pair< double, double > &timeFitLimits, std::vector< double > &amplitudeFitParameters)
static const int TEMPLATESAMPLES
edm::ESHandle< EcalWeightXtalGroups > grps
math::Matrix< 3, 10 >::type EcalWeightMatrix
Definition: EcalWeightSet.h:19
Log< level::Error, false > LogError
constexpr const float clockToNS
Definition: EcalConstants.h:10
EcalUncalibRecHitRatioMethodAlgo< EBDataFrame > ratioMethod_barrel_
unsigned size(int bx) const
std::vector< float > EBTimeCorrAmplitudeBins
std::vector< float > EETimeCorrShiftBins
int hashedIndex(int ieta, int iphi)
Definition: EcalPyUtils.cc:36
T const * product() const
Definition: ESHandle.h:86
EcalUncalibRecHitRatioMethodAlgo< EEDataFrame > ratioMethod_endcap_
std::vector< float > EETimeCorrAmplitudeBins
T sqrt(T t)
Definition: SSEVec.h:23
edm::ESHandle< EcalPulseShapes > pulseshapes
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::ESHandle< EcalTimeCalibConstants > itime
double timeCorrection(float ampli, const std::vector< float > &amplitudeBins, const std::vector< float > &shiftBins)
unsigned int id() const
std::unique_ptr< EcalUncalibRecHitTimingCCAlgo > computeCC_
EcalWeightMatrix & getWeightsAfterGainSwitch()
Definition: EcalWeightSet.h:27
const SampleMatrix & noisecor(bool barrel, int gain) const
EcalUncalibratedRecHit makeRecHit(const EcalDataFrame &dataFrame, const EcalPedestals::Item *aped, const EcalMGPAGainRatio *aGain, const SampleMatrixGainArray &noisecors, const FullSampleVector &fullpulse, const FullSampleMatrix &fullpulsecov, const BXVector &activeBX)
compute rechits
const_iterator end() const
edm::ESHandle< EcalTimeBiasCorrections > timeCorrBias_
float gain12Over6() const
Definition: DetId.h:17
edm::ESHandle< EcalPulseCovariances > pulsecovariances
constexpr int gainId(sample_type sample)
get the gainId (2 bits)
EcalWeightMatrix & getWeightsBeforeGainSwitch()
Definition: EcalWeightSet.h:26
const_iterator begin() const
The iterator returned can not safely be used across threads.
std::vector< Item >::const_iterator const_iterator
float gain6Over1() const
EcalUncalibRecHitTimeWeightsAlgo< EBDataFrame > weightsMethod_barrel_
edm::ESHandle< EcalTimeOffsetConstant > offtime
float EcalTimeCalibConstant
int hashedIndex() const
get a compact index for arrays
Definition: EBDetId.h:82
static constexpr int MAXSAMPLES
Definition: EcalDataFrame.h:48
edm::ESHandle< EcalSampleMask > sampleMaskHand_
const EcalWeightSet::EcalWeightMatrix * weights[2]
void init(const C &dataFrame, const EcalSampleMask &sampleMask, const double *pedestals, const double *pedestalRMSes, const double *gainRatios)
int hashedIndex() const
Definition: EEDetId.h:183
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

◆ set() [1/2]

void EcalUncalibRecHitWorkerMultiFit::set ( const edm::EventSetup es)
overrideprivatevirtual

Implements EcalUncalibRecHitWorkerBaseClass.

Definition at line 274 of file EcalUncalibRecHitWorkerMultiFit.cc.

References funct::abs(), ampErrorCalculation_, EcalUncalibRecHitMultiFitAlgo::disableErrorCalculation(), EcalSamplesCorrelation::EBG12SamplesCorrelation, EcalSamplesCorrelation::EBG1SamplesCorrelation, EcalSamplesCorrelation::EBG6SamplesCorrelation, EcalSamplesCorrelation::EEG12SamplesCorrelation, EcalSamplesCorrelation::EEG1SamplesCorrelation, EcalSamplesCorrelation::EEG6SamplesCorrelation, gains, gainsToken_, edm::EventSetup::getHandle(), grps, grpsToken_, mps_fire::i, itime, itimeToken_, dqmiolumiharvest::j, multiFitMethod_, noiseConvariancesToken_, noisecors_, noisecovariances, offtime, offtimeToken_, peds, pedsToken_, pulseConvariancesToken_, pulsecovariances, pulseshapes, pulseShapesToken_, sampleMaskHand_, sampleMaskToken_, timeCorrBias_, timeCorrBiasToken_, wgts, and wgtsToken_.

274  {
275  // common setup
277  peds = es.getHandle(pedsToken_);
278 
279  // for the multifit method
285 
286  // weights parameters for the time
287  grps = es.getHandle(grpsToken_);
288  wgts = es.getHandle(wgtsToken_);
289 
290  // which of the samples need be used
292 
293  // for the ratio method
296 
297  // for the time correction methods
299 
300  int nnoise = SampleVector::RowsAtCompileTime;
301  SampleMatrix& noisecorEBg12 = noisecors_[1][0];
302  SampleMatrix& noisecorEBg6 = noisecors_[1][1];
303  SampleMatrix& noisecorEBg1 = noisecors_[1][2];
304  SampleMatrix& noisecorEEg12 = noisecors_[0][0];
305  SampleMatrix& noisecorEEg6 = noisecors_[0][1];
306  SampleMatrix& noisecorEEg1 = noisecors_[0][2];
307 
308  for (int i = 0; i < nnoise; ++i) {
309  for (int j = 0; j < nnoise; ++j) {
310  int vidx = std::abs(j - i);
311  noisecorEBg12(i, j) = noisecovariances->EBG12SamplesCorrelation[vidx];
312  noisecorEEg12(i, j) = noisecovariances->EEG12SamplesCorrelation[vidx];
313  noisecorEBg6(i, j) = noisecovariances->EBG6SamplesCorrelation[vidx];
314  noisecorEEg6(i, j) = noisecovariances->EEG6SamplesCorrelation[vidx];
315  noisecorEBg1(i, j) = noisecovariances->EBG1SamplesCorrelation[vidx];
316  noisecorEEg1(i, j) = noisecovariances->EEG1SamplesCorrelation[vidx];
317  }
318  }
319 }
edm::ESGetToken< EcalPulseCovariances, EcalPulseCovariancesRcd > pulseConvariancesToken_
std::array< SampleMatrixGainArray, 2 > noisecors_
EcalUncalibRecHitMultiFitAlgo multiFitMethod_
edm::ESGetToken< EcalPulseShapes, EcalPulseShapesRcd > pulseShapesToken_
std::vector< double > EBG12SamplesCorrelation
edm::ESGetToken< EcalGainRatios, EcalGainRatiosRcd > gainsToken_
edm::ESHandle< EcalWeightXtalGroups > grps
edm::ESGetToken< EcalSamplesCorrelation, EcalSamplesCorrelationRcd > noiseConvariancesToken_
std::vector< double > EBG6SamplesCorrelation
edm::ESGetToken< EcalPedestals, EcalPedestalsRcd > pedsToken_
edm::ESGetToken< EcalTBWeights, EcalTBWeightsRcd > wgtsToken_
edm::ESHandle< EcalPulseShapes > pulseshapes
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::ESHandle< EcalTimeCalibConstants > itime
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
edm::ESHandle< EcalTimeBiasCorrections > timeCorrBias_
edm::ESGetToken< EcalTimeOffsetConstant, EcalTimeOffsetConstantRcd > offtimeToken_
edm::ESHandle< EcalPulseCovariances > pulsecovariances
std::vector< double > EBG1SamplesCorrelation
edm::ESGetToken< EcalTimeBiasCorrections, EcalTimeBiasCorrectionsRcd > timeCorrBiasToken_
Eigen::Matrix< double, SampleVectorSize, SampleVectorSize > SampleMatrix
edm::ESHandle< EcalTimeOffsetConstant > offtime
std::vector< double > EEG1SamplesCorrelation
edm::ESGetToken< EcalSampleMask, EcalSampleMaskRcd > sampleMaskToken_
edm::ESGetToken< EcalTimeCalibConstants, EcalTimeCalibConstantsRcd > itimeToken_
edm::ESHandle< EcalSampleMask > sampleMaskHand_
std::vector< double > EEG12SamplesCorrelation
edm::ESHandle< EcalSamplesCorrelation > noisecovariances
std::vector< double > EEG6SamplesCorrelation
edm::ESGetToken< EcalWeightXtalGroups, EcalWeightXtalGroupsRcd > grpsToken_

◆ set() [2/2]

void EcalUncalibRecHitWorkerMultiFit::set ( const edm::Event evt)
overrideprivatevirtual

Reimplemented from EcalUncalibRecHitWorkerBaseClass.

Definition at line 321 of file EcalUncalibRecHitWorkerMultiFit.cc.

References activeBX, bunchSpacing_, bunchSpacingManual_, edm::Event::getByToken(), BXVector< T >::resize(), and useLumiInfoRunHeader_.

321  {
322  unsigned int bunchspacing = 450;
323 
324  if (useLumiInfoRunHeader_) {
325  edm::Handle<unsigned int> bunchSpacingH;
326  evt.getByToken(bunchSpacing_, bunchSpacingH);
327  bunchspacing = *bunchSpacingH;
328  } else {
329  bunchspacing = bunchSpacingManual_;
330  }
331 
333  if (bunchspacing == 25) {
334  activeBX.resize(10);
335  activeBX << -5, -4, -3, -2, -1, 0, 1, 2, 3, 4;
336  } else {
337  //50ns configuration otherwise (also for no pileup)
338  activeBX.resize(5);
339  activeBX << -4, -2, 0, 2, 4;
340  }
341  }
342 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
edm::EDGetTokenT< unsigned int > bunchSpacing_
void resize(int bx, unsigned size)

◆ timeCorrection()

double EcalUncalibRecHitWorkerMultiFit::timeCorrection ( float  ampli,
const std::vector< float > &  amplitudeBins,
const std::vector< float > &  shiftBins 
)
private

Amplitude-dependent time corrections; EE and EB have separate corrections: EXtimeCorrAmplitudes (ADC) and EXtimeCorrShifts (ns) need to have the same number of elements Bins must be ordered in amplitude. First-last bins take care of under-overflows.

The algorithm is the same for EE and EB, only the correction vectors are different.

Returns
Jitter (in clock cycles) which will be added to UncalibRechit.setJitter(), 0 if no correction is applied.

Definition at line 353 of file EcalUncalibRecHitWorkerMultiFit.cc.

References newFWLiteAna::bin, ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), and createfilelist::int.

Referenced by run().

355  {
356  // computed initially in ns. Than turned in the BX's, as
357  // EcalUncalibratedRecHit need be.
358  double theCorrection = 0;
359 
360  // sanity check for arrays
361  if (amplitudeBins.empty()) {
362  edm::LogError("EcalRecHitError") << "timeCorrAmplitudeBins is empty, forcing no time bias corrections.";
363 
364  return 0;
365  }
366 
367  if (amplitudeBins.size() != shiftBins.size()) {
368  edm::LogError("EcalRecHitError") << "Size of timeCorrAmplitudeBins different from "
369  "timeCorrShiftBins. Forcing no time bias corrections. ";
370 
371  return 0;
372  }
373 
374  // FIXME? what about a binary search?
375  int myBin = -1;
376  for (int bin = 0; bin < (int)amplitudeBins.size(); bin++) {
377  if (ampli > amplitudeBins[bin]) {
378  myBin = bin;
379  } else {
380  break;
381  }
382  }
383 
384  if (myBin == -1) {
385  theCorrection = shiftBins[0];
386  } else if (myBin == ((int)(amplitudeBins.size() - 1))) {
387  theCorrection = shiftBins[myBin];
388  } else {
389  // interpolate linearly between two assingned points
390  theCorrection = (shiftBins[myBin + 1] - shiftBins[myBin]);
391  theCorrection *= (((double)ampli) - amplitudeBins[myBin]) / (amplitudeBins[myBin + 1] - amplitudeBins[myBin]);
392  theCorrection += shiftBins[myBin];
393  }
394 
395  // convert ns into clocks
396  constexpr double inv25 = 1. / 25.;
397  return theCorrection * inv25;
398 }
Log< level::Error, false > LogError

Member Data Documentation

◆ activeBX

BXVector EcalUncalibRecHitWorkerMultiFit::activeBX
private

Definition at line 82 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), run(), and set().

◆ addPedestalUncertaintyEB_

double EcalUncalibRecHitWorkerMultiFit::addPedestalUncertaintyEB_
private

Definition at line 118 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ addPedestalUncertaintyEE_

double EcalUncalibRecHitWorkerMultiFit::addPedestalUncertaintyEE_
private

Definition at line 119 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ ampErrorCalculation_

bool EcalUncalibRecHitWorkerMultiFit::ampErrorCalculation_
private

Definition at line 83 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ amplitudeThreshEB_

double EcalUncalibRecHitWorkerMultiFit::amplitudeThreshEB_
private

Definition at line 145 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ amplitudeThreshEE_

double EcalUncalibRecHitWorkerMultiFit::amplitudeThreshEE_
private

Definition at line 146 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ bunchSpacing_

edm::EDGetTokenT<unsigned int> EcalUncalibRecHitWorkerMultiFit::bunchSpacing_
private

Definition at line 88 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ bunchSpacingManual_

int EcalUncalibRecHitWorkerMultiFit::bunchSpacingManual_
private

Definition at line 87 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ CCminTimeToBeLateMax_

double EcalUncalibRecHitWorkerMultiFit::CCminTimeToBeLateMax_
private

Definition at line 168 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit().

◆ CCminTimeToBeLateMin_

double EcalUncalibRecHitWorkerMultiFit::CCminTimeToBeLateMin_
private

Definition at line 167 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit().

◆ CCtargetTimePrecision_

double EcalUncalibRecHitWorkerMultiFit::CCtargetTimePrecision_
private

Definition at line 170 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ CCtargetTimePrecisionForDelayedPulses_

double EcalUncalibRecHitWorkerMultiFit::CCtargetTimePrecisionForDelayedPulses_
private

Definition at line 171 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ CCTimeShiftWrtRations_

double EcalUncalibRecHitWorkerMultiFit::CCTimeShiftWrtRations_
private

Definition at line 169 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ chi2ThreshEB_

double EcalUncalibRecHitWorkerMultiFit::chi2ThreshEB_
private

Definition at line 162 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ chi2ThreshEE_

double EcalUncalibRecHitWorkerMultiFit::chi2ThreshEE_
private

Definition at line 163 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ computeCC_

std::unique_ptr<EcalUncalibRecHitTimingCCAlgo> EcalUncalibRecHitWorkerMultiFit::computeCC_
private

Definition at line 166 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ crossCorrelationUseSlewCorrectionEB_

bool EcalUncalibRecHitWorkerMultiFit::crossCorrelationUseSlewCorrectionEB_
private

Definition at line 172 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ crossCorrelationUseSlewCorrectionEE_

bool EcalUncalibRecHitWorkerMultiFit::crossCorrelationUseSlewCorrectionEE_
private

Definition at line 173 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ doPrefitEB_

bool EcalUncalibRecHitWorkerMultiFit::doPrefitEB_
private

Definition at line 106 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ doPrefitEE_

bool EcalUncalibRecHitWorkerMultiFit::doPrefitEE_
private

Definition at line 107 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ dynamicPedestalsEB_

bool EcalUncalibRecHitWorkerMultiFit::dynamicPedestalsEB_
private

Definition at line 110 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ dynamicPedestalsEE_

bool EcalUncalibRecHitWorkerMultiFit::dynamicPedestalsEE_
private

Definition at line 111 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EBamplitudeFitParameters_

std::vector<double> EcalUncalibRecHitWorkerMultiFit::EBamplitudeFitParameters_
private

Definition at line 125 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ ebPulseShape_

std::vector<double> EcalUncalibRecHitWorkerMultiFit::ebPulseShape_
private

Definition at line 156 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ ebSpikeThresh_

double EcalUncalibRecHitWorkerMultiFit::ebSpikeThresh_
private

Definition at line 147 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ EBtimeConstantTerm_

double EcalUncalibRecHitWorkerMultiFit::EBtimeConstantTerm_
private

Definition at line 133 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EBtimeFitLimits_

std::pair<double, double> EcalUncalibRecHitWorkerMultiFit::EBtimeFitLimits_
private

Definition at line 127 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EBtimeFitParameters_

std::vector<double> EcalUncalibRecHitWorkerMultiFit::EBtimeFitParameters_
private

Definition at line 123 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EBtimeNconst_

double EcalUncalibRecHitWorkerMultiFit::EBtimeNconst_
private

Definition at line 135 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EEamplitudeFitParameters_

std::vector<double> EcalUncalibRecHitWorkerMultiFit::EEamplitudeFitParameters_
private

Definition at line 126 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ eePulseShape_

std::vector<double> EcalUncalibRecHitWorkerMultiFit::eePulseShape_
private

Definition at line 157 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ EEtimeConstantTerm_

double EcalUncalibRecHitWorkerMultiFit::EEtimeConstantTerm_
private

Definition at line 134 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EEtimeFitLimits_

std::pair<double, double> EcalUncalibRecHitWorkerMultiFit::EEtimeFitLimits_
private

Definition at line 128 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EEtimeFitParameters_

std::vector<double> EcalUncalibRecHitWorkerMultiFit::EEtimeFitParameters_
private

Definition at line 124 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ EEtimeNconst_

double EcalUncalibRecHitWorkerMultiFit::EEtimeNconst_
private

Definition at line 136 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ gains

edm::ESHandle<EcalGainRatios> EcalUncalibRecHitWorkerMultiFit::gains
private

Definition at line 66 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ gainsToken_

edm::ESGetToken<EcalGainRatios, EcalGainRatiosRcd> EcalUncalibRecHitWorkerMultiFit::gainsToken_
private

Definition at line 67 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ gainSwitchUseMaxSampleEB_

bool EcalUncalibRecHitWorkerMultiFit::gainSwitchUseMaxSampleEB_
private

Definition at line 114 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ gainSwitchUseMaxSampleEE_

bool EcalUncalibRecHitWorkerMultiFit::gainSwitchUseMaxSampleEE_
private

Definition at line 115 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ grps

edm::ESHandle<EcalWeightXtalGroups> EcalUncalibRecHitWorkerMultiFit::grps
private

Definition at line 99 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ grpsToken_

edm::ESGetToken<EcalWeightXtalGroups, EcalWeightXtalGroupsRcd> EcalUncalibRecHitWorkerMultiFit::grpsToken_
private

Definition at line 100 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ itime

edm::ESHandle<EcalTimeCalibConstants> EcalUncalibRecHitWorkerMultiFit::itime
private

Definition at line 152 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ itimeToken_

edm::ESGetToken<EcalTimeCalibConstants, EcalTimeCalibConstantsRcd> EcalUncalibRecHitWorkerMultiFit::itimeToken_
private

Definition at line 153 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ kPoorRecoFlagEB_

bool EcalUncalibRecHitWorkerMultiFit::kPoorRecoFlagEB_
private

Definition at line 160 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ kPoorRecoFlagEE_

bool EcalUncalibRecHitWorkerMultiFit::kPoorRecoFlagEE_
private

Definition at line 161 of file EcalUncalibRecHitWorkerMultiFit.cc.

◆ mitigateBadSamplesEB_

bool EcalUncalibRecHitWorkerMultiFit::mitigateBadSamplesEB_
private

Definition at line 112 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ mitigateBadSamplesEE_

bool EcalUncalibRecHitWorkerMultiFit::mitigateBadSamplesEE_
private

Definition at line 113 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ multiFitMethod_

EcalUncalibRecHitMultiFitAlgo EcalUncalibRecHitWorkerMultiFit::multiFitMethod_
private

Definition at line 85 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ noiseConvariancesToken_

edm::ESGetToken<EcalSamplesCorrelation, EcalSamplesCorrelationRcd> EcalUncalibRecHitWorkerMultiFit::noiseConvariancesToken_
private

Definition at line 69 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ noisecors_

std::array<SampleMatrixGainArray, 2> EcalUncalibRecHitWorkerMultiFit::noisecors_
private

Definition at line 81 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by noisecor(), and set().

◆ noisecovariances

edm::ESHandle<EcalSamplesCorrelation> EcalUncalibRecHitWorkerMultiFit::noisecovariances
private

Definition at line 68 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by set().

◆ offtime

edm::ESHandle<EcalTimeOffsetConstant> EcalUncalibRecHitWorkerMultiFit::offtime
private

Definition at line 154 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ offtimeToken_

edm::ESGetToken<EcalTimeOffsetConstant, EcalTimeOffsetConstantRcd> EcalUncalibRecHitWorkerMultiFit::offtimeToken_
private

Definition at line 155 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ outOfTimeThreshG12mEB_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG12mEB_
private

Definition at line 138 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG12mEE_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG12mEE_
private

Definition at line 142 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG12pEB_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG12pEB_
private

Definition at line 137 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG12pEE_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG12pEE_
private

Definition at line 141 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG61mEB_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG61mEB_
private

Definition at line 140 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG61mEE_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG61mEE_
private

Definition at line 144 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG61pEB_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG61pEB_
private

Definition at line 139 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ outOfTimeThreshG61pEE_

double EcalUncalibRecHitWorkerMultiFit::outOfTimeThreshG61pEE_
private

Definition at line 143 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ peds

edm::ESHandle<EcalPedestals> EcalUncalibRecHitWorkerMultiFit::peds
private

Definition at line 64 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ pedsToken_

edm::ESGetToken<EcalPedestals, EcalPedestalsRcd> EcalUncalibRecHitWorkerMultiFit::pedsToken_
private

Definition at line 65 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ prefitMaxChiSqEB_

double EcalUncalibRecHitWorkerMultiFit::prefitMaxChiSqEB_
private

Definition at line 108 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ prefitMaxChiSqEE_

double EcalUncalibRecHitWorkerMultiFit::prefitMaxChiSqEE_
private

Definition at line 109 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ pulseConvariancesToken_

edm::ESGetToken<EcalPulseCovariances, EcalPulseCovariancesRcd> EcalUncalibRecHitWorkerMultiFit::pulseConvariancesToken_
private

Definition at line 73 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ pulsecovariances

edm::ESHandle<EcalPulseCovariances> EcalUncalibRecHitWorkerMultiFit::pulsecovariances
private

Definition at line 72 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ pulseshapes

edm::ESHandle<EcalPulseShapes> EcalUncalibRecHitWorkerMultiFit::pulseshapes
private

Definition at line 70 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ pulseShapesToken_

edm::ESGetToken<EcalPulseShapes, EcalPulseShapesRcd> EcalUncalibRecHitWorkerMultiFit::pulseShapesToken_
private

Definition at line 71 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ ratioMethod_barrel_

EcalUncalibRecHitRatioMethodAlgo<EBDataFrame> EcalUncalibRecHitWorkerMultiFit::ratioMethod_barrel_
private

Definition at line 130 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run().

◆ ratioMethod_endcap_

EcalUncalibRecHitRatioMethodAlgo<EEDataFrame> EcalUncalibRecHitWorkerMultiFit::ratioMethod_endcap_
private

Definition at line 131 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run().

◆ sampleMaskHand_

edm::ESHandle<EcalSampleMask> EcalUncalibRecHitWorkerMultiFit::sampleMaskHand_
private

Definition at line 91 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ sampleMaskToken_

edm::ESGetToken<EcalSampleMask, EcalSampleMaskRcd> EcalUncalibRecHitWorkerMultiFit::sampleMaskToken_
private

Definition at line 92 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ selectiveBadSampleCriteriaEB_

bool EcalUncalibRecHitWorkerMultiFit::selectiveBadSampleCriteriaEB_
private

Definition at line 116 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ selectiveBadSampleCriteriaEE_

bool EcalUncalibRecHitWorkerMultiFit::selectiveBadSampleCriteriaEE_
private

Definition at line 117 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ simplifiedNoiseModelForGainSwitch_

bool EcalUncalibRecHitWorkerMultiFit::simplifiedNoiseModelForGainSwitch_
private

Definition at line 120 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ timealgo_

TimeAlgo EcalUncalibRecHitWorkerMultiFit::timealgo_ = noMethod
private

Definition at line 96 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and run().

◆ timeCorrBias_

edm::ESHandle<EcalTimeBiasCorrections> EcalUncalibRecHitWorkerMultiFit::timeCorrBias_
private

Definition at line 149 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ timeCorrBiasToken_

edm::ESGetToken<EcalTimeBiasCorrections, EcalTimeBiasCorrectionsRcd> EcalUncalibRecHitWorkerMultiFit::timeCorrBiasToken_
private

Definition at line 150 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ useLumiInfoRunHeader_

bool EcalUncalibRecHitWorkerMultiFit::useLumiInfoRunHeader_
private

Definition at line 84 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().

◆ weights

const EcalWeightSet::EcalWeightMatrix* EcalUncalibRecHitWorkerMultiFit::weights[2]
private

Definition at line 103 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run().

◆ weightsMethod_barrel_

EcalUncalibRecHitTimeWeightsAlgo<EBDataFrame> EcalUncalibRecHitWorkerMultiFit::weightsMethod_barrel_
private

Definition at line 104 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run().

◆ weightsMethod_endcap_

EcalUncalibRecHitTimeWeightsAlgo<EEDataFrame> EcalUncalibRecHitWorkerMultiFit::weightsMethod_endcap_
private

Definition at line 105 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run().

◆ wgts

edm::ESHandle<EcalTBWeights> EcalUncalibRecHitWorkerMultiFit::wgts
private

Definition at line 101 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by run(), and set().

◆ wgtsToken_

edm::ESGetToken<EcalTBWeights, EcalTBWeightsRcd> EcalUncalibRecHitWorkerMultiFit::wgtsToken_
private

Definition at line 102 of file EcalUncalibRecHitWorkerMultiFit.cc.

Referenced by EcalUncalibRecHitWorkerMultiFit(), and set().