#!/usr/bin/python import os,sys,glob if len(sys.argv)!=5: print 'usage: fudge_efficiency_constant.py integral_US_minus_DS exagg ttafile.root output.root' print 'e.g.: fudge_efficiency_constant.py 6e-5 10 /home/e614/analysis_2006_2007/treesum/pass1/sum474-1_2-1_clk_raw.root g474_fudged.root' sys.exit(-1) from ROOT import * gStyle.SetPalette(1) try: fudge_factor = 1-(float(sys.argv[1])*float(sys.argv[2])) except ValueError: print 'ERROR: need a floatable number for integral_US_minus_DS and exagg' sys.exit(-1) ipfn = sys.argv[3] opfn = sys.argv[4] if not os.path.isfile(ipfn): print 'ERROR: cannot find',ipfn sys.exit(-1) if os.path.isfile(opfn): print 'ERROR:',opfn,'already exists' sys.exit(-1) ipf = TFile(ipfn) ms = ipf.Get('Michel/Spectrum_Selected').Clone() ms_fudge = ms.Clone() ms_fudge.Reset() nx = ms.GetNbinsX() ny = ms.GetNbinsY() for ix in range(nx): for iy in range(ny): if ms.GetYaxis().GetBinCenter(iy)>0.: ms_fudge.SetBinContent(ix,iy,ms.GetBinContent(ix,iy)) else: ms_fudge.SetBinContent(ix,iy,fudge_factor*ms.GetBinContent(ix,iy)) #c = TCanvas() #c.Divide(2,2) #c.cd(1) #ms.Clone().Draw('colz') #c.cd(2) #ms_fudge.Clone().Draw('colz') #c.cd(3) #ms.Clone().ProjectionX().Draw() #c.cd(4) #ms_fudge.Clone().ProjectionX().Draw('sames') #au = raw_input('>') opf = TFile(opfn,'NEW') ms_fudge.Write() opf.Close() print 'created',opfn