File indexing completed on 2023-03-17 10:42:19
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "DTT0FillChamberFromDB.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011 #include "FWCore/Framework/interface/EventSetup.h"
0012 #include "FWCore/Framework/interface/ESHandle.h"
0013 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0014
0015 #include "DataFormats/MuonDetId/interface/DTWireId.h"
0016 #include "CondFormats/DTObjects/interface/DTT0.h"
0017 #include "CondFormats/DataRecord/interface/DTT0Rcd.h"
0018
0019 #include <string>
0020 #include <sstream>
0021
0022 using namespace std;
0023 using namespace edm;
0024
0025 namespace dtCalibration {
0026
0027 DTT0FillChamberFromDB::DTT0FillChamberFromDB(const ParameterSet& pset, edm::ConsumesCollector cc)
0028 : chamberRef_(pset.getParameter<string>("chamberId")),
0029 t0Token_(cc.esConsumes<edm::Transition::BeginRun>()),
0030 t0RefToken_(
0031 cc.esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", pset.getParameter<string>("dbLabelRef")))) {
0032
0033 if (!chamberRef_.empty() && chamberRef_ != "None") {
0034 stringstream linestr;
0035 int selWheel, selStation, selSector;
0036 linestr << chamberRef_;
0037 linestr >> selWheel >> selStation >> selSector;
0038 chosenChamberId_ = DTChamberId(selWheel, selStation, selSector);
0039 LogVerbatim("Calibration") << "[DTT0FillChamberFromDB] Chosen chamber: " << chosenChamberId_ << endl;
0040 }
0041
0042 }
0043
0044 DTT0FillChamberFromDB::~DTT0FillChamberFromDB() {}
0045
0046 void DTT0FillChamberFromDB::setES(const EventSetup& setup) {
0047
0048 ESHandle<DTT0> t0H = setup.getHandle(t0Token_);
0049 t0Map_ = &*t0H;
0050 LogVerbatim("Calibration") << "[DTT0FillChamberFromDB] T0 version: " << t0H->version();
0051
0052
0053 ESHandle<DTT0> t0RefH = setup.getHandle(t0RefToken_);
0054 t0MapRef_ = &*t0RefH;
0055 LogVerbatim("Calibration") << "[DTT0FillChamberFromDB] Reference T0 version: " << t0RefH->version();
0056 }
0057
0058 DTT0Data DTT0FillChamberFromDB::correction(const DTWireId& wireId) {
0059
0060
0061
0062 DTChamberId chamberId = wireId.layerId().superlayerId().chamberId();
0063
0064 if (!chamberRef_.empty() && chamberRef_ != "None" && chamberId == chosenChamberId_) {
0065
0066 float t0MeanRef, t0RMSRef;
0067 int statusRef = t0MapRef_->get(wireId, t0MeanRef, t0RMSRef, DTTimeUnits::counts);
0068 if (!statusRef) {
0069 return DTT0Data(t0MeanRef, t0RMSRef);
0070 } else {
0071
0072 throw cms::Exception("[DTT0FillChamberFromDB]")
0073 << "Could not find t0 entry in reference DB for" << wireId << endl;
0074 }
0075 } else {
0076
0077 float t0Mean, t0RMS;
0078 int status = t0Map_->get(wireId, t0Mean, t0RMS, DTTimeUnits::counts);
0079 if (!status) {
0080 return DTT0Data(t0Mean, t0RMS);
0081 } else {
0082
0083 throw cms::Exception("[DTT0FillChamberFromDB]") << "Could not find t0 entry in DB for" << wireId << endl;
0084 }
0085 }
0086 }
0087
0088 }