-// /////// Redundant and unnecessary header parsing
-// In it's current state this code actually parses three times the Dicom
-// header of a file before the corresponding image gets loaded in the
-// ad-hoc vtkData !
-// Here is the process:
-// 1/ First loading happens in ExecuteInformation which in order to
-// positionate the vtk extents calls CheckFileCoherence. The purpose
-// of CheckFileCoherence is to make sure all the images in the future
-// stack are "homogenous" (same size, same representation...). This
-// can only be achieved by parsing all the Dicom headers...
-// 2/ ExecuteData is then responsible for the next two loadings:
-// 2a/ ExecuteData calls AllocateOutputData that in turn seems to
-// (indirectely call) ExecuteInformation which ends up in a second
-// header parsing
-// This is fixed by adding a test at the beginning of ExecuteInformation
-// on the modification of the object instance. If a modification have been
-// made (method Modified() ), the MTime value is increased. The fileTime
-// is compared to this new value to find a modification in the class
-// parameters
-// 2b/ the core of ExecuteData then needs gdcmFile (which in turns
-// initialises gdcmHeader in the constructor) in order to access
-// the data-image.
+//===> Many users expect from vtkGdcmReader it 'orders' the images
+// (that's the job of GDCM_NAME_SPACE::SerieHelper ...)
+// When user *knows* the files with same Serie UID
+// have same sizes, same 'pixel' type, same color convention, ...
+// the right way to proceed is as follow :
+//
+// GDCM_NAME_SPACE::SerieHelper *sh= new GDCM_NAME_SPACE::SerieHelper();
+// // if user wants *not* to load some parts of the file headers
+// sh->SetLoadMode(loadMode);
+//
+// // if user wants *not* to load some files
+// sh->AddRestriction(group, element, value, operator);
+// sh->AddRestriction( ...
+// sh->SetDirectory(directoryWithImages);
+//
+// // if user wants to sort reverse order
+// sh->SetSortOrderToReverse();
+//
+// // here, we suppose only the first 'Serie' is of interest
+// // it's up to the user to decide !
+// GDCM_NAME_SPACE::FileList *l = sh->GetFirstSingleSerieUIDFileSet();
+//
+// // if user is doesn't trust too much the files with same Serie UID
+// if ( !sh->IsCoherent(l) )
+// return; // not same sizes, same 'pixel' type -> stop
+//
+// // WARNING : all that follows works only with 'bona fide' Series
+// // (In some Series; there are more than one 'orientation'
+// // Don't expected to build a 'volume' with that!
+// //
+// // -> use sh->SplitOnOrientation(l)
+// // - or sh->SplitOnPosition(l), or SplitOnTagValue(l, gr, el) -
+// // depending on what you want to do
+// // and iterate on the various 'X Coherent File Sets'
+//
+// // if user *knows* he has to drop the 'duplicates' images
+// // (same Position)
+// sh->SetDropDuplicatePositions(true);
+//
+// // Sorting the list is mandatory
+// // a side effect is to compute ZSpacing for the fle set
+// sh->OrderFileList(l); // sort the list
+//
+// vtkGdcmReader *reader = vtkGdcmReader::New();
+//
+// // if user wants to modify pixel order (Mirror, TopDown, 90°Rotate, ...)
+// // he has to supply the function that does the job
+// // (a *very* simple example is given in vtkgdcmSerieViewer.cxx)
+// reader->SetUserFunction (userSuppliedFunction);