CMS 3D CMS Logo

SiStripGainFromAsciiFile Class Reference

#include <CalibTracker/SiStripChannelGain/plugins/SiStripGainFromAsciiFile.h>

Inheritance diagram for SiStripGainFromAsciiFile:

ConditionDBWriter< SiStripApvGain > edm::EDAnalyzer

List of all members.

Public Member Functions

 SiStripGainFromAsciiFile (const edm::ParameterSet &)
 ~SiStripGainFromAsciiFile ()

Private Member Functions

SiStripApvGaingetNewObject ()

Private Attributes

std::string Asciifilename_
edm::FileInPath fp_
__gnu_cxx::hash_map< unsigned
int, FibersGain
GainsMap
float referenceValue_

Classes

struct  FibersGain


Detailed Description

Definition at line 12 of file SiStripGainFromAsciiFile.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

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]

Definition at line 37 of file SiStripGainFromAsciiFile.h.

Referenced by getNewObject().

float SiStripGainFromAsciiFile::referenceValue_ [private]

Definition at line 34 of file SiStripGainFromAsciiFile.h.

Referenced by getNewObject(), and SiStripGainFromAsciiFile().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:23 2009 for CMSSW by  doxygen 1.5.4