CMS 3D CMS Logo

PixelROCDACSettings.cc

Go to the documentation of this file.
00001 //
00002 // This class provide the data structure for the
00003 // ROC DAC parameters
00004 //
00005 // At this point I do not see a reason to make an
00006 // abstract layer for this code.
00007 //
00008 
00009 #include "CalibFormats/SiPixelObjects/interface/PixelROCDACSettings.h"
00010 #include "CalibFormats/SiPixelObjects/interface/PixelDACNames.h"
00011 #include <fstream>
00012 #include <iostream>
00013 
00014 using namespace pos;
00015 using namespace std;
00016 
00017 PixelROCDACSettings::PixelROCDACSettings(){}
00018 
00019 
00020 void PixelROCDACSettings::getDACs(vector<unsigned int>& dacs) const
00021 {
00022     dacs.clear();
00023     dacs.push_back(Vdd_);
00024     dacs.push_back(Vana_);
00025     dacs.push_back(Vsf_);
00026     dacs.push_back(Vcomp_);
00027     dacs.push_back(Vleak_);
00028     dacs.push_back(VrgPr_);
00029     dacs.push_back(VwllPr_);
00030     dacs.push_back(VrgSh_);
00031     dacs.push_back(VwllSh_);
00032     dacs.push_back(VHldDel_);
00033     dacs.push_back(Vtrim_);
00034     dacs.push_back(VcThr_);
00035     dacs.push_back(VIbias_bus_);
00036     dacs.push_back(VIbias_sf_);
00037     dacs.push_back(VOffsetOp_);
00038     dacs.push_back(VbiasOp_);
00039     dacs.push_back(VOffsetRO_);
00040     dacs.push_back(VIon_);
00041     dacs.push_back(VIbias_PH_);
00042     dacs.push_back(VIbias_DAC_);
00043     dacs.push_back(VIbias_roc_);
00044     dacs.push_back(VIColOr_);
00045     dacs.push_back(Vnpix_);
00046     dacs.push_back(VsumCol_);
00047     dacs.push_back(Vcal_);
00048     dacs.push_back(CalDel_);
00049     dacs.push_back(TempRange_);
00050     dacs.push_back(WBC_);
00051     dacs.push_back(ChipContReg_);
00052 }
00053 
00054 // Added by Dario
00055 void PixelROCDACSettings::getDACs(std::map<std::string, unsigned int>& dacs) const
00056 {
00057     dacs.clear();
00058     dacs[k_DACName_Vdd        ] = Vdd_        ;
00059     dacs[k_DACName_Vana       ] = Vana_       ;     
00060     dacs[k_DACName_Vsf        ] = Vsf_        ;      
00061     dacs[k_DACName_Vcomp      ] = Vcomp_      ;      
00062     dacs[k_DACName_Vleak      ] = Vleak_      ;      
00063     dacs[k_DACName_VrgPr      ] = VrgPr_      ;      
00064     dacs[k_DACName_VwllPr     ] = VwllPr_     ;     
00065     dacs[k_DACName_VrgSh      ] = VrgSh_      ;      
00066     dacs[k_DACName_VwllSh     ] = VwllSh_     ;     
00067     dacs[k_DACName_VHldDel    ] = VHldDel_    ;    
00068     dacs[k_DACName_Vtrim      ] = Vtrim_      ;      
00069     dacs[k_DACName_VcThr      ] = VcThr_      ;      
00070     dacs[k_DACName_VIbias_bus ] = VIbias_bus_ ;
00071     dacs[k_DACName_VIbias_sf  ] = VIbias_sf_  ; 
00072     dacs[k_DACName_VOffsetOp  ] = VOffsetOp_  ; 
00073     dacs[k_DACName_VbiasOp    ] = VbiasOp_    ;    
00074     dacs[k_DACName_VOffsetRO  ] = VOffsetRO_  ; 
00075     dacs[k_DACName_VIon       ] = VIon_       ;       
00076     dacs[k_DACName_VIbias_PH  ] = VIbias_PH_  ; 
00077     dacs[k_DACName_VIbias_DAC ] = VIbias_DAC_ ;
00078     dacs[k_DACName_VIbias_roc ] = VIbias_roc_ ;
00079     dacs[k_DACName_VIColOr    ] = VIColOr_    ;    
00080     dacs[k_DACName_Vnpix      ] = Vnpix_      ;      
00081     dacs[k_DACName_VsumCol    ] = VsumCol_    ;    
00082     dacs[k_DACName_Vcal       ] = Vcal_       ;       
00083     dacs[k_DACName_CalDel     ] = CalDel_     ;     
00084     dacs[k_DACName_TempRange  ] = TempRange_  ; 
00085     dacs[k_DACName_WBC        ] = WBC_        ;
00086     dacs[k_DACName_ChipContReg] = ChipContReg_;
00087 }
00088 
00089 // Added by Dario
00090 void PixelROCDACSettings::setDACs(std::map<std::string, unsigned int>& dacs) 
00091 {
00092     Vdd_         = dacs[k_DACName_Vdd        ] ;
00093     Vana_        = dacs[k_DACName_Vana       ] ;    
00094     Vsf_         = dacs[k_DACName_Vsf        ] ;     
00095     Vcomp_       = dacs[k_DACName_Vcomp      ] ;     
00096     Vleak_       = dacs[k_DACName_Vleak      ] ;     
00097     VrgPr_       = dacs[k_DACName_VrgPr      ] ;     
00098     VwllPr_      = dacs[k_DACName_VwllPr     ] ;    
00099     VrgSh_       = dacs[k_DACName_VrgSh      ] ;     
00100     VwllSh_      = dacs[k_DACName_VwllSh     ] ;    
00101     VHldDel_     = dacs[k_DACName_VHldDel    ] ;   
00102     Vtrim_       = dacs[k_DACName_Vtrim      ] ;     
00103     VcThr_       = dacs[k_DACName_VcThr      ] ;     
00104     VIbias_bus_  = dacs[k_DACName_VIbias_bus ] ;
00105     VIbias_sf_   = dacs[k_DACName_VIbias_sf  ] ; 
00106     VOffsetOp_   = dacs[k_DACName_VOffsetOp  ] ; 
00107     VbiasOp_     = dacs[k_DACName_VbiasOp    ] ;   
00108     VOffsetRO_   = dacs[k_DACName_VOffsetRO  ] ; 
00109     VIon_        = dacs[k_DACName_VIon       ] ;      
00110     VIbias_PH_   = dacs[k_DACName_VIbias_PH  ] ; 
00111     VIbias_DAC_  = dacs[k_DACName_VIbias_DAC ] ;
00112     VIbias_roc_  = dacs[k_DACName_VIbias_roc ] ;
00113     VIColOr_     = dacs[k_DACName_VIColOr    ] ;   
00114     Vnpix_       = dacs[k_DACName_Vnpix      ] ;     
00115     VsumCol_     = dacs[k_DACName_VsumCol    ] ;   
00116     Vcal_        = dacs[k_DACName_Vcal       ] ;      
00117     CalDel_      = dacs[k_DACName_CalDel     ] ;    
00118     TempRange_   = dacs[k_DACName_TempRange  ] ; 
00119     WBC_         = dacs[k_DACName_WBC        ] ;
00120     ChipContReg_ = dacs[k_DACName_ChipContReg] ;
00121 }
00122 
00123 // Added by Dario
00124 void PixelROCDACSettings::compareDACs(std::map<std::string, unsigned int>& dacs, 
00125                                       std::map<std::string, bool>& changes, 
00126                                       std::map<std::string, unsigned int>& previous) 
00127 {
00128     changes[k_DACName_Vdd        ] = false;
00129     changes[k_DACName_Vana       ] = false;
00130     changes[k_DACName_Vsf        ] = false;
00131     changes[k_DACName_Vcomp      ] = false;
00132     changes[k_DACName_Vleak      ] = false;
00133     changes[k_DACName_VrgPr      ] = false;
00134     changes[k_DACName_VwllPr     ] = false;
00135     changes[k_DACName_VrgSh      ] = false;
00136     changes[k_DACName_VwllSh     ] = false;
00137     changes[k_DACName_VHldDel    ] = false;
00138     changes[k_DACName_Vtrim      ] = false;
00139     changes[k_DACName_VcThr      ] = false;
00140     changes[k_DACName_VIbias_bus ] = false;
00141     changes[k_DACName_VIbias_sf  ] = false;
00142     changes[k_DACName_VOffsetOp  ] = false;
00143     changes[k_DACName_VbiasOp    ] = false;
00144     changes[k_DACName_VOffsetRO  ] = false;
00145     changes[k_DACName_VIon       ] = false;
00146     changes[k_DACName_VIbias_PH  ] = false;
00147     changes[k_DACName_VIbias_DAC ] = false;
00148     changes[k_DACName_VIbias_roc ] = false;
00149     changes[k_DACName_VIColOr    ] = false;
00150     changes[k_DACName_Vnpix      ] = false;
00151     changes[k_DACName_VsumCol    ] = false;
00152     changes[k_DACName_Vcal       ] = false;
00153     changes[k_DACName_CalDel     ] = false;
00154     changes[k_DACName_TempRange  ] = false;
00155     changes[k_DACName_WBC        ] = false;
00156     changes[k_DACName_ChipContReg] = false;
00157 
00158     if( Vdd_         != dacs[k_DACName_Vdd        ] ) {changes[k_DACName_Vdd        ] = true; previous[k_DACName_Vdd        ] = Vdd_        ;} 
00159     if( Vana_        != dacs[k_DACName_Vana       ] ) {changes[k_DACName_Vana       ] = true; previous[k_DACName_Vana       ] = Vana_       ;} 
00160     if( Vsf_         != dacs[k_DACName_Vsf        ] ) {changes[k_DACName_Vsf        ] = true; previous[k_DACName_Vsf        ] = Vsf_        ;}         
00161     if( Vcomp_       != dacs[k_DACName_Vcomp      ] ) {changes[k_DACName_Vcomp      ] = true; previous[k_DACName_Vcomp      ] = Vcomp_      ;}         
00162     if( Vleak_       != dacs[k_DACName_Vleak      ] ) {changes[k_DACName_Vleak      ] = true; previous[k_DACName_Vleak      ] = Vleak_      ;}         
00163     if( VrgPr_       != dacs[k_DACName_VrgPr      ] ) {changes[k_DACName_VrgPr      ] = true; previous[k_DACName_VrgPr      ] = VrgPr_      ;}         
00164     if( VwllPr_      != dacs[k_DACName_VwllPr     ] ) {changes[k_DACName_VwllPr     ] = true; previous[k_DACName_VwllPr     ] = VwllPr_     ;}        
00165     if( VrgSh_       != dacs[k_DACName_VrgSh      ] ) {changes[k_DACName_VrgSh      ] = true; previous[k_DACName_VrgSh      ] = VrgSh_      ;}         
00166     if( VwllSh_      != dacs[k_DACName_VwllSh     ] ) {changes[k_DACName_VwllSh     ] = true; previous[k_DACName_VwllSh     ] = VwllSh_     ;}        
00167     if( VHldDel_     != dacs[k_DACName_VHldDel    ] ) {changes[k_DACName_VHldDel    ] = true; previous[k_DACName_VHldDel    ] = VHldDel_    ;} 
00168     if( Vtrim_       != dacs[k_DACName_Vtrim      ] ) {changes[k_DACName_Vtrim      ] = true; previous[k_DACName_Vtrim      ] = Vtrim_      ;}         
00169     if( VcThr_       != dacs[k_DACName_VcThr      ] ) {changes[k_DACName_VcThr      ] = true; previous[k_DACName_VcThr      ] = VcThr_      ;}         
00170     if( VIbias_bus_  != dacs[k_DACName_VIbias_bus ] ) {changes[k_DACName_VIbias_bus ] = true; previous[k_DACName_VIbias_bus ] = VIbias_bus_ ;} 
00171     if( VIbias_sf_   != dacs[k_DACName_VIbias_sf  ] ) {changes[k_DACName_VIbias_sf  ] = true; previous[k_DACName_VIbias_sf  ] = VIbias_sf_  ;} 
00172     if( VOffsetOp_   != dacs[k_DACName_VOffsetOp  ] ) {changes[k_DACName_VOffsetOp  ] = true; previous[k_DACName_VOffsetOp  ] = VOffsetOp_  ;} 
00173     if( VbiasOp_     != dacs[k_DACName_VbiasOp    ] ) {changes[k_DACName_VbiasOp    ] = true; previous[k_DACName_VbiasOp    ] = VbiasOp_    ;} 
00174     if( VOffsetRO_   != dacs[k_DACName_VOffsetRO  ] ) {changes[k_DACName_VOffsetRO  ] = true; previous[k_DACName_VOffsetRO  ] = VOffsetRO_  ;} 
00175     if( VIon_        != dacs[k_DACName_VIon       ] ) {changes[k_DACName_VIon       ] = true; previous[k_DACName_VIon       ] = VIon_       ;}          
00176     if( VIbias_PH_   != dacs[k_DACName_VIbias_PH  ] ) {changes[k_DACName_VIbias_PH  ] = true; previous[k_DACName_VIbias_PH  ] = VIbias_PH_  ;} 
00177     if( VIbias_DAC_  != dacs[k_DACName_VIbias_DAC ] ) {changes[k_DACName_VIbias_DAC ] = true; previous[k_DACName_VIbias_DAC ] = VIbias_DAC_ ;} 
00178     if( VIbias_roc_  != dacs[k_DACName_VIbias_roc ] ) {changes[k_DACName_VIbias_roc ] = true; previous[k_DACName_VIbias_roc ] = VIbias_roc_ ;} 
00179     if( VIColOr_     != dacs[k_DACName_VIColOr    ] ) {changes[k_DACName_VIColOr    ] = true; previous[k_DACName_VIColOr    ] = VIColOr_    ;} 
00180     if( Vnpix_       != dacs[k_DACName_Vnpix      ] ) {changes[k_DACName_Vnpix      ] = true; previous[k_DACName_Vnpix      ] = Vnpix_      ;}         
00181     if( VsumCol_     != dacs[k_DACName_VsumCol    ] ) {changes[k_DACName_VsumCol    ] = true; previous[k_DACName_VsumCol    ] = VsumCol_    ;} 
00182     if( Vcal_        != dacs[k_DACName_Vcal       ] ) {changes[k_DACName_Vcal       ] = true; previous[k_DACName_Vcal       ] = Vcal_       ;}          
00183     if( CalDel_      != dacs[k_DACName_CalDel     ] ) {changes[k_DACName_CalDel     ] = true; previous[k_DACName_CalDel     ] = CalDel_     ;}        
00184     if( TempRange_   != dacs[k_DACName_TempRange  ] ) {changes[k_DACName_TempRange  ] = true; previous[k_DACName_TempRange  ] = TempRange_  ;} 
00185     if( WBC_         != dacs[k_DACName_WBC        ] ) {changes[k_DACName_WBC        ] = true; previous[k_DACName_WBC        ] = WBC_        ;} 
00186     if( ChipContReg_ != dacs[k_DACName_ChipContReg] ) {changes[k_DACName_ChipContReg] = true; previous[k_DACName_ChipContReg] = ChipContReg_;} 
00187 }                                                                                           
00188                                                                                        
00189 void PixelROCDACSettings::setDAC(unsigned int dacaddress, unsigned int dacvalue)       
00190 {
00191         switch (dacaddress) {
00192                 case   1: Vdd_         = dacvalue;  break;
00193                 case   2: Vana_        = dacvalue;  break;
00194                 case   3: Vsf_         = dacvalue;  break;
00195                 case   4: Vcomp_       = dacvalue;  break;
00196                 case   5: Vleak_       = dacvalue;  break;
00197                 case   6: VrgPr_       = dacvalue;  break;
00198                 case   7: VwllPr_      = dacvalue;  break;
00199                 case   8: VrgSh_       = dacvalue;  break;
00200                 case   9: VwllSh_      = dacvalue;  break;
00201                 case  10: VHldDel_     = dacvalue;  break;
00202                 case  11: Vtrim_       = dacvalue;  break;
00203                 case  12: VcThr_       = dacvalue;  break;
00204                 case  13: VIbias_bus_  = dacvalue;  break;
00205                 case  14: VIbias_sf_   = dacvalue;  break;
00206                 case  15: VOffsetOp_   = dacvalue;  break;
00207                 case  16: VbiasOp_     = dacvalue;  break;
00208                 case  17: VOffsetRO_   = dacvalue;  break;
00209                 case  18: VIon_        = dacvalue;  break;
00210                 case  19: VIbias_PH_   = dacvalue;  break;
00211                 case  20: VIbias_DAC_  = dacvalue;  break;
00212                 case  21: VIbias_roc_  = dacvalue;  break;
00213                 case  22: VIColOr_     = dacvalue;  break;
00214                 case  23: Vnpix_       = dacvalue;  break;
00215                 case  24: VsumCol_     = dacvalue;  break;
00216                 case  25: Vcal_        = dacvalue;  break;
00217                 case  26: CalDel_      = dacvalue;  break;
00218                 case  27: TempRange_   = dacvalue;  break;
00219                 case 254: WBC_         = dacvalue;  break;
00220                 case 253: ChipContReg_ = dacvalue;  break;
00221                 default: cout<<"DAC Address "<<dacaddress<<" does not exist!"<<endl;
00222         }
00223 
00224 }
00225 
00226 void PixelROCDACSettings::writeBinary(ofstream& out) const
00227 {
00228     out << (char)rocid_.rocname().size();
00229     out.write(rocid_.rocname().c_str(),rocid_.rocname().size());
00230 
00231     out << Vdd_;
00232     out << Vana_;
00233     out << Vsf_;
00234     out << Vcomp_;
00235     out << Vleak_;
00236     out << VrgPr_;
00237     out << VwllPr_;
00238     out << VrgSh_;
00239     out << VwllSh_;
00240     out << VHldDel_;
00241     out << Vtrim_;
00242     out << VcThr_;
00243     out << VIbias_bus_;
00244     out << VIbias_sf_;
00245     out << VOffsetOp_;
00246     out << VbiasOp_;
00247     out << VOffsetRO_;
00248     out << VIon_;
00249     out << VIbias_PH_;
00250     out << VIbias_DAC_;
00251     out << VIbias_roc_;
00252     out << VIColOr_;
00253     out << Vnpix_;
00254     out << VsumCol_;
00255     out << Vcal_;
00256     out << CalDel_;
00257     out << TempRange_;
00258     out << WBC_;
00259     out << ChipContReg_;        
00260 }
00261 
00262 
00263 int PixelROCDACSettings::readBinary(ifstream& in, const PixelROCName& rocid){
00264     
00265     rocid_=rocid;
00266 
00267     in.read((char*)&Vdd_,1);
00268     in.read((char*)&Vana_,1);
00269     in.read((char*)&Vsf_,1);
00270     in.read((char*)&Vcomp_,1);
00271     in.read((char*)&Vleak_,1);
00272     in.read((char*)&VrgPr_,1);
00273     in.read((char*)&VwllPr_,1);
00274     in.read((char*)&VrgSh_,1);
00275     in.read((char*)&VwllSh_,1);
00276     in.read((char*)&VHldDel_,1);
00277     in.read((char*)&Vtrim_,1);
00278     in.read((char*)&VcThr_,1);
00279     in.read((char*)&VIbias_bus_,1);
00280     in.read((char*)&VIbias_sf_,1);
00281     in.read((char*)&VOffsetOp_,1);
00282     in.read((char*)&VbiasOp_,1);
00283     in.read((char*)&VOffsetRO_,1);
00284     in.read((char*)&VIon_,1);
00285     in.read((char*)&VIbias_PH_,1);
00286     in.read((char*)&VIbias_DAC_,1);
00287     in.read((char*)&VIbias_roc_,1);
00288     in.read((char*)&VIColOr_,1);
00289     in.read((char*)&Vnpix_,1);
00290     in.read((char*)&VsumCol_,1);
00291     in.read((char*)&Vcal_,1);
00292     in.read((char*)&CalDel_,1);
00293     in.read((char*)&TempRange_,1);
00294     in.read((char*)&WBC_,1);
00295     in.read((char*)&ChipContReg_,1);    
00296     
00297     return 1;
00298 
00299 }
00300 
00301 void PixelROCDACSettings::writeASCII(ostream& out) const{
00302 
00303     out << "ROC:           " << rocid_.rocname()   <<endl;
00304 
00305     out << k_DACName_Vdd << ":           " << (int)Vdd_          <<endl;
00306     out << k_DACName_Vana << ":          " << (int)Vana_         <<endl;
00307     out << k_DACName_Vsf << ":           " << (int)Vsf_          <<endl;
00308     out << k_DACName_Vcomp << ":         " << (int)Vcomp_        <<endl;
00309     out << k_DACName_Vleak << ":         " << (int)Vleak_        <<endl;
00310     out << k_DACName_VrgPr << ":         " << (int)VrgPr_        <<endl;
00311     out << k_DACName_VwllPr << ":        " << (int)VwllPr_       <<endl;
00312     out << k_DACName_VrgSh << ":         " << (int)VrgSh_        <<endl;
00313     out << k_DACName_VwllSh << ":        " << (int)VwllSh_       <<endl;
00314     out << k_DACName_VHldDel << ":       " << (int)VHldDel_      <<endl;
00315     out << k_DACName_Vtrim << ":         " << (int)Vtrim_        <<endl;
00316     out << k_DACName_VcThr << ":         " << (int)VcThr_        <<endl;
00317     out << k_DACName_VIbias_bus << ":    " << (int)VIbias_bus_   <<endl;
00318     out << k_DACName_VIbias_sf << ":     " << (int)VIbias_sf_    <<endl;
00319     out << k_DACName_VOffsetOp << ":     " << (int)VOffsetOp_    <<endl;
00320     out << k_DACName_VbiasOp << ":       " << (int)VbiasOp_      <<endl;
00321     out << k_DACName_VOffsetRO << ":     " << (int)VOffsetRO_    <<endl;
00322     out << k_DACName_VIon << ":          " << (int)VIon_         <<endl;
00323     out << k_DACName_VIbias_PH << ":     " << (int)VIbias_PH_    <<endl;
00324     out << k_DACName_VIbias_DAC << ":    " << (int)VIbias_DAC_   <<endl;
00325     out << k_DACName_VIbias_roc << ":    " << (int)VIbias_roc_   <<endl;
00326     out << k_DACName_VIColOr << ":       " << (int)VIColOr_      <<endl;
00327     out << k_DACName_Vnpix << ":         " << (int)Vnpix_        <<endl;
00328     out << k_DACName_VsumCol << ":       " << (int)VsumCol_      <<endl;
00329     out << k_DACName_Vcal << ":          " << (int)Vcal_         <<endl;
00330     out << k_DACName_CalDel << ":        " << (int)CalDel_       <<endl;
00331     out << k_DACName_TempRange << ":     " << (int)TempRange_    <<endl;
00332     out << k_DACName_WBC << ":           " << (int)WBC_          <<endl;
00333     out << k_DACName_ChipContReg << ":   " << (int)ChipContReg_  <<endl;
00334 
00335 }
00336 
00337 //=============================================================================================
00338 void PixelROCDACSettings::writeXML(ofstream *out) const {
00339   std::string mthn = "[PixelROCDACSettings::writeXML()]\t\t\t    " ;
00340 
00341   *out << "  <DATA>"                                                  << endl ;
00342   *out << "   <NAME_LABEL>"  << rocid_.rocname()  << "</NAME_LABEL>"  << endl ;
00343   *out << "   <VDD>"         << (int)Vdd_         << "</VDD>"         << endl ;
00344   *out << "   <VANA>"        << (int)Vana_        << "</VANA>"        << endl ;
00345   *out << "   <VSF>"         << (int)Vsf_         << "</VSF>"         << endl ;
00346   *out << "   <VCOMP>"       << (int)Vcomp_       << "</VCOMP>"       << endl ;
00347   *out << "   <VLEAK>"       << (int)Vleak_       << "</VLEAK>"       << endl ;
00348   *out << "   <VRGPR>"       << (int)VrgPr_       << "</VRGPR>"       << endl ;
00349   *out << "   <VWLLPR>"      << (int)VwllPr_      << "</VWLLPR>"      << endl ;
00350   *out << "   <VRGSH>"       << (int)VrgSh_       << "</VRGSH>"       << endl ;
00351   *out << "   <VWLLSH>"      << (int)VwllSh_      << "</VWLLSH>"      << endl ;
00352   *out << "   <VHLDDEL>"     << (int)VHldDel_     << "</VHLDDEL>"     << endl ;
00353   *out << "   <VTRIM>"       << (int)Vtrim_       << "</VTRIM>"       << endl ;
00354   *out << "   <VCTHR>"       << (int)VcThr_       << "</VCTHR>"       << endl ;
00355   *out << "   <VIBIAS_BUS>"  << (int)VIbias_bus_  << "</VIBIAS_BUS>"  << endl ;
00356   *out << "   <VIBIAS_SF>"   << (int)VIbias_sf_   << "</VIBIAS_SF>"   << endl ;
00357   *out << "   <VOFFSETOP>"   << (int)VOffsetOp_   << "</VOFFSETOP>"   << endl ;
00358   *out << "   <VBIASOP>"     << (int)VbiasOp_     << "</VBIASOP>"     << endl ;
00359   *out << "   <VOFFSETRO>"   << (int)VOffsetRO_   << "</VOFFSETRO>"   << endl ;
00360   *out << "   <VION>"        << (int)VIon_        << "</VION>"        << endl ;
00361   *out << "   <VIBIAS_PH>"   << (int)VIbias_PH_   << "</VIBIAS_PH>"   << endl ;
00362   *out << "   <VIBIAS_DAC>"  << (int)VIbias_DAC_  << "</VIBIAS_DAC>"  << endl ;
00363   *out << "   <VIBIAS_ROC>"  << (int)VIbias_roc_  << "</VIBIAS_ROC>"  << endl ;
00364   *out << "   <VICOLOR>"     << (int)VIColOr_     << "</VICOLOR>"     << endl ;
00365   *out << "   <VNPIX>"       << (int)Vnpix_       << "</VNPIX>"       << endl ;
00366   *out << "   <VSUMCOL>"     << (int)VsumCol_     << "</VSUMCOL>"     << endl ;
00367   *out << "   <VCAL>"        << (int)Vcal_        << "</VCAL>"        << endl ;
00368   *out << "   <CALDEL>"      << (int)CalDel_      << "</CALDEL>"      << endl ;
00369   *out << "   <TEMPRANGE>"   << (int)TempRange_   << "</TEMPRANGE>"   << endl ;
00370   *out << "   <WBC>"         << (int)WBC_         << "</WBC>"         << endl ;
00371   *out << "   <CHIPCONTREG>" << (int)ChipContReg_ << "</CHIPCONTREG>" << endl ;
00372   *out << "  </DATA>"                                                 << endl ;
00373   *out << " "                                                         << endl ;
00374 
00375 }
00376 
00377 //=============================================================================================
00378 void PixelROCDACSettings::checkTag(string tag, 
00379                                    string dacName,
00380                                    const PixelROCName& rocid){
00381   
00382   dacName+=":";
00383   if (tag!=dacName) {
00384     cout << "Read ROC name:"<<tag<<endl;
00385     cout << "But expected to find:"<<dacName<<endl;
00386     cout << "When reading DAC settings for ROC "<<rocid<<endl;
00387     assert(0);
00388   }
00389 
00390 }
00391 
00392 int PixelROCDACSettings::read(std::istringstream& in, const PixelROCName& rocid)
00393 {
00394     rocid_=rocid;
00395 
00396     unsigned int tmp;
00397     string tag;
00398 
00399     in >> tag; 
00400     checkTag(tag,k_DACName_Vdd,rocid);
00401     in >> tmp; Vdd_=tmp;
00402     in >> tag; 
00403     checkTag(tag,k_DACName_Vana,rocid);
00404     in >> tmp; Vana_=tmp;
00405     in >> tag; 
00406     checkTag(tag,k_DACName_Vsf,rocid);
00407     in >> tmp; Vsf_=tmp;
00408     in >> tag; 
00409     checkTag(tag,k_DACName_Vcomp,rocid);
00410     in >> tmp; Vcomp_=tmp;
00411     in >> tag; 
00412     checkTag(tag,k_DACName_Vleak,rocid);
00413     in >> tmp; Vleak_=tmp;
00414     in >> tag; 
00415     checkTag(tag,k_DACName_VrgPr,rocid);
00416     in >> tmp; VrgPr_=tmp;
00417     in >> tag; 
00418     checkTag(tag,k_DACName_VwllPr,rocid);
00419     in >> tmp; VwllPr_=tmp;
00420     in >> tag; 
00421     checkTag(tag,k_DACName_VrgSh,rocid);
00422     in >> tmp; VrgSh_=tmp;
00423     in >> tag; 
00424     checkTag(tag,k_DACName_VwllSh,rocid);
00425     in >> tmp; VwllSh_=tmp;
00426     in >> tag; 
00427     checkTag(tag,k_DACName_VHldDel,rocid);
00428     in >> tmp; VHldDel_=tmp;
00429     in >> tag; 
00430     checkTag(tag,k_DACName_Vtrim,rocid);
00431     in >> tmp; Vtrim_=tmp;
00432     in >> tag; 
00433     checkTag(tag,k_DACName_VcThr,rocid);
00434     in >> tmp; VcThr_=tmp;
00435     in >> tag; 
00436     checkTag(tag,k_DACName_VIbias_bus,rocid);
00437     in >> tmp; VIbias_bus_=tmp;
00438     in >> tag; 
00439     checkTag(tag,k_DACName_VIbias_sf,rocid);
00440     in >> tmp; VIbias_sf_=tmp;
00441     in >> tag; 
00442     checkTag(tag,k_DACName_VOffsetOp,rocid);
00443     in >> tmp; VOffsetOp_=tmp;
00444     in >> tag; 
00445     checkTag(tag,k_DACName_VbiasOp,rocid);
00446     in >> tmp; VbiasOp_=tmp;
00447     in >> tag; 
00448     checkTag(tag,k_DACName_VOffsetRO,rocid);
00449     in >> tmp; VOffsetRO_=tmp;
00450     in >> tag; 
00451     checkTag(tag,k_DACName_VIon,rocid);
00452     in >> tmp; VIon_=tmp;
00453     in >> tag; 
00454     checkTag(tag,k_DACName_VIbias_PH,rocid);
00455     in >> tmp; VIbias_PH_=tmp;
00456     in >> tag; 
00457     checkTag(tag,k_DACName_VIbias_DAC,rocid);
00458     in >> tmp; VIbias_DAC_=tmp;
00459     in >> tag; 
00460     checkTag(tag,k_DACName_VIbias_roc,rocid);
00461     in >> tmp; VIbias_roc_=tmp;
00462     in >> tag; 
00463     checkTag(tag,k_DACName_VIColOr,rocid);
00464     in >> tmp; VIColOr_=tmp;
00465     in >> tag; 
00466     checkTag(tag,k_DACName_Vnpix,rocid);
00467     in >> tmp; Vnpix_=tmp;
00468     in >> tag; 
00469     checkTag(tag,k_DACName_VsumCol,rocid);
00470     in >> tmp; VsumCol_=tmp;
00471     in >> tag; 
00472     checkTag(tag,k_DACName_Vcal,rocid);
00473     in >> tmp; Vcal_=tmp;
00474     in >> tag; 
00475     checkTag(tag,k_DACName_CalDel,rocid);
00476     in >> tmp; CalDel_=tmp;
00477     in >> tag; 
00478     if (tag==k_DACName_WBC+":"){
00479       static bool first=true;
00480       if (first){
00481         cout << "**********************************************"<<endl;
00482         cout << "Did not find TempRange setting in DAC settings"<<endl;
00483         cout << "Will use a default value of 4."<<endl;
00484         cout << "This message will only be printed out once"<<endl;
00485         cout << "**********************************************"<<endl;
00486         TempRange_=4;
00487         first=false;
00488       }
00489       in >> tmp; WBC_=tmp;
00490     } else {    
00491       checkTag(tag,k_DACName_TempRange,rocid);
00492       in >> tmp; TempRange_=tmp;
00493       in >> tag; 
00494       checkTag(tag,k_DACName_WBC,rocid);
00495       in >> tmp; WBC_=tmp;
00496     }
00497     in >> tag; 
00498     checkTag(tag,k_DACName_ChipContReg,rocid);
00499     in >> tmp; ChipContReg_=tmp;
00500 
00501     return 0;
00502 }
00503 
00504 int PixelROCDACSettings::read(ifstream& in, const PixelROCName& rocid){
00505     
00506     rocid_=rocid;
00507 
00508     unsigned int tmp;
00509     string tag;
00510 
00511     in >> tag; 
00512     checkTag(tag,k_DACName_Vdd,rocid);
00513     in >> tmp; Vdd_=tmp;
00514     in >> tag; 
00515     checkTag(tag,k_DACName_Vana,rocid);
00516     in >> tmp; Vana_=tmp;
00517     in >> tag; 
00518     checkTag(tag,k_DACName_Vsf,rocid);
00519     in >> tmp; Vsf_=tmp;
00520     in >> tag; 
00521     checkTag(tag,k_DACName_Vcomp,rocid);
00522     in >> tmp; Vcomp_=tmp;
00523     in >> tag; 
00524     checkTag(tag,k_DACName_Vleak,rocid);
00525     in >> tmp; Vleak_=tmp;
00526     in >> tag; 
00527     checkTag(tag,k_DACName_VrgPr,rocid);
00528     in >> tmp; VrgPr_=tmp;
00529     in >> tag; 
00530     checkTag(tag,k_DACName_VwllPr,rocid);
00531     in >> tmp; VwllPr_=tmp;
00532     in >> tag; 
00533     checkTag(tag,k_DACName_VrgSh,rocid);
00534     in >> tmp; VrgSh_=tmp;
00535     in >> tag; 
00536     checkTag(tag,k_DACName_VwllSh,rocid);
00537     in >> tmp; VwllSh_=tmp;
00538     in >> tag; 
00539     checkTag(tag,k_DACName_VHldDel,rocid);
00540     in >> tmp; VHldDel_=tmp;
00541     in >> tag; 
00542     checkTag(tag,k_DACName_Vtrim,rocid);
00543     in >> tmp; Vtrim_=tmp;
00544     in >> tag; 
00545     checkTag(tag,k_DACName_VcThr,rocid);
00546     in >> tmp; VcThr_=tmp;
00547     in >> tag; 
00548     checkTag(tag,k_DACName_VIbias_bus,rocid);
00549     in >> tmp; VIbias_bus_=tmp;
00550     in >> tag; 
00551     checkTag(tag,k_DACName_VIbias_sf,rocid);
00552     in >> tmp; VIbias_sf_=tmp;
00553     in >> tag; 
00554     checkTag(tag,k_DACName_VOffsetOp,rocid);
00555     in >> tmp; VOffsetOp_=tmp;
00556     in >> tag; 
00557     checkTag(tag,k_DACName_VbiasOp,rocid);
00558     in >> tmp; VbiasOp_=tmp;
00559     in >> tag; 
00560     checkTag(tag,k_DACName_VOffsetRO,rocid);
00561     in >> tmp; VOffsetRO_=tmp;
00562     in >> tag; 
00563     checkTag(tag,k_DACName_VIon,rocid);
00564     in >> tmp; VIon_=tmp;
00565     in >> tag; 
00566     checkTag(tag,k_DACName_VIbias_PH,rocid);
00567     in >> tmp; VIbias_PH_=tmp;
00568     in >> tag; 
00569     checkTag(tag,k_DACName_VIbias_DAC,rocid);
00570     in >> tmp; VIbias_DAC_=tmp;
00571     in >> tag; 
00572     checkTag(tag,k_DACName_VIbias_roc,rocid);
00573     in >> tmp; VIbias_roc_=tmp;
00574     in >> tag; 
00575     checkTag(tag,k_DACName_VIColOr,rocid);
00576     in >> tmp; VIColOr_=tmp;
00577     in >> tag; 
00578     checkTag(tag,k_DACName_Vnpix,rocid);
00579     in >> tmp; Vnpix_=tmp;
00580     in >> tag; 
00581     checkTag(tag,k_DACName_VsumCol,rocid);
00582     in >> tmp; VsumCol_=tmp;
00583     in >> tag; 
00584     checkTag(tag,k_DACName_Vcal,rocid);
00585     in >> tmp; Vcal_=tmp;
00586     in >> tag; 
00587     checkTag(tag,k_DACName_CalDel,rocid);
00588     in >> tmp; CalDel_=tmp;
00589     in >> tag; 
00590     if (tag==k_DACName_WBC+":"){
00591       static bool first=true;
00592       if (first){
00593         cout << "**********************************************"<<endl;
00594         cout << "Did not find TempRange setting in DAC settings"<<endl;
00595         cout << "Will use a default value of 4."<<endl;
00596         cout << "This message will only be printed out once"<<endl;
00597         cout << "**********************************************"<<endl;
00598         TempRange_=4;
00599         first=false;
00600       }
00601       in >> tmp; WBC_=tmp;
00602     } else {    
00603       checkTag(tag,k_DACName_TempRange,rocid);
00604       in >> tmp; TempRange_=tmp;
00605       in >> tag; 
00606       checkTag(tag,k_DACName_WBC,rocid);
00607       in >> tmp; WBC_=tmp;
00608     }
00609     in >> tag; 
00610     checkTag(tag,k_DACName_ChipContReg,rocid);
00611     in >> tmp; ChipContReg_=tmp;
00612 
00613     return 0;
00614 }
00615 
00616 
00617 string PixelROCDACSettings::getConfigCommand(){
00618 
00619   string s;
00620 
00621   return s;
00622 
00623 }
00624 
00625 ostream& pos::operator<<(ostream& s, const PixelROCDACSettings& dacs){
00626   
00627   s << k_DACName_Vdd << "          :" << (unsigned int)dacs.Vdd_ << endl;
00628   s << k_DACName_Vana << "         :" << (unsigned int)dacs.Vana_ << endl;
00629   s << k_DACName_Vsf << "          :" << (unsigned int)dacs.Vsf_ << endl;
00630   s << k_DACName_Vcomp << "        :" << (unsigned int)dacs.Vcomp_ << endl;
00631   s << k_DACName_Vleak << "        :" << (unsigned int)dacs.Vleak_ << endl;
00632   s << k_DACName_VrgPr << "        :" << (unsigned int)dacs.VrgPr_ << endl;
00633   s << k_DACName_VwllPr << "       :" << (unsigned int)dacs.VwllPr_ << endl;
00634   s << k_DACName_VrgSh << "        :" << (unsigned int)dacs.VrgSh_ << endl;
00635   s << k_DACName_VwllSh << "       :" << (unsigned int)dacs.VwllSh_ << endl;
00636   s << k_DACName_VHldDel << "      :" << (unsigned int)dacs.VHldDel_ << endl;
00637   s << k_DACName_Vtrim << "        :" << (unsigned int)dacs.Vtrim_ << endl;
00638   s << k_DACName_VcThr << "        :" << (unsigned int)dacs.VcThr_ << endl;
00639   s << k_DACName_VIbias_bus << "   :" << (unsigned int)dacs.VIbias_bus_ << endl;
00640   s << k_DACName_VIbias_sf << "    :" << (unsigned int)dacs.VIbias_sf_ << endl;
00641   s << k_DACName_VOffsetOp << "    :" << (unsigned int)dacs.VOffsetOp_ << endl;
00642   s << k_DACName_VbiasOp << "      :" << (unsigned int)dacs.VbiasOp_ << endl;
00643   s << k_DACName_VOffsetRO << "    :" << (unsigned int)dacs.VOffsetRO_ << endl;
00644   s << k_DACName_VIon << "         :" << (unsigned int)dacs.VIon_ << endl;
00645   s << k_DACName_VIbias_PH << "    :" << (unsigned int)dacs.VIbias_PH_ << endl;
00646   s << k_DACName_VIbias_DAC << "   :" << (unsigned int)dacs.VIbias_DAC_ << endl;
00647   s << k_DACName_VIbias_roc << "   :" << (unsigned int)dacs.VIbias_roc_ << endl;
00648   s << k_DACName_VIColOr << "      :" << (unsigned int)dacs.VIColOr_ << endl;
00649   s << k_DACName_Vnpix << "        :" << (unsigned int)dacs.Vnpix_ << endl;
00650   s << k_DACName_VsumCol << "      :" << (unsigned int)dacs.VsumCol_ << endl;
00651   s << k_DACName_Vcal << "         :" << (unsigned int)dacs.Vcal_ << endl;
00652   s << k_DACName_CalDel << "       :" << (unsigned int)dacs.CalDel_ << endl;
00653   s << k_DACName_TempRange << "    :" << (unsigned int)dacs.TempRange_ << endl;
00654   s << k_DACName_WBC << "          :" << (unsigned int)dacs.WBC_ << endl;
00655   s << k_DACName_ChipContReg << "  :" << (unsigned int)dacs.ChipContReg_ << endl;
00656   
00657   return s;
00658 
00659 }
00660 
00661 //Added by Umesh
00662 void PixelROCDACSettings::setDac(string dacName, int dacValue){
00663   if(ToLower(dacName) == ToLower(k_DACName_Vdd)){
00664     Vdd_ = dacValue;
00665   }
00666   else if(ToLower(dacName) == ToLower(k_DACName_Vana)){
00667     Vana_ = dacValue;
00668   }
00669   else if(ToLower(dacName) == ToLower(k_DACName_Vsf)){
00670     Vsf_ = dacValue;
00671   }
00672   else if(ToLower(dacName) == ToLower(k_DACName_Vcomp)){
00673     Vcomp_ = dacValue;
00674   }
00675   else if(ToLower(dacName)==ToLower(k_DACName_Vleak)){
00676     Vleak_ = dacValue;
00677   }
00678   else if(ToLower(dacName)==ToLower(k_DACName_VrgPr)){
00679     VrgPr_ = dacValue;
00680   }
00681   else if(ToLower(dacName)==ToLower(k_DACName_VwllPr)){
00682     VwllPr_ = dacValue;
00683   }
00684   else if(ToLower(dacName)==ToLower(k_DACName_VrgSh)){
00685     VrgSh_ = dacValue;
00686   }
00687   else if(ToLower(dacName)==ToLower(k_DACName_VwllSh)){
00688     VwllSh_ = dacValue;
00689   }
00690   else if(ToLower(dacName)==ToLower(k_DACName_VHldDel)){
00691     VHldDel_ = dacValue;
00692   }
00693   else if(ToLower(dacName)==ToLower(k_DACName_Vtrim)){
00694     Vtrim_ = dacValue;
00695   }
00696   else if(ToLower(dacName)==ToLower(k_DACName_VcThr)){
00697     VcThr_ = dacValue;
00698   }
00699   else if(ToLower(dacName)==ToLower(k_DACName_VIbias_bus)){
00700     VIbias_bus_ = dacValue;
00701   }
00702   else if(ToLower(dacName)==ToLower(k_DACName_VIbias_sf)){
00703     VIbias_sf_ = dacValue;
00704   }
00705   else if(ToLower(dacName)==ToLower(k_DACName_VOffsetOp)){
00706     VOffsetOp_ = dacValue;
00707   }
00708   else if(ToLower(dacName)==ToLower(k_DACName_VbiasOp)){
00709     VbiasOp_ = dacValue;
00710   }
00711   else if(ToLower(dacName)==ToLower(k_DACName_VOffsetRO)){
00712     VOffsetRO_ = dacValue;
00713   }
00714   else if(ToLower(dacName)==ToLower(k_DACName_VIon)){
00715     VIon_ = dacValue;
00716   }
00717   else if(ToLower(dacName)==ToLower(k_DACName_VIbias_PH)){
00718     VIbias_PH_ = dacValue;
00719   }
00720   else if(ToLower(dacName)==ToLower(k_DACName_VIbias_DAC)){
00721     VIbias_DAC_ = dacValue;
00722   }
00723   else if(ToLower(dacName)==ToLower(k_DACName_VIbias_roc)){
00724     VIbias_roc_ = dacValue;
00725   }
00726   else if(ToLower(dacName)==ToLower(k_DACName_VIColOr)){
00727     VIColOr_ = dacValue;
00728   }
00729   else if(ToLower(dacName)==ToLower(k_DACName_Vnpix)){;
00730     Vnpix_ = dacValue;
00731   }
00732   else if(ToLower(dacName)==ToLower(k_DACName_VsumCol)){
00733     VsumCol_ = dacValue;
00734   }
00735   else if(ToLower(dacName)==ToLower(k_DACName_Vcal)){
00736     Vcal_ = dacValue;
00737   }
00738   else if(ToLower(dacName)==ToLower(k_DACName_CalDel)){
00739     CalDel_ = dacValue;
00740   }
00741   else if(ToLower(dacName)==ToLower(k_DACName_TempRange)){
00742     TempRange_ = dacValue;
00743   }
00744   else if(ToLower(dacName)==ToLower(k_DACName_WBC)){
00745     WBC_ = dacValue;
00746   }
00747   else if(ToLower(dacName)==ToLower(k_DACName_ChipContReg)){
00748     ChipContReg_ = dacValue;
00749   }
00750   else
00751   {
00752     cout << "ERROR in PixelROCDACSettings::setDac: DAC name " << dacName << " does not exist." << endl;
00753     assert(0);
00754   }
00755 
00756 }
00757 
00758 unsigned int PixelROCDACSettings::getDac(string dacName) const {
00759   
00760   if(dacName == k_DACName_Vdd){
00761     return Vdd_;
00762   }
00763   else if(dacName == k_DACName_Vana){
00764     return Vana_;
00765   }
00766   else if(dacName == k_DACName_Vsf){
00767     return Vsf_;
00768   }
00769   else if(dacName == k_DACName_Vcomp){
00770     return Vcomp_;
00771   }
00772   else if(dacName == k_DACName_Vleak){
00773     return Vleak_;
00774   }
00775   else if(dacName == k_DACName_VrgPr){
00776     return VrgPr_;
00777   }
00778   else if(dacName == k_DACName_VwllPr){
00779     return VwllPr_;
00780   }
00781   else if(dacName == k_DACName_VrgSh){
00782     return VrgSh_;
00783   }
00784   else if(dacName == k_DACName_VwllSh){
00785     return VwllSh_;
00786   }
00787   else if(dacName == k_DACName_VHldDel){
00788     return VHldDel_;
00789   }
00790   else if(dacName == k_DACName_Vtrim){
00791     return Vtrim_;
00792   }
00793   else if(dacName == k_DACName_VcThr){
00794     return VcThr_;
00795   }
00796   else if(dacName == k_DACName_VIbias_bus){
00797     return VIbias_bus_;
00798   }
00799   else if(dacName == k_DACName_VIbias_sf){
00800     return VIbias_sf_;
00801   }
00802   else if(dacName == k_DACName_VOffsetOp){
00803     return VOffsetOp_;
00804   }
00805   else if(dacName == k_DACName_VbiasOp){
00806     return VbiasOp_;
00807   }
00808   else if(dacName == k_DACName_VOffsetRO){
00809     return VOffsetRO_;
00810   }
00811   else if(dacName == k_DACName_VIon){
00812     return VIon_;
00813   }
00814   else if(dacName == k_DACName_VIbias_PH){
00815     return VIbias_PH_;
00816   }
00817   else if(dacName == k_DACName_VIbias_DAC){
00818     return VIbias_DAC_;
00819   }
00820   else if(dacName == k_DACName_VIbias_roc){
00821     return VIbias_roc_;
00822   }
00823   else if(dacName == k_DACName_VIColOr){
00824     return VIColOr_;
00825   }
00826   else if(dacName == k_DACName_Vnpix){
00827     return Vnpix_;
00828   }
00829   else if(dacName == k_DACName_VsumCol){
00830     return VsumCol_;
00831   }
00832   else if(dacName == k_DACName_Vcal){
00833     return Vcal_;
00834   }
00835   else if(dacName == k_DACName_CalDel){
00836     return CalDel_;
00837   }
00838   else if(dacName == k_DACName_TempRange){
00839     return TempRange_;
00840   }
00841   else if(dacName == k_DACName_WBC){
00842     return WBC_;
00843   }
00844   else if(dacName == k_DACName_ChipContReg){
00845     return ChipContReg_;
00846   }
00847   else {
00848     cout << "ERROR in PixelROCDACSettings::getDac: DAC name " << dacName << " does not exist." << endl;
00849     assert(0);
00850   }
00851 }                         
00852 
00853 
00854 string PixelROCDACSettings::ToLower(string generic)
00855 {
00856   string result ;
00857   for(unsigned int i = 0; i < generic.length() ; i++)
00858     {
00859       result.append(1,(char)tolower(generic[i]) );
00860     }
00861   return result ;
00862 }

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