ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/PsetManipulator.py
Revision: 1.13
Committed: Tue Nov 20 17:06:50 2007 UTC (17 years, 5 months ago) by ewv
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_0_3, CRAB_2_0_3_pre1
Changes since 1.12: +3 -1 lines
Log Message:
Set FJR file correctly for newer CMSSW versions

File Contents

# Content
1 #!/usr/bin/env python
2
3 import os
4 import common
5 from crab_util import *
6 from crab_exceptions import *
7 from crab_logger import Logger
8
9 from ProdCommon.CMSConfigTools.ConfigAPI.CfgInterface import CfgInterface
10 from FWCore.ParameterSet.DictTypes import SortedKeysDict
11 from FWCore.ParameterSet.Modules import Service
12 from FWCore.ParameterSet.Types import *
13
14 import FWCore.ParameterSet.Types as CfgTypes
15 import FWCore.ParameterSet.Modules as CfgModules
16
17 class PsetManipulator:
18 def __init__(self, pset):
19 """
20 Read in Pset object and initialize
21 """
22
23 self.pset = pset
24 #convert Pset
25 from FWCore.ParameterSet.Config import include
26 common.logger.debug(3,"PsetManipulator::__init__: PSet file = "+self.pset)
27 self.cfo = include(self.pset)
28 self.cfg = CfgInterface(self.cfo)
29
30 def inputModule(self, source):
31 """
32 Set vString Filenames key
33 """
34 # set input module
35 inModule = self.cfg.inputSource
36 inModule.setFileNames(source)
37 return
38
39 def pythiaSeed(self,seed):
40 """
41 Set pythia seed key
42 """
43 ranGenerator = self.cfg.data.services['RandomNumberGeneratorService']
44 ranGenerator.sourceSeed = CfgTypes.untracked(CfgTypes.uint32(seed))
45 return
46
47 def vtxSeed(self,vtxSeed):
48 """
49 Set vtx seed key
50 """
51 ranGenerator = self.cfg.data.services['RandomNumberGeneratorService']
52 ranModules = ranGenerator.moduleSeeds
53 # set seed
54 ranModules.VtxSmeared = CfgTypes.untracked(CfgTypes.uint32(vtxSeed))
55 return
56
57 def g4Seed(self,g4Seed):
58 """
59 Set g4 seed key
60 """
61 ranGenerator = self.cfg.data.services['RandomNumberGeneratorService']
62 ranModules = ranGenerator.moduleSeeds
63 # set seed
64 ranModules.g4SimHits = CfgTypes.untracked(CfgTypes.uint32(g4Seed))
65 return
66
67 def mixSeed(self,mixSeed):
68 """
69 Set mix seed key
70 """
71 ranGenerator = self.cfg.data.services['RandomNumberGeneratorService']
72 ranModules = ranGenerator.moduleSeeds
73 ranModules.mix = CfgTypes.untracked(CfgTypes.uint32(mixSeed))
74 return
75
76 def pythiaFirstRun(self, firstrun):
77 """
78 Set firstRun
79 """
80 inModule = self.cfg.inputSource
81 inModule.setFirstRun(firstrun) ## Add Daniele
82 return
83
84 def maxEvent(self, maxEv):
85 """
86 Set max event in the standalone untracked module
87 """
88 self.cfg.maxEvents.setMaxEventsInput(maxEv)
89 return
90
91 def skipEvent(self, skipEv):
92 """
93 Set skipEvents
94 """
95 inModule = self.cfg.inputSource
96 inModule.setSkipEvents(skipEv) ## Add Daniele
97 return
98
99 def outputModule(self, output):
100
101 #set output module
102 outModule = self.cfg.outputModules['out']
103 outModule.setFileName('file:'+str(output))
104
105 return
106
107 def psetWriter(self, name):
108 """
109 Write out modified CMSSW.cfg
110 """
111
112 file1 = open(common.work_space.jobDir()+name,"w")
113 file1.write(str(self.cfg))
114 file1.close()
115
116 return
117
118 def addCrabFJR(self,name):
119 """
120 _addCrabFJR_
121 add CRAB specific FrameworkJobReport (FJR)
122 if a FJR already exists in input CMSSW parameter-set, add a second one.
123 This code is not needed for CMSSW >= 1.5.x and is non-functional in CMSSW >= 1.7.x.
124 It should be removed at some point in the future.
125 """
126
127 # Check if MessageLogger service already exists in configuration. If not, add it
128 svcs = self.cfg.data.services
129 if not svcs.has_key('MessageLogger'):
130 self.cfg.data.add_(CfgModules.Service("MessageLogger"))
131
132 messageLogger = self.cfg.data.services['MessageLogger']
133
134 # Add fwkJobReports to Message logger if it doesn't exist
135 if "fwkJobReports" not in messageLogger.parameterNames_():
136 messageLogger.fwkJobReports = CfgTypes.untracked(CfgTypes.vstring())
137
138 # should figure out how to remove "name" if it is there.
139
140 if name not in messageLogger.fwkJobReports:
141 messageLogger.fwkJobReports.append(name)
142
143 return