CMS 3D CMS Logo

SiPixelCalibConfiguration.cc

Go to the documentation of this file.
00001 #include "CondFormats/SiPixelObjects/interface/SiPixelCalibConfiguration.h"
00002 #include "CalibFormats/SiPixelObjects/interface/PixelCalibConfiguration.h"
00003 
00004 short SiPixelCalibConfiguration::vcalIndexForEvent(const uint32_t & eventnumber) const{
00005   uint32_t relative_event = abs(eventnumber-1)%patternSize();
00006   short relative_pattern = relative_event/getNTriggers();
00007   return relative_pattern; 
00008 }
00009 short SiPixelCalibConfiguration::vcalForEvent(const uint32_t & eventnumber) const{
00010   short result = fVCalValues[vcalIndexForEvent(eventnumber)];
00011   return result;
00012 }
00013 std::vector<short> SiPixelCalibConfiguration::columnPatternForEvent(const uint32_t & eventnumber) const{
00014   std::vector<short> result;
00015   uint32_t patternnumber = eventnumber/patternSize();
00016   uint32_t colpatternnumber = patternnumber%nColumnPatterns();
00017 
00018   uint32_t nminuscol=0;
00019   for(size_t icol=0; icol<fColumnPattern.size(); icol++){
00020     if(fColumnPattern[icol]==-1)
00021       nminuscol++;
00022     else if(nminuscol>colpatternnumber)
00023       break;
00024     else if(nminuscol==colpatternnumber){
00025       short val = fColumnPattern[icol];
00026       result.push_back(val);
00027     }
00028   }
00029   return result;
00030 }
00031 
00032 std::vector<short> SiPixelCalibConfiguration::rowPatternForEvent(const uint32_t & eventnumber) const {
00033   std::vector<short> result;
00034   uint32_t patternnumber = eventnumber/patternSize();
00035   uint32_t rowpatternnumber = patternnumber/nColumnPatterns();
00036 
00037   uint32_t nminusrow=0;
00038   for(size_t irow=0; irow<fRowPattern.size(); irow++){
00039     if(fRowPattern[irow]==-1)
00040       nminusrow++;
00041     else if(nminusrow>rowpatternnumber)
00042       break;
00043     else if(nminusrow==rowpatternnumber){
00044       short val = fRowPattern[irow];
00045       result.push_back(val);
00046     }
00047   }
00048   return result;
00049 }
00050 uint32_t SiPixelCalibConfiguration::nextPatternChangeForEvent(const uint32_t & eventnumber) const {
00051   uint32_t relative_event = eventnumber/patternSize();
00052   relative_event+=1;
00053   return relative_event*patternSize();
00054 }
00055 uint32_t SiPixelCalibConfiguration::expectedTotalEvents() const {
00056   return patternSize()*nPatterns();
00057 }
00058 
00059 SiPixelCalibConfiguration::SiPixelCalibConfiguration(const pos::PixelCalibConfiguration &fancyConfig):
00060   fNTriggers(0),
00061   fRowPattern(std::vector<short>(0)),
00062   fColumnPattern(std::vector<short>(0)),
00063   fVCalValues(std::vector<short>(0)),
00064   fMode("unknown")
00065 
00066 { // copy constructor that uses the complex object
00067   fNTriggers = fancyConfig.nTriggersPerPattern();
00068   std::vector<int> vcalpoints(0);
00069   std::cout << "scan name = " << fancyConfig.scanName(0) << std::endl;
00070   std::vector<uint32_t> vcalpointsuint32 = fancyConfig.scanValues(fancyConfig.scanName(0));
00071   for(size_t ical=0; ical<vcalpointsuint32.size(); ++ical){
00072     short vcalinput = vcalpointsuint32[ical];
00073   
00074     std::cout << "Vcal value " << ical << " = " << vcalinput << std::endl;
00075     fVCalValues.push_back(vcalinput);
00076   }
00077   // copy row and column patterns
00078 
00079   std::vector<std::vector<uint32_t> > cols=fancyConfig.columnList();
00080   std::vector<std::vector<uint32_t> > rows= fancyConfig.rowList();
00081   for(uint32_t i=0; i<cols.size(); ++i){
00082     for(uint32_t j=0; j<cols[i].size(); ++j){
00083       short colval = cols[i][j];
00084       fColumnPattern.push_back(colval);
00085     }
00086     fColumnPattern.push_back(-1);
00087   }
00088   for(uint32_t i=0; i<rows.size(); ++i){
00089     for(uint32_t j=0; j<rows[i].size(); ++j){
00090       short rowval = rows[i][j];
00091       fRowPattern.push_back(rowval);
00092     }
00093     fRowPattern.push_back(-1);
00094   }
00095   fMode = fancyConfig.mode();
00096 }
00097 
00098 uint32_t SiPixelCalibConfiguration::nRowPatterns() const{
00099  uint32_t nrows = 0;
00100  for(std::vector<short>::const_iterator i=fRowPattern.begin();i!=fRowPattern.end();++i){
00101    if(*i == -1)
00102     nrows++;
00103   }
00104   return nrows;
00105 }
00106 uint32_t SiPixelCalibConfiguration::nColumnPatterns() const{
00107   uint32_t ncols = 0;
00108   
00109   for(std::vector<short>::const_iterator i=fColumnPattern.begin();i!=fColumnPattern.end();++i){
00110     if(*i == -1)
00111     ncols++;
00112   }
00113   return ncols;
00114 }
00115 

Generated on Tue Jun 9 17:26:46 2009 for CMSSW by  doxygen 1.5.4