873 std::map<EcalLogicID, MonTestPulseDat>
amplitude;
874 std::map<EcalLogicID, MonPulseShapeDat> shape;
875 std::map<EcalLogicID, MonPNMGPADat> pnAmplitude;
877 MESet
const& amplitudeME(
source_.at(
"Amplitude"));
878 MESet
const& shapeME(
source_.at(
"Shape"));
879 MESet
const& qualityME(
source_.at(
"Quality"));
881 MESet
const& pnAmplitudeME(
source_.at(
"PNAmplitude"));
882 MESet
const& pnPedestalME(
source_.at(
"PNPedestal"));
883 MESet
const& pnQualityME(
source_.at(
"PNQuality"));
885 for(std::map<int, unsigned>::iterator gainItr(
gainToME_.begin()); gainItr !=
gainToME_.end(); ++gainItr){
886 int gain(gainItr->first);
887 int iM(gainItr->second);
889 static_cast<MESetMulti const&
>(amplitudeME).use(iM);
890 static_cast<MESetMulti const&
>(shapeME).use(iM);
891 static_cast<MESetMulti const&
>(qualityME).use(iM);
893 MESet::const_iterator aEnd(amplitudeME.end());
894 MESet::const_iterator qItr(qualityME);
895 for(MESet::const_iterator aItr(amplitudeME.beginChannel()); aItr != aEnd; aItr.toNextChannel()){
896 float entries(aItr->getBinEntries());
897 if(entries < 1.)
continue;
901 float mean(aItr->getBinContent());
905 if(amplitude.find(logicID) == amplitude.end()){
907 insertion.setADCMeanG1(-1.);
908 insertion.setADCRMSG1(-1.);
909 insertion.setADCMeanG6(-1.);
910 insertion.setADCRMSG6(-1.);
911 insertion.setADCMeanG12(-1.);
912 insertion.setADCRMSG12(-1.);
913 insertion.setTaskStatus(
false);
932 int channelStatus(qItr->getBinContent());
933 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
935 data.setTaskStatus(
true);
940 for(
unsigned iSM(0); iSM < 54; ++iSM){
941 std::vector<float>
samples(10, 0.);
943 unsigned nId(
ids.size());
946 for(
unsigned iD(0); iD < nId; ++iD){
951 if(shapeME.getBinEntries(
id, 1) < 1.)
continue;
955 for(
int i(0);
i < 10; ++
i)
956 samples[
i] += shapeME.getBinContent(
id,
i + 1);
961 for(
int i(0);
i < 10; ++
i)
964 if(shape.find(logicID) == shape.end()){
966 std::vector<float> defval(10, -1.);
967 insertion.setSamples(defval, 1);
968 insertion.setSamples(defval, 6);
969 insertion.setSamples(defval, 12);
977 for(std::map<int, unsigned>::iterator gainItr(
pnGainToME_.begin()); gainItr !=
pnGainToME_.end(); ++gainItr){
978 int gain(gainItr->first);
979 int iM(gainItr->second);
981 static_cast<MESetMulti const&
>(pnAmplitudeME).use(iM);
982 static_cast<MESetMulti const&
>(pnQualityME).use(iM);
984 for(
unsigned iMD(0); iMD <
memDCC.size(); ++iMD){
985 unsigned iDCC(
memDCC[iMD]);
989 for(
unsigned iPN(1); iPN <= 10; ++iPN){
992 float entries(pnAmplitudeME.getBinEntries(pnid));
993 if(entries < 1.)
continue;
995 float mean(pnAmplitudeME.getBinContent(pnid));
996 float rms(pnAmplitudeME.getBinError(pnid) *
std::sqrt(entries));
997 float pedestalEntries(pnPedestalME.getBinEntries(pnid));
998 float pedestalMean(pnPedestalME.getBinContent(pnid));
999 float pedestalRms(pnPedestalME.getBinError(pnid) *
std::sqrt(pedestalEntries));
1002 if(pnAmplitude.find(logicID) == pnAmplitude.end()){
1004 insertion.setADCMeanG1(-1.);
1005 insertion.setADCRMSG1(-1.);
1006 insertion.setPedMeanG1(-1.);
1007 insertion.setPedRMSG1(-1.);
1008 insertion.setADCMeanG16(-1.);
1009 insertion.setADCRMSG16(-1.);
1010 insertion.setPedMeanG16(-1.);
1011 insertion.setPedRMSG16(-1.);
1012 insertion.setTaskStatus(
false);
1027 data.setPedMeanG16(pedestalMean);
1028 data.setPedRMSG16(pedestalRms);
1032 int channelStatus(pnQualityME.getBinContent(pnid));
1033 bool channelBad(channelStatus ==
kBad || channelStatus ==
kMBad);
1035 data.setTaskStatus(
true);
1043 if(!amplitude.empty())
1047 if(!pnAmplitude.empty())
1050 catch(std::runtime_error&
e){
1051 if(
std::string(e.what()).
find(
"unique constraint") != std::string::npos)
std::vector< unsigned > const memDCC
EcalElectronicsMapping const * getElectronicsMap()
std::map< int, unsigned > gainToME_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
void insertDataArraySet(const std::map< EcalLogicID, DATT > *data, IOVT *iov) noexcept(false)
std::map< int, unsigned > pnGainToME_
bool qualityOK(int _quality)
EcalLogicID lmPNID(EcalPnDiodeDetId const &)
char data[epos_bytes_allocation]
void insertDataSet(const std::map< EcalLogicID, DATT > *data, IOVT *iov) noexcept(false)
EcalLogicID crystalID(DetId const &)