Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "DTVDriftMeanTimer.h"
00011
00012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00013 #include "FWCore/Framework/interface/ESHandle.h"
00014 #include "FWCore/Framework/interface/EventSetup.h"
00015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00016
00017 #include "Geometry/DTGeometry/interface/DTGeometry.h"
00018 #include "CondFormats/DTObjects/interface/DTMtime.h"
00019
00020 #include "CalibMuon/DTCalibration/interface/DTMeanTimerFitter.h"
00021 #include "CalibMuon/DTCalibration/interface/DTCalibDBUtils.h"
00022
00023 #include <string>
00024 #include <vector>
00025
00026 #include "TFile.h"
00027 #include "TString.h"
00028
00029 using namespace std;
00030 using namespace edm;
00031
00032 DTVDriftMeanTimer::DTVDriftMeanTimer(const ParameterSet& pset) {
00033 string rootFileName = pset.getParameter<string>("rootFileName");
00034 rootFile_ = new TFile(rootFileName.c_str(), "READ");
00035 fitter_ = new DTMeanTimerFitter(rootFile_);
00036 bool debug = pset.getUntrackedParameter<bool>("debug", false);
00037 if(debug) fitter_->setVerbosity(1);
00038 }
00039
00040 DTVDriftMeanTimer::~DTVDriftMeanTimer() {
00041 rootFile_->Close();
00042 delete fitter_;
00043 }
00044
00045 void DTVDriftMeanTimer::setES(const edm::EventSetup& setup) {}
00046
00047 DTVDriftData DTVDriftMeanTimer::compute(DTSuperLayerId const& slId) {
00048
00049
00050 DTWireId wireId(slId, 0, 0);
00051 TString N = ( ( ( ( (TString)"TMax" + (long)wireId.wheel() )
00052 + (long)wireId.station() )
00053 + (long)wireId.sector() ) + (long)wireId.superLayer() );
00054 vector<float> vDriftAndReso = fitter_->evaluateVDriftAndReso(N);
00055
00056
00057 if(vDriftAndReso.front() == -1)
00058 throw cms::Exception("DTCalibration") << "Could not compute valid vDrift value for SL " << slId << endl;
00059
00060 return DTVDriftData(vDriftAndReso[0],vDriftAndReso[1]);
00061 }