def __init__(self, valName, alignment, config):
    '\n        This method adds additional items to the `self.general` dictionary\n        which are only needed for validations using datasets.\n        \n        Arguments:\n        - `valName`: String which identifies individual validation instances\n        - `alignment`: `Alignment` instance to validate\n        - `config`: `BetterConfigParser` instance which includes the\n                    configuration of the validations\n        '
    super(GenericValidationData, self).__init__(valName, alignment, config)
    if ((int(self.general['maxevents']) < 0) and (self.NJobs > 1)):
        msg = 'Maximum number of events (maxevents) not specified: cannot use parallel jobs.'
        raise AllInOneError(msg)
    if ((int(self.general['maxevents']) / self.NJobs) != (float(self.general['maxevents']) / self.NJobs)):
        msg = 'maxevents has to be divisible by parallelJobs'
        raise AllInOneError(msg)
    tryPredefinedFirst = ((not (self.jobmode.split(',')[0] == 'crab')) and (self.general['JSON'] == '') and (self.general['firstRun'] == '') and (self.general['lastRun'] == '') and (self.general['begin'] == '') and (self.general['end'] == ''))
    if (self.general['dataset'] not in globalDictionaries.usedDatasets):
        globalDictionaries.usedDatasets[self.general['dataset']] = {}
    if (self.cmssw not in globalDictionaries.usedDatasets[self.general['dataset']]):
        if (globalDictionaries.usedDatasets[self.general['dataset']] != {}):
            print(("Warning: you use the same dataset '%s' in multiple cmssw releases.\nThis is allowed, but make sure it's not a mistake" % self.general['dataset']))
        globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw] = {False: None, True: None}
    Bfield = self.general.get('magneticfield', None)
    if (globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][tryPredefinedFirst] is None):
        dataset = Dataset(self.general['dataset'], tryPredefinedFirst=tryPredefinedFirst, cmssw=self.cmssw, cmsswrelease=self.cmsswreleasebase, magneticfield=Bfield, dasinstance=self.general['dasinstance'])
        globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][tryPredefinedFirst] = dataset
        if (tryPredefinedFirst and (not dataset.predefined())):
            globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][False] = dataset
    self.dataset = globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][tryPredefinedFirst]
    self.general['magneticField'] = self.dataset.magneticField()
    self.general['defaultMagneticField'] = 'MagneticField'
    if (self.general['magneticField'] == 'unknown'):
        print('Could not get the magnetic field for this dataset.')
        print('Using the default: ', self.general['defaultMagneticField'])
        self.general['magneticField'] = '.oO[defaultMagneticField]Oo.'
    if (not (self.jobmode.split(',')[0] == 'crab')):
        try:
            self.general['datasetDefinition'] = self.dataset.datasetSnippet(jsonPath=self.general['JSON'], firstRun=self.general['firstRun'], lastRun=self.general['lastRun'], begin=self.general['begin'], end=self.general['end'], parent=self.needParentFiles)
        except AllInOneError as e:
            msg = ('In section [%s:%s]: ' % (self.valType, self.name))
            msg += str(e)
            raise AllInOneError(msg)
    else:
        if self.dataset.predefined():
            msg = ("For jobmode 'crab' you cannot use predefined datasets (in your case: '%s')." % self.dataset.name())
            raise AllInOneError(msg)
        try:
            theUpdate = config.getResultingSection(((self.valType + ':') + self.name), demandPars=['parallelJobs'])
        except AllInOneError as e:
            msg = (str(e)[:(- 1)] + " when using 'jobmode: crab'.")
            raise AllInOneError(msg)
        self.general.update(theUpdate)
        if (self.general['begin'] or self.general['end']):
            (self.general['begin'], self.general['end'], self.general['firstRun'], self.general['lastRun']) = self.dataset.convertTimeToRun(firstRun=self.general['firstRun'], lastRun=self.general['lastRun'], begin=self.general['begin'], end=self.general['end'], shortTuple=False)
            if (self.general['begin'] == None):
                self.general['begin'] = ''
            if (self.general['end'] == None):
                self.general['end'] = ''
            self.general['firstRun'] = str(self.general['firstRun'])
            self.general['lastRun'] = str(self.general['lastRun'])
        if ((not self.general['firstRun']) and (self.general['end'] or self.general['lastRun'])):
            self.general['firstRun'] = str(self.dataset.runList()[0]['run_number'])
        if ((not self.general['lastRun']) and (self.general['begin'] or self.general['firstRun'])):
            self.general['lastRun'] = str(self.dataset.runList()[(- 1)]['run_number'])
        if (self.general['firstRun'] and self.general['lastRun']):
            if (int(self.general['firstRun']) > int(self.general['lastRun'])):
                msg = "The lower time/runrange limit ('begin'/'firstRun') chosen is greater than the upper time/runrange limit ('end'/'lastRun')."
                raise AllInOneError(msg)
            self.general['runRange'] = ((self.general['firstRun'] + '-') + self.general['lastRun'])
        try:
            self.general['datasetDefinition'] = self.dataset.datasetSnippet(jsonPath=self.general['JSON'], firstRun=self.general['firstRun'], lastRun=self.general['lastRun'], begin=self.general['begin'], end=self.general['end'], crab=True)
        except AllInOneError as e:
            msg = ('In section [%s:%s]: ' % (self.valType, self.name))
            msg += str(e)
            raise AllInOneError(msg)
    self.general['usepixelqualityflag'] = pythonboolstring(self.general['usepixelqualityflag'], 'usepixelqualityflag')
This method adds additional items to the `self.general` dictionary
which are only needed for validations using datasets.

Arguments:
- `valName`: String which identifies individual validation instances
- `alignment`: `Alignment` instance to validate
- `config`: `BetterConfigParser` instance which includes the
            configuration of the validations
def __init__(self, valName, alignment, config):
    '\n        This method adds additional items to the `self.general` dictionary\n        which are only needed for validations using datasets.\n        \n        Arguments:\n        - `valName`: String which identifies individual validation instances\n        - `alignment`: `Alignment` instance to validate\n        - `config`: `BetterConfigParser` instance which includes the\n                    configuration of the validations\n        '
    super(GenericValidationData, self).__init__(valName, alignment, config)
    if ((int(self.general['maxevents']) < 0) and (self.NJobs > 1)):
        msg = 'Maximum number of events (maxevents) not specified: cannot use parallel jobs.'
        raise AllInOneError(msg)
    if ((int(self.general['maxevents']) / self.NJobs) != (float(self.general['maxevents']) / self.NJobs)):
        msg = 'maxevents has to be divisible by parallelJobs'
        raise AllInOneError(msg)
    tryPredefinedFirst = ((not (self.jobmode.split(',')[0] == 'crab')) and (self.general['JSON'] == ) and (self.general['firstRun'] == ) and (self.general['lastRun'] == ) and (self.general['begin'] == ) and (self.general['end'] == ))
    if (self.general['dataset'] not in globalDictionaries.usedDatasets):
        globalDictionaries.usedDatasets[self.general['dataset']] = {}
    if (self.cmssw not in globalDictionaries.usedDatasets[self.general['dataset']]):
        if (globalDictionaries.usedDatasets[self.general['dataset']] != {}):
            print(("Warning: you use the same dataset '%s' in multiple cmssw releases.\nThis is allowed, but make sure it's not a mistake" % self.general['dataset']))
        globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw] = {False: None, True: None}
    Bfield = self.general.get('magneticfield', None)
    if (globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][tryPredefinedFirst] is None):
        dataset = Dataset(self.general['dataset'], tryPredefinedFirst=tryPredefinedFirst, cmssw=self.cmssw, cmsswrelease=self.cmsswreleasebase, magneticfield=Bfield, dasinstance=self.general['dasinstance'])
        globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][tryPredefinedFirst] = dataset
        if (tryPredefinedFirst and (not dataset.predefined())):
            globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][False] = dataset
    self.dataset = globalDictionaries.usedDatasets[self.general['dataset']][self.cmssw][tryPredefinedFirst]
    self.general['magneticField'] = self.dataset.magneticField()
    self.general['defaultMagneticField'] = 'MagneticField'
    if (self.general['magneticField'] == 'unknown'):
        print('Could not get the magnetic field for this dataset.')
        print('Using the default: ', self.general['defaultMagneticField'])
        self.general['magneticField'] = '.oO[defaultMagneticField]Oo.'
    if (not (self.jobmode.split(',')[0] == 'crab')):
        try:
            self.general['datasetDefinition'] = self.dataset.datasetSnippet(jsonPath=self.general['JSON'], firstRun=self.general['firstRun'], lastRun=self.general['lastRun'], begin=self.general['begin'], end=self.general['end'], parent=self.needParentFiles)
        except AllInOneError as e:
            msg = ('In section [%s:%s]: ' % (self.valType, self.name))
            msg += str(e)
            raise AllInOneError(msg)
    else:
        if self.dataset.predefined():
            msg = ("For jobmode 'crab' you cannot use predefined datasets (in your case: '%s')." % self.dataset.name())
            raise AllInOneError(msg)
        try:
            theUpdate = config.getResultingSection(((self.valType + ':') + self.name), demandPars=['parallelJobs'])
        except AllInOneError as e:
            msg = (str(e)[:(- 1)] + " when using 'jobmode: crab'.")
            raise AllInOneError(msg)
        self.general.update(theUpdate)
        if (self.general['begin'] or self.general['end']):
            (self.general['begin'], self.general['end'], self.general['firstRun'], self.general['lastRun']) = self.dataset.convertTimeToRun(firstRun=self.general['firstRun'], lastRun=self.general['lastRun'], begin=self.general['begin'], end=self.general['end'], shortTuple=False)
            if (self.general['begin'] == None):
                self.general['begin'] = 
            if (self.general['end'] == None):
                self.general['end'] = 
            self.general['firstRun'] = str(self.general['firstRun'])
            self.general['lastRun'] = str(self.general['lastRun'])
        if ((not self.general['firstRun']) and (self.general['end'] or self.general['lastRun'])):
            self.general['firstRun'] = str(self.dataset.runList()[0]['run_number'])
        if ((not self.general['lastRun']) and (self.general['begin'] or self.general['firstRun'])):
            self.general['lastRun'] = str(self.dataset.runList()[(- 1)]['run_number'])
        if (self.general['firstRun'] and self.general['lastRun']):
            if (int(self.general['firstRun']) > int(self.general['lastRun'])):
                msg = "The lower time/runrange limit ('begin'/'firstRun') chosen is greater than the upper time/runrange limit ('end'/'lastRun')."
                raise AllInOneError(msg)
            self.general['runRange'] = ((self.general['firstRun'] + '-') + self.general['lastRun'])
        try:
            self.general['datasetDefinition'] = self.dataset.datasetSnippet(jsonPath=self.general['JSON'], firstRun=self.general['firstRun'], lastRun=self.general['lastRun'], begin=self.general['begin'], end=self.general['end'], crab=True)
        except AllInOneError as e:
            msg = ('In section [%s:%s]: ' % (self.valType, self.name))
            msg += str(e)
            raise AllInOneError(msg)
    self.general['usepixelqualityflag'] = pythonboolstring(self.general['usepixelqualityflag'], 'usepixelqualityflag')