X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Fsrc1%2Fbrukerdataset.cpp;h=f4cdc7087cd48bc8da4ac2b28be61cfbde9342c2;hb=e3ee3436dd081af55f71997e58f5727345a84bff;hp=936696ee87ea3074d14e42dfbf0a44fc54f260fe;hpb=cc4fb89e6ab8668e7e8830a2e65dc53dc1773de5;p=creaBruker.git diff --git a/lib/src1/brukerdataset.cpp b/lib/src1/brukerdataset.cpp index 936696e..f4cdc70 100644 --- a/lib/src1/brukerdataset.cpp +++ b/lib/src1/brukerdataset.cpp @@ -1,3 +1,30 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la Santé) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ +*/ + // // C++ Implementation: brukerdataset // @@ -571,10 +598,10 @@ NR (Nbre de repetitions) * @return bool @todo implement multicoil version */ -bool BrukerDataSet::SetLoopStructure () +bool BrukerDataSet::SetLoopStructure (int dimension) { - if (! SetInnerObjectLoopStructure()) return false; - if (! SetOuterObjectLoopStructure()) return false; + if (! SetInnerObjectLoopStructure(dimension)) return false; + if (! SetOuterObjectLoopStructure(dimension)) return false; std::vector Inner=GetInnerObjectLoopStructure(); std::vector Outer=GetOuterObjectLoopStructure(); std::vector TmpVect; @@ -681,7 +708,7 @@ std::map BrukerDataSet::GetBrukerHeaderMap() const //} -bool BrukerDataSet::SetInnerObjectLoopStructure() +bool BrukerDataSet::SetInnerObjectLoopStructure(int dimension) { /* * @@ -712,11 +739,15 @@ bool BrukerDataSet::SetInnerObjectLoopStructure() //std::cout<<"BrukerDataSet::BrukerHeaderMap[(std::string) ACQ_ns_list_size].IntValue[0]" << BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_ns_list_size"].IntValue[0] << std::endl; TempIntVect.push_back(BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_phase_factor"].IntValue[0]); //std::cout<<"BrukerDataSet::BrukerHeaderMap[(std::string) ACQ_phase_factor].IntValue[0]" << BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_phase_factor"].IntValue[0]<< std::endl; + if(dimension > 1) TempIntVect.push_back(BrukerDataSet::BrukerHeaderMap[(std::string) "NSLICES"].IntValue[0]); //std::cout << "BrukerDataSet::BrukerHeaderMap[(std::string) NSLICES].IntValue[0]" << BrukerDataSet::BrukerHeaderMap[(std::string) "NSLICES"].IntValue[0] << std::endl; if (1<=BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_size" ].DimensionNumber ) { - TempIntVect.push_back(BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_size" ].IntValue[1]/BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_phase_factor"].IntValue[0]); + if(dimension == 1) + TempIntVect.push_back(BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_size" ].IntValue[0]/BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_phase_factor"].IntValue[0]); + else + TempIntVect.push_back(BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_size" ].IntValue[1]/BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_phase_factor"].IntValue[0]); //std::cout << "BrukerDataSet::BrukerHeaderMap[ (std::string) ACQ_size ].IntValue[1]/BrukerDataSet::BrukerHeaderMap[(std::string) ACQ_phase_factor].IntValue[0]" << BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_size" //].IntValue[1]/BrukerDataSet::BrukerHeaderMap[(std::string) "ACQ_phase_factor"].IntValue[0] << std::endl; if (2<=BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_size" ].DimensionNumber ) @@ -744,7 +775,7 @@ std::vector< int > BrukerDataSet::GetOuterObjectLoopStructure() const } -bool BrukerDataSet::SetOuterObjectLoopStructure () +bool BrukerDataSet::SetOuterObjectLoopStructure (int dimension) { OuterObjectLoopStructure.clear(); /* @@ -759,6 +790,9 @@ bool BrukerDataSet::SetOuterObjectLoopStructure () if (! CheckExistKeyword("NI")) return false; // Ici, boucles additionnelles si elles existent regroupees en une seule //temp=GetIntValueN(NIStr,1)/(GetIntValueN(NSLICESStr,1)*GetIntValueN(NECHOESStr,1)); + if(dimension ==1) + temp=BrukerDataSet::BrukerHeaderMap[ (std::string) "NI" ].IntValue[0]/(BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_ns_list_size" ].IntValue[0]); + else temp=BrukerDataSet::BrukerHeaderMap[ (std::string) "NI" ].IntValue[0]/(BrukerDataSet::BrukerHeaderMap[ (std::string) "NSLICES" ].IntValue[0]*BrukerDataSet::BrukerHeaderMap[ (std::string) "ACQ_ns_list_size" ].IntValue[0]); if (1 < temp) TempIntVect.push_back(temp);