00001 // COCOA class implementation file 00002 //Id: EntryData.cc 00003 //CAT: Model 00004 // 00005 // History: v1.0 00006 // Pedro Arce 00007 00008 #include "Alignment/CocoaModel/interface/EntryData.h" 00009 #include "Alignment/CocoaModel/interface/EntryMgr.h" 00010 #include "Alignment/CocoaUtilities/interface/ALIUtils.h" 00011 #include <cstdlib> 00012 00013 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00014 //@@ Constructor 00015 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00016 EntryData::EntryData() 00017 { 00018 } 00019 00020 void EntryData::fill(const std::vector<ALIstring>& wordlist ) 00021 { 00022 if (ALIUtils::debug >=4) std::cout << "Filling entry data:" << std::endl; 00023 //----------- Check there are > 10 words 00024 if ( wordlist.size() < 10 ) { 00025 //t ALIFileIn::getInstance( Model::SDFName() ).ErrorInLine(); 00026 ALIUtils::dumpVS( wordlist, " !!! Incorrect format for EntryData:", std::cerr ); 00027 std::cerr << std::endl << " There should be at least 10 words" << std::endl; 00028 abort(); 00029 } 00030 00031 EntryMgr* entryMgr = EntryMgr::getInstance(); 00032 //----- set name and type 00033 fLongOptOName = wordlist[2]; 00034 fShortOptOName = entryMgr->extractShortName(wordlist[2]); 00035 fEntryName = wordlist[3]; 00036 00037 //----- set value 00038 fValueOriginal = ALIUtils::getFloat( wordlist[4] ); 00039 fValueDisplacement = 0.; 00040 // fValueOriginal = ALIUtils::getFloat( wordlist[7] ); 00041 // fValueDisplacement = ALIUtils::getFloat( wordlist[12] ); 00042 /* done in Entry.cc 00043 if( wordlist[3].substr(0,6) == "centre" ) { 00044 fValue *= entryMgr->getDimOutLengthVal(); 00045 if(ALIUtils::debug >= 5) std::cout << "value " << fValue << " " << entryMgr->getDimOutLengthVal() << std::endl; 00046 } else if( wordlist[3].substr(0,6) == "angles" ) { 00047 fValue *= entryMgr->getDimOutAngleVal(); 00048 } else { 00049 std::cerr << "!!!FATAL ERROR: reading from 'report.out' only supports centre or angles, NOT " << wordlist[3] << std::endl; 00050 abort(); 00051 } 00052 */ 00053 00054 //----- set sigma 00055 fSigma = ALIUtils::getFloat( wordlist[6] ); 00056 /* done in Entry.cc 00057 if( wordlist[3].substr(0,6) == "centre" ) { 00058 fSigma *= entryMgr->getDimOutLengthSig(); 00059 }else if( wordlist[3].substr(0,6) == "angles" ) { 00060 fSigma *= entryMgr->getDimOutAngleSig(); 00061 } 00062 */ 00063 00064 //----- set quality 00065 if( wordlist[0] == ALIstring("UNK:") ) { 00066 fQuality = 2; 00067 } else if( wordlist[0] == ALIstring("CAL:") ) { 00068 fQuality = 1; 00069 } else if( wordlist[0] == ALIstring("FIX:") ) { 00070 fQuality = 0; 00071 } else { 00072 //- ALIFileIn::getInstance( Model::SDFName() ).ErrorInLine(); 00073 std::cerr << " quality should be 'UNK:' or 'CAL:' or 'FIX:', instead of " << wordlist[0] << std::endl; 00074 abort(); 00075 } 00076 00077 if (ALIUtils::debug >= 4) { 00078 //t std::cout << *this << std::endl; 00079 } 00080 } 00081 00082 00083 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00084 //@@ Destructor 00085 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00086 EntryData::~EntryData() 00087 { 00088 } 00089 00090 00091 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00092 std::ostream& operator << (std::ostream& os, const EntryData& ent) 00093 { 00094 00095 os << "ENTRY: " << ent.longOptOName() << " : " << ent.entryName() 00096 << " valueOriginal " << ent.valueOriginal() 00097 << " valueDisplacement " << ent.valueDisplacement() 00098 << " sigma " << ent.sigma() 00099 << " quality " << ent.quality() << std::endl; 00100 00101 return os; 00102 00103 }