X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Fsrc1%2Fbrukerobjectvaryingproperties.cpp;h=1222eae8387f757e7d43a448bd55ed2f4b0a02c0;hb=bcce50eae2804247af45026ca20665a22ff073a3;hp=cbdac4e1d5246c3d9eaf93e714bf4a3e0b7290e3;hpb=dc999ac989fde4e454da55bf7f12065b434ab445;p=creaBruker.git diff --git a/lib/src1/brukerobjectvaryingproperties.cpp b/lib/src1/brukerobjectvaryingproperties.cpp index cbdac4e..1222eae 100644 --- a/lib/src1/brukerobjectvaryingproperties.cpp +++ b/lib/src1/brukerobjectvaryingproperties.cpp @@ -10,7 +10,7 @@ // // #include "brukerobjectvaryingproperties.h" -//#include "brukerexception.h" +#include "brukerexception.h" BrukerObjectVaryingProperties::BrukerObjectVaryingProperties() @@ -24,69 +24,74 @@ BrukerObjectVaryingProperties::~BrukerObjectVaryingProperties() -void BrukerObjectVaryingProperties::setPositionS(std::map & BrukerHM){ +void BrukerObjectVaryingProperties::computePositionS(std::map & BrukerHM){ std::vector PosiS =BrukerHM[(std::string) "ACQ_slice_offset"].GetDoubleValue(); PositionS =PosiS; }; -void BrukerObjectVaryingProperties::setPositionR(std::map & BrukerHM){ +void BrukerObjectVaryingProperties::computePositionR(std::map & BrukerHM){ PositionR =BrukerHM[(std::string) "ACQ_read_offset"].GetDoubleValue() ; }; -void BrukerObjectVaryingProperties::setPositionP(std::map & BrukerHM){ +void BrukerObjectVaryingProperties::computePositionP(std::map & BrukerHM){ PositionP =BrukerHM[(std::string) "ACQ_phase1_offset"].GetDoubleValue(); }; -void BrukerObjectVaryingProperties::setTE(std::map & BrukerHM){ +void BrukerObjectVaryingProperties::computeTE(std::map & BrukerHM){ TE = BrukerHM[(std::string) "ACQ_echo_time"].GetDoubleValue(); }; double BrukerObjectVaryingProperties::getTE(unsigned int theValue) const{ if (theValue < TE.size() ) {return TE[theValue];} - else throw 0; + //else throw 0; + else throw BrukerSizeException("TE", theValue, TE.size() ); } -/*void BrukerObjectVaryingProperties::setTE(const std::vector< double >& theValue) +/*void BrukerObjectVaryingProperties::computeTE(const std::vector< double >& theValue) { TE = theValue; }*/ double BrukerObjectVaryingProperties::getPositionP(unsigned int theValue) const{ if (theValue < PositionP.size() ) return PositionP[theValue]; - else throw 1; +// else throw 1; + else throw BrukerSizeException("PositionP", theValue, PositionP.size() ); } -/*void BrukerObjectVaryingProperties::setPositionP(const std::vector< double >& theValue) +/*void BrukerObjectVaryingProperties::computePositionP(const std::vector< double >& theValue) { PositionP = theValue; }*/ double BrukerObjectVaryingProperties::getPositionR(unsigned int theValue) const{ if (theValue < PositionR.size() ) return PositionR[theValue]; - else throw 2; +// else throw 2; + else throw BrukerSizeException("PositionR", theValue, PositionR.size() ); } -/*void BrukerObjectVaryingProperties::setPositionR(const std::vector< double >& theValue) +/*void BrukerObjectVaryingProperties::computePositionR(const std::vector< double >& theValue) { PositionP = theValue; }*/ double BrukerObjectVaryingProperties::getPositionS(unsigned int theValue) const{ if (theValue < PositionS.size() ) return PositionS[theValue]; - else throw 3; +// else throw 3; + else throw BrukerSizeException("PositionS", theValue, PositionS.size() ); } -/*void BrukerObjectVaryingProperties::setPositionS(const std::vector< double >& theValue) +/*void BrukerObjectVaryingProperties::computePositionS(const std::vector< double >& theValue) { PositionP = theValue; }*/ int BrukerObjectVaryingProperties::getAcquisitionOrder(unsigned int theValue) const{ if (theValue & theValue1, const std::vector< int >& theValue2) +/*void BrukerObjectVaryingProperties::computeAcquisitionOrder(const std::vector< int >& theValue1, const std::vector< int >& theValue2) { AcquisitionOrder.clear(); if (theValue1.size() != theValue2[3]*theValue2[1]) throw 5; @@ -94,21 +99,27 @@ int BrukerObjectVaryingProperties::getAcquisitionOrder(unsigned int theValue) c for (int i =0 ;i & BrukerHM, std::vector & LoopStruct){ - std::vector AcqOrder; - if (BrukerHM[(std::string) "ACQ_obj_order"].GetIntValue().size() != LoopStruct[3]*LoopStruct[1]) throw 7; +void BrukerObjectVaryingProperties::computeAcquisitionOrder(std::map & BrukerHM, std::vector & LoopStruct){ + std::vector AcqOrder; + + if (BrukerHM[(std::string) "ACQ_obj_order"].GetIntValue().size() != LoopStruct[3]*LoopStruct[1]) { + std::cout << "BrukerHM[(std::string) 'ACQ_obj_order'].GetIntValue().size() " << BrukerHM[(std::string) "ACQ_obj_order"].GetIntValue().size() + << " LoopStruct[3] : " << LoopStruct[3] << " * LoopStruct[1] : " << LoopStruct[1] << " = " << LoopStruct[3]*LoopStruct[1] << std::endl; + throw 7; + } if (LoopStruct.size() < 4 ) throw 8; for (int i =0 ;i > BrukerObjectVaryingProperties::getOrientation(unsigned int theValue) const{ +std :: vector < std :: vector < double > > BrukerObjectVaryingProperties::getOrientation(unsigned int theValue) const { if (theValue < Orientation.size())return Orientation[theValue]; - else throw 9; + //else throw 9; + else throw BrukerSizeException("Orientation", theValue, Orientation.size() ); } -/*void BrukerObjectVaryingProperties::setOrientation( std :: vector < double > & theValue1,const std::vector< int >& theValue2) +/*void BrukerObjectVaryingProperties::computeOrientation( std :: vector < double > & theValue1,const std::vector< int >& theValue2) { if (theValue1.size() != theValue2[3]*9) throw 10; if (theValue2.size() < 4 ) throw 11; @@ -123,10 +134,12 @@ std :: vector < std :: vector < double > > BrukerObjectVaryingProperties::getOr } }*/ -void BrukerObjectVaryingProperties::setOrientation(std::map & BrukerHM, std::vector & LoopStruct){ +void BrukerObjectVaryingProperties::computeOrientation(std::map & BrukerHM, std::vector & LoopStruct){ if (BrukerHM[(std::string) "ACQ_grad_matrix"].GetDoubleValue().size() != LoopStruct[3]*9) throw 12; - if (LoopStruct.size() < 4 ) throw 13; - + if (LoopStruct.size() < 4 ) + //throw 13; + throw BrukerSizeException("LoopStruct", 4, LoopStruct.size() ); + std::vector Temp1D(3,0.0); std::vector > Temp2D; std::vector > > Temp3D; @@ -149,12 +162,12 @@ void BrukerObjectVaryingProperties::setOrientation(std::map & BrukerHM, std::vector & LoopStruct){ +void BrukerObjectVaryingProperties::computePositionTimePerNR(std::map & BrukerHM, std::vector & LoopStruct){ double FloatPositionTimePerNR=BrukerHM[(std::string) "ACQ_repetition_time"].GetDoubleValue()[0]; int i=0; int NA=BrukerHM[(std::string) "NA"].GetIntValue()[0]; @@ -197,16 +210,30 @@ void BrukerObjectVaryingProperties::setPositionTimePerNR(std::map BrukerHM,std::vector LoopStruct) */ -bool BrukerObjectVaryingProperties::init(std::map & BrukerHM, std::vector & LoopStruct) +bool BrukerObjectVaryingProperties::init(std::map &BrukerHM, std::vector &LoopStruct) { - setAcquisitionOrder( BrukerHM, LoopStruct); - setOrientation(BrukerHM, LoopStruct); - setPositionP(BrukerHM); - setPositionR(BrukerHM); - setPositionS(BrukerHM); - setPositionTimePerNR(BrukerHM, LoopStruct); - setTE(BrukerHM); - + try { + computeAcquisitionOrder (BrukerHM, LoopStruct); + computeOrientation (BrukerHM, LoopStruct); + computePositionP (BrukerHM); + computePositionR (BrukerHM); + computePositionS (BrukerHM); + computePositionTimePerNR(BrukerHM, LoopStruct); + computeTE (BrukerHM); + } + catch (int i) + { + std::cout << "Failure during BrukerObjectVaryingProperties::init err code : " << i << std::endl; + if (i==7) + std::cout << "Probabely non standard acquisition (extra loop not yet dealt with)" << std::endl; + return false; + } + catch (...) + { + std::cout << "Failure during BrukerObjectVaryingProperties::init " << std::endl; + return false; + } + return true; }