diff --git a/src/detectors/ECTOF/ECTOF.cc b/src/detectors/ECTOF/ECTOF.cc index 5fbf2da747..cf12e61f64 100644 --- a/src/detectors/ECTOF/ECTOF.cc +++ b/src/detectors/ECTOF/ECTOF.cc @@ -6,10 +6,18 @@ #include #include #include +#include +#include +#include #include #include #include "extensions/jana/JOmniFactoryGeneratorT.h" +#include "factories/digi/EICROCDigitization_factory.h" +#include "factories/digi/PulseCombiner_factory.h" +#include "factories/digi/SiliconChargeSharing_factory.h" +#include "factories/digi/SiliconPulseDiscretization_factory.h" +#include "factories/digi/SiliconPulseGeneration_factory.h" #include "factories/digi/SiliconTrackerDigi_factory.h" #include "factories/tracking/TrackerHitReconstruction_factory.h" @@ -37,5 +45,53 @@ void InitPlugin(JApplication* app) { .timeResolution = 0.025, }, app)); + + app->Add(new JOmniFactoryGeneratorT( + "TOFEndcapSharedHits", {"TOFEndcapHits"}, {"TOFEndcapSharedHits"}, + { + .sigma_sharingx = 0.1 * dd4hep::cm, + .sigma_sharingy = 0.1 * dd4hep::cm, + .min_edep = 0.0 * edm4eic::unit::GeV, + .readout = "TOFEndcapHits", + }, + app)); + + const double x_when_landau_min = -0.22278; + const double landau_min = TMath::Landau(x_when_landau_min, 0, 1, true); + const double sigma_analog = 0.293951 * edm4eic::unit::ns; + const double Vm = 3e-4 * dd4hep::GeV; + const double adc_range = 256; + + const double gain = -adc_range / Vm / landau_min * sigma_analog; + const int offset = 3; + app->Add(new JOmniFactoryGeneratorT( + "LGADPulseGeneration", {"TOFEndcapSharedHits"}, {"TOFEndcapSmoothPulses"}, + { + .pulse_shape_function = "LandauPulse", + .pulse_shape_params = {gain, sigma_analog, offset}, + .ignore_thres = 0.05 * adc_range, + .timestep = 0.01 * edm4eic::unit::ns, + }, + app)); + + app->Add(new JOmniFactoryGeneratorT( + "TOFEndcapPulseCombiner", {"TOFEndcapSmoothPulses"}, {"TOFEndcapCombinedPulses"}, + { + .minimum_separation = 25 * edm4eic::unit::ns, + }, + app)); + + double risetime = 0.45 * edm4eic::unit::ns; + app->Add(new JOmniFactoryGeneratorT( + "SiliconPulseDiscretization", {"TOFEndcapCombinedPulses"}, {"TOFEndcapPulses"}, + { + .EICROC_period = 25 * edm4eic::unit::ns, + .local_period = 25 * edm4eic::unit::ns / 1024, + .global_offset = -offset * sigma_analog + risetime, + }, + app)); + + app->Add(new JOmniFactoryGeneratorT( + "EICROCDigitization", {"TOFEndcapPulses"}, {"TOFEndcapADCTDC"}, {}, app)); } } // extern "C" diff --git a/src/services/io/podio/JEventProcessorPODIO.cc b/src/services/io/podio/JEventProcessorPODIO.cc index 01d6af2102..4f6bcd3030 100644 --- a/src/services/io/podio/JEventProcessorPODIO.cc +++ b/src/services/io/podio/JEventProcessorPODIO.cc @@ -91,6 +91,9 @@ JEventProcessorPODIO::JEventProcessorPODIO() { "TOFBarrelADCTDC", "TOFEndcapHits", + "TOFEndcapSharedHits", + "TOFEndcapADCTDC", + "TOFBarrelRawHitAssociations", "TOFEndcapRawHitAssociations",