diff --git a/ILD/compact/ILD_common_v02/writeAllILDCompactDescriptions.py b/ILD/compact/ILD_common_v02/writeAllILDCompactDescriptions.py index 10e6b5dd0..3df122626 100644 --- a/ILD/compact/ILD_common_v02/writeAllILDCompactDescriptions.py +++ b/ILD/compact/ILD_common_v02/writeAllILDCompactDescriptions.py @@ -1,44 +1,55 @@ -def writeTopCompactXml( outfile, version, name, Large, Option, SolenoidMap, AntiDID, FwdFields ): - +def writeTopCompactXml( + outfile, version, name, Large, Option, SolenoidMap, AntiDID, FwdFields +): # defaults for option 0, 1 # si ecal - ecal_sl1=4 - ecal_sl2=10 + ecal_sl1 = 4 + ecal_sl2 = 10 # ahcal - hcal_sl=3 - if Option==2 or Option==4: # SDHCAL - hcal_sl=1 - elif Option==3 or Option==4: # ScECAL - ecal_sl1=3 - ecal_sl2=11 - elif Option>1: - print 'ERROR: do not know about Option', Option + hcal_sl = 3 + if Option == 2 or Option == 4: # SDHCAL + hcal_sl = 1 + elif Option == 3 or Option == 4: # ScECAL + ecal_sl1 = 3 + ecal_sl2 = 11 + elif Option > 1: + print("ERROR: do not know about Option", Option) return - if FwdFields!=250 and FwdFields!=500 and FwdFields!=1000 and FwdFields!=0: - print 'ERROR: do not know about FwdFields at energy', FwdFields + if FwdFields != 250 and FwdFields != 500 and FwdFields != 1000 and FwdFields != 0: + print("ERROR: do not know about FwdFields at energy", FwdFields) return outfile.write('\n') - outfile.write(' \n' + ) + outfile.write(' \n') - outfile.write(' ILD simulation models used for detector optimisation \n') - outfile.write(' \n') - outfile.write(' \n') + outfile.write(' version="v' + version + '">\n') + outfile.write( + " ILD simulation models used for detector optimisation \n" + ) + outfile.write(" \n") + outfile.write(" \n") outfile.write(' \n') outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') + outfile.write(" \n") + outfile.write(" \n") if Large: - outfile.write(' \n') + outfile.write( + ' \n' + ) else: - outfile.write(' \n') + outfile.write( + ' \n' + ) outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') @@ -50,41 +61,69 @@ def writeTopCompactXml( outfile, version, name, Large, Option, SolenoidMap, Anti outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') - outfile.write(' \n') + outfile.write( + ' \n' + ) outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') + outfile.write(" \n") + outfile.write( + ' \n' + ) + outfile.write( + ' \n' + ) + outfile.write(" \n") + outfile.write( + ' \n' + ) + outfile.write(" \n") + outfile.write(" \n") outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') + outfile.write( + ' \n' + ) + outfile.write(" \n") outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') + outfile.write( + ' \n' + ) + outfile.write(" \n") outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') - outfile.write(' \n') + outfile.write( + ' \n' + ) + outfile.write(" \n") + outfile.write(" \n") outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') - outfile.write(' \n') + outfile.write( + ' \n' + ) outfile.write(' \n') - outfile.write(' \n') + outfile.write( + ' \n' + ) outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') - + if Large: - outfile.write(' \n') + outfile.write( + ' \n' + ) else: - outfile.write(' \n') + outfile.write( + ' \n' + ) outfile.write(' \n') outfile.write(' \n') @@ -94,108 +133,130 @@ def writeTopCompactXml( outfile, version, name, Large, Option, SolenoidMap, Anti outfile.write(' \n') outfile.write(' \n') outfile.write(' \n') - outfile.write(' \n') + outfile.write(" \n") outfile.write(' \n') outfile.write(' \n') - outfile.write(' \n') + outfile.write(" \n") if SolenoidMap: if Large: - outfile.write(' \n') + outfile.write( + ' \n' + ) else: - outfile.write(' \n') + outfile.write( + ' \n' + ) else: outfile.write(' \n') if AntiDID: if Large: - outfile.write(' \n') + outfile.write( + ' \n' + ) else: - outfile.write(' \n') + outfile.write( + ' \n' + ) + + if FwdFields > 0: + outfile.write( + ' \n' + ) + + outfile.write("\n") - if FwdFields>0: - outfile.write(' \n') - outfile.write('\n') +# ----------------------------------------------------- -#----------------------------------------------------- def getVersionParameters(version): - vparams={} - if version==2: - vparams['SolenoidMap']=False - vparams['AntiDID']=False - vparams['FwdFields']=0 - elif version==3: - vparams['SolenoidMap']=True - vparams['AntiDID']=False - vparams['FwdFields']=250 - elif version==4: - vparams['SolenoidMap']=True - vparams['AntiDID']=False - vparams['FwdFields']=500 - elif version==5: - vparams['SolenoidMap']=True - vparams['AntiDID']=True - vparams['FwdFields']=250 - elif version==6: - vparams['SolenoidMap']=True - vparams['AntiDID']=True - vparams['FwdFields']=500 - elif version==7: - vparams['SolenoidMap']=True - vparams['AntiDID']=False - vparams['FwdFields']=1000 - elif version==8: - vparams['SolenoidMap']=True - vparams['AntiDID']=True - vparams['FwdFields']=1000 + vparams = {} + if version == 2: + vparams["SolenoidMap"] = False + vparams["AntiDID"] = False + vparams["FwdFields"] = 0 + elif version == 3: + vparams["SolenoidMap"] = True + vparams["AntiDID"] = False + vparams["FwdFields"] = 250 + elif version == 4: + vparams["SolenoidMap"] = True + vparams["AntiDID"] = False + vparams["FwdFields"] = 500 + elif version == 5: + vparams["SolenoidMap"] = True + vparams["AntiDID"] = True + vparams["FwdFields"] = 250 + elif version == 6: + vparams["SolenoidMap"] = True + vparams["AntiDID"] = True + vparams["FwdFields"] = 500 + elif version == 7: + vparams["SolenoidMap"] = True + vparams["AntiDID"] = False + vparams["FwdFields"] = 1000 + elif version == 8: + vparams["SolenoidMap"] = True + vparams["AntiDID"] = True + vparams["FwdFields"] = 1000 else: - print 'ERROR: unknown version requested:',version,'!!' + print("ERROR: unknown version requested:", version, "!!") return vparams - if version<10: - vparams['vString']='0'+str(version) + if version < 10: + vparams["vString"] = "0" + str(version) else: - vparams['vString']=str(version) + vparams["vString"] = str(version) return vparams -#----------------------------------------------------- +# ----------------------------------------------------- import os -prename='ILD' # for the real thing +prename = "ILD" # for the real thing # prename='test' # for testing -topdir='../' -mainoutdirname=prename+'_sl5_v02' -mainoutdir=topdir+mainoutdirname +topdir = "../" +mainoutdirname = prename + "_sl5_v02" +mainoutdir = topdir + mainoutdirname if not os.path.exists(mainoutdir): os.makedirs(mainoutdir) for version in range(2, 9): - vparams=getVersionParameters(version) + vparams = getVersionParameters(version) for Large in (True, False): - for Option in range(0,5): - - modelname=prename+'_' + for Option in range(0, 5): + modelname = prename + "_" if Large: - modelname=modelname+'l' + modelname = modelname + "l" else: - modelname=modelname+'s' - modelname=modelname+'5_' + modelname = modelname + "s" + modelname = modelname + "5_" + + if Option > 0: + modelname = modelname + "o" + str(Option) + "_" - if Option>0: - modelname=modelname+'o'+str(Option)+'_' + modelname = modelname + "v" + vparams["vString"] - modelname=modelname+'v'+vparams['vString'] - - outfile=open(mainoutdir+'/'+modelname+'.xml','w') - writeTopCompactXml( outfile, version=vparams['vString'], name=modelname, Large=Large, Option=Option, SolenoidMap=vparams['SolenoidMap'], AntiDID=vparams['AntiDID'], FwdFields=vparams['FwdFields'] ) + outfile = open(mainoutdir + "/" + modelname + ".xml", "w") + writeTopCompactXml( + outfile, + version=vparams["vString"], + name=modelname, + Large=Large, + Option=Option, + SolenoidMap=vparams["SolenoidMap"], + AntiDID=vparams["AntiDID"], + FwdFields=vparams["FwdFields"], + ) outfile.close() - - if not os.path.exists( topdir+modelname ): - os.symlink( mainoutdirname, topdir+modelname ) + + if not os.path.exists(topdir + modelname): + os.symlink(mainoutdirname, topdir + modelname) diff --git a/ILD/doc/latex/documentEnvelopes.py b/ILD/doc/latex/documentEnvelopes.py index ad3db7493..afd53eb07 100644 --- a/ILD/doc/latex/documentEnvelopes.py +++ b/ILD/doc/latex/documentEnvelopes.py @@ -1,517 +1,692 @@ """ - Create Latex documents with drawings and tables - documenting envelope parameters +Create Latex documents with drawings and tables +documenting envelope parameters - @author F.Gaede, CERN/DESY - @version 1.0 +@author F.Gaede, CERN/DESY +@version 1.0 """ + import sys import copy import cStringIO - # --- define the envelope parameters for every subdetector ----- -envDict={} -envDict['VXD'] = [ 'VXD_inner_radius', 'VXD_outer_radius', - 'VXD_half_length', 'VXD_cone_min_z', 'VXD_cone_max_z', 'VXD_inner_radius_1' ] - -envDict['SIT'] = [ 'SIT_inner_radius', 'SIT_outer_radius', - 'SIT_half_length', 'SIT_outer_radius_1', 'SIT_half_length_1' ] - -envDict['TPC'] = [ 'TPC_inner_radius', 'TPC_outer_radius', 'TPC_half_length' ] - -envDict['FTD'] = [ 'FTD_inner_radius', 'FTD_outer_radius', 'FTD_half_length', - 'FTD_outer_radius_1', 'FTD_outer_radius_2', - 'FTD_min_z_0', 'FTD_min_z_1', 'FTD_min_z_2', 'FTD_cone_min_z', 'FTD_cone_radius' ] - -envDict['SET'] = [ 'SET_inner_radius', 'SET_outer_radius', 'SET_half_length' ] - - -envDict['Ecal'] = [ 'Ecal_Hcal_symmetry', 'Ecal_inner_radius', 'Ecal_outer_radius', 'Ecal_half_length', 'Ecal_symmetry' ] - -envDict['EcalEndcap'] = [ 'EcalEndcap_inner_radius', 'EcalEndcap_outer_radius', 'EcalEndcap_min_z', 'EcalEndcap_max_z' ] - -envDict['EcalEndcapRing'] = [ 'EcalEndcapRing_inner_radius', 'EcalEndcapRing_outer_radius', 'EcalEndcapRing_min_z', 'EcalEndcapRing_max_z' ] - -envDict['Hcal'] = [ 'Hcal_inner_radius', 'Hcal_outer_radius', 'Hcal_half_length', 'Hcal_inner_symmetry' ] - -envDict['HcalEndcap'] = [ 'EcalEndcap_symmetry', 'HcalEndcap_inner_radius', 'HcalEndcap_outer_radius', 'HcalEndcap_min_z', 'HcalEndcap_max_z' ] - -envDict['HcalEndcapRing'] = [ 'HcalEndcapRing_inner_radius', 'HcalEndcapRing_outer_radius', 'HcalEndcapRing_min_z', 'HcalEndcapRing_max_z', 'HcalEndcapRing_symmetry' ] - -envDict['Coil'] = [ 'Coil_inner_radius', 'Coil_outer_radius', 'Coil_half_length'] - -envDict['Yoke'] = [ 'Yoke_inner_radius', 'Yoke_outer_radius', 'Yoke_half_length', 'Yoke_symmetry' ] - -envDict['YokeEndcap'] = [ 'YokeEndcap_inner_radius', 'YokeEndcap_outer_radius', 'YokeEndcap_min_z', 'YokeEndcap_max_z', 'YokeEndcap_symmetry' ] - -envDict['YokeEndcapPlug'] = [ 'YokeEndcapPlug_inner_radius', 'YokeEndcapPlug_outer_radius', 'YokeEndcapPlug_min_z', 'YokeEndcapPlug_max_z', 'YokeEndcapPlug_symmetry' ] - -envDict['BeamCal'] = [ 'BeamCal_inner_radius', 'BeamCal_outer_radius', 'BeamCal_min_z', 'BeamCal_max_z', 'BeamCal_thickness', 'BeamCal_tubeIncoming_radius' ] - -envDict['LumiCal'] = [ 'LumiCal_inner_radius', 'LumiCal_outer_radius', 'LumiCal_min_z', 'LumiCal_max_z', 'LumiCal_thickness' ] - -envDict['LHCal'] = [ 'LHCal_inner_radius', 'LHCal_outer_radius', 'LHCal_min_z', 'LHCal_max_z', 'LHCal_thickness' ] - - -#----- define the envelope shape points in rz ------------ +envDict = {} +envDict["VXD"] = [ + "VXD_inner_radius", + "VXD_outer_radius", + "VXD_half_length", + "VXD_cone_min_z", + "VXD_cone_max_z", + "VXD_inner_radius_1", +] + +envDict["SIT"] = [ + "SIT_inner_radius", + "SIT_outer_radius", + "SIT_half_length", + "SIT_outer_radius_1", + "SIT_half_length_1", +] + +envDict["TPC"] = ["TPC_inner_radius", "TPC_outer_radius", "TPC_half_length"] + +envDict["FTD"] = [ + "FTD_inner_radius", + "FTD_outer_radius", + "FTD_half_length", + "FTD_outer_radius_1", + "FTD_outer_radius_2", + "FTD_min_z_0", + "FTD_min_z_1", + "FTD_min_z_2", + "FTD_cone_min_z", + "FTD_cone_radius", +] + +envDict["SET"] = ["SET_inner_radius", "SET_outer_radius", "SET_half_length"] + + +envDict["Ecal"] = [ + "Ecal_Hcal_symmetry", + "Ecal_inner_radius", + "Ecal_outer_radius", + "Ecal_half_length", + "Ecal_symmetry", +] + +envDict["EcalEndcap"] = [ + "EcalEndcap_inner_radius", + "EcalEndcap_outer_radius", + "EcalEndcap_min_z", + "EcalEndcap_max_z", +] + +envDict["EcalEndcapRing"] = [ + "EcalEndcapRing_inner_radius", + "EcalEndcapRing_outer_radius", + "EcalEndcapRing_min_z", + "EcalEndcapRing_max_z", +] + +envDict["Hcal"] = [ + "Hcal_inner_radius", + "Hcal_outer_radius", + "Hcal_half_length", + "Hcal_inner_symmetry", +] + +envDict["HcalEndcap"] = [ + "EcalEndcap_symmetry", + "HcalEndcap_inner_radius", + "HcalEndcap_outer_radius", + "HcalEndcap_min_z", + "HcalEndcap_max_z", +] + +envDict["HcalEndcapRing"] = [ + "HcalEndcapRing_inner_radius", + "HcalEndcapRing_outer_radius", + "HcalEndcapRing_min_z", + "HcalEndcapRing_max_z", + "HcalEndcapRing_symmetry", +] + +envDict["Coil"] = ["Coil_inner_radius", "Coil_outer_radius", "Coil_half_length"] + +envDict["Yoke"] = [ + "Yoke_inner_radius", + "Yoke_outer_radius", + "Yoke_half_length", + "Yoke_symmetry", +] + +envDict["YokeEndcap"] = [ + "YokeEndcap_inner_radius", + "YokeEndcap_outer_radius", + "YokeEndcap_min_z", + "YokeEndcap_max_z", + "YokeEndcap_symmetry", +] + +envDict["YokeEndcapPlug"] = [ + "YokeEndcapPlug_inner_radius", + "YokeEndcapPlug_outer_radius", + "YokeEndcapPlug_min_z", + "YokeEndcapPlug_max_z", + "YokeEndcapPlug_symmetry", +] + +envDict["BeamCal"] = [ + "BeamCal_inner_radius", + "BeamCal_outer_radius", + "BeamCal_min_z", + "BeamCal_max_z", + "BeamCal_thickness", + "BeamCal_tubeIncoming_radius", +] + +envDict["LumiCal"] = [ + "LumiCal_inner_radius", + "LumiCal_outer_radius", + "LumiCal_min_z", + "LumiCal_max_z", + "LumiCal_thickness", +] + +envDict["LHCal"] = [ + "LHCal_inner_radius", + "LHCal_outer_radius", + "LHCal_min_z", + "LHCal_max_z", + "LHCal_thickness", +] + + +# ----- define the envelope shape points in rz ------------ envRZDict = {} -envRZDict['VXD'] = [ ( '0' , 'VXD_inner_radius' ) , - ( '0' , 'VXD_outer_radius' ) , - ( 'VXD_half_length', 'VXD_outer_radius' ) , - ( 'VXD_half_length', 'VXD_inner_radius_1') , - ( 'VXD_cone_max_z' , 'VXD_inner_radius_1') , - ( 'VXD_cone_min_z' , 'VXD_inner_radius' ) , - ( '0' , 'VXD_inner_radius' ) ] - -envRZDict['SIT'] = [ ( '0' , 'SIT_inner_radius' ) , - ( '0' , 'SIT_outer_radius' ) , - ( 'SIT_half_length' , 'SIT_outer_radius' ) , - ( 'SIT_half_length' , 'SIT_outer_radius_1' ) , - ( 'SIT_half_length_1', 'SIT_outer_radius_1' ) , - ( 'SIT_half_length_1', 'SIT_inner_radius' ) , - ( '0' , 'SIT_inner_radius' ) ] - -envRZDict['FTD'] = [ ( 'FTD_min_z_0' , 'FTD_inner_radius' ) , - ( 'FTD_min_z_0' , 'FTD_outer_radius_1' ) , - ( 'FTD_min_z_1' , 'FTD_outer_radius_1' ) , - ( 'FTD_min_z_1' , 'FTD_outer_radius_2' ) , - ( 'FTD_min_z_2' , 'FTD_outer_radius_2' ) , - ( 'FTD_min_z_2' , 'FTD_outer_radius' ) , - ( 'FTD_half_length', 'FTD_outer_radius' ) , - ( 'FTD_half_length', 'FTD_cone_radius' ) , - ( 'FTD_cone_min_z', 'FTD_inner_radius' ) , - ( 'FTD_min_z_0' , 'FTD_inner_radius' ) ] - -envRZDict['SET'] = [ ( '0' , 'SET_inner_radius' ) , - ( '0' , 'SET_outer_radius' ) , - ( 'SET_half_length', 'SET_outer_radius' ) , - ( 'SET_half_length', 'SET_inner_radius' ) , - ( '0' , 'SET_inner_radius' ) ] - -envRZDict['TPC'] = [ ( '0' , 'TPC_inner_radius' ) , - ( '0' , 'TPC_outer_radius' ) , - ( 'TPC_half_length', 'TPC_outer_radius' ) , - ( 'TPC_half_length', 'TPC_inner_radius' ) , - ( '0' , 'TPC_inner_radius' ) ] - -envRZDict['Ecal'] = [ ( '0' , 'Ecal_inner_radius' ) , - ( '0' , 'Ecal_outer_radius' ) , - ( 'Ecal_half_length', 'Ecal_outer_radius' ) , - ( 'Ecal_half_length', 'Ecal_inner_radius' ) , - ( '0' , 'Ecal_inner_radius' ) ] - -envRZDict['EcalEndcap'] = [ ( 'EcalEndcap_min_z' , 'EcalEndcap_inner_radius' ) , - ( 'EcalEndcap_min_z' , 'EcalEndcap_outer_radius' ) , - ( 'EcalEndcap_max_z' , 'EcalEndcap_outer_radius' ) , - ( 'EcalEndcap_max_z' , 'EcalEndcap_inner_radius' ) , - ( 'EcalEndcap_min_z' , 'EcalEndcap_inner_radius' ) ] - -envRZDict['EcalEndcapRing'] = [ ( 'EcalEndcapRing_min_z' , 'EcalEndcapRing_inner_radius' ) , - ( 'EcalEndcapRing_min_z' , 'EcalEndcapRing_outer_radius' ) , - ( 'EcalEndcapRing_max_z' , 'EcalEndcapRing_outer_radius' ) , - ( 'EcalEndcapRing_max_z' , 'EcalEndcapRing_inner_radius' ) , - ( 'EcalEndcapRing_min_z' , 'EcalEndcapRing_inner_radius' ) ] - -envRZDict['Hcal'] = [ ( '0' , 'Hcal_inner_radius' ) , - ( '0' , 'Hcal_outer_radius' ) , - ( 'Hcal_half_length', 'Hcal_outer_radius' ) , - ( 'Hcal_half_length', 'Hcal_inner_radius' ) , - ( '0' , 'Hcal_inner_radius' ) ] - - -envRZDict['HcalEndcap'] = [ ( 'HcalEndcap_min_z' , 'HcalEndcap_inner_radius' ) , - ( 'HcalEndcap_min_z' , 'HcalEndcap_outer_radius' ) , - ( 'HcalEndcap_max_z' , 'HcalEndcap_outer_radius' ) , - ( 'HcalEndcap_max_z' , 'HcalEndcap_inner_radius' ) , - ( 'HcalEndcap_min_z' , 'HcalEndcap_inner_radius' ) ] - -envRZDict['HcalEndcapRing'] = [ ( 'HcalEndcapRing_min_z' , 'HcalEndcapRing_inner_radius' ) , - ( 'HcalEndcapRing_min_z' , 'HcalEndcapRing_outer_radius' ) , - ( 'HcalEndcapRing_max_z' , 'HcalEndcapRing_outer_radius' ) , - ( 'HcalEndcapRing_max_z' , 'HcalEndcapRing_inner_radius' ) , - ( 'HcalEndcapRing_min_z' , 'HcalEndcapRing_inner_radius' ) ] - - -envRZDict['Yoke'] = [ ( '0' , 'Yoke_inner_radius' ) , - ( '0' , 'Yoke_outer_radius' ) , - ( 'Yoke_half_length', 'Yoke_outer_radius' ) , - ( 'Yoke_half_length', 'Yoke_inner_radius' ) , - ( '0' , 'Yoke_inner_radius' ) ] - - -envRZDict['YokeEndcap'] = [ ( 'YokeEndcap_min_z' , 'YokeEndcap_inner_radius' ) , - ( 'YokeEndcap_min_z' , 'YokeEndcap_outer_radius' ) , - ( 'YokeEndcap_max_z' , 'YokeEndcap_outer_radius' ) , - ( 'YokeEndcap_max_z' , 'YokeEndcap_inner_radius' ) , - ( 'YokeEndcap_min_z' , 'YokeEndcap_inner_radius' ) ] - -envRZDict['YokeEndcapPlug'] = [ ( 'YokeEndcapPlug_min_z' , 'YokeEndcapPlug_inner_radius' ) , - ( 'YokeEndcapPlug_min_z' , 'YokeEndcapPlug_outer_radius' ) , - ( 'YokeEndcapPlug_max_z' , 'YokeEndcapPlug_outer_radius' ) , - ( 'YokeEndcapPlug_max_z' , 'YokeEndcapPlug_inner_radius' ) , - ( 'YokeEndcapPlug_min_z' , 'YokeEndcapPlug_inner_radius' ) ] - -envRZDict['Coil'] = [ ( '0' , 'Coil_inner_radius' ) , - ( '0' , 'Coil_outer_radius' ) , - ( 'Coil_half_length', 'Coil_outer_radius' ) , - ( 'Coil_half_length', 'Coil_inner_radius' ) , - ( '0' , 'Coil_inner_radius' ) ] - - -envRZDict['BeamCal'] = [ ( 'BeamCal_min_z' , 'BeamCal_inner_radius' ) , - ( 'BeamCal_min_z' , 'BeamCal_outer_radius' ) , - ( 'BeamCal_max_z' , 'BeamCal_outer_radius' ) , - ( 'BeamCal_max_z' , 'BeamCal_inner_radius' ) , - ( 'BeamCal_min_z' , 'BeamCal_inner_radius' ) ] - -envRZDict['LumiCal'] = [ ( 'LumiCal_min_z' , 'LumiCal_inner_radius' ) , - ( 'LumiCal_min_z' , 'LumiCal_outer_radius' ) , - ( 'LumiCal_max_z' , 'LumiCal_outer_radius' ) , - ( 'LumiCal_max_z' , 'LumiCal_inner_radius' ) , - ( 'LumiCal_min_z' , 'LumiCal_inner_radius' ) ] - -envRZDict['LHCal'] = [ ( 'LHCal_min_z' , 'LHCal_inner_radius' ) , - ( 'LHCal_min_z' , 'LHCal_outer_radius' ) , - ( 'LHCal_max_z' , 'LHCal_outer_radius' ) , - ( 'LHCal_max_z' , 'LHCal_inner_radius' ) , - ( 'LHCal_min_z' , 'LHCal_inner_radius' ) ] - - - -#----------------------------------------------- +envRZDict["VXD"] = [ + ("0", "VXD_inner_radius"), + ("0", "VXD_outer_radius"), + ("VXD_half_length", "VXD_outer_radius"), + ("VXD_half_length", "VXD_inner_radius_1"), + ("VXD_cone_max_z", "VXD_inner_radius_1"), + ("VXD_cone_min_z", "VXD_inner_radius"), + ("0", "VXD_inner_radius"), +] + +envRZDict["SIT"] = [ + ("0", "SIT_inner_radius"), + ("0", "SIT_outer_radius"), + ("SIT_half_length", "SIT_outer_radius"), + ("SIT_half_length", "SIT_outer_radius_1"), + ("SIT_half_length_1", "SIT_outer_radius_1"), + ("SIT_half_length_1", "SIT_inner_radius"), + ("0", "SIT_inner_radius"), +] + +envRZDict["FTD"] = [ + ("FTD_min_z_0", "FTD_inner_radius"), + ("FTD_min_z_0", "FTD_outer_radius_1"), + ("FTD_min_z_1", "FTD_outer_radius_1"), + ("FTD_min_z_1", "FTD_outer_radius_2"), + ("FTD_min_z_2", "FTD_outer_radius_2"), + ("FTD_min_z_2", "FTD_outer_radius"), + ("FTD_half_length", "FTD_outer_radius"), + ("FTD_half_length", "FTD_cone_radius"), + ("FTD_cone_min_z", "FTD_inner_radius"), + ("FTD_min_z_0", "FTD_inner_radius"), +] + +envRZDict["SET"] = [ + ("0", "SET_inner_radius"), + ("0", "SET_outer_radius"), + ("SET_half_length", "SET_outer_radius"), + ("SET_half_length", "SET_inner_radius"), + ("0", "SET_inner_radius"), +] + +envRZDict["TPC"] = [ + ("0", "TPC_inner_radius"), + ("0", "TPC_outer_radius"), + ("TPC_half_length", "TPC_outer_radius"), + ("TPC_half_length", "TPC_inner_radius"), + ("0", "TPC_inner_radius"), +] + +envRZDict["Ecal"] = [ + ("0", "Ecal_inner_radius"), + ("0", "Ecal_outer_radius"), + ("Ecal_half_length", "Ecal_outer_radius"), + ("Ecal_half_length", "Ecal_inner_radius"), + ("0", "Ecal_inner_radius"), +] + +envRZDict["EcalEndcap"] = [ + ("EcalEndcap_min_z", "EcalEndcap_inner_radius"), + ("EcalEndcap_min_z", "EcalEndcap_outer_radius"), + ("EcalEndcap_max_z", "EcalEndcap_outer_radius"), + ("EcalEndcap_max_z", "EcalEndcap_inner_radius"), + ("EcalEndcap_min_z", "EcalEndcap_inner_radius"), +] + +envRZDict["EcalEndcapRing"] = [ + ("EcalEndcapRing_min_z", "EcalEndcapRing_inner_radius"), + ("EcalEndcapRing_min_z", "EcalEndcapRing_outer_radius"), + ("EcalEndcapRing_max_z", "EcalEndcapRing_outer_radius"), + ("EcalEndcapRing_max_z", "EcalEndcapRing_inner_radius"), + ("EcalEndcapRing_min_z", "EcalEndcapRing_inner_radius"), +] + +envRZDict["Hcal"] = [ + ("0", "Hcal_inner_radius"), + ("0", "Hcal_outer_radius"), + ("Hcal_half_length", "Hcal_outer_radius"), + ("Hcal_half_length", "Hcal_inner_radius"), + ("0", "Hcal_inner_radius"), +] + + +envRZDict["HcalEndcap"] = [ + ("HcalEndcap_min_z", "HcalEndcap_inner_radius"), + ("HcalEndcap_min_z", "HcalEndcap_outer_radius"), + ("HcalEndcap_max_z", "HcalEndcap_outer_radius"), + ("HcalEndcap_max_z", "HcalEndcap_inner_radius"), + ("HcalEndcap_min_z", "HcalEndcap_inner_radius"), +] + +envRZDict["HcalEndcapRing"] = [ + ("HcalEndcapRing_min_z", "HcalEndcapRing_inner_radius"), + ("HcalEndcapRing_min_z", "HcalEndcapRing_outer_radius"), + ("HcalEndcapRing_max_z", "HcalEndcapRing_outer_radius"), + ("HcalEndcapRing_max_z", "HcalEndcapRing_inner_radius"), + ("HcalEndcapRing_min_z", "HcalEndcapRing_inner_radius"), +] + + +envRZDict["Yoke"] = [ + ("0", "Yoke_inner_radius"), + ("0", "Yoke_outer_radius"), + ("Yoke_half_length", "Yoke_outer_radius"), + ("Yoke_half_length", "Yoke_inner_radius"), + ("0", "Yoke_inner_radius"), +] + + +envRZDict["YokeEndcap"] = [ + ("YokeEndcap_min_z", "YokeEndcap_inner_radius"), + ("YokeEndcap_min_z", "YokeEndcap_outer_radius"), + ("YokeEndcap_max_z", "YokeEndcap_outer_radius"), + ("YokeEndcap_max_z", "YokeEndcap_inner_radius"), + ("YokeEndcap_min_z", "YokeEndcap_inner_radius"), +] + +envRZDict["YokeEndcapPlug"] = [ + ("YokeEndcapPlug_min_z", "YokeEndcapPlug_inner_radius"), + ("YokeEndcapPlug_min_z", "YokeEndcapPlug_outer_radius"), + ("YokeEndcapPlug_max_z", "YokeEndcapPlug_outer_radius"), + ("YokeEndcapPlug_max_z", "YokeEndcapPlug_inner_radius"), + ("YokeEndcapPlug_min_z", "YokeEndcapPlug_inner_radius"), +] + +envRZDict["Coil"] = [ + ("0", "Coil_inner_radius"), + ("0", "Coil_outer_radius"), + ("Coil_half_length", "Coil_outer_radius"), + ("Coil_half_length", "Coil_inner_radius"), + ("0", "Coil_inner_radius"), +] + + +envRZDict["BeamCal"] = [ + ("BeamCal_min_z", "BeamCal_inner_radius"), + ("BeamCal_min_z", "BeamCal_outer_radius"), + ("BeamCal_max_z", "BeamCal_outer_radius"), + ("BeamCal_max_z", "BeamCal_inner_radius"), + ("BeamCal_min_z", "BeamCal_inner_radius"), +] + +envRZDict["LumiCal"] = [ + ("LumiCal_min_z", "LumiCal_inner_radius"), + ("LumiCal_min_z", "LumiCal_outer_radius"), + ("LumiCal_max_z", "LumiCal_outer_radius"), + ("LumiCal_max_z", "LumiCal_inner_radius"), + ("LumiCal_min_z", "LumiCal_inner_radius"), +] + +envRZDict["LHCal"] = [ + ("LHCal_min_z", "LHCal_inner_radius"), + ("LHCal_min_z", "LHCal_outer_radius"), + ("LHCal_max_z", "LHCal_outer_radius"), + ("LHCal_max_z", "LHCal_inner_radius"), + ("LHCal_min_z", "LHCal_inner_radius"), +] + + +# ----------------------------------------------- try: - dictFile = sys.argv[1] + dictFile = sys.argv[1] except IndexError: - print " usage: python documentEnvelopes.py pyDict.py " - print " pyDict.py : python file with a data dictionary (created with extractParameters)" - print - sys.exit(1) + print(" usage: python documentEnvelopes.py pyDict.py ") + print( + " pyDict.py : python file with a data dictionary (created with extractParameters)" + ) + print() + sys.exit(1) + +# ------ read dictionary 'values' from file +execfile(dictFile) +values["0"] = 0 -#------ read dictionary 'values' from file -execfile( dictFile ) -values['0'] = 0 -#----------------------------------------------- +# ----------------------------------------------- def run(): + writeTexFile("VXD", "_rz_envelope", getRZEnvCmds, 20) + writeTexFile("SIT", "_rz_envelope", getRZEnvCmds, 20) + writeTexFile("FTD", "_rz_envelope", getRZEnvCmds, 20) + writeTexFile("TPC", "_rz_envelope", getRZEnvCmds, 20) + writeTexFile("SET", "_rz_envelope", getRZEnvCmds, 20) - writeTexFile( 'VXD', '_rz_envelope' , getRZEnvCmds, 20 ) - writeTexFile( 'SIT', '_rz_envelope' , getRZEnvCmds, 20 ) - writeTexFile( 'FTD', '_rz_envelope' , getRZEnvCmds, 20 ) - writeTexFile( 'TPC', '_rz_envelope' , getRZEnvCmds, 20 ) - writeTexFile( 'SET', '_rz_envelope' , getRZEnvCmds, 20 ) + writeTexFile("ILD", "_rz_quadrant", getILDRZQuadrantCmds, 20) - writeTexFile( 'ILD', '_rz_quadrant' , getILDRZQuadrantCmds, 20 ) + writeILDEnvTable("ILD_enevelope_table.tex") - writeILDEnvTable('ILD_enevelope_table.tex' ) -#----------------------------------------------- -def writeILDEnvTable( file ): - fn = './ILD_envelopeTable.tex' - of = open( fn , 'w' ) +# ----------------------------------------------- +def writeILDEnvTable(file): + fn = "./ILD_envelopeTable.tex" + of = open(fn, "w") cmds = [] - cmds.extend( getDocHeaderCmds( 'article', ['multirow'] )) - - dets = ['VXD','FTD','SIT','TPC','SET', 'Ecal', 'EcalEndcap', 'EcalEndcapRing', - 'Hcal', 'HcalEndcap', 'HcalEndcapRing', 'Coil', 'Yoke', 'YokeEndcap', 'YokeEndcapPlug', 'BeamCal', 'LHCal', 'LumiCal' ] - - - cmds.extend( getEnvelopeTableCmds( dets , '\\large{Envelope parameters for ILD\_o1\_v05}' ) ) - - cmds.extend( getDocFooterCmds() ) + cmds.extend(getDocHeaderCmds("article", ["multirow"])) + + dets = [ + "VXD", + "FTD", + "SIT", + "TPC", + "SET", + "Ecal", + "EcalEndcap", + "EcalEndcapRing", + "Hcal", + "HcalEndcap", + "HcalEndcapRing", + "Coil", + "Yoke", + "YokeEndcap", + "YokeEndcapPlug", + "BeamCal", + "LHCal", + "LumiCal", + ] + + cmds.extend( + getEnvelopeTableCmds(dets, "\\large{Envelope parameters for ILD\_o1\_v05}") + ) + + cmds.extend(getDocFooterCmds()) for cmd in cmds: - print >>of, cmd + print(cmd, file=of) of.close() -#----------------------------------------------- -def getEnvelopeTableCmds( dets , title ): - cmds = [] - cmds.append( '\\begin{tabular}{|l | c | c | c | l r |}' ) - cmds.append( '\\hline' ) - if( len( title )): - cmds.append( '\\multicolumn{6}{|c|}{} \\\\' ) - cmds.append( '\\multicolumn{6}{|c|}{' + title + '} \\\\' ) - cmds.append( '\\multicolumn{6}{|c|}{} \\\\' ) - cmds.append( '\\hline' ) - cmds.append( ' detector & inner radius & outer radius & half length & \multicolumn{2}{c|}{additional parameters} \\\\' ) - cmds.append( ' & & & min z, max z & & \\\\' ) - cmds.append( '\\hline' ) +# ----------------------------------------------- +def getEnvelopeTableCmds(dets, title): + cmds = [] + cmds.append("\\begin{tabular}{|l | c | c | c | l r |}") + cmds.append("\\hline") + + if len(title): + cmds.append("\\multicolumn{6}{|c|}{} \\\\") + cmds.append("\\multicolumn{6}{|c|}{" + title + "} \\\\") + cmds.append("\\multicolumn{6}{|c|}{} \\\\") + cmds.append("\\hline") + + cmds.append( + " detector & inner radius & outer radius & half length & \multicolumn{2}{c|}{additional parameters} \\\\" + ) + cmds.append( + " & & & min z, max z & & \\\\" + ) + cmds.append("\\hline") for d in dets: - cmds.extend( getTableLinesCmds( d ) ) + cmds.extend(getTableLinesCmds(d)) - cmds.append( '\\end{tabular}' ) + cmds.append("\\end{tabular}") return cmds -#----------------------------------------------- + +# ----------------------------------------------- def getTableLinesCmds(det): - cmds=[] - params = copy.deepcopy( envDict[ det ] ) + cmds = [] + params = copy.deepcopy(envDict[det]) - ri = det+'_inner_radius' - ro = det+'_outer_radius' - hl = det+'_half_length' - zs = det+'_min_z' - ze = det+'_max_z' + ri = det + "_inner_radius" + ro = det + "_outer_radius" + hl = det + "_half_length" + zs = det + "_min_z" + ze = det + "_max_z" - line = det + ' & ' + line = det + " & " - if( ri in params): - line += ( ("%.1f"%values[ ri ] ) + ' & ' ) - params.remove( ri ) + if ri in params: + line += ("%.1f" % values[ri]) + " & " + params.remove(ri) else: - line += ' - & ' + line += " - & " - if( ro in params): - line += ( ("%.1f"% values[ ro ] ) + ' & ' ) - params.remove( ro ) + if ro in params: + line += ("%.1f" % values[ro]) + " & " + params.remove(ro) else: - line += ' - & ' + line += " - & " - if( hl in params): - line += ( ("%.1f"% values[ hl ] ) + ' & ' ) - params.remove( hl ) + if hl in params: + line += ("%.1f" % values[hl]) + " & " + params.remove(hl) else: - line += ( ("%.1f"% values[ zs ] ) + ', ' + ("%.1f"% values[ ze ] ) + ' & ' ) - params.remove( zs ) - params.remove( ze ) - - #--- first extra parameter - if any - if len( params)>0: + line += ("%.1f" % values[zs]) + ", " + ("%.1f" % values[ze]) + " & " + params.remove(zs) + params.remove(ze) + + # --- first extra parameter - if any + if len(params) > 0: p = params[0] - line += '\\small{\\verb#'+ p + '#} & ' + ("%.1f"% values[ p ] ) - params.remove( p ) + line += "\\small{\\verb#" + p + "#} & " + ("%.1f" % values[p]) + params.remove(p) else: - line += ' & ' + line += " & " - line += ' \\\\ ' - cmds.append( line ) + line += " \\\\ " + cmds.append(line) - #--- other extra parameters - if any - need extra line + # --- other extra parameters - if any - need extra line - while( len( params)>0 ): - line = ' & & & & ' + while len(params) > 0: + line = " & & & & " p = params[0] - line += '\\small{\\verb#'+ p + '#} & ' + ("%.1f"% values[ p ] ) - params.remove( p ) - line += ' \\\\ ' - cmds.append( line ) - - cmds.append( '\\hline' ) + line += "\\small{\\verb#" + p + "#} & " + ("%.1f" % values[p]) + params.remove(p) + line += " \\\\ " + cmds.append(line) + + cmds.append("\\hline") return cmds -#----------------------------------------------- + + +# ----------------------------------------------- def getILDRZQuadrantCmds(det, width): - cmds = [] - cmds.extend( getColorCmds() ) + cmds.extend(getColorCmds()) + + cmds.append("\\begin{tikzpicture}") - cmds.append( '\\begin{tikzpicture}' ) - scale = 0.01 - #--------------------------------------------------- - - - cmds.append( lineOStr('[fill=VXDcol]', getEnvPoints('VXD',scale) ) ) - cmds.append( lineOStr('[fill=SITcol]', getEnvPoints('SIT',scale) ) ) - cmds.append( lineOStr('[fill=FTDcol]', getEnvPoints('FTD',scale) ) ) - cmds.append( lineOStr('[fill=TPCcol]', getEnvPoints('TPC',scale) ) ) - cmds.append( lineOStr('[fill=ECALcol]', getEnvPoints('Ecal',scale) ) ) - cmds.append( lineOStr('[fill=ECALcol]', getEnvPoints('EcalEndcap',scale) ) ) - cmds.append( lineOStr('[fill=ECALcol]', getEnvPoints('EcalEndcapRing',scale) ) ) - cmds.append( lineOStr('[fill=HCALcol]', getEnvPoints('Hcal',scale) ) ) - cmds.append( lineOStr('[fill=HCALcol]', getEnvPoints('HcalEndcap',scale) ) ) - cmds.append( lineOStr('[fill=HCALcol]', getEnvPoints('HcalEndcapRing',scale) ) ) - cmds.append( lineOStr('[fill=YOKEcol]', getEnvPoints('Yoke',scale) ) ) - cmds.append( lineOStr('[fill=YOKEcol]', getEnvPoints('YokeEndcap',scale) ) ) - cmds.append( lineOStr('[fill=YOKEcol]', getEnvPoints('YokeEndcapPlug',scale) ) ) - cmds.append( lineOStr('[fill=COILcol]', getEnvPoints('Coil',scale) ) ) - cmds.append( lineOStr('[fill=SITcol]', getEnvPoints('BeamCal',scale) ) ) - cmds.append( lineOStr('[fill=SITcol]', getEnvPoints('LumiCal',scale) ) ) - cmds.append( lineOStr('[fill=SITcol]', getEnvPoints('LHCal',scale) ) ) - - - cmds.append( '\\end{tikzpicture}' ) + # --------------------------------------------------- + + cmds.append(lineOStr("[fill=VXDcol]", getEnvPoints("VXD", scale))) + cmds.append(lineOStr("[fill=SITcol]", getEnvPoints("SIT", scale))) + cmds.append(lineOStr("[fill=FTDcol]", getEnvPoints("FTD", scale))) + cmds.append(lineOStr("[fill=TPCcol]", getEnvPoints("TPC", scale))) + cmds.append(lineOStr("[fill=ECALcol]", getEnvPoints("Ecal", scale))) + cmds.append(lineOStr("[fill=ECALcol]", getEnvPoints("EcalEndcap", scale))) + cmds.append(lineOStr("[fill=ECALcol]", getEnvPoints("EcalEndcapRing", scale))) + cmds.append(lineOStr("[fill=HCALcol]", getEnvPoints("Hcal", scale))) + cmds.append(lineOStr("[fill=HCALcol]", getEnvPoints("HcalEndcap", scale))) + cmds.append(lineOStr("[fill=HCALcol]", getEnvPoints("HcalEndcapRing", scale))) + cmds.append(lineOStr("[fill=YOKEcol]", getEnvPoints("Yoke", scale))) + cmds.append(lineOStr("[fill=YOKEcol]", getEnvPoints("YokeEndcap", scale))) + cmds.append(lineOStr("[fill=YOKEcol]", getEnvPoints("YokeEndcapPlug", scale))) + cmds.append(lineOStr("[fill=COILcol]", getEnvPoints("Coil", scale))) + cmds.append(lineOStr("[fill=SITcol]", getEnvPoints("BeamCal", scale))) + cmds.append(lineOStr("[fill=SITcol]", getEnvPoints("LumiCal", scale))) + cmds.append(lineOStr("[fill=SITcol]", getEnvPoints("LHCal", scale))) + + cmds.append("\\end{tikzpicture}") return cmds -#----------------------------------------------- -def getEnvPoints(det,scale): + +# ----------------------------------------------- +def getEnvPoints(det, scale): points = [] env = envRZDict[det] for ep in env: - p = (scale * values[ ep[0] ], scale * values[ ep[1] ] ) - print det, ' point: ' , p - points.append( p ) + p = (scale * values[ep[0]], scale * values[ep[1]]) + print(det, " point: ", p) + points.append(p) return points -#----------------------------------------------- -def writeTexFile( det, fileExt, method, width ): - fn = './figs/' + det + fileExt + '.tex' +# ----------------------------------------------- +def writeTexFile(det, fileExt, method, width): + fn = "./figs/" + det + fileExt + ".tex" - of = open( fn , 'w' ) + of = open(fn, "w") cmds = [] - cmds.extend( getDocHeaderCmds( 'standalone', ['tikz','graphicx'] ) ) + cmds.extend(getDocHeaderCmds("standalone", ["tikz", "graphicx"])) - cmds.extend( method( det , width ) ) + cmds.extend(method(det, width)) - cmds.extend( getDocFooterCmds() ) + cmds.extend(getDocFooterCmds()) for cmd in cmds: - print >>of, cmd + print(cmd, file=of) of.close() -#----------------------------------------------- -def lineStr( tl, opt="" ): - +# ----------------------------------------------- +def lineStr(tl, opt=""): o = cStringIO.StringIO() - - print >>o, '\draw ', opt, - - i=0 + + print("\draw ", opt, file=o) + + i = 0 for t in tl: - if( i>0 ): - print >>o, ' -- ', - print >>o, '(', t[0] ,',', t[1],') ', + if i > 0: + print(" -- ", file=of) + print("(", t[0], ",", t[1], ") ", file=o) i += 1 - print >>o,';' + print(";", file=o) str = o.getvalue() o.close() return str -#----------------------------------------------- -def lineOStr( opt, tl ): - return lineStr( tl, opt ) -#----------------------------------------------- +# ----------------------------------------------- + -def getDocHeaderCmds( docClass , packages): +def lineOStr(opt, tl): + return lineStr(tl, opt) + + +# ----------------------------------------------- + + +def getDocHeaderCmds(docClass, packages): cmds = [] - - cmds.append( '\\documentclass[a4]{'+ docClass+'}' ) - if( docClass == 'standalone'): - cmds.append( '\\standaloneconfig{border=20pt}' ) + + cmds.append("\\documentclass[a4]{" + docClass + "}") + if docClass == "standalone": + cmds.append("\\standaloneconfig{border=20pt}") for p in packages: - cmds.append( '\\usepackage{'+p+'}' ) + cmds.append("\\usepackage{" + p + "}") - cmds.append( '\\usepackage[a4paper,top=3cm, bottom=2.5cm, left=1cm, right=2cm ]{geometry}' ) + cmds.append( + "\\usepackage[a4paper,top=3cm, bottom=2.5cm, left=1cm, right=2cm ]{geometry}" + ) - cmds.append( '\\begin{document}' ) + cmds.append("\\begin{document}") return cmds -#----------------------------------------------- + + +# ----------------------------------------------- def getColorCmds(): cmds = [] - cmds.append( '\\definecolor{VXDcol}{RGB}{255,255,255}') - cmds.append( '\\definecolor{SITcol}{RGB}{221,221,221}') - cmds.append( '\\definecolor{SETcol}{RGB}{221,221,221}') - cmds.append( '\\definecolor{TPCcol}{RGB}{245,243,0}') - cmds.append( '\\definecolor{ECALcol}{RGB}{123,243,0}') - cmds.append( '\\definecolor{HCALcol}{RGB}{196,194,49}') - cmds.append( '\\definecolor{YOKEcol}{RGB}{24,194,196}') - cmds.append( '\\definecolor{COILcol}{RGB}{73,73,221}') - cmds.append( '\\definecolor{FTDcol}{RGB}{101,28,147}') - cmds.append( '\\definecolor{FCALcol}{RGB}{171,170,171}') + cmds.append("\\definecolor{VXDcol}{RGB}{255,255,255}") + cmds.append("\\definecolor{SITcol}{RGB}{221,221,221}") + cmds.append("\\definecolor{SETcol}{RGB}{221,221,221}") + cmds.append("\\definecolor{TPCcol}{RGB}{245,243,0}") + cmds.append("\\definecolor{ECALcol}{RGB}{123,243,0}") + cmds.append("\\definecolor{HCALcol}{RGB}{196,194,49}") + cmds.append("\\definecolor{YOKEcol}{RGB}{24,194,196}") + cmds.append("\\definecolor{COILcol}{RGB}{73,73,221}") + cmds.append("\\definecolor{FTDcol}{RGB}{101,28,147}") + cmds.append("\\definecolor{FCALcol}{RGB}{171,170,171}") return cmds + def getDocFooterCmds(): cmds = [] - cmds.append( '\\end{document}' ) + cmds.append("\\end{document}") return cmds -#----------------------------------------------- -def fixstr( aStr ): + + +# ----------------------------------------------- +def fixstr(aStr): l = len(aStr) - s = '' - for i in range(0,l+2): - s = s + ' ' + s = "" + for i in range(0, l + 2): + s = s + " " s = s + aStr return s -#----------------------------------------------- -def getRZEnvCmds( det, width ): +# ----------------------------------------------- + +def getRZEnvCmds(det, width): cmds = [] - envPoints = envRZDict[ det ] + envPoints = envRZDict[det] vals = values - - cmds.append( '\\begin{tikzpicture}' ) + cmds.append("\\begin{tikzpicture}") xmaxOrg = -1e99 # ---- compute the scale such that ymax == width for ep in envPoints: - if( vals[ ep[0] ] > xmaxOrg): - xmaxOrg = vals[ ep[0] ] + if vals[ep[0]] > xmaxOrg: + xmaxOrg = vals[ep[0]] scale = width / xmaxOrg - #--------------------------------------------------- + # --------------------------------------------------- points = [] - xvals = [] - yvals = [] - xmax,ymax= -1.e99, -1e99 + xvals = [] + yvals = [] + xmax, ymax = -1.0e99, -1e99 for ep in envPoints: + p = (scale * vals[ep[0]], scale * vals[ep[1]]) + points.append(p) - p = (scale * vals[ ep[0] ], scale * vals[ ep[1] ] ) - points.append( p ) - - x,y = p - if( x> xmax ): + x, y = p + if x > xmax: xmax = x - if( y> ymax ): + if y > ymax: ymax = y if ep[0] not in xvals: - xvals.append( ep[0] ) - p0 = ( scale * vals[ ep[0] ], 0 ) - cmds.append( lineOStr('[dashed]', [ p , p0 ] ) ) - cmds.append( '\\node [rotate=-90] at (' + str( p0[0] ) +','+ str( p0[1] ) - + ') {{\\verb#' + fixstr( ep[0] ) + '#}};' ) + xvals.append(ep[0]) + p0 = (scale * vals[ep[0]], 0) + cmds.append(lineOStr("[dashed]", [p, p0])) + cmds.append( + "\\node [rotate=-90] at (" + + str(p0[0]) + + "," + + str(p0[1]) + + ") {{\\verb#" + + fixstr(ep[0]) + + "#}};" + ) if ep[1] not in yvals: - yvals.append( ep[1] ) - p1 = ( 0, scale * vals[ ep[1] ] ) - cmds.append( lineOStr('[dashed]', [ p , p1 ] ) ) - cmds.append( '\\node [left] at (' + str(p1[0]) +','+str( p1[1] ) + ') {{\\verb#' - + str( ep[1] ) + '#}};' ) - - cmds.append( lineOStr('[ultra thick]', points ) ) - - cmds.append( lineOStr('[<->,thick]' , ( (0 , 1.25 * ymax ), (0,0), (1.25 * xmax ,0) ) ) ) + yvals.append(ep[1]) + p1 = (0, scale * vals[ep[1]]) + cmds.append(lineOStr("[dashed]", [p, p1])) + cmds.append( + "\\node [left] at (" + + str(p1[0]) + + "," + + str(p1[1]) + + ") {{\\verb#" + + str(ep[1]) + + "#}};" + ) + cmds.append(lineOStr("[ultra thick]", points)) - cmds.append( '\\end{tikzpicture}' ) + cmds.append(lineOStr("[<->,thick]", ((0, 1.25 * ymax), (0, 0), (1.25 * xmax, 0)))) + cmds.append("\\end{tikzpicture}") return cmds -#----------------------------------------------- +# ----------------------------------------------- -#----------------------------------------------- +# ----------------------------------------------- if __name__ == "__main__": - run() -#----------------------------------------------- + run() +# ----------------------------------------------- diff --git a/ILD/doc/latex/extractParameters.py b/ILD/doc/latex/extractParameters.py index 2011dca8c..bb9d29d70 100644 --- a/ILD/doc/latex/extractParameters.py +++ b/ILD/doc/latex/extractParameters.py @@ -10,102 +10,97 @@ @version 1.0 """ -#----------------------------------------------- +# ----------------------------------------------- -#------------------------------------------------ +# ------------------------------------------------ # read the compact xml file from the command line # try: - compactFile = sys.argv[1] - paramFile = sys.argv[2] - dictFile = sys.argv[3] + compactFile = sys.argv[1] + paramFile = sys.argv[2] + dictFile = sys.argv[3] except IndexError: - print " usage: python extractParameters.py compact.xml param_names.txt pyDict.py" - print - sys.exit(1) + print(" usage: python extractParameters.py compact.xml param_names.txt pyDict.py") + print() + sys.exit(1) -#----------------------------------------------- +# ----------------------------------------------- import os, time, DDG4 from DDG4 import OutputLevel as Output from SystemOfUnits import * -#----------------------------------------------- +# ----------------------------------------------- + def run(): + kernel = DDG4.Kernel() - kernel = DDG4.Kernel() + try: + install_dir = os.environ["DD4hepINSTALL"] - try: - install_dir = os.environ['DD4hepINSTALL'] + except KeyError: + print(" please set the environment variable DD4hepINSTALL ") + print(" to your DD4hep installation path ! ") + exit(1) - except (KeyError): - print " please set the environment variable DD4hepINSTALL " - print " to your DD4hep installation path ! " - exit(1) + kernel.loadGeometry("file:" + compactFile) + lcdd = kernel.detectorDescription() + DDG4.importConstants(lcdd) - kernel.loadGeometry("file:"+ compactFile ) - lcdd = kernel.detectorDescription() - DDG4.importConstants( lcdd ) + # -------- - #-------- + inf = open(paramFile, "r") + outf = open(dictFile, "w") - inf = open( paramFile , 'r' ) - outf = open( dictFile , 'w' ) + names = readNames(inf) - names = readNames( inf ) - - writeDictionary( names, outf ) - - inf.close() - outf.close() + writeDictionary(names, outf) + inf.close() + outf.close() -#----------------------------------------------- -def readNames( inf ): - - """ - read ascii file with parameter names - """ - names = [] - - for line in inf: - cols = line.split() - for n in cols: - names.append( n ) - - return names -#----------------------------------------------- +# ----------------------------------------------- -def writeDictionary( names, of ): - - of.write( '""" \n' ) - of.write( ' python dictionary with parameters extracted from: ' + compactFile + '\n' ) - of.write( '""" '+ '\n') - of.write( 'values={}'+ '\n') - - for n in names: - of.write( 'values["'+n+'"] = ' + str( getattr( DDG4, n ) ) + '\n') - -#----------------------------------------------- +def readNames(inf): + """ + read ascii file with parameter names + """ + names = [] + for line in inf: + cols = line.split() + for n in cols: + names.append(n) -def printEnvelopeParameters( det ): - - print " ========== ", det , " ================== " - for p in dict[ det ]: - print " ", p , getattr( DDG4, p ) + return names -#----------------------------------------------- +# ----------------------------------------------- -if __name__ == "__main__": - run() +def writeDictionary(names, of): + of.write('""" \n') + of.write(" python dictionary with parameters extracted from: " + compactFile + "\n") + of.write('""" ' + "\n") + of.write("values={}" + "\n") + + for n in names: + of.write('values["' + n + '"] = ' + str(getattr(DDG4, n)) + "\n") + +# ----------------------------------------------- - +def printEnvelopeParameters(det): + print(" ========== ", det, " ================== ") + for p in dict[det]: + print(" ", p, getattr(DDG4, p)) + +# ----------------------------------------------- + +if __name__ == "__main__": + run() diff --git a/ILD/scripts/dumpModelParameters.py b/ILD/scripts/dumpModelParameters.py index a3ed3f64c..e7bc6d8c3 100644 --- a/ILD/scripts/dumpModelParameters.py +++ b/ILD/scripts/dumpModelParameters.py @@ -3,86 +3,90 @@ import sys import time -#--- Mokka DB parameters --------------- -host="pollin1.in2p3.fr" # your host, usually localhost -user="consult" # your username -passwd="consult" # your password -dbName="models03" # name of the data base -#--------------------------------------- - -if len( sys.argv ) != 2: - print " usage: python dumpModelParameters.py MODEL_NAME " +# --- Mokka DB parameters --------------- +host = "pollin1.in2p3.fr" # your host, usually localhost +user = "consult" # your username +passwd = "consult" # your password +dbName = "models03" # name of the data base +# --------------------------------------- + +if len(sys.argv) != 2: + print(" usage: python dumpModelParameters.py MODEL_NAME ") sys.exit(0) -model = sys.argv[1] +model = sys.argv[1] -#model="ILD_o1_v05" +# model="ILD_o1_v05" -#----------------------------------------------------------------------- -db = MySQLdb.connect(host, user, passwd, dbName ) -#----------------------------------------------------------------------- +# ----------------------------------------------------------------------- +db = MySQLdb.connect(host, user, passwd, dbName) +# ----------------------------------------------------------------------- -outfile = "model_parameters_"+model+".xml" +outfile = "model_parameters_" + model + ".xml" -file = open( outfile , 'w' ) +file = open(outfile, "w") -#----------------------------------------------------------------------- +# ----------------------------------------------------------------------- # create a Cursor object cur = db.cursor() -#--- param dict: -params = {} +# --- param dict: +params = {} -#----- select all global parameters +# ----- select all global parameters cur.execute("select * from parameters ;") -#--- overwrite values in the dict: -for row in cur.fetchall() : - params[ row[0] ] = row[2] +# --- overwrite values in the dict: +for row in cur.fetchall(): + params[row[0]] = row[2] -# --- now select all sharing parameters for the model -cur.execute("select sub_detector.driver, sharing.parameter, sharing.driver_default_value from ingredients,sub_detector,sharing where (ingredients.model=\""+model+"\" and ingredients.sub_detector=sub_detector.name and sharing.driver=sub_detector.driver) ;") -#cur.execute("select sub_detector.driver, sharing.parameter, sharing.driver_default_value from ingredients,sub_detector,sharing where (ingredients.model=\""+model+"\" and ingredients.sub_detector=sub_detector.name and sharing.driver=sub_detector.driver and sharing.driver_default_value IS NOT NULL) ;") - +# --- now select all sharing parameters for the model +cur.execute( + 'select sub_detector.driver, sharing.parameter, sharing.driver_default_value from ingredients,sub_detector,sharing where (ingredients.model="' + + model + + '" and ingredients.sub_detector=sub_detector.name and sharing.driver=sub_detector.driver) ;' +) +# cur.execute("select sub_detector.driver, sharing.parameter, sharing.driver_default_value from ingredients,sub_detector,sharing where (ingredients.model=\""+model+"\" and ingredients.sub_detector=sub_detector.name and sharing.driver=sub_detector.driver and sharing.driver_default_value IS NOT NULL) ;") # --- safe params in dict -for row in cur.fetchall() : - #print row[1], " " , row[2] - params[ row[1] ] = row[2] - +for row in cur.fetchall(): + # print row[1], " " , row[2] + params[row[1]] = row[2] -#----- now select all model specific parameters -cur.execute("select * from model_parameters where model=\""+model+"\" ;") +# ----- now select all model specific parameters +cur.execute('select * from model_parameters where model="' + model + '" ;') -#--- overwrite values in the dict: -for row in cur.fetchall() : - #print row[1], " " , row[2] - params[ row[1] ] = row[2] +# --- overwrite values in the dict: +for row in cur.fetchall(): + # print row[1], " " , row[2] + params[row[1]] = row[2] -#dump params to xml file -print >>file, "" +print("", file=file) -for k in sorted( params ): - v = params[ k ] - if v: - print >>file, "" - else: - cur.execute("select name, default_value from parameters where name=\"" + k + "\";") - for row in cur.fetchall() : - v = row[1] - print >>file, "" +for k in sorted(params): + v = params[k] + if v: + print('', file=file) + else: + cur.execute( + 'select name, default_value from parameters where name="' + k + '";' + ) + for row in cur.fetchall(): + v = row[1] + print('', file=file)