From ddee4c534c54b325ec5285ef54fdb69630d04223 Mon Sep 17 00:00:00 2001 From: tmadlener Date: Wed, 25 Sep 2024 13:40:25 +0200 Subject: [PATCH] Format files with black --- utils/material_plots_2D.py | 127 ++++++++++++++++++++++++++++--------- utils/material_scan_2D.py | 17 +++-- 2 files changed, 106 insertions(+), 38 deletions(-) diff --git a/utils/material_plots_2D.py b/utils/material_plots_2D.py index 65babb228..14a2442df 100644 --- a/utils/material_plots_2D.py +++ b/utils/material_plots_2D.py @@ -2,21 +2,57 @@ import argparse import math -import sys,os +import sys, os + sys.path.append(os.path.expandvars("$FCCSW") + "/Examples/scripts") from plotstyle import FCCStyle import ROOT def main(): - parser = argparse.ArgumentParser(description='Material Plotter') - parser.add_argument('--fname', "-f", dest='fname', type=str, help="name of file to read") - parser.add_argument('--angleMin', dest='angleMin', default=6, type=float, help="minimum eta/theta/cosTheta") - parser.add_argument('--angleMax', dest='angleMax', default=6, type=float, help="maximum eta/theta/cosTheta") - parser.add_argument('--angleDef', dest='angleDef', default="eta", type=str, help="angle definition to use: eta, theta or cosTheta, default: eta") - parser.add_argument('--angleBinning', "-b", dest='angleBinning', default=0.05, type=float, help="eta/theta/cosTheta bin width") - parser.add_argument('--nPhiBins', dest='nPhiBins', default=100, type=int, help="number of bins in phi") - parser.add_argument('--x0max', "-x", dest='x0max', default=0.0, type=float, help="Max of x0") + parser = argparse.ArgumentParser(description="Material Plotter") + parser.add_argument( + "--fname", "-f", dest="fname", type=str, help="name of file to read" + ) + parser.add_argument( + "--angleMin", + dest="angleMin", + default=6, + type=float, + help="minimum eta/theta/cosTheta", + ) + parser.add_argument( + "--angleMax", + dest="angleMax", + default=6, + type=float, + help="maximum eta/theta/cosTheta", + ) + parser.add_argument( + "--angleDef", + dest="angleDef", + default="eta", + type=str, + help="angle definition to use: eta, theta or cosTheta, default: eta", + ) + parser.add_argument( + "--angleBinning", + "-b", + dest="angleBinning", + default=0.05, + type=float, + help="eta/theta/cosTheta bin width", + ) + parser.add_argument( + "--nPhiBins", + dest="nPhiBins", + default=100, + type=int, + help="number of bins in phi", + ) + parser.add_argument( + "--x0max", "-x", dest="x0max", default=0.0, type=float, help="Max of x0" + ) args = parser.parse_args() ROOT.gStyle.SetNumberContours(100) @@ -27,46 +63,78 @@ def main(): ROOT.gROOT.SetBatch(1) - h_x0 = ROOT.TH2F("h_x0","h_x0", int((args.angleMax-args.angleMin)/args.angleBinning),args.angleMin,args.angleMax,args.nPhiBins,-math.pi,math.pi) - h_lambda = ROOT.TH2F("h_lambda","h_lambda", int((args.angleMax-args.angleMin)/args.angleBinning),args.angleMin,args.angleMax,args.nPhiBins,-math.pi,math.pi) - h_depth = ROOT.TH2F("h_depth","h_depth", int((args.angleMax-args.angleMin)/args.angleBinning),args.angleMin,args.angleMax,args.nPhiBins,-math.pi,math.pi) + h_x0 = ROOT.TH2F( + "h_x0", + "h_x0", + int((args.angleMax - args.angleMin) / args.angleBinning), + args.angleMin, + args.angleMax, + args.nPhiBins, + -math.pi, + math.pi, + ) + h_lambda = ROOT.TH2F( + "h_lambda", + "h_lambda", + int((args.angleMax - args.angleMin) / args.angleBinning), + args.angleMin, + args.angleMax, + args.nPhiBins, + -math.pi, + math.pi, + ) + h_depth = ROOT.TH2F( + "h_depth", + "h_depth", + int((args.angleMax - args.angleMin) / args.angleBinning), + args.angleMin, + args.angleMax, + args.nPhiBins, + -math.pi, + math.pi, + ) for angleBinning, entry in enumerate(tree): nMat = entry.nMaterials entry_x0, entry_lambda, entry_depth = 0.0, 0.0, 0.0 for i in range(nMat): - if entry.material.at(i) == "Air": continue + if entry.material.at(i) == "Air": + continue - entry_x0 += entry.nX0.at(i)*100.0 - entry_lambda += entry.nLambda.at(i) - entry_depth += entry.matDepth.at(i) + entry_x0 += entry.nX0.at(i) * 100.0 + entry_lambda += entry.nLambda.at(i) + entry_depth += entry.matDepth.at(i) - h_x0.Fill(tree.angle,tree.phi,entry_x0) - h_lambda.Fill(tree.angle,tree.phi,entry_lambda) - h_depth.Fill(tree.angle,tree.phi,entry_depth) + h_x0.Fill(tree.angle, tree.phi, entry_x0) + h_lambda.Fill(tree.angle, tree.phi, entry_lambda) + h_depth.Fill(tree.angle, tree.phi, entry_depth) - # go through the + # go through the plots = ["x0", "lambda", "depth"] histograms = [h_x0, h_lambda, h_depth] - axis_titles = ["Material budget x/X_{0} [%]", "Number of #lambda", "Material depth [cm]"] + axis_titles = [ + "Material budget x/X_{0} [%]", + "Number of #lambda", + "Material depth [cm]", + ] for i in range(len(plots)): - cv = ROOT.TCanvas("","",800,600) + cv = ROOT.TCanvas("", "", 800, 600) cv.SetRightMargin(0.18) histograms[i].Draw("COLZ") - if args.angleDef=="eta": - title="#eta" - elif args.angleDef=="theta": - title="#theta [#circ]" - elif args.angleDef=="cosTheta": - title="cos(#theta)" + if args.angleDef == "eta": + title = "#eta" + elif args.angleDef == "theta": + title = "#theta [#circ]" + elif args.angleDef == "cosTheta": + title = "cos(#theta)" histograms[i].GetXaxis().SetTitle(title) histograms[i].GetYaxis().SetTitle("#phi") histograms[i].GetZaxis().SetTitle(axis_titles[i]) - if args.x0max != 0.0 and plots[i]=="x0": + if args.x0max != 0.0 and plots[i] == "x0": histograms[i].SetMaximum(args.x0max) histograms[i].GetXaxis().SetRangeUser(args.angleMin, args.angleMax) @@ -76,6 +144,7 @@ def main(): cv.Print(plots[i] + ".png") cv.SaveAs(plots[i] + ".root") + if __name__ == "__main__": FCCStyle.initialize() main() diff --git a/utils/material_scan_2D.py b/utils/material_scan_2D.py index 041a786ee..ab6ee21eb 100644 --- a/utils/material_scan_2D.py +++ b/utils/material_scan_2D.py @@ -2,22 +2,23 @@ from Gaudi.Configuration import * from Configurables import ApplicationMgr -ApplicationMgr().EvtSel = 'None' + +ApplicationMgr().EvtSel = "None" ApplicationMgr().EvtMax = 1 ApplicationMgr().OutputLevel = INFO # DD4hep geometry service from Configurables import GeoSvc + ## parse the given xml file geoservice = GeoSvc("GeoSvc") -geoservice.detectors = [ - 'IDEA_o1_v02.xml' - ] -geoservice.OutputLevel = INFO +geoservice.detectors = ["IDEA_o1_v02.xml"] +geoservice.OutputLevel = INFO ApplicationMgr().ExtSvc += [geoservice] # Using material scan from k4SimGeant4: https://github.com/HEP-FCC/k4SimGeant4/tree/main/Detector/DetComponents/src from Configurables import MaterialScan_2D_genericAngle + # Material scan is done from the interaction point to the end of world volume. # In order to use other end boundary, please provide the name of a thin, e.g. cylindrical volume. # For instance adding envelopeName="BoundaryPostCalorimetry" will perform the scan only till the end of calorimetry. @@ -25,12 +26,10 @@ materialservice = MaterialScan_2D_genericAngle("GeoDump") materialservice.filename = "out_material_scan.root" -materialservice.angleDef = 'eta' # eta, theta, cosTheta or thetaRad +materialservice.angleDef = "eta" # eta, theta, cosTheta or thetaRad materialservice.angleBinning = 0.05 materialservice.angleMax = 3.0 materialservice.angleMin = -3.0 -materialservice.nPhi = 100 # number of bins in phi +materialservice.nPhi = 100 # number of bins in phi ApplicationMgr().ExtSvc += [materialservice] - -