16 #include "TTimeStamp.h" 17 #include "hep_hpc/hdf5/Ntuple.hpp" 18 #include "hep_hpc/hdf5/make_ntuple.hpp" 46 static Ntuple<unsigned int, unsigned int, unsigned int, double> evtids(
47 hdffile,
"evtids", {
"run",
"subrun",
"event",
"evttime"});
50 make_ntuple({hdffile,
"image", 1000},
51 make_scalar_column<unsigned short>(
"label"),
52 make_column<float, 2>(
55 1024 * 1024 / (2500 *
sizeof(float)),
56 {PropertyList{H5P_DATASET_CREATE}(&H5Pset_shuffle)(&H5Pset_deflate, 6u)}));
64 evttime = tts.AsDouble();
68 evttime = tts.AsDouble();
83 unsigned short flag = 999;
84 if (!mclist.empty()) {
85 auto particle = mclist[0].GetParticle(0);
86 if (
std::abs(particle.PdgCode()) == 13) flag = 0;
87 if (
std::abs(particle.PdgCode()) == 211) flag = 1;
90 if (!tracks.empty()) {
91 auto trkend = tracks[0].End();
92 if (trkend.X() > -360 + 50 && trkend.X() < 360 - 50 && trkend.Y() > 50 &&
93 trkend.Y() < 610 - 50 && trkend.Z() > 50 && trkend.Z() < 710 - 50) {
94 if (fmthm.isValid()) {
95 auto vhit = fmthm.at(0);
96 auto vmeta = fmthm.data(0);
99 for (
size_t i = 0; i < vhit.size(); ++i) {
100 if (static_cast<int>(vmeta[i]->Index()) == std::numeric_limits<int>::max()) {
103 if (vhit[i]->
WireID().Plane == 2) {
104 if (
int(vmeta[i]->Index()) > maxindex) {
105 maxindex = vmeta[i]->Index();
111 auto endwire = vhit[ihit]->WireID();
112 float endtime = vhit[ihit]->PeakTime();
113 float adc[50][50] = {{0.}};
114 for (
auto& wire : wires) {
115 int channel = wire.Channel();
116 auto wireids = wireReadoutGeom.ChannelToWire(channel);
117 if (wireids[0].
Plane == 2 && wireids[0].TPC == endwire.TPC &&
118 wireids[0].Wire >= endwire.Wire - 25 && wireids[0].Wire < endwire.Wire + 25) {
119 int idx = wireids[0].Wire - endwire.Wire + 25;
122 for (
const auto& range : signalROI.
get_ranges()) {
123 const auto& waveform = range.data();
126 for (
int i = lasttick; i < roiFirstBinTick; ++i) {
127 if (i >=
int(endtime) - 25 && i <
int(endtime) + 25) {
128 adc[idx][i - int(endtime) - 25] = 0;
131 lasttick = roiFirstBinTick;
132 for (
size_t i = 0; i < waveform.size(); ++i) {
133 if (lasttick >=
int(endtime) - 25 && lasttick < int(endtime) + 25) {
134 adc[idx][lasttick - int(endtime) + 25] = waveform[i];
139 for (
int i = lasttick; i < 6000; ++i) {
140 if (i >=
int(endtime) - 25 && i <
int(endtime) + 25) {
141 adc[idx][i - int(endtime) + 25] = 0;
147 image.insert(flag, &adc[0][0]);
SubRunNumber_t subRun() const
constexpr std::uint32_t timeLow() const
art::InputTag fTrackModuleLabel
void saveImage(art::Event const &e, hep_hpc::hdf5::File &hdffile) override
art::InputTag fMCTruthLabel
Declaration of signal hit object.
constexpr std::uint32_t timeHigh() const
constexpr auto abs(T v)
Returns the absolute value of the argument.
const range_list_t & get_ranges() const
Returns the internal list of non-void ranges.
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
art::InputTag fWireModuleLabel
int TDCtick_t
Type representing a TDC tick.
IDparameter< geo::WireID > WireID
Member type of validated geo::WireID parameter.
T get(std::string const &key) const
Handle< PROD > getHandle(SelectorBase const &) const
Provides recob::Track data product.
EventNumber_t event() const
Declaration of basic channel signal object.
recob::tracking::Plane Plane
PROD const & getProduct(InputTag const &tag) const