Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "CalibCalorimetry/EcalTrivialCondModules/interface/EcalTrivialObjectAnalyzer.h"
00007
00008 #include <stdexcept>
00009 #include <string>
00010 #include <iostream>
00011 #include <iomanip>
00012 #include <map>
00013 #include <vector>
00014 #include "FWCore/Framework/interface/ESHandle.h"
00015
00016 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00017
00018 #include "CondFormats/EcalObjects/interface/EcalPedestals.h"
00019 #include "CondFormats/DataRecord/interface/EcalPedestalsRcd.h"
00020
00021 #include "CondFormats/EcalObjects/interface/EcalXtalGroupId.h"
00022 #include "CondFormats/EcalObjects/interface/EcalWeightXtalGroups.h"
00023 #include "CondFormats/DataRecord/interface/EcalWeightXtalGroupsRcd.h"
00024
00025 #include "CondFormats/EcalObjects/interface/EcalWeightSet.h"
00026 #include "CondFormats/EcalObjects/interface/EcalTBWeights.h"
00027 #include "CondFormats/DataRecord/interface/EcalTBWeightsRcd.h"
00028
00029 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"
00030 #include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h"
00031
00032 #include "CondFormats/EcalObjects/interface/EcalIntercalibErrors.h"
00033 #include "CondFormats/DataRecord/interface/EcalIntercalibErrorsRcd.h"
00034
00035 #include "CondFormats/EcalObjects/interface/EcalTimeCalibConstants.h"
00036 #include "CondFormats/DataRecord/interface/EcalTimeCalibConstantsRcd.h"
00037
00038 #include "CondFormats/EcalObjects/interface/EcalTimeCalibErrors.h"
00039 #include "CondFormats/DataRecord/interface/EcalTimeCalibErrorsRcd.h"
00040
00041 #include "CondFormats/EcalObjects/interface/EcalMGPAGainRatio.h"
00042 #include "CondFormats/EcalObjects/interface/EcalGainRatios.h"
00043 #include "CondFormats/DataRecord/interface/EcalGainRatiosRcd.h"
00044
00045 #include "CondFormats/EcalObjects/interface/EcalADCToGeVConstant.h"
00046 #include "CondFormats/DataRecord/interface/EcalADCToGeVConstantRcd.h"
00047
00048 #include "CondFormats/EcalObjects/interface/EcalLaserAlphas.h"
00049 #include "CondFormats/DataRecord/interface/EcalLaserAlphasRcd.h"
00050
00051 #include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatiosRef.h"
00052 #include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRefRcd.h"
00053
00054 #include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatios.h"
00055 #include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRcd.h"
00056
00057 #include "CondFormats/EcalObjects/interface/EcalClusterLocalContCorrParameters.h"
00058 #include "CondFormats/DataRecord/interface/EcalClusterLocalContCorrParametersRcd.h"
00059 #include "CondFormats/EcalObjects/interface/EcalClusterCrackCorrParameters.h"
00060 #include "CondFormats/DataRecord/interface/EcalClusterCrackCorrParametersRcd.h"
00061 #include "CondFormats/EcalObjects/interface/EcalClusterEnergyCorrectionParameters.h"
00062 #include "CondFormats/DataRecord/interface/EcalClusterEnergyCorrectionParametersRcd.h"
00063 #include "CondFormats/EcalObjects/interface/EcalClusterEnergyUncertaintyParameters.h"
00064 #include "CondFormats/DataRecord/interface/EcalClusterEnergyUncertaintyParametersRcd.h"
00065
00066 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
00067 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00068
00069 #include "CLHEP/Matrix/Matrix.h"
00070
00071 using namespace std;
00072
00073 void EcalTrivialObjectAnalyzer::analyze(const edm::Event& e, const edm::EventSetup& context)
00074 {
00075 using namespace edm::eventsetup;
00076
00077 std::cout <<">>> EcalTrivialObjectAnalyzer: processing run "<<e.id().run() << " event: " << e.id().event() << std::endl;
00078
00079 edm::ESHandle<EcalPedestals> pPeds;
00080 context.get<EcalPedestalsRcd>().get(pPeds);
00081
00082
00083 edm::ESHandle<EcalADCToGeVConstant> pAgc;
00084 context.get<EcalADCToGeVConstantRcd>().get(pAgc);
00085 const EcalADCToGeVConstant* agc = pAgc.product();
00086 std::cout << "Global ADC->GeV scale: EB " << std::setprecision(6) << agc->getEBValue() << " GeV/ADC count"
00087 " EE " << std::setprecision(6) << agc->getEEValue() << " GeV/ADC count" << std::endl;
00088
00089
00090 double r1 = (double)std::rand()/( double(RAND_MAX)+double(1) );
00091 int ieta = int( 1 + r1*85 );
00092 r1 = (double)std::rand()/( double(RAND_MAX)+double(1) );
00093 int iphi = int( 1 + r1*20 );
00094
00095 EBDetId ebid(ieta,iphi);
00096 std::cout << "EcalTrivialObjectAnalyzer: using EBDetId: " << ebid << std::endl;
00097
00098 const EcalPedestals* myped=pPeds.product();
00099 EcalPedestals::const_iterator it = myped->find(ebid.rawId());
00100 if( it!=myped->end() ){
00101 std::cout << "EcalPedestal: "
00102 << " mean_x1: " << std::setprecision(8) << (*it).mean_x1 << " rms_x1: " << (*it).rms_x1
00103 << " mean_x6: " <<(*it).mean_x6 << " rms_x6: " << (*it).rms_x6
00104 << " mean_x12: " <<(*it).mean_x12 << " rms_x12: " << (*it).rms_x12
00105 << std::endl;
00106 } else {
00107 std::cout << "No pedestal found for this xtal! something wrong with EcalPedestals in your DB? "
00108 << std::endl;
00109 }
00110
00111
00112 edm::ESHandle<EcalWeightXtalGroups> pGrp;
00113 context.get<EcalWeightXtalGroupsRcd>().get(pGrp);
00114 const EcalWeightXtalGroups* grp = pGrp.product();
00115
00116 EcalXtalGroupsMap::const_iterator git = grp->getMap().find( ebid.rawId() );
00117 EcalXtalGroupId gid;
00118 if( git != grp->getMap().end() ) {
00119 std::cout << "XtalGroupId.id() = " << std::setprecision(3) << (*git).id() << std:: endl;
00120 gid = (*git);
00121 } else {
00122 std::cout << "No group id found for this crystal. something wrong with EcalWeightXtalGroups in your DB?"
00123 << std::endl;
00124 }
00125
00126
00127 edm::ESHandle<EcalGainRatios> pRatio;
00128 context.get<EcalGainRatiosRcd>().get(pRatio);
00129 const EcalGainRatios* gr = pRatio.product();
00130
00131 EcalGainRatioMap::const_iterator grit=gr->getMap().find(ebid.rawId());
00132 EcalMGPAGainRatio mgpa;
00133 if( grit!=gr->getMap().end() ){
00134 mgpa = (*grit);
00135
00136 std::cout << "EcalMGPAGainRatio: "
00137 << "gain 12/6 : " << std::setprecision(4) << mgpa.gain12Over6() << " gain 6/1: " << mgpa.gain6Over1()
00138 << std::endl;
00139 } else {
00140 std::cout << "No MGPA Gain Ratio found for this xtal! something wrong with EcalGainRatios in your DB? "
00141 << std::endl;
00142 }
00143
00144
00145 edm::ESHandle<EcalIntercalibConstants> pIcal;
00146 context.get<EcalIntercalibConstantsRcd>().get(pIcal);
00147 const EcalIntercalibConstants* ical = pIcal.product();
00148
00149 EcalIntercalibConstantMap::const_iterator icalit=ical->getMap().find(ebid.rawId());
00150 EcalIntercalibConstant icalconst;
00151 if( icalit!=ical->getMap().end() ){
00152 icalconst = (*icalit);
00153
00154 std::cout << "EcalIntercalibConstant: "
00155 <<std::setprecision(6)
00156 << icalconst
00157 << std::endl;
00158 } else {
00159 std::cout << "No intercalib const found for this xtal! something wrong with EcalIntercalibConstants in your DB? "
00160 << std::endl;
00161 }
00162
00163
00164 edm::ESHandle<EcalIntercalibErrors> pIcalErr;
00165 context.get<EcalIntercalibErrorsRcd>().get(pIcalErr);
00166 const EcalIntercalibErrors* icalErr = pIcalErr.product();
00167
00168 EcalIntercalibErrorMap::const_iterator icalitErr=icalErr->getMap().find(ebid.rawId());
00169 EcalIntercalibError icalconstErr;
00170 if( icalitErr!=icalErr->getMap().end() ){
00171 icalconstErr = (*icalitErr);
00172
00173 std::cout << "EcalIntercalibError: "
00174 <<std::setprecision(6)
00175 << icalconstErr
00176 << std::endl;
00177 } else {
00178 std::cout << "No intercalib const found for this xtal! something wrong with EcalIntercalibErrors in your DB? "
00179 << std::endl;
00180 }
00181
00182
00183
00184 {
00185
00186 edm::ESHandle<EcalTimeCalibConstants> pIcal;
00187 context.get<EcalTimeCalibConstantsRcd>().get(pIcal);
00188 const EcalTimeCalibConstants* ical = pIcal.product();
00189
00190 EcalTimeCalibConstantMap::const_iterator icalit=ical->getMap().find(ebid.rawId());
00191 EcalTimeCalibConstant icalconst;
00192 if( icalit!=ical->getMap().end() ){
00193 icalconst = (*icalit);
00194
00195 std::cout << "EcalTimeCalibConstant: "
00196 <<std::setprecision(6)
00197 << icalconst
00198 << std::endl;
00199 } else {
00200 std::cout << "No intercalib const found for this xtal! something wrong with EcalTimeCalibConstants in your DB? "
00201 << std::endl;
00202 }
00203
00204
00205 edm::ESHandle<EcalTimeCalibErrors> pIcalErr;
00206 context.get<EcalTimeCalibErrorsRcd>().get(pIcalErr);
00207 const EcalTimeCalibErrors* icalErr = pIcalErr.product();
00208
00209 EcalTimeCalibErrorMap::const_iterator icalitErr=icalErr->getMap().find(ebid.rawId());
00210 EcalTimeCalibError icalconstErr;
00211 if( icalitErr!=icalErr->getMap().end() ){
00212 icalconstErr = (*icalitErr);
00213
00214 std::cout << "EcalTimeCalibError: "
00215 <<std::setprecision(6)
00216 << icalconstErr
00217 << std::endl;
00218 } else {
00219 std::cout << "No intercalib const found for this xtal! something wrong with EcalTimeCalibErrors in your DB? "
00220 << std::endl;
00221 }
00222 }
00223
00224
00225
00226
00227 std::cout <<"Fetching EcalTBWeights from DB " << std::endl;
00228 edm::ESHandle<EcalTBWeights> pWgts;
00229 context.get<EcalTBWeightsRcd>().get(pWgts);
00230 const EcalTBWeights* wgts = pWgts.product();
00231 std::cout << "EcalTBWeightMap.size(): " << std::setprecision(3) << wgts->getMap().size() << std::endl;
00232
00233
00234
00235
00236 EcalTBWeights::EcalTDCId tdcid(1);
00237
00238 std::cout << "Lookup EcalWeightSet for groupid: " << std::setprecision(3)
00239 << gid.id() << " and TDC id " << tdcid << std::endl;
00240 EcalTBWeights::EcalTBWeightMap::const_iterator wit = wgts->getMap().find( std::make_pair(gid,tdcid) );
00241 EcalWeightSet wset;
00242 if( wit != wgts->getMap().end() ) {
00243 wset = wit->second;
00244 std::cout << "check size of data members in EcalWeightSet" << std::endl;
00245
00246
00247
00248
00249 const EcalWeightSet::EcalWeightMatrix& mat1 = wit->second.getWeightsBeforeGainSwitch();
00250 const EcalWeightSet::EcalWeightMatrix& mat2 = wit->second.getWeightsAfterGainSwitch();
00251
00252
00253
00254
00255
00256 CLHEP::HepMatrix clmat1(3,10,0);
00257 CLHEP::HepMatrix clmat2(3,10,0);
00258 for(int irow=0; irow<3; irow++) {
00259 for(int icol=0; icol<10; icol++) {
00260 clmat1[irow][icol] = mat1(irow,icol);
00261 clmat2[irow][icol] = mat2(irow,icol);
00262 }
00263 }
00264 std::cout << "weight matrix before gain switch:" << std::endl;
00265 std::cout << clmat1 << std::endl;
00266 std::cout << "weight matrix after gain switch:" << std::endl;
00267 std::cout << clmat2 << std::endl;
00268
00269 } else {
00270 std::cout << "No weights found for EcalGroupId: " << gid.id() << " and EcalTDCId: " << tdcid << std::endl;
00271 }
00272
00273
00274 edm::ESHandle<EcalClusterLocalContCorrParameters> pLocalCont;
00275 context.get<EcalClusterLocalContCorrParametersRcd>().get(pLocalCont);
00276 const EcalClusterLocalContCorrParameters* paramLocalCont = pLocalCont.product();
00277 std::cout << "LocalContCorrParameters:";
00278 for ( EcalFunctionParameters::const_iterator it = paramLocalCont->params().begin(); it != paramLocalCont->params().end(); ++it ) {
00279 std::cout << " " << *it;
00280 }
00281 std::cout << "\n";
00282 edm::ESHandle<EcalClusterCrackCorrParameters> pCrack;
00283 context.get<EcalClusterCrackCorrParametersRcd>().get(pCrack);
00284 const EcalClusterCrackCorrParameters* paramCrack = pCrack.product();
00285 std::cout << "CrackCorrParameters:";
00286 for ( EcalFunctionParameters::const_iterator it = paramCrack->params().begin(); it != paramCrack->params().end(); ++it ) {
00287 std::cout << " " << *it;
00288 }
00289 std::cout << "\n";
00290 edm::ESHandle<EcalClusterEnergyCorrectionParameters> pEnergyCorrection;
00291 context.get<EcalClusterEnergyCorrectionParametersRcd>().get(pEnergyCorrection);
00292 const EcalClusterEnergyCorrectionParameters* paramEnergyCorrection = pEnergyCorrection.product();
00293 std::cout << "EnergyCorrectionParameters:";
00294 for ( EcalFunctionParameters::const_iterator it = paramEnergyCorrection->params().begin(); it != paramEnergyCorrection->params().end(); ++it ) {
00295 std::cout << " " << *it;
00296 }
00297 std::cout << "\n";
00298 edm::ESHandle<EcalClusterEnergyUncertaintyParameters> pEnergyUncertainty;
00299 context.get<EcalClusterEnergyUncertaintyParametersRcd>().get(pEnergyUncertainty);
00300 const EcalClusterEnergyUncertaintyParameters* paramEnergyUncertainty = pEnergyUncertainty.product();
00301 std::cout << "EnergyCorrectionParameters:";
00302 for ( EcalFunctionParameters::const_iterator it = paramEnergyUncertainty->params().begin(); it != paramEnergyUncertainty->params().end(); ++it ) {
00303 std::cout << " " << *it;
00304 }
00305 std::cout << "\n";
00306
00307
00308
00309
00310
00311 edm::ESHandle<EcalLaserAlphas> pAlpha;
00312 context.get<EcalLaserAlphasRcd>().get(pAlpha);
00313 const EcalLaserAlphas* lalpha = pAlpha.product();
00314
00315 EcalLaserAlphaMap::const_iterator lalphait;
00316 lalphait = lalpha->getMap().find(ebid.rawId());
00317 if( lalphait!=lalpha->getMap().end() ){
00318 std::cout << "EcalLaserAlpha: "
00319 <<std::setprecision(6)
00320 << (*lalphait)
00321 << std::endl;
00322 } else {
00323 std::cout << "No laser alpha found for this xtal! something wrong with EcalLaserAlphas in your DB? "
00324 << std::endl;
00325 }
00326
00327
00328 edm::ESHandle<EcalLaserAPDPNRatiosRef> pAPDPNRatiosRef;
00329 context.get<EcalLaserAPDPNRatiosRefRcd>().get(pAPDPNRatiosRef);
00330 const EcalLaserAPDPNRatiosRef* lref = pAPDPNRatiosRef.product();
00331
00332 EcalLaserAPDPNRatiosRef::const_iterator lrefit;
00333 lrefit = lref->getMap().find(ebid.rawId());
00334 if( lrefit!=lref->getMap().end() ){
00335 std::cout << "EcalLaserAPDPNRatiosRef: "
00336 <<std::setprecision(6)
00337 << (*lrefit)
00338 << std::endl;
00339 } else {
00340 std::cout << "No laser apd/pn ref found for this xtal! something wrong with EcalLaserAPDPNRatiosRef in your DB? "
00341 << std::endl;
00342 }
00343
00344
00345 edm::ESHandle<EcalLaserAPDPNRatios> pAPDPNRatios;
00346 context.get<EcalLaserAPDPNRatiosRcd>().get(pAPDPNRatios);
00347 const EcalLaserAPDPNRatios* lratio = pAPDPNRatios.product();
00348
00349 EcalLaserAPDPNRatios::EcalLaserAPDPNRatiosMap::const_iterator lratioit;
00350 lratioit = lratio->getLaserMap().find(ebid.rawId());
00351 EcalLaserAPDPNRatios::EcalLaserAPDPNpair lratioconst;
00352
00353 if( lratioit!=lratio->getLaserMap().end() ){
00354 lratioconst = (*lratioit);
00355
00356 std::cout << "EcalLaserAPDPNRatios: "
00357
00358 << std::setprecision(6)
00359 << lratioconst.p1 << " " << lratioconst.p2
00360 << std::endl;
00361 } else {
00362 std::cout << "No laser apd/pn ratio found for this xtal! something wrong with EcalLaserAPDPNRatios in your DB? "
00363 << std::endl;
00364 }
00365
00366
00367 EcalLaserAPDPNRatios::EcalLaserTimeStamp ltimestamp;
00368 EcalLaserAPDPNRatios::EcalLaserTimeStampMap::const_iterator ltimeit;
00369 for (int i=1; i<=92; i++) {
00370 ltimestamp = lratio->getTimeMap()[i];
00371 std::cout << "i = " << std::setprecision(6) << i
00372 << ltimestamp.t1.value() << " " << ltimestamp.t2.value() << " : " ;
00373 }
00374 std::cout << "Tests finihed." << std::endl;
00375
00376
00377 edm::ESHandle<EcalChannelStatus> pChannelStatus;
00378 context.get<EcalChannelStatusRcd>().get(pChannelStatus);
00379 const EcalChannelStatus *ch_status = pChannelStatus.product();
00380
00381 EcalChannelStatusMap::const_iterator chit;
00382 chit = ch_status->getMap().find(ebid.rawId());
00383 if( chit != ch_status->getMap().end() ){
00384 EcalChannelStatusCode ch_code = (*chit);
00385 std::cout << "EcalChannelStatus: "
00386 <<std::setprecision(6)
00387 << ch_code.getStatusCode()
00388 << std::endl;
00389 } else {
00390 std::cout << "No channel status found for this xtal! something wrong with EcalChannelStatus in your DB? "
00391 << std::endl;
00392 }
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412 }
00413