![]() |
![]() |
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