ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/DataDiscovery.py
(Generate patch)

Comparing COMP/CRAB/python/DataDiscovery.py (file contents):
Revision 1.44 by ewv, Wed May 26 19:46:12 2010 UTC vs.
Revision 1.46 by spiga, Wed Jun 2 13:55:14 2010 UTC

# Line 103 | Line 103 | class DataDiscovery:
103          self.parent = {}          # DBS output: parents of each file
104          self.lumis = {}           # DBS output: lumis in each file
105          self.lumiMask = None
106 +        self.splitByLumi = False
107  
108      def fetchDBSInfo(self):
109          """
# Line 130 | Line 131 | class DataDiscovery:
131              runList = LumiList(runs = runselection)
132  
133          self.splitByRun = int(self.cfg_params.get('CMSSW.split_by_run', 0))
133
134          common.logger.log(10-1,"runselection is: %s"%runselection)
135 +
136 +        if not self.splitByRun:
137 +            self.splitByLumi = self.lumiMask or self.lumiParams or self.ads
138 +
139          ## service API
140          args = {}
141          args['url']     = dbs_url
# Line 147 | Line 151 | class DataDiscovery:
151          api = DBSAPI.dbsApi.DbsApi(args)
152          self.files = self.queryDbs(api,path=self.datasetPath,runselection=runselection,useParent=useparent)
153  
154 +        # Check to see what the dataset is
155 +        pdsName = self.datasetPath.split("/")[1]
156 +        primDSs = api.listPrimaryDatasets(pdsName)
157 +        dataType = primDSs[0]['Type']
158 +        common.logger.debug("Datatype is %s" % dataType)
159 +        if dataType == 'data' and not (self.splitByRun or self.splitByLumi):
160 +            msg = 'Data must be split by lumi or by run. ' \
161 +                  'Please see crab -help for the correct settings'
162 +            raise  CrabException(msg)
163 +
164 +
165 +
166          anFileBlocks = []
167          if self.skipBlocks: anFileBlocks = readTXTfile(self, fileBlocks_FileName)
168  
# Line 161 | Line 177 | class DataDiscovery:
177                  # asked retry the list of parent for the given child
178                  if useparent==1:
179                      parList = [x['LogicalFileName'] for x in file['ParentList']]
180 <                if self.ads or self.lumiMask or self.lumiParams:
180 >                if self.splitByLumi:
181                      fileLumis = [ (x['RunNumber'], x['LumiSectionNumber'])
182                                   for x in file['LumiList'] ]
183                  self.parent[filename] = parList
184                  # For LumiMask, intersection of two lists.
185 <                if self.lumiMask:
185 >                if self.lumiMask and runselection:
186 >                    self.lumis[filename] = runList.filterLumis(lumiList.filterLumis(fileLumis))
187 >                elif runselection:
188 >                    self.lumis[filename] = runList.filterLumis(fileLumis)
189 >                elif self.lumiMask:
190                      self.lumis[filename] = lumiList.filterLumis(fileLumis)
171                    if runselection:
172                        self.lumis[filename] = runList.filterLumis(self.lumis[filename])
191                  else:
192                      self.lumis[filename] = fileLumis
193                  if filename.find('.dat') < 0 :
# Line 196 | Line 214 | class DataDiscovery:
214              msg = "No new fileblocks available for dataset: "+str(self.datasetPath)
215              raise  CrabException(msg)
216  
199        saveFblocks=''
200        for block in self.eventsPerBlock.keys() :
201            saveFblocks += str(block)+'\n'
202            common.logger.log(10-1,"DBSInfo: total nevts %i in block %s "%(self.eventsPerBlock[block],block))
203        writeTXTfile(self, fileBlocks_FileName , saveFblocks)
217  
218          if len(self.eventsPerBlock) <= 0:
219              raise NotExistingDatasetError(("\nNo data for %s in DBS\nPlease check"
# Line 216 | Line 229 | class DataDiscovery:
229          if useParent == 1: allowedRetriveValue.append('retrive_parent')
230          common.logger.debug("Set of input parameters used for DBS query: %s" % allowedRetriveValue)
231          try:
232 <            if len(runselection) <=0 or self.ads or self.lumiMask:
233 <                if useParent==1 or self.splitByRun==1 or self.ads or self.lumiMask or self.lumiParams:
232 >            if len(runselection) <=0 or self.splitByLumi:
233 >                if useParent==1 or self.splitByRun==1 or self.splitByLumi:
234                      if self.ads:
235                          files = api.listFiles(analysisDataset=path, retriveList=allowedRetriveValue)
236                      else :

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines