~ma5/madanalysis5/madanalysis-development

« back to all changes in this revision

Viewing changes to madanalysis/selection/histogram.py

  • Committer: Benjamin Fuks
  • Date: 2018-05-04 10:44:49 UTC
  • mfrom: (115.1.81 v1.6beta)
  • Revision ID: fuks@cern.ch-20180504104449-60h8a00loxgr8zg0
Releasing v1.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
                      "rank"  : ["Eordering","Pordering","PTordering","ETordering","PXordering","PYordering","PZordering","ETAordering"], \
42
42
                      "statuscode" : ["finalstate","interstate","allstate","initialstate"], \
43
43
                      "titleX" :[], \
44
 
                      "titleY" :[]
 
44
                      "titleY" :[], \
 
45
                      "regions": []
45
46
  }
46
47
 
47
48
    userShortcuts = {"logX": ["logX","true"], \
62
63
                     "superimpose": ["stacking_method","superimpose"], \
63
64
                     "normalize2one" : ["stacking_method","normalize2one"]}
64
65
 
65
 
    def __init__(self,observable,arguments,nbins,xmin,xmax):
 
66
    def __init__(self,observable,arguments,nbins,xmin,xmax,regions=[]):
66
67
        self.observable = observable
67
68
        self.arguments  = arguments
68
69
        self.nbins      = nbins
75
76
        self.stack      = StackingMethodType.AUTO
76
77
        self.titleX     = ""
77
78
        self.titleY     = ""
 
79
        self.regions    = regions
78
80
 
79
81
    def user_GetParameters(self):
80
82
        return Histogram.userVariables.keys()
159
161
            else:
160
162
                logging.getLogger('MA5').error("'"+value+"' is not a possible value for the variable 'rank'.")
161
163
                return False
162
 
            
 
164
 
163
165
        # statuscode
164
166
        elif variable == "statuscode":
165
167
            if value in Histogram.userVariables["statuscode"]:
197
199
            else:
198
200
                logging.getLogger('MA5').error("'"+value+"' is not a string, as necessary for the variable 'titleY'.")
199
201
                return False        # other
 
202
        # regions
 
203
        elif variable == "regions":
 
204
            if isinstance(value,list) and all([isinstance(name,str) for name in value]):
 
205
                self.regions = value
 
206
            else:
 
207
                logging.getLogger('MA5').error("'"+value+"' is not a list of strings, ;"+\
 
208
                     "as necessary for the variable 'regions'.")
 
209
                return False        # other
200
210
        else:
201
211
            logging.getLogger('MA5').error("variable called '"+variable+"' is unknown")
202
212
            return False
203
 
        
 
213
 
204
214
 
205
215
        return True
206
216
 
211
221
            logging.getLogger('MA5').info(" xmin = "+str(self.xmin))
212
222
        elif variable=="xmax":
213
223
            logging.getLogger('MA5').info(" xmax = "+str(self.xmax))
 
224
        elif variable=="regions":
 
225
            logging.getLogger('MA5').info(" regions = '"+str(self.regions)+"'")
214
226
        elif variable=="stacking_method":
215
227
            msg=""
216
228
            if self.stack==StackingMethodType.AUTO:
242
254
            logging.getLogger('MA5').info(" titleY = '"+self.titleY+"'")
243
255
        else:
244
256
            logging.getLogger('MA5').error("no variable called '"+variable+"' is found")
245
 
                            
 
257
 
246
258
 
247
259
    def Display(self):
248
260
        logging.getLogger('MA5').info(self.GetStringDisplay())
249
261
        logging.getLogger('MA5').info(self.GetStringDisplay2())
250
 
        logging.getLogger('MA5').info(self.GetStringDisplayMore())
 
262
        self.GetStringDisplayMore()
251
263
 
252
264
    def GetStringDisplay(self):
253
265
        msg = "  * Plot: "+self.observable.name
266
278
    def GetStringDisplay2(self):
267
279
        return "  * Binning: nbins="+str(self.nbins)+\
268
280
               ", xmin="+str(self.xmin)+\
269
 
               ", xmax="+str(self.xmax)
 
281
               ", xmax="+str(self.xmax)+\
 
282
               ", regions="+str(self.regions)
270
283
 
271
284
    def GetStringDisplayMore(self):
272
 
        words=''
273
285
        if self.logX or self.logY: 
274
 
            words += '  * Log scale: '
 
286
            words = '  * Log scale: '
275
287
            if self.logX:
276
288
                words+= 'logX '
277
289
            if self.logY:
278
290
                words+= 'logY '
279
 
            words+='\n'
 
291
            logging.getLogger('MA5').info(words)
280
292
        if self.stack==StackingMethodType.AUTO or\
281
293
            self.stack==StackingMethodType.STACK:
282
 
            words+='  * Stacking method: stacked\n'
 
294
            logging.getLogger('MA5').info('  * Stacking method: stacked')
283
295
        elif self.stack == StackingMethodType.SUPERIMPOSE:
284
 
            words+='  * Stacking method: superimposition\n'
 
296
            logging.getLogger('MA5').info('  * Stacking method: superimposition')
285
297
        elif self.stack == StackingMethodType.NORMALIZE2ONE:
286
 
            words+='  * Stacking method: superimposition + normalization to one\n'
 
298
            logging.getLogger('MA5').info('  * Stacking method: superimposition + normalization to one')
287
299
        if self.titleX !='':
288
 
            words += '  * X-axis title: ' +  self.titleX + '\n'
 
300
            logging.getLogger('MA5').info('  * X-axis title: ' +  self.titleX)
289
301
        if self.titleY !='':
290
 
            words += '  * Y-axis title: ' +  self.titleY + '\n'
291
 
        words += '  * Particles under consideration: ' +  self.statuscode + '\n'
292
 
        words += '  * Particle ordering: ' +  self.rank
293
 
        return words
 
302
            logging.getLogger('MA5').info('  * Y-axis title: ' +  self.titleY)
 
303
        logging.getLogger('MA5').info('  * Particles under consideration: ' +  self.statuscode)
 
304
        logging.getLogger('MA5').info('  * Particle ordering: ' +  self.rank)
 
305
        return 
294
306
 
295
307
    def GetStringArguments(self):
296
308
        word=''