From b0c3da04e2b7495203929e046c5134c29d23812a Mon Sep 17 00:00:00 2001 From: Daniel Jeans <daniel.jeans@kek.jp> Date: Thu, 8 Mar 2018 15:51:56 +0900 Subject: [PATCH] add electric and magnetic fields to graphicalMaterialScan utility --- UtilityApps/src/graphicalMaterialScan.cpp | 48 +++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/UtilityApps/src/graphicalMaterialScan.cpp b/UtilityApps/src/graphicalMaterialScan.cpp index 5efa32bdf..a5c3a2072 100644 --- a/UtilityApps/src/graphicalMaterialScan.cpp +++ b/UtilityApps/src/graphicalMaterialScan.cpp @@ -177,6 +177,36 @@ int main_wrapper(int argc, char** argv) { h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); scanmap["lambda"] = h2slice; + hn = "slice"; hn+=isl; hn+="_Bx"; + hnn = "Bx[T] "; hnn += XYZ; hnn+="="; hnn += Form("%7.3f",sz); hnn+=" [cm]"; + h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); + scanmap["Bx"] = h2slice; + + hn = "slice"; hn+=isl; hn+="_By"; + hnn = "By[T] "; hnn += XYZ; hnn+="="; hnn += Form("%7.3f",sz); hnn+=" [cm]"; + h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); + scanmap["By"] = h2slice; + + hn = "slice"; hn+=isl; hn+="_Bz"; + hnn = "Bz[T] "; hnn += XYZ; hnn+="="; hnn += Form("%7.3f",sz); hnn+=" [cm]"; + h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); + scanmap["Bz"] = h2slice; + + hn = "slice"; hn+=isl; hn+="_Ex"; + hnn = "Ex[V/m] "; hnn += XYZ; hnn+="="; hnn += Form("%7.3f",sz); hnn+=" [cm]"; + h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); + scanmap["Ex"] = h2slice; + + hn = "slice"; hn+=isl; hn+="_Ey"; + hnn = "Ey[V/m] "; hnn += XYZ; hnn+="="; hnn += Form("%7.3f",sz); hnn+=" [cm]"; + h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); + scanmap["Ey"] = h2slice; + + hn = "slice"; hn+=isl; hn+="_Ez"; + hnn = "Ez[V/m] "; hnn += XYZ; hnn+="="; hnn += Form("%7.3f",sz); hnn+=" [cm]"; + h2slice = new TH2F( hn, hnn, nbins, mmin[index[1]], mmax[index[1]], nbins, mmin[index[2]], mmax[index[2]] ); + scanmap["Ez"] = h2slice; + for (int ix=1; ix<=h2slice->GetNbinsX(); ix++) { // loop over one axis of slice @@ -188,6 +218,24 @@ int main_wrapper(int argc, char** argv) { double ymin = h2slice->GetYaxis()->GetBinLowEdge(iy); double ymax = h2slice->GetYaxis()->GetBinUpEdge(iy); + // first get b field components in centre of bin + double posV[3]; + posV[index[0]] = sz; + posV[index[1]] = 0.5*(xmin+xmax); + posV[index[2]] = 0.5*(ymin+ymax); + + double fieldV[3] ; + description.field().combinedMagnetic( posV , fieldV ) ; + scanmap["Bx"]->SetBinContent(ix, iy, fieldV[0] / dd4hep::tesla ); + scanmap["By"]->SetBinContent(ix, iy, fieldV[1] / dd4hep::tesla ); + scanmap["Bz"]->SetBinContent(ix, iy, fieldV[2] / dd4hep::tesla ); + + description.field().combinedElectric( posV , fieldV ) ; + scanmap["Ex"]->SetBinContent(ix, iy, fieldV[0] / ( dd4hep::volt/dd4hep::meter ) ); + scanmap["Ey"]->SetBinContent(ix, iy, fieldV[1] / ( dd4hep::volt/dd4hep::meter ) ); + scanmap["Ez"]->SetBinContent(ix, iy, fieldV[2] / ( dd4hep::volt/dd4hep::meter ) ); + + // for this bin, estimate the material double sum_lambda(0); double sum_x0(0); -- GitLab