![]() |
![]() |
#include <CalibTracker/SiStripChannelGain/plugins/SiStripGainFromAsciiFile.h>
Public Member Functions | |
SiStripGainFromAsciiFile (const edm::ParameterSet &) | |
~SiStripGainFromAsciiFile () | |
Private Member Functions | |
SiStripApvGain * | getNewObject () |
Private Attributes | |
std::string | Asciifilename_ |
edm::FileInPath | fp_ |
__gnu_cxx::hash_map< unsigned int, FibersGain > | GainsMap |
float | referenceValue_ |
Classes | |
struct | FibersGain |
Definition at line 12 of file SiStripGainFromAsciiFile.h.
SiStripGainFromAsciiFile::SiStripGainFromAsciiFile | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 15 of file SiStripGainFromAsciiFile.cc.
References Asciifilename_, fp_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), and referenceValue_.
00015 : ConditionDBWriter<SiStripApvGain>::ConditionDBWriter<SiStripApvGain>(iConfig){ 00016 00017 edm::LogInfo("SiStripGainFromAsciiFile::SiStripGainFromAsciiFile"); 00018 00019 Asciifilename_=iConfig.getParameter<std::string>("InputFileName"); 00020 referenceValue_ = iConfig.getParameter<double>("referenceValue"); 00021 fp_ = iConfig.getUntrackedParameter<edm::FileInPath>("file",edm::FileInPath("CalibTracker/SiStripCommon/data/SiStripDetInfo.dat")); 00022 }
SiStripGainFromAsciiFile::~SiStripGainFromAsciiFile | ( | ) |
Definition at line 25 of file SiStripGainFromAsciiFile.cc.
00025 { 00026 edm::LogInfo("SiStripGainFromAsciiFile::~SiStripGainFromAsciiFile"); 00027 }
SiStripApvGain * SiStripGainFromAsciiFile::getNewObject | ( | ) | [private, virtual] |
Implements ConditionDBWriter< SiStripApvGain >.
Definition at line 29 of file SiStripGainFromAsciiFile.cc.
References Asciifilename_, lat::endl(), SiStripGainFromAsciiFile::FibersGain::fiber, fp_, edm::FileInPath::fullPath(), GainsMap, SiStripGainFromAsciiFile::FibersGain::hard_reset(), TreeToEdges::infile, it, iter, VarParsing::obj, SiStripApvGain::put(), range, referenceValue_, ss, and DetId::Tracker.
00029 { 00030 00031 edm::LogInfo("SiStripGainFromAsciiFile") <<" [SiStripGainFromAsciiFile::getNewObject]"<<std::endl; 00032 00033 SiStripApvGain* obj = new SiStripApvGain(); 00034 00035 uint32_t detid; 00036 FibersGain FG; 00037 00038 std::stringstream ss; 00039 ss.str(""); 00040 ss << "[SiStripGainFromAsciiFile::getNewObject]\n Reading Ascii File\n"; 00041 std::ifstream infile; 00042 infile.open (Asciifilename_.c_str()); 00043 if (infile.is_open()){ 00044 while (infile.good()){ 00045 infile >> detid >> FG.fiber[0] >> FG.fiber[1] >> FG.fiber[2]; 00046 ss << detid << " " << FG.fiber[0] << " " << FG.fiber[1] << " " << FG.fiber[2] << std::endl; 00047 GainsMap.insert(std::pair<unsigned int,FibersGain>(detid,FG)); 00048 } 00049 infile.close(); 00050 edm::LogInfo("SiStripGainFromAsciiFile") << ss.str(); 00051 } else { 00052 edm::LogError("SiStripGainFromAsciiFile")<< " [SiStripGainFromAsciiFile::getNewObject] Error opening file " << Asciifilename_ << std::endl; 00053 assert(0); 00054 } 00055 00056 00057 00058 SiStripDetInfoFileReader reader(fp_.fullPath()); 00059 00060 const std::vector<uint32_t> DetIds = reader.getAllDetIds(); 00061 00062 ss.str(""); 00063 ss << "[SiStripGainFromAsciiFile::getNewObject]\n Filling SiStripApvGain object"; 00064 short nApvPair; 00065 for(std::vector<uint32_t>::const_iterator it=DetIds.begin(); it!=DetIds.end(); it++){ 00066 00067 if (DetId(*it).det()!=DetId::Tracker) 00068 continue; 00069 00070 nApvPair=reader.getNumberOfApvsAndStripLength(*it).first/2; 00071 00072 ss << "Looking at detid " << *it << " nApvPairs " << nApvPair << std::endl; 00073 00074 __gnu_cxx::hash_map< unsigned int,FibersGain>::const_iterator iter=GainsMap.find(*it); 00075 00076 if (iter!=GainsMap.end()){ 00077 FG = iter->second; 00078 ss << " " << FG.fiber[0] << " " << FG.fiber[1] << " " << FG.fiber[2] << std::endl; 00079 } 00080 else { 00081 ss << "Hard reset for detid " << *it << std::endl; 00082 FG.hard_reset(referenceValue_); 00083 } 00084 00085 std::vector<float> DetGainsVector; 00086 00087 if (nApvPair==2){ 00088 DetGainsVector.push_back(FG.fiber[0]/referenceValue_); 00089 DetGainsVector.push_back(FG.fiber[0]/referenceValue_); 00090 DetGainsVector.push_back(FG.fiber[2]/referenceValue_); 00091 DetGainsVector.push_back(FG.fiber[2]/referenceValue_); 00092 } else if (nApvPair==3){ 00093 DetGainsVector.push_back(FG.fiber[0]/referenceValue_); 00094 DetGainsVector.push_back(FG.fiber[0]/referenceValue_); 00095 DetGainsVector.push_back(FG.fiber[1]/referenceValue_); 00096 DetGainsVector.push_back(FG.fiber[1]/referenceValue_); 00097 DetGainsVector.push_back(FG.fiber[2]/referenceValue_); 00098 DetGainsVector.push_back(FG.fiber[2]/referenceValue_); 00099 } else { 00100 edm::LogError("SiStripGainFromAsciiFile") << " SiStripGainFromAsciiFile::getNewObject] ERROR for detid " << *it << " not expected number of APV pairs " << nApvPair <<std::endl; 00101 } 00102 00103 SiStripApvGain::Range range(DetGainsVector.begin(),DetGainsVector.end()); 00104 if ( ! obj->put(*it,range) ){ 00105 edm::LogError("SiStripGainFromAsciiFile")<<" [SiStripGainFromAsciiFile::getNewObject] detid already exists"<<std::endl; 00106 ss <<" [SiStripGainFromAsciiFile::getNewObject] detid already exists"<<std::endl; 00107 } 00108 } 00109 edm::LogInfo("SiStripGainFromAsciiFile") << ss.str(); 00110 00111 return obj; 00112 }
std::string SiStripGainFromAsciiFile::Asciifilename_ [private] |
Definition at line 33 of file SiStripGainFromAsciiFile.h.
Referenced by getNewObject(), and SiStripGainFromAsciiFile().
edm::FileInPath SiStripGainFromAsciiFile::fp_ [private] |
Definition at line 35 of file SiStripGainFromAsciiFile.h.
Referenced by getNewObject(), and SiStripGainFromAsciiFile().
__gnu_cxx::hash_map< unsigned int,FibersGain> SiStripGainFromAsciiFile::GainsMap [private] |
float SiStripGainFromAsciiFile::referenceValue_ [private] |
Definition at line 34 of file SiStripGainFromAsciiFile.h.
Referenced by getNewObject(), and SiStripGainFromAsciiFile().