]> Creatis software - creaBruker.git/blobdiff - lib/src1/brukerdataset.cpp
Feature #1767
[creaBruker.git] / lib / src1 / brukerdataset.cpp
index 936696ee87ea3074d14e42dfbf0a44fc54f260fe..f4cdc7087cd48bc8da4ac2b28be61cfbde9342c2 100644 (file)
@@ -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<int> Inner=GetInnerObjectLoopStructure();
    std::vector<int> Outer=GetOuterObjectLoopStructure();
    std::vector<int> TmpVect;
@@ -681,7 +708,7 @@ std::map<std::string, BrukerFieldData> 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);