CMS 3D CMS Logo

RPCCalibSetUp.cc

Go to the documentation of this file.
00001 #include "FWCore/Framework/interface/EDProducer.h"
00002 #include "DataFormats/Common/interface/Handle.h"
00003 #include "FWCore/Framework/interface/ESHandle.h"
00004 #include "SimMuon/RPCDigitizer/src/RPCDigiProducer.h"
00005 #include "SimMuon/RPCDigitizer/src/RPCDigitizer.h"
00006 #include "Geometry/Records/interface/MuonGeometryRecord.h"
00007 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h"
00008 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
00009 #include "DataFormats/Common/interface/Handle.h"
00010 #include "FWCore/Framework/interface/ESHandle.h"
00011 #include "FWCore/ServiceRegistry/interface/Service.h"
00012 #include "FWCore/Framework/interface/Event.h"
00013 #include "FWCore/Framework/interface/EventSetup.h"
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include "CalibMuon/RPCCalibration/interface/RPCCalibSetUp.h"
00016 
00017 #include <cmath>
00018 #include <math.h>
00019 #include <fstream>
00020 #include <sstream>
00021 #include <iostream>
00022 #include<cstring>
00023 #include<string>
00024 #include<vector>
00025 #include<stdlib.h>
00026 #include <utility>
00027 #include <map>
00028 
00029 using namespace std;
00030 
00031 RPCCalibSetUp::RPCCalibSetUp(const edm::ParameterSet& ps) {
00032   
00033   _mapDetIdNoise.clear();
00034   _mapDetIdEff.clear();
00035   _bxmap.clear();
00036 
00037     //------------------------ Noise Reading ----------------------------
00038     
00039   edm::FileInPath fp1 = ps.getParameter<edm::FileInPath>("noisemapfile");
00040   std::ifstream _infile1(fp1.fullPath().c_str(), std::ios::in);
00041   
00042   std::vector<float>  vnoise;
00043 
00044   int rpcdetid = 0;
00045   std::string buff;
00046   
00047   std::vector< std::string > words;
00048 
00049   int count = 0;
00050   while( getline(_infile1, buff, '\n') ){
00051     
00052     words.clear();
00053     vnoise.clear();
00054     
00055     stringstream ss;
00056     std::string chname;
00057     ss<<buff;
00058     ss>>chname>>rpcdetid;
00059 
00060     std::string::size_type pos = 0, prev_pos = 0;
00061 
00062     while ( (pos = buff.find("  ",pos)) != string::npos){
00063       
00064       words.push_back(buff.substr(prev_pos, pos - prev_pos));
00065       prev_pos = ++pos;
00066     }
00067     words.push_back(buff.substr(prev_pos, pos - prev_pos));
00068     
00069     for(unsigned int i = 2; i < words.size(); ++i){
00070       float value = atof( ((words)[i]).c_str() );
00071       vnoise.push_back(value);
00072     }
00073     
00074     _mapDetIdNoise.insert(make_pair(static_cast<uint32_t>(rpcdetid),vnoise));
00075     
00076     count++;
00077   }
00078    _infile1.close();
00079 
00080   //------------------------ Eff Reading ----------------------------
00081   
00082   edm::FileInPath fp2 = ps.getParameter<edm::FileInPath>("effmapfile");
00083   std::ifstream _infile2(fp2.fullPath().c_str(), std::ios::in);
00084 
00085   std::vector<float> veff ;
00086   rpcdetid = 0;
00087   
00088   while( getline(_infile2, buff, '\n') ){
00089 
00090     words.clear();
00091     veff.clear();
00092     
00093     stringstream ss;
00094     std::string chname;
00095     ss<<buff;
00096     ss>>chname>>rpcdetid;
00097     
00098     std::string::size_type pos = 0, prev_pos = 0;
00099     while ( (pos = buff.find("  ",pos)) != string::npos){
00100       
00101       words.push_back(buff.substr(prev_pos, pos - prev_pos));
00102       prev_pos = ++pos;
00103     }
00104     words.push_back(buff.substr(prev_pos, pos - prev_pos));
00105     
00106     for(unsigned int i = 2; i < words.size(); ++i){
00107       float value = atof(((words)[i]).c_str());
00108       veff.push_back(value);
00109     }
00110     _mapDetIdEff.insert(make_pair(static_cast<uint32_t>(rpcdetid),veff));
00111   }
00112   _infile2.close();
00113 
00114   //---------------------- Timing reading ------------------------------------
00115 
00116   edm::FileInPath fp3 = ps.getParameter<edm::FileInPath>("timingMap");
00117   std::ifstream _infile3(fp3.fullPath().c_str(), std::ios::in);
00118 
00119   uint32_t detUnit = 0;
00120   float timing = 0.;
00121   while(!_infile3.eof()){
00122     _infile3>>detUnit>>timing;
00123     _bxmap[RPCDetId(detUnit)] = timing;
00124   }
00125   _infile3.close();
00126 
00127   //---------------------- Cluster size --------------------------------------
00128 
00129   edm::FileInPath fp4 = ps.getParameter<edm::FileInPath>("clsmapfile");
00130   std::ifstream _infile4(fp4.fullPath().c_str(), ios::in);
00131 
00132   string buffer;
00133   double sum = 0;
00134   unsigned int counter = 1;
00135   unsigned int row = 1;
00136   std::vector<double> sum_clsize;
00137 
00138   while ( _infile4 >> buffer ) {
00139     const char *buffer1 = buffer.c_str();
00140     double dato = atof(buffer1);
00141     sum += dato;
00142     sum_clsize.push_back(sum);
00143 
00144     if(counter == row*20) {
00145       _clsMap[row] = sum_clsize;
00146       row++;
00147       sum = 0;
00148       sum_clsize.clear();
00149     }
00150     counter++;
00151   }
00152   _infile4.close();
00153 
00154 }
00155 
00156 std::vector<float> RPCCalibSetUp::getNoise(uint32_t id)
00157 {
00158   map<uint32_t,std::vector<float> >::iterator iter = _mapDetIdNoise.find(id);
00159   return (iter->second);
00160 }
00161 
00162 std::vector<float> RPCCalibSetUp::getEff(uint32_t id)
00163 {
00164   map<uint32_t,std::vector<float> >::iterator iter = _mapDetIdEff.find(id);
00165   return iter->second;
00166 }
00167 
00168 float RPCCalibSetUp::getTime(uint32_t id)
00169 {
00170   RPCDetId rpcid(id);
00171   std::map<RPCDetId, float>::iterator iter = _bxmap.find(rpcid);
00172   return iter->second;
00173 }
00174 
00175 std::map< int, std::vector<double> > RPCCalibSetUp::getClsMap()
00176 {
00177   return _clsMap;
00178 }
00179 
00180 RPCCalibSetUp::~RPCCalibSetUp(){}

Generated on Tue Jun 9 17:25:30 2009 for CMSSW by  doxygen 1.5.4