CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/Alignment/CocoaModel/src/EntryData.cc

Go to the documentation of this file.
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 }