diff --git a/benchmarks/dis/analysis/rec_analysis_raw.cxx b/benchmarks/dis/analysis/rec_analysis_raw.cxx index 19c6d9111a4e89da66c7c9abae250cc8ea95cf0a..16347a6cc2159b1afea3e9254b34305f0ed7536c 100644 --- a/benchmarks/dis/analysis/rec_analysis_raw.cxx +++ b/benchmarks/dis/analysis/rec_analysis_raw.cxx @@ -50,60 +50,85 @@ int rec_analysis_raw(const std::string& config_name) ROOT::EnableImplicitMT(kNumThreads); ROOT::RDataFrame d("events", rec_file); - - auto d0 = d.Define("n_EcalEndcapPRawHits", "EcalEndcapPRawHits.size()") - .Define("n_EcalBarrelImagingRawHits", "EcalBarrelImagingRawHits.size()") - .Define("n_EcalBarrelScFiRawHits", "EcalBarrelScFiRawHits.size()") - .Define("n_EcalEndcapNRawHits", "EcalEndcapNRawHits.size()") - .Define("n_HcalEndcapPRawHits", "HcalEndcapPRawHits.size()") - .Define("n_HcalBarrelRawHits", "HcalBarrelRawHits.size()") - .Define("n_HcalEndcapNRawHits", "HcalEndcapNRawHits.size()") -// .Define("n_B0PreshowerRawHits", "B0TrackerRawHits.size()") -// .Define("n_B0TrackerRawHits", "B0TrackerRawHits.size()") - .Define("n_DRICHRawHits", "DRICHRawHits.size()") -// .Define("n_ERICHRawHits", "ERICHRawHits.size()") -// .Define("n_FakeDIRCRawHits", "FakeDIRCRawHits.size()") -// .Define("n_ffi_ZDC_ECALRawHits", "ffi_ZDC_ECALRawHits.size()") -// .Define("n_ffi_ZDC_HCALRawHits", "ffi_ZDC_HCALRawHits.size()") -// .Define("n_ForwardOffMTracker_station_1RawHits", "ForwardOffMTracker_station_1RawHits.size()") -// .Define("n_ForwardOffMTracker_station_2RawHits", "ForwardOffMTracker_station_2RawHits.size()") -// .Define("n_ForwardOffMTracker_station_3RawHits", "ForwardOffMTracker_station_3RawHits.size()") - // .Define("n_ForwardOffMTracker_station_4RawHits", "ForwardOffMTracker_station_4RawHits.size()") - // .Define("n_ForwardRomanPot_Station_1RawHits", "ForwardRomanPot_Status_1RawHits.size()") - // .Define("n_ForwardRomanPot_Station_2RawHits", "ForwardRomanPot_Status_2RawHits.size()") - // .Define("n_GEMEndcapNRawHits", "GEMEndcapNRawHits.size()") - // .Define("n_GEMEndcapPRawHits", "GEMEndcapPRawHits.size()") - // .Define("n_InnerTrackerBarrelRawHits", "InnerTrackerBarrelRawHits.size()") -// .Define("n_InnerTrackerEndcapNRawHits", "InnerTrackerEndcapNRawHits.size()") - // .Define("n_InnerTrackerEndcapPRawHits", "InnerTrackerEndcapPRawHits.size()") - // .Define("n_MedialTrackerBarrelRawHits", "MedialTrackerBarrelRawHits.size()") - // .Define("n_MedialTrackerEndcapNRawHits", "MedialTrackerEndcapNRawHits.size()") -// .Define("n_MedialTrackerEndcapPRawHits", "MedialTrackerEndcapPRawHits.size()") - // .Define("n_OuterTrackerBarrelRawHits", "OuterTrackerBarrelRawHits.size()") - // .Define("n_OuterTrackerEndcapNRawHits", "OuterTrackerEndcapNRawHits.size()") - // .Define("n_OuterTrackerEndcapPRawHits", "OuterTrackerEndcapPRawHits.size()") - .Define("n_VertexBarrelRawHits", "VertexBarrelRawHits.size()") - ; + auto d0 = ROOT::RDF::RNode(d + .Define("n_EcalEndcapPRawHits", "EcalEndcapPRawHits.size()") + .Define("n_EcalEndcapNRawHits", "EcalEndcapNRawHits.size()") + .Define("n_HcalEndcapPRawHits", "HcalEndcapPRawHits.size()") + .Define("n_HcalBarrelRawHits", "HcalBarrelRawHits.size()") + .Define("n_HcalEndcapNRawHits", "HcalEndcapNRawHits.size()") +// .Define("n_B0PreshowerRawHits", "B0TrackerRawHits.size()") +// .Define("n_B0TrackerRawHits", "B0TrackerRawHits.size()") + .Define("n_DRICHRawHits", "DRICHRawHits.size()") +// .Define("n_ERICHRawHits", "ERICHRawHits.size()") +// .Define("n_FakeDIRCRawHits", "FakeDIRCRawHits.size()") +// .Define("n_ffi_ZDC_ECALRawHits", "ffi_ZDC_ECALRawHits.size()") +// .Define("n_ffi_ZDC_HCALRawHits", "ffi_ZDC_HCALRawHits.size()") +// .Define("n_ForwardOffMTracker_station_1RawHits", "ForwardOffMTracker_station_1RawHits.size()") +// .Define("n_ForwardOffMTracker_station_2RawHits", "ForwardOffMTracker_station_2RawHits.size()") +// .Define("n_ForwardOffMTracker_station_3RawHits", "ForwardOffMTracker_station_3RawHits.size()") +// .Define("n_ForwardOffMTracker_station_4RawHits", "ForwardOffMTracker_station_4RawHits.size()") +// .Define("n_ForwardRomanPot_Station_1RawHits", "ForwardRomanPot_Status_1RawHits.size()") +// .Define("n_ForwardRomanPot_Station_2RawHits", "ForwardRomanPot_Status_2RawHits.size()") +// .Define("n_GEMEndcapNRawHits", "GEMEndcapNRawHits.size()") +// .Define("n_GEMEndcapPRawHits", "GEMEndcapPRawHits.size()") +// .Define("n_InnerTrackerBarrelRawHits", "InnerTrackerBarrelRawHits.size()") +// .Define("n_InnerTrackerEndcapNRawHits", "InnerTrackerEndcapNRawHits.size()") +// .Define("n_InnerTrackerEndcapPRawHits", "InnerTrackerEndcapPRawHits.size()") +// .Define("n_MedialTrackerBarrelRawHits", "MedialTrackerBarrelRawHits.size()") +// .Define("n_MedialTrackerEndcapNRawHits", "MedialTrackerEndcapNRawHits.size()") +// .Define("n_MedialTrackerEndcapPRawHits", "MedialTrackerEndcapPRawHits.size()") +// .Define("n_OuterTrackerBarrelRawHits", "OuterTrackerBarrelRawHits.size()") +// .Define("n_OuterTrackerEndcapNRawHits", "OuterTrackerEndcapNRawHits.size()") +// .Define("n_OuterTrackerEndcapPRawHits", "OuterTrackerEndcapPRawHits.size()") + .Define("n_VertexBarrelRawHits", "VertexBarrelRawHits.size()") + ); + + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + d0 = d0.Define("n_EcalBarrelImagingRawHits", "EcalBarrelImagingRawHits.size()") + .Define("n_EcalBarrelScFiRawHits", "EcalBarrelScFiRawHits.size()"); + } else { + d0 = d0.Define("n_EcalBarrelRawHits", "EcalBarrelRawHits.size()"); + } // Ecal hits auto h_n_EcalEndcapPRawHits = d0.Histo1D({"h_n_EcalEndcapPRawHits", "EcalEndcapP; hits; counts", 100, 0, 1000}, "n_EcalEndcapPRawHits"); - auto h_n_EcalBarrelImagingRawHits = d0.Histo1D({"h_n_EcalBarrelImagingRawHits", "EcalBarrelImaging; hits; counts", 100, 0, 1000}, "n_EcalBarrelImagingRawHits"); - auto h_n_EcalBarrelScFiRawHits = d0.Histo1D({"h_n_EcalBarrelScFiRawHits", "EcalBarrelScFi; hits; counts", 100, 0, 10000}, "n_EcalBarrelScFiRawHits"); + ROOT::RDF::RResultPtr<TH1D> h_n_EcalBarrelImagingRawHits, h_n_EcalBarrelScFiRawHits, h_n_EcalBarrelRawHits; + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + h_n_EcalBarrelImagingRawHits = d0.Histo1D({"h_n_EcalBarrelImagingRawHits", "EcalBarrelImaging; hits; counts", 100, 0, 1000}, "n_EcalBarrelImagingRawHits"); + h_n_EcalBarrelScFiRawHits = d0.Histo1D({"h_n_EcalBarrelScFiRawHits", "EcalBarrelScFi; hits; counts", 100, 0, 10000}, "n_EcalBarrelScFiRawHits"); + } else { + h_n_EcalBarrelRawHits = d0.Histo1D({"h_n_EcalBarrelRawHits", "EcalBarrel; hits; counts", 100, 0, 1000}, "n_EcalBarrelRawHits"); + } auto h_n_EcalEndcapNRawHits = d0.Histo1D({"h_n_EcalEndcapNRawHits", "EcalEndcapN; hits; counts", 100, 0, 1000}, "n_EcalEndcapNRawHits"); // Ecal stats auto stats_n_EcalEndcapPRawHits = d0.Stats("n_EcalEndcapPRawHits"); - auto stats_n_EcalBarrelImagingRawHits = d0.Stats("n_EcalBarrelImagingRawHits"); - auto stats_n_EcalBarrelScFiRawHits = d0.Stats("n_EcalBarrelScFiRawHits"); + ROOT::RDF::RResultPtr<TStatistic> stats_n_EcalBarrelImagingRawHits, stats_n_EcalBarrelScFiRawHits, stats_n_EcalBarrelRawHits; + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + stats_n_EcalBarrelImagingRawHits = d0.Stats("n_EcalBarrelImagingRawHits"); + stats_n_EcalBarrelScFiRawHits = d0.Stats("n_EcalBarrelScFiRawHits"); + } else { + stats_n_EcalBarrelRawHits = d0.Stats("n_EcalBarrelRawHits"); + } auto stats_n_EcalEndcapNRawHits = d0.Stats("n_EcalEndcapNRawHits"); // Ecal adc auto h_adc_EcalEndcapPRawHits = d0.Histo1D({"h_adc_EcalEndcapPRawHits", "EcalEndcapP; amplitude; counts", 1024, 0, 32768}, "EcalEndcapPRawHits.amplitude"); - auto h_adc_EcalBarrelImagingRawHits = d0.Histo1D({"h_adc_EcalBarrelImagingRawHits", "EcalBarrelImaging; amplitude; counts", 1024, 0, 8192}, "EcalBarrelImagingRawHits.amplitude"); - auto h_adc_EcalBarrelScFiRawHits = d0.Histo1D({"h_adc_EcalBarrelScFiRawHits", "EcalBarrelScFi; amplitude; counts", 1024, 0, 32768}, "EcalBarrelScFiRawHits.amplitude"); + ROOT::RDF::RResultPtr<TH1D> h_adc_EcalBarrelImagingRawHits, h_adc_EcalBarrelScFiRawHits, h_adc_EcalBarrelRawHits; + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + h_adc_EcalBarrelImagingRawHits = d0.Histo1D({"h_adc_EcalBarrelImagingRawHits", "EcalBarrelImaging; amplitude; counts", 1024, 0, 8192}, "EcalBarrelImagingRawHits.amplitude"); + h_adc_EcalBarrelScFiRawHits = d0.Histo1D({"h_adc_EcalBarrelScFiRawHits", "EcalBarrelScFi; amplitude; counts", 1024, 0, 32768}, "EcalBarrelScFiRawHits.amplitude"); + } else { + h_adc_EcalBarrelRawHits = d0.Histo1D({"h_adc_EcalBarrelRawHits", "EcalBarrel; amplitude; counts", 1024, 0, 32768}, "EcalBarrelRawHits.amplitude"); + } auto h_adc_EcalEndcapNRawHits = d0.Histo1D({"h_adc_EcalEndcapNRawHits", "EcalEndcapN; amplitude; counts", 1024, 0, 32768}, "EcalEndcapNRawHits.amplitude"); // Ecal tdc auto h_tdc_EcalEndcapPRawHits = d0.Histo1D({"h_tdc_EcalEndcapPRawHits", "EcalEndcapP; TDC channel; counts", 1024, 0, 32768}, "EcalEndcapPRawHits.timeStamp"); - auto h_tdc_EcalBarrelImagingRawHits = d0.Histo1D({"h_tdc_EcalBarrelImagingRawHits", "EcalBarrelImaging; TDC channel; counts", 1024, 0, 32768}, "EcalBarrelImagingRawHits.timeStamp"); - auto h_tdc_EcalBarrelScFiRawHits = d0.Histo1D({"h_tdc_EcalBarrelScFiRawHits", "EcalBarrelScFi; TDC channel; counts", 1024, 0, 32768}, "EcalBarrelScFiRawHits.timeStamp"); + ROOT::RDF::RResultPtr<TH1D> h_tdc_EcalBarrelImagingRawHits, h_tdc_EcalBarrelScFiRawHits, h_tdc_EcalBarrelRawHits; + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + h_tdc_EcalBarrelImagingRawHits = d0.Histo1D({"h_tdc_EcalBarrelImagingRawHits", "EcalBarrelImaging; TDC channel; counts", 1024, 0, 32768}, "EcalBarrelImagingRawHits.timeStamp"); + h_tdc_EcalBarrelScFiRawHits = d0.Histo1D({"h_tdc_EcalBarrelScFiRawHits", "EcalBarrelScFi; TDC channel; counts", 1024, 0, 32768}, "EcalBarrelScFiRawHits.timeStamp"); + } else { + h_tdc_EcalBarrelRawHits = d0.Histo1D({"h_tdc_EcalBarrelRawHits", "EcalBarrel; TDC channel; counts", 1024, 0, 32768}, "EcalBarrelRawHits.timeStamp"); + } auto h_tdc_EcalEndcapNRawHits = d0.Histo1D({"h_tdc_EcalEndcapNRawHits", "EcalEndcapN; TDC channel; counts", 1024, 0, 32768}, "EcalEndcapNRawHits.timeStamp"); // Hcal hits auto h_n_HcalEndcapPRawHits = d0.Histo1D({"h_n_HcalEndcapPRawHits", "HcalEndcapP; hits; counts", 100, 0, 1000}, "n_HcalEndcapPRawHits"); @@ -151,10 +176,15 @@ int rec_analysis_raw(const std::string& config_name) fmt::print("EcalEndcapPRawHits:"); stats_n_EcalEndcapPRawHits->Print(); - fmt::print("EcalBarrelImagingRawHits:"); - stats_n_EcalBarrelImagingRawHits->Print(); - fmt::print("EcalBarrelScFiRawHits:"); - stats_n_EcalBarrelScFiRawHits->Print(); + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + fmt::print("EcalBarrelImagingRawHits:"); + stats_n_EcalBarrelImagingRawHits->Print(); + fmt::print("EcalBarrelScFiRawHits:"); + stats_n_EcalBarrelScFiRawHits->Print(); + } else { + fmt::print("EcalBarrelRawHits:"); + stats_n_EcalBarrelRawHits->Print(); + } fmt::print("EcalEndcapNRawHits:"); stats_n_EcalEndcapNRawHits->Print(); fmt::print("HcalEndcapPRawHits:"); @@ -248,29 +278,44 @@ int rec_analysis_raw(const std::string& config_name) h2.DrawClone("hist"); common_bench::plot::draw_label(ebeam, pbeam, detector); - c.cd(3); - gPad->SetLogy(true); - auto& h3 = *h_n_EcalBarrelImagingRawHits; - // histogram style - h3.SetLineColor(common_bench::plot::kMpBlue); - h3.SetLineWidth(2); - // axes - h3.GetXaxis()->CenterTitle(); - h3.GetYaxis()->CenterTitle(); - // draw everything - h3.DrawClone("hist"); - - c.cd(4); - gPad->SetLogy(true); - auto& h4 = *h_n_EcalBarrelScFiRawHits; - // histogram style - h4.SetLineColor(common_bench::plot::kMpBlue); - h4.SetLineWidth(2); - // axes - h4.GetXaxis()->CenterTitle(); - h4.GetYaxis()->CenterTitle(); - // draw everything - h4.DrawClone("hist"); + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + c.cd(3); + gPad->SetLogy(true); + auto& h3 = *h_n_EcalBarrelImagingRawHits; + // histogram style + h3.SetLineColor(common_bench::plot::kMpBlue); + h3.SetLineWidth(2); + // axes + h3.GetXaxis()->CenterTitle(); + h3.GetYaxis()->CenterTitle(); + // draw everything + h3.DrawClone("hist"); + + c.cd(4); + gPad->SetLogy(true); + auto& h4 = *h_n_EcalBarrelScFiRawHits; + // histogram style + h4.SetLineColor(common_bench::plot::kMpBlue); + h4.SetLineWidth(2); + // axes + h4.GetXaxis()->CenterTitle(); + h4.GetYaxis()->CenterTitle(); + // draw everything + h4.DrawClone("hist"); + + } else { + c.cd(3); + gPad->SetLogy(true); + auto& h3 = *h_n_EcalBarrelRawHits; + // histogram style + h3.SetLineColor(common_bench::plot::kMpBlue); + h3.SetLineWidth(2); + // axes + h3.GetXaxis()->CenterTitle(); + h3.GetYaxis()->CenterTitle(); + // draw everything + h3.DrawClone("hist"); + } c.Print(fmt::format("{}_EcalRawHits_n.png", output_prefix).c_str()); } @@ -305,29 +350,44 @@ int rec_analysis_raw(const std::string& config_name) h2.DrawClone("hist"); common_bench::plot::draw_label(ebeam, pbeam, detector); - c.cd(3); - gPad->SetLogy(true); - auto& h3 = *h_adc_EcalBarrelImagingRawHits; - // histogram style - h3.SetLineColor(common_bench::plot::kMpBlue); - h3.SetLineWidth(2); - // axes - h3.GetXaxis()->CenterTitle(); - h3.GetYaxis()->CenterTitle(); - // draw everything - h3.DrawClone("hist"); - - c.cd(4); - gPad->SetLogy(true); - auto& h4 = *h_adc_EcalBarrelScFiRawHits; - // histogram style - h4.SetLineColor(common_bench::plot::kMpBlue); - h4.SetLineWidth(2); - // axes - h4.GetXaxis()->CenterTitle(); - h4.GetYaxis()->CenterTitle(); - // draw everything - h4.DrawClone("hist"); + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + c.cd(3); + gPad->SetLogy(true); + auto& h3 = *h_adc_EcalBarrelImagingRawHits; + // histogram style + h3.SetLineColor(common_bench::plot::kMpBlue); + h3.SetLineWidth(2); + // axes + h3.GetXaxis()->CenterTitle(); + h3.GetYaxis()->CenterTitle(); + // draw everything + h3.DrawClone("hist"); + + c.cd(4); + gPad->SetLogy(true); + auto& h4 = *h_adc_EcalBarrelScFiRawHits; + // histogram style + h4.SetLineColor(common_bench::plot::kMpBlue); + h4.SetLineWidth(2); + // axes + h4.GetXaxis()->CenterTitle(); + h4.GetYaxis()->CenterTitle(); + // draw everything + h4.DrawClone("hist"); + + } else { + c.cd(3); + gPad->SetLogy(true); + auto& h3 = *h_adc_EcalBarrelRawHits; + // histogram style + h3.SetLineColor(common_bench::plot::kMpBlue); + h3.SetLineWidth(2); + // axes + h3.GetXaxis()->CenterTitle(); + h3.GetYaxis()->CenterTitle(); + // draw everything + h3.DrawClone("hist"); + } c.Print(fmt::format("{}_EcalRawHits_adc.png", output_prefix).c_str()); } @@ -363,29 +423,44 @@ int rec_analysis_raw(const std::string& config_name) h2.DrawClone("hist"); common_bench::plot::draw_label(ebeam, pbeam, detector); - c.cd(3); - gPad->SetLogy(true); - auto& h3 = *h_tdc_EcalBarrelImagingRawHits; - // histogram style - h3.SetLineColor(common_bench::plot::kMpBlue); - h3.SetLineWidth(2); - // axes - h3.GetXaxis()->CenterTitle(); - h3.GetYaxis()->CenterTitle(); - // draw everything - h3.DrawClone("hist"); - - c.cd(4); - gPad->SetLogy(true); - auto& h4 = *h_tdc_EcalBarrelScFiRawHits; - // histogram style - h4.SetLineColor(common_bench::plot::kMpBlue); - h4.SetLineWidth(2); - // axes - h4.GetXaxis()->CenterTitle(); - h4.GetYaxis()->CenterTitle(); - // draw everything - h4.DrawClone("hist"); + if (d0.HasColumn("EcalBarrelScFiRawHits")) { + c.cd(3); + gPad->SetLogy(true); + auto& h3 = *h_tdc_EcalBarrelImagingRawHits; + // histogram style + h3.SetLineColor(common_bench::plot::kMpBlue); + h3.SetLineWidth(2); + // axes + h3.GetXaxis()->CenterTitle(); + h3.GetYaxis()->CenterTitle(); + // draw everything + h3.DrawClone("hist"); + + c.cd(4); + gPad->SetLogy(true); + auto& h4 = *h_tdc_EcalBarrelScFiRawHits; + // histogram style + h4.SetLineColor(common_bench::plot::kMpBlue); + h4.SetLineWidth(2); + // axes + h4.GetXaxis()->CenterTitle(); + h4.GetYaxis()->CenterTitle(); + // draw everything + h4.DrawClone("hist"); + + } else { + c.cd(3); + gPad->SetLogy(true); + auto& h3 = *h_tdc_EcalBarrelRawHits; + // histogram style + h3.SetLineColor(common_bench::plot::kMpBlue); + h3.SetLineWidth(2); + // axes + h3.GetXaxis()->CenterTitle(); + h3.GetYaxis()->CenterTitle(); + // draw everything + h3.DrawClone("hist"); + } c.Print(fmt::format("{}_EcalRawHits_tdc.png", output_prefix).c_str()); } @@ -527,8 +602,19 @@ int rec_analysis_raw(const std::string& config_name) if ( stats_n_EcalEndcapPRawHits->GetMean() < 0.8 || - stats_n_EcalBarrelImagingRawHits->GetMean() < 0.8 || - stats_n_EcalBarrelScFiRawHits->GetMean() < 0.8 || + ( + d0.HasColumn("EcalBarrelScFiRawHits") && + ( + stats_n_EcalBarrelImagingRawHits->GetMean() < 0.8 || + stats_n_EcalBarrelScFiRawHits->GetMean() < 0.8 + ) + ) || + ( + ! d0.HasColumn("EcalBarrelScFiRawHits") && + ( + stats_n_EcalBarrelRawHits->GetMean() < 0.8 + ) + ) || stats_n_EcalEndcapNRawHits->GetMean() < 0.8 || stats_n_HcalEndcapPRawHits->GetMean() < 0.8 || stats_n_HcalBarrelRawHits->GetMean() < 0.8 || diff --git a/options/reconstruction.ecal.py b/options/reconstruction.ecal.py index de9279179f4cc50e577994c392bd0be84b42bb5f..03622bec30995759ca5770f68bdda3fca0731dc5 100644 --- a/options/reconstruction.ecal.py +++ b/options/reconstruction.ecal.py @@ -7,8 +7,12 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" +if "JUGGLER_DETECTOR" in os.environ : + detector_name = str(os.environ["JUGGLER_DETECTOR"]) + +detector_config = detector_name if "JUGGLER_DETECTOR_CONFIG" in os.environ : - detector_name = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) + detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" if "DETECTOR_PATH" in os.environ : @@ -19,8 +23,13 @@ if "JUGGLER_DETECTOR_VERSION" in os.environ: env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) if 'acadia' in env_version: detector_version = 'acadia' -compact_path = os.path.join(detector_path, detector_name) +# Detector features that affect reconstruction +has_ecal_barrel_scfi = False +if 'athena' in detector_name: + has_ecal_barrel_scfi = True +if 'ecce' in detector_name and 'imaging' in detector_config: + has_ecal_barrel_scfi = True # CAL reconstruction # get sampling fractions from system environment variable @@ -49,7 +58,7 @@ n_events = int(os.environ["JUGGLER_N_EVENTS"]) # services services = [] # geometry service -services.append(GeoSvc("GeoSvc", detectors=["{}.xml".format(compact_path)], OutputLevel=WARNING)) +services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], OutputLevel=WARNING)) # data service services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING)) diff --git a/options/reconstruction.hcal.py b/options/reconstruction.hcal.py index 7b4c03948dde5f606398f06978ebf1934efb2c5a..79babb7a2b949aacf4f12f108c71cbf865b535f2 100644 --- a/options/reconstruction.hcal.py +++ b/options/reconstruction.hcal.py @@ -7,8 +7,12 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" +if "JUGGLER_DETECTOR" in os.environ : + detector_name = str(os.environ["JUGGLER_DETECTOR"]) + +detector_config = detector_name if "JUGGLER_DETECTOR_CONFIG" in os.environ : - detector_name = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) + detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" if "DETECTOR_PATH" in os.environ : @@ -20,7 +24,12 @@ if "JUGGLER_DETECTOR_VERSION" in os.environ: if 'acadia' in env_version: detector_version = 'acadia' -compact_path = os.path.join(detector_path, detector_name) +# Detector features that affect reconstruction +has_ecal_barrel_scfi = False +if 'athena' in detector_name: + has_ecal_barrel_scfi = True +if 'ecce' in detector_name and 'imaging' in detector_config: + has_ecal_barrel_scfi = True # CAL reconstruction # get sampling fractions from system environment variable @@ -51,7 +60,7 @@ n_events = int(os.environ["JUGGLER_N_EVENTS"]) # services services = [] # geometry service -services.append(GeoSvc("GeoSvc", detectors=["{}.xml".format(compact_path)], OutputLevel=WARNING)) +services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], OutputLevel=WARNING)) # data service services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING)) diff --git a/options/reconstruction.py b/options/reconstruction.py index b0cb6425f95db142ef491142b69a5acac3e5e0ce..bb47ab6d93e16c8f5cff237cd5f99164a210cf6a 100644 --- a/options/reconstruction.py +++ b/options/reconstruction.py @@ -5,11 +5,14 @@ from Configurables import ApplicationMgr, AuditorSvc, EICDataSvc, PodioOutput, G from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json -from math import sqrt detector_name = "athena" +if "JUGGLER_DETECTOR" in os.environ : + detector_name = str(os.environ["JUGGLER_DETECTOR"]) + +detector_config = detector_name if "JUGGLER_DETECTOR_CONFIG" in os.environ : - detector_name = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) + detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" if "DETECTOR_PATH" in os.environ : @@ -21,7 +24,12 @@ if "JUGGLER_DETECTOR_VERSION" in os.environ: if 'acadia' in env_version: detector_version = 'acadia' -compact_path = os.path.join(detector_path, detector_name) +# Detector features that affect reconstruction +has_ecal_barrel_scfi = False +if 'athena' in detector_name: + has_ecal_barrel_scfi = True +if 'ecce' in detector_name and 'imaging' in detector_config: + has_ecal_barrel_scfi = True if "PBEAM" in os.environ: ionBeamEnergy = str(os.environ["PBEAM"]) @@ -100,11 +108,11 @@ services.append(AuditorSvc("AuditorSvc", Auditors=['ChronoAuditor', 'MemStatAudi ## these names are somewhat inconsistent, and should probably all be renamed to 'material-map.XXX' ## FIXME if detector_version == 'acadia': - services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_name)], + services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], materials="config/material-maps.json", OutputLevel=WARNING)) else: - services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_name)], + services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], materials="calibrations/materials-map.cbor", OutputLevel=WARNING)) # data service @@ -185,12 +193,11 @@ sim_coll = [ 'ZDCHcalHits', 'ZDCHcalHitsContributions', ] - ecal_barrel_scfi_collections = [ 'EcalBarrelScFiHits', 'EcalBarrelScFiHitsContributions' ] -if 'athena' in detector_name: +if has_ecal_barrel_scfi: sim_coll += ecal_barrel_scfi_collections forward_romanpot_collections = [ @@ -468,7 +475,7 @@ algorithms.append(ci_ecal_clreco) #algorithms.append(ci_ecal_clmerger) # Central Barrel Ecal -if 'athena' in detector_name: +if has_ecal_barrel_scfi: # Central ECAL Imaging Calorimeter img_barrel_daq = calo_daq['ecal_barrel_imaging'] diff --git a/options/reconstruction.raw.py b/options/reconstruction.raw.py index 7c4fc45051b2a76f397787819e7495ad0619df77..de8412c3ec80c3c5f71b276cdb14e21b9e2b44f9 100644 --- a/options/reconstruction.raw.py +++ b/options/reconstruction.raw.py @@ -7,8 +7,12 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" +if "JUGGLER_DETECTOR" in os.environ : + detector_name = str(os.environ["JUGGLER_DETECTOR"]) + +detector_config = detector_name if "JUGGLER_DETECTOR_CONFIG" in os.environ : - detector_name = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) + detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" if "DETECTOR_PATH" in os.environ : @@ -20,7 +24,12 @@ if "JUGGLER_DETECTOR_VERSION" in os.environ: if 'acadia' in env_version: detector_version = 'acadia' -compact_path = os.path.join(detector_path, detector_name) +# Detector features that affect reconstruction +has_ecal_barrel_scfi = False +if 'athena' in detector_name: + has_ecal_barrel_scfi = True +if 'ecce' in detector_name and 'imaging' in detector_config: + has_ecal_barrel_scfi = True # RICH reconstruction qe_data = [(1.0, 0.25), (7.5, 0.25),] @@ -50,7 +59,7 @@ services = [] # auditor service services.append(AuditorSvc("AuditorSvc", Auditors=['ChronoAuditor', 'MemStatAuditor'])) # geometry service -services.append(GeoSvc("GeoSvc", detectors=["{}.xml".format(compact_path)], OutputLevel=WARNING)) +services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], OutputLevel=WARNING)) # data service services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING)) @@ -80,12 +89,11 @@ sim_coll = [ 'HcalEndcapNHitsContributions', 'DRICHHits', ] - ecal_barrel_scfi_collections = [ 'EcalBarrelScFiHits', 'EcalBarrelScFiHitsContributions' ] -if 'athena' in detector_name: +if has_ecal_barrel_scfi: sim_coll += ecal_barrel_scfi_collections forward_romanpot_collections = [ @@ -192,7 +200,7 @@ ci_ecal_digi = CalHitDigi("ci_ecal_digi", algorithms.append(ci_ecal_digi) # Central Barrel Ecal -if 'athena' in detector_name: +if has_ecal_barrel_scfi: # Central ECAL Imaging Calorimeter img_barrel_daq = calo_daq['ecal_barrel_imaging'] @@ -217,7 +225,7 @@ else: sciglass_ecal_digi = CalHitDigi("sciglass_ecal_digi", inputHitCollection="EcalBarrelHits", - outputHitCollection="EcalBarrelHitsDigi", + outputHitCollection="EcalBarrelRawHits", energyResolutions=[0., 0.02, 0.], # 2% flat resolution **sciglass_ecal_daq) algorithms.append(sciglass_ecal_digi)