@@ -1614,38 +1614,56 @@ def prepare_POSTRECO(self, sequence = None):
1614
1614
1615
1615
1616
1616
def prepare_VALIDATION (self , sequence = 'validation' ):
1617
+ print sequence ,"in preparing validation"
1617
1618
self .loadDefaultOrSpecifiedCFF (sequence ,self .VALIDATIONDefaultCFF )
1619
+ from Validation .Configuration .autoValidation import autoValidation
1618
1620
#in case VALIDATION:something:somethingelse -> something,somethingelse
1619
1621
sequence = sequence .split ('.' )[- 1 ]
1620
1622
if sequence .find (',' )!= - 1 :
1621
- prevalSeqName = sequence .split (',' )[0 ]
1622
- valSeqName = sequence .split (',' )[1 ]
1623
+ prevalSeqName = sequence .split (',' )[0 ].split ('+' )
1624
+ valSeqName = sequence .split (',' )[1 ].split ('+' )
1625
+ self .expandMapping (prevalSeqName ,autoValidation ,index = 0 )
1626
+ self .expandMapping (valSeqName ,autoValidation ,index = 1 )
1623
1627
else :
1624
- postfix = ''
1625
- if sequence :
1626
- postfix = '_' + sequence
1627
- prevalSeqName = 'prevalidation' + postfix
1628
- valSeqName = 'validation' + postfix
1629
- if not hasattr (self .process ,valSeqName ):
1630
- prevalSeqName = ''
1631
- valSeqName = sequence
1632
-
1633
- if not 'DIGI' in self .stepMap and not self ._options .fast and not valSeqName .startswith ('genvalid' ):
1628
+ if '@' in sequence :
1629
+ prevalSeqName = sequence .split ('+' )
1630
+ valSeqName = sequence .split ('+' )
1631
+ self .expandMapping (prevalSeqName ,autoValidation ,index = 0 )
1632
+ self .expandMapping (valSeqName ,autoValidation ,index = 1 )
1633
+ else :
1634
+ postfix = ''
1635
+ if sequence :
1636
+ postfix = '_' + sequence
1637
+ prevalSeqName = ['prevalidation' + postfix ]
1638
+ valSeqName = ['validation' + postfix ]
1639
+ if not hasattr (self .process ,valSeqName [0 ]):
1640
+ prevalSeqName = ['' ]
1641
+ valSeqName = [sequence ]
1642
+
1643
+ def NFI (index ):
1644
+ ##name from index, required to keep backward compatibility
1645
+ if index == 0 :
1646
+ return ''
1647
+ else :
1648
+ return '%s' % index
1649
+
1650
+ if not 'DIGI' in self .stepMap and not self ._options .fast and not any (map ( lambda s : s .startswith ('genvalid' ), valSeqName )):
1634
1651
if self ._options .restoreRNDSeeds == False and not self ._options .restoreRNDSeeds == True :
1635
1652
self ._options .restoreRNDSeeds = True
1636
1653
1637
1654
#rename the HLT process in validation steps
1638
1655
if ('HLT' in self .stepMap and not self ._options .fast ) or self ._options .hltProcess :
1639
- self .renameHLTprocessInSequence (valSeqName )
1640
- if prevalSeqName :
1641
- self .renameHLTprocessInSequence (prevalSeqName )
1642
-
1643
- if prevalSeqName :
1644
- self .process .prevalidation_step = cms .Path ( getattr (self .process , prevalSeqName ) )
1645
- self .schedule .append (self .process .prevalidation_step )
1646
-
1647
- self .process .validation_step = cms .EndPath ( getattr (self .process ,valSeqName ) )
1648
- self .schedule .append (self .process .validation_step )
1656
+ for s in valSeqName + prevalSeqName :
1657
+ if s :
1658
+ self .renameHLTprocessInSequence (s )
1659
+ for (i ,s ) in enumerate (prevalSeqName ):
1660
+ if s :
1661
+ setattr (self .process ,'prevalidation_step%s' % NFI (i ), cms .Path ( getattr (self .process , s )) )
1662
+ self .schedule .append (getattr (self .process ,'prevalidation_step%s' % NFI (i )))
1663
+
1664
+ for (i ,s ) in enumerate (valSeqName ):
1665
+ setattr (self .process ,'validation_step%s' % NFI (i ), cms .EndPath ( getattr (self .process , s )))
1666
+ self .schedule .append (getattr (self .process ,'validation_step%s' % NFI (i )))
1649
1667
1650
1668
if not 'DIGI' in self .stepMap and not self ._options .fast :
1651
1669
self .executeAndRemember ("process.mix.playback = True" )
@@ -1655,7 +1673,8 @@ def prepare_VALIDATION(self, sequence = 'validation'):
1655
1673
1656
1674
if hasattr (self .process ,"genstepfilter" ) and len (self .process .genstepfilter .triggerConditions ):
1657
1675
#will get in the schedule, smoothly
1658
- self .process .validation_step ._seq = self .process .genstepfilter * self .process .validation_step ._seq
1676
+ for (i ,s ) in enumerate (valSeqName ):
1677
+ getattr (self .process ,'validation_step%s' % NFI (i ))._seq = self .process .genstepfilter * getattr (self .process ,'validation_step%s' % NFI (i ))._seq
1659
1678
1660
1679
return
1661
1680
@@ -1804,7 +1823,11 @@ def prepare_HARVESTING(self, sequence = None):
1804
1823
# decide which HARVESTING paths to use
1805
1824
harvestingList = sequence .split ("+" )
1806
1825
from DQMOffline .Configuration .autoDQM import autoDQM
1807
- self .expandMapping (harvestingList ,autoDQM ,index = 1 )
1826
+ from Validation .Configuration .autoValidation import autoValidation
1827
+ import copy
1828
+ combined_mapping = copy .deepcopy ( autoDQM )
1829
+ combined_mapping .update ( autoValidation )
1830
+ self .expandMapping (harvestingList ,combined_mapping ,index = - 1 )
1808
1831
1809
1832
if len (set (harvestingList ))!= len (harvestingList ):
1810
1833
harvestingList = list (set (harvestingList ))
0 commit comments