File indexing completed on 2023-03-17 10:41:36
0001
0002
0003
0004
0005
0006
0007
0008 #include "DataFormats/EcalRawData/interface/EcalDCCHeaderBlock.h"
0009 #include "DataFormats/EcalRawData/interface/EcalRawDataCollections.h"
0010
0011 #include "TFile.h"
0012 #include "TString.h"
0013
0014 #include "CalibCalorimetry/EcalPedestalOffsets/interface/testChannel.h"
0015
0016
0017 testChannel::testChannel(const edm::ParameterSet ¶mSet)
0018 : m_digiProducerToken(
0019 consumes<EBDigiCollection>(edm::InputTag(paramSet.getParameter<std::string>("digiProducer")))),
0020 m_headerProducerToken(
0021 consumes<EcalRawDataCollection>(edm::InputTag(paramSet.getParameter<std::string>("headerProducer")))),
0022 m_xmlFile(paramSet.getParameter<std::string>("xmlFile")),
0023 m_DACmin(paramSet.getParameter<int>("DACmin")),
0024 m_DACmax(paramSet.getParameter<int>("DACmax")),
0025 m_RMSmax(paramSet.getParameter<double>("RMSmax")),
0026 m_bestPed(paramSet.getParameter<int>("bestPed")),
0027 m_xtal(paramSet.getParameter<int>("xtal")),
0028 m_pedVSDAC("pedVSDAC", "pedVSDAC", 100, 150, 250, m_DACmax - m_DACmin, m_DACmin, m_DACmax),
0029 m_singlePedVSDAC_1("singlePedVSDAC_1",
0030 "pedVSDAC (g1) for xtal " + TString(m_xtal),
0031 100,
0032 150,
0033 250,
0034 m_DACmax - m_DACmin,
0035 m_DACmin,
0036 m_DACmax),
0037 m_singlePedVSDAC_2("singlePedVSDAC_2",
0038 "pedVSDAC (g2) for xtal " + TString(m_xtal),
0039 100,
0040 150,
0041 250,
0042 m_DACmax - m_DACmin,
0043 m_DACmin,
0044 m_DACmax),
0045 m_singlePedVSDAC_3("singlePedVSDAC_3",
0046 "pedVSDAC (g3) for xtal " + TString(m_xtal),
0047 100,
0048 150,
0049 250,
0050 m_DACmax - m_DACmin,
0051 m_DACmin,
0052 m_DACmax) {
0053 edm::LogInfo("testChannel") << " reading "
0054 << " m_DACmin: " << m_DACmin << " m_DACmax: " << m_DACmax << " m_RMSmax: " << m_RMSmax
0055 << " m_bestPed: " << m_bestPed;
0056 }
0057
0058
0059 testChannel::~testChannel() {}
0060
0061
0062 void testChannel::beginJob() { LogDebug("testChannel") << "entering beginJob ..."; }
0063
0064
0065 void testChannel::analyze(edm::Event const &event, edm::EventSetup const &eventSetup) {
0066 LogDebug("testChannel") << "entering analyze ...";
0067
0068
0069
0070 const edm::Handle<EcalRawDataCollection> &DCCHeaders = event.getHandle(m_headerProducerToken);
0071 if (!DCCHeaders.isValid()) {
0072 edm::LogError("testChannel") << "Error! can't get the product for EcalRawDataCollection";
0073 }
0074
0075 std::map<int, int> DACvalues;
0076
0077
0078 for (EcalRawDataCollection::const_iterator headerItr = DCCHeaders->begin(); headerItr != DCCHeaders->end();
0079 ++headerItr) {
0080 EcalDCCHeaderBlock::EcalDCCEventSettings settings = headerItr->getEventSettings();
0081 DACvalues[getHeaderSMId(headerItr->id())] = settings.ped_offset;
0082
0083
0084 }
0085
0086
0087
0088 const edm::Handle<EBDigiCollection> &pDigis = event.getHandle(m_digiProducerToken);
0089 if (!pDigis.isValid()) {
0090 edm::LogError("testChannel") << "Error! can't get the product for EBDigiCollection";
0091 }
0092
0093
0094 for (EBDigiCollection::const_iterator itdigi = pDigis->begin(); itdigi != pDigis->end(); ++itdigi) {
0095 EBDataFrame df(*itdigi);
0096 int gainId = df.sample(0).gainId();
0097 int crystalId = EBDetId(itdigi->id()).ic();
0098 int smId = EBDetId(itdigi->id()).ism();
0099
0100 edm::LogInfo("testChannel") << "channel " << event.id() << "\tcry: " << crystalId << "\tG: " << gainId
0101 << "\tDAC: " << DACvalues[smId];
0102
0103
0104 for (int iSample = 0; iSample < EBDataFrame::MAXSAMPLES; ++iSample) {
0105 edm::LogInfo("testChannel") << "\t`-->" << df.sample(iSample).adc();
0106 m_pedVSDAC.Fill(df.sample(iSample).adc(), DACvalues[smId]);
0107 if (crystalId == m_xtal) {
0108 if (gainId == 1)
0109 m_singlePedVSDAC_1.Fill(df.sample(iSample).adc(), DACvalues[smId]);
0110 if (gainId == 2)
0111 m_singlePedVSDAC_2.Fill(df.sample(iSample).adc(), DACvalues[smId]);
0112 if (gainId == 3)
0113 m_singlePedVSDAC_3.Fill(df.sample(iSample).adc(), DACvalues[smId]);
0114 }
0115 }
0116 }
0117 }
0118
0119
0120 void testChannel::endJob() {
0121 char ccout[80];
0122 sprintf(ccout, "out_%d.root", m_xtal);
0123 TFile out(ccout, "RECREATE");
0124 out.cd();
0125 m_pedVSDAC.Write();
0126 m_singlePedVSDAC_1.Write();
0127 m_singlePedVSDAC_2.Write();
0128 m_singlePedVSDAC_3.Write();
0129 TProfile *profilo1 = m_singlePedVSDAC_1.ProfileX();
0130 TProfile *profilo2 = m_singlePedVSDAC_2.ProfileX();
0131 TProfile *profilo3 = m_singlePedVSDAC_3.ProfileX();
0132 profilo1->Write("singleProfile_1");
0133 profilo2->Write("singleProfile_2");
0134 profilo3->Write("singleProfile_3");
0135 out.Close();
0136 }
0137
0138
0139
0140
0141
0142
0143
0144 int testChannel::getHeaderSMId(const int headerId) {
0145
0146
0147 return 1;
0148 }
0149
0150 void testChannel::subscribe() {}
0151
0152 void testChannel::subscribeNew() {}
0153
0154 void testChannel::unsubscribe() {}