def __init__(self, raw_data_file=None, analyzed_data_file=None, create_pdf=True, scan_parameter_name=None):
        '''Initialize the AnalyzeRawData object:
            - The c++ objects (Interpreter, Histogrammer, Clusterizer) are constructed
            - Create one scan parameter table from all provided raw data files
            - Create PdfPages object if needed

        Parameters
        ----------
        raw_data_file : string or list, tuple, set of strings
            Filename or a list of filenames of the raw data file(s) and analyzed_data_file will be overwritten.
            If None and if analyzed_data_file is not None, any existing analyzed_data_file will be opened, otherwise created.
            Filename extension (.h5) does not need to be provided.
        analyzed_data_file : string
            The file name of the output analyzed data file.
            If None and if raw_data_file is not None, the filename will be generated from the raw_data_file.
            Filename extension (.h5) does not need to be provided.
        create_pdf : boolean
            If True, plots will be written into a PDF file. Will be set to False, if raw_data_file is None.
        scan_parameter_name : string or iterable
            The name/names of scan parameter(s) to be used during analysis. If None, the scan parameter
            table is used to extract the scan parameters. Otherwise no scan parameter is set.
        '''
        self.interpreter = PyDataInterpreter()
        self.histogram = PyDataHistograming()

        raw_data_files = []
        if isinstance(raw_data_file, basestring):
            # normalize path
            raw_data_file = os.path.abspath(raw_data_file)
            f_list = analysis_utils.get_data_file_names_from_scan_base(raw_data_file, sort_by_time=True, meta_data_v2=self.interpreter.meta_table_v2)
            if f_list:
                raw_data_files = f_list
            else:
                if os.path.splitext(raw_data_file)[1].lower() != ".h5":
                    raw_data_files.append(os.path.splitext(raw_data_file)[0] + ".h5")
                else:
                    raw_data_files.append(raw_data_file)
        elif isinstance(raw_data_file, (list, tuple, set)):  # iterable of raw data files
            for one_raw_data_file in raw_data_file:
                # normalize path
                one_raw_data_file = os.path.abspath(one_raw_data_file)
                if os.path.splitext(one_raw_data_file)[1].lower() != ".h5":
                    raw_data_files.append(os.path.splitext(one_raw_data_file)[0] + ".h5")
                else:
                    raw_data_files.append(one_raw_data_file)
        else:
            raw_data_files = None

        if analyzed_data_file is not None:
            # normalize path
            analyzed_data_file = os.path.abspath(analyzed_data_file)
            if os.path.splitext(analyzed_data_file)[1].lower() != ".h5":
                self._analyzed_data_file = os.path.splitext(analyzed_data_file)[0] + ".h5"
            else:  # iterable of raw data files
                self._analyzed_data_file = analyzed_data_file
        else:
            if raw_data_file is not None:
                if isinstance(raw_data_file, basestring):
                    self._analyzed_data_file = os.path.splitext(raw_data_file)[0] + '_interpreted.h5'
                else:  # iterable of raw data files
                    commonprefix = os.path.commonprefix(raw_data_files)
                    if commonprefix:
                        # use common string for output filename
                        one_raw_data_file = os.path.abspath(commonprefix)
                    else:
                        # take 1st filename for output filename
                        one_raw_data_file = os.path.abspath(raw_data_files[0])
                    self._analyzed_data_file = os.path.splitext(one_raw_data_file)[0] + '_interpreted.h5'
            else:
                self._analyzed_data_file = None

        # create a scan parameter table from all raw data files
        if raw_data_files is not None:
            self.files_dict = analysis_utils.get_parameter_from_files(raw_data_files, parameters=scan_parameter_name)
            if not analysis_utils.check_parameter_similarity(self.files_dict):
                raise analysis_utils.NotSupportedError('Different scan parameters in multiple files are not supported.')
            self.scan_parameters = analysis_utils.create_parameter_table(self.files_dict)
            scan_parameter_names = analysis_utils.get_scan_parameter_names(self.scan_parameters)
            logging.info('Scan parameter(s) from raw data file(s): %s', (', ').join(scan_parameter_names) if scan_parameter_names else 'None',)
        else:
            self.files_dict = None
            self.scan_parameters = None

        self.out_file_h5 = None
        self.set_standard_settings()
        if self._analyzed_data_file is not None:
            if raw_data_file is None:
                # assume that output file already exists containing analyzed raw data
                self.out_file_h5 = tb.open_file(self._analyzed_data_file, mode="a", title="Interpreted FE-I4 raw data")
            else:
                # raw data files are given, overwrite any existing file
                self.out_file_h5 = tb.open_file(self._analyzed_data_file, mode="w", title="Interpreted FE-I4 raw data")

        if raw_data_file is not None and create_pdf:
            if isinstance(raw_data_file, basestring):
                output_pdf_filename = os.path.splitext(raw_data_file)[0] + ".pdf"
            else:  # iterable of raw data files
                one_raw_data_file = os.path.abspath(raw_data_files[0])
                output_pdf_filename = os.path.splitext(one_raw_data_file)[0] + ".pdf"
            logging.info('Opening output PDF file: %s', output_pdf_filename)
            self.output_pdf = PdfPages(output_pdf_filename)
        else:
            self.output_pdf = None
        self._scan_parameter_name = scan_parameter_name
        self._settings_from_file_set = False  # the scan settings are in a list of files only in the first one, thus set this flag to suppress warning for other files