import argparse,ROOT,os,sys,glob parser=argparse.ArgumentParser(description='check if pedestals exist in decoded file and do something') parser.add_argument('folder',help='the folder where to look for the files') parser.add_argument('--folder2',help='second folder to compare to',default='None',type=str) parser.add_argument('--rm',help='remove bad files in folder (not folder2)',action='store_true') parser.add_argument('--hlp',help='display help',action='store_true') args=parser.parse_args() if args.hlp: parser.print_help() exit(0) ROOT.gROOT.ProcessLine(".x rootlogon.C") files1=glob.glob(args.folder+'/runC*.root') no_ped=open('./ped_missing.txt','w') files1.sort() files2=[] if args.folder2!='None': files2=glob.glob(args.folder2+'/runC*.root') missing=open('./missing_in_folder2.txt','w') second_bad=open('./second_bad.txt','w') sigmas=ROOT.TH1D() for f in files1: rfile=ROOT.TFile(f,"read") sigmas=rfile.Get('SigmaPadIDGlobalRef') print 'checking file',f if type(sigmas)==ROOT.TH1D: entries=sigmas.GetEntries() else: entries=0 rfile.Close() fname=f.split('/')[-1] if entries==0: print 'no pedestals' no_ped.write(fname+'\n') if args.folder2!='None' and os.path.isfile(args.folder2+'/'+fname): rfile=ROOT.TFile(args.folder2+'/'+fname,"read") sigmas=rfile.Get('SigmaPadIDGlobalRef') entries2=sigmas.GetEntries() if entries2!=0: print 'correct file exists with:',entries2,'entries' if args.rm: os.system('rm -f '+f) else: print 'another file exists but has no pedestals' second_bad.write(f+'\n') elif args.folder2!='None': missing.write(fname+'\n') print ''