CMS 3D CMS Logo

Public Member Functions | Public Attributes | Private Member Functions

dqm_interfaces::DirWalkerFile Class Reference

List of all members.

Public Member Functions

def __del__
def __init__
def cd
def getObjs
def ls
def walk

Public Attributes

 black_list
 directory
 dqmrootfile1
 dqmrootfile2
 name
 run
 stat_test
 workdir

Private Member Functions

def __fill_single_dir

Detailed Description

Definition at line 543 of file dqm_interfaces.py.


Constructor & Destructor Documentation

def dqm_interfaces::DirWalkerFile::__init__ (   self,
  name,
  topdirname,
  rootfilename1,
  rootfilename2,
  run = -1,
  black_list = [],
  stat_test = "KS",
  test_threshold = .5,
  draw_success = True,
  do_pngs = False 
)

Definition at line 544 of file dqm_interfaces.py.

00545                                                                                                                                                              :
00546     self.name=name
00547     self.dqmrootfile1=DQMRootFile(abspath(rootfilename1))
00548     self.dqmrootfile2=DQMRootFile(abspath(rootfilename2))
00549     self.run=run
00550     self.stat_test=Statistical_Tests[stat_test](test_threshold)
00551     self.workdir=getcwd()
00552     self.black_list=black_list
00553     self.directory=Directory(topdirname)
00554     #print "DIRWALKERFILE %s %s" %(draw_success,do_pngs)
00555     self.directory.draw_success=draw_success
00556     self.directory.do_pngs=do_pngs

def dqm_interfaces::DirWalkerFile::__del__ (   self)

Definition at line 557 of file dqm_interfaces.py.

00558                    :
00559     chdir(self.workdir)
     

Member Function Documentation

def dqm_interfaces::DirWalkerFile::__fill_single_dir (   self,
  dir_name,
  directory,
  mother_name = "",
  depth = 0 
) [private]

Definition at line 586 of file dqm_interfaces.py.

00587                                                                        :
00588     #print "MOTHER NAME  = +%s+" %mother_name
00589    #print "About to study %s (in dir %s)" %(dir_name,getcwd())
00590         
00591     # see if in black_list
00592     this_dir=DirID(dir_name,depth)
00593     #print this_dir
00594     if this_dir in self.black_list: 
00595       #print "Directory %s skipped because black-listed" %dir_name
00596       return 0        
00597         
00598     depth+=1
00599     
00600     self.cd(dir_name)
00601     #print self.ls()
00602     
00603     #print "Test %s with thre %s" %(self.stat_test.name, self.stat_test.threshold)
00604     
00605     contents=self.ls()
00606     if depth==1:
00607       n_top_contents=len(contents)
00608     
00609     #print contents
00610     cont_counter=1
00611     comparisons=[]
00612     for name,obj_type in contents.items():
00613       if obj_type=="TDirectoryFile":        
00614         #We have a dir, launch recursion!
00615         #Some feedback on the progress
00616         if depth==1:
00617           print "Studying directory %s, %s/%s" %(name,cont_counter,n_top_contents)
00618           cont_counter+=1          
00619  
00620         #print "Studying directory",name
00621         # ok recursion on!
00622         subdir=Directory(name)
00623         subdir.draw_success=directory.draw_success
00624         subdir.do_pngs=directory.do_pngs
00625         self.__fill_single_dir(name,subdir,join(mother_name,dir_name),depth)
00626         if not subdir.is_empty():
00627           if depth==1:
00628             print " ->Appending %s..." %name,
00629           directory.subdirs.append(subdir)
00630           if depth==1:
00631             print "Appended."
00632       else:
00633         # We have probably an histo. Let's make the plot and the png.        
00634         if obj_type[:2]!="TH" and obj_type[:3]!="TPr" :
00635           continue
00636         h1,h2=self.getObjs(name)
00637         #print "COMPARISON : +%s+%s+" %(mother_name,dir_name)
00638         
00639         directory.comparisons.append(Comparison(name,
00640                               join(mother_name,dir_name),
00641                               h1,h2,
00642                               deepcopy(self.stat_test),
00643                               draw_success=directory.draw_success,
00644                               do_pngs=directory.do_pngs))
00645         
00646     self.cd("..")
   
def dqm_interfaces::DirWalkerFile::cd (   self,
  directory_name,
  on_disk = False 
)

Definition at line 560 of file dqm_interfaces.py.

00561                                            :
00562     if len(directory_name)!=0:
00563       if on_disk:
00564         if not exists(directory_name):
00565           makedirs(directory_name)
00566         chdir(directory_name)  
00567       self.dqmrootfile2.cd(directory_name)
00568       self.dqmrootfile1.cd(directory_name)
    
def dqm_interfaces::DirWalkerFile::getObjs (   self,
  name 
)

Definition at line 581 of file dqm_interfaces.py.

00582                         :
00583     h1=self.dqmrootfile1.getObj(name)
00584     h2=self.dqmrootfile2.getObj(name)
00585     return h1,h2
  
def dqm_interfaces::DirWalkerFile::ls (   self,
  directory_name = "" 
)
Return common objects to the 2 files.

Definition at line 569 of file dqm_interfaces.py.

00570                                 :
00571     """Return common objects to the 2 files.
00572     """
00573     contents1=self.dqmrootfile1.ls(directory_name)
00574     contents2=self.dqmrootfile2.ls(directory_name)
00575     contents={}
00576     keys = filter(lambda key: contents1.has_key(key),contents2.keys())
00577     for key in keys:
00578       #if contents1[key]==contents2[key]:
00579       contents[key]=contents1[key]
00580     return contents
  
def dqm_interfaces::DirWalkerFile::walk (   self)

Definition at line 647 of file dqm_interfaces.py.

00648                 :
00649     # Build the top dir in the rootfile first
00650     rundir=""
00651     if self.run<0:
00652       # change dir in the first one...
00653       #print  self.ls().keys()
00654       first_run_dir = ""
00655       try:
00656         first_run_dir = filter(lambda k: "Run " in k, self.ls().keys())[0]
00657       except:
00658          print "\nRundir not there: Is this a generic rootfile?\n"
00659       rundir=first_run_dir
00660       self.run= int(rundir.split(" ")[1])
00661     else:
00662       rundir="Run %s"%self.run
00663     
00664     try:
00665       self.cd(rundir,False)
00666     except:
00667       print "\nRundir not there: Is this a generic rootfile?\n"
00668     
00669     # Let's rock!
00670     self.__fill_single_dir(self.directory.name,self.directory)
00671     print "Finished"
00672     n_left_threads=len(tcanvas_print_processes)
00673     if n_left_threads>0:
00674       print "Waiting for %s threads to finish..." %n_left_threads
00675       for p in tcanvas_print_processes:
00676         p.join()  
00677 
00678 #-------------------------------------------------------------------------------


Member Data Documentation

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.

Definition at line 544 of file dqm_interfaces.py.