1 #ifndef MIX_RAWDIGITADDERANA_CXX 2 #define MIX_RAWDIGITADDERANA_CXX 12 std::vector<raw::ChannelID_t> special_channels,
17 : fChannelSampleInterval(sample),
18 fChannelsSpecial(special_channels),
19 fPrintBadOverlays(print_bad),
20 fInput1Label(in1label),
21 fInput2Label(in2label),
32 std::vector<raw::RawDigit>
const& in2,
33 std::vector<raw::RawDigit>
const& sum)
39 if(in1.size()!=in2.size() ||
40 in1.size()!=sum.size() )
41 throw std::runtime_error(
"Error in RawDigitAdderAna::CheckOverlay : Input vector lists not equal size.");
43 for(
size_t i_ch=0; i_ch<sum.size(); i_ch++){
46 if(in1[i_ch].
Channel()!=in2[i_ch].Channel() ||
47 in1[i_ch].Channel()!=sum[i_ch].Channel())
48 throw std::runtime_error(
"Error in RawDigitAdderAna::CheckOverlay : Input vector lists out of order.");
51 if(in1[i_ch].ADCs().size()!=in2[i_ch].ADCs().size() ||
52 in1[i_ch].ADCs().size()!=sum[i_ch].ADCs().size())
53 throw std::runtime_error(
"Error in RawDigitAdderAna::CheckOverlay : Input channels have different sizes.");
58 for(
size_t i_t=0; i_t<sum[i_ch].ADCs().size(); i_t++){
59 if( (in1[i_ch].ADCs()[i_t]+in2[i_ch].ADCs()[i_t])==sum[i_ch].ADCs()[i_t] )
82 std::stringstream hname,htitle;
83 hname <<
"h_" << label
87 htitle <<
"Waveform, Channel " << channel
88 <<
", Event " <<
event 90 <<
", Input " <<
label;
91 histo->SetName(hname.str().c_str());
92 histo->SetTitle(htitle.str().c_str());
93 histo->SetBins(waveform.
ADCs().size(),0,waveform.
ADCs().size());
95 for(
size_t i_t=0; i_t<waveform.
ADCs().size(); i_t++)
96 histo->SetBinContent(i_t,waveform.
ADCs()[i_t]);
102 std::vector<raw::RawDigit>
const& in1,
103 std::vector<raw::RawDigit>
const& in2,
104 std::vector<raw::RawDigit>
const& sum,
105 unsigned int run,
unsigned int event)
109 throw std::runtime_error(
"Error in RawDigitAdderAna::CreateOutputHistograms : Histogram output vector not equal to channels to print.");
113 if(in1.size()!=in2.size() ||
114 in1.size()!=sum.size() )
115 throw std::runtime_error(
"Error in RawDigitAdderAna::CheckOverlay : Input vector lists not equal size.");
117 size_t histo_count=0;
119 for(
size_t i_ch=0; i_ch<sum.size(); i_ch++){
122 if(in1[i_ch].
Channel()!=in2[i_ch].Channel() ||
123 in1[i_ch].Channel()!=sum[i_ch].Channel())
124 throw std::runtime_error(
"Error in RawDigitAdderAna::CheckOverlay : Input vector lists out of order.");
130 if(in1[i_ch].ADCs().size()!=in2[i_ch].ADCs().size() ||
131 in1[i_ch].ADCs().size()!=sum[i_ch].ADCs().size())
132 throw std::runtime_error(
"Error in RawDigitAdderAna::CheckOverlay : Input channels have different sizes.");
size_t fChannelSampleInterval
const ADCvector_t & ADCs() const
Reference to the compressed ADC count vector.
Collection of charge vs time digitized from a single readout channel.
void CreateOutputHistograms(std::vector< TH1S * > const histoPtrVector, std::vector< raw::RawDigit > const &in1, std::vector< raw::RawDigit > const &in2, std::vector< raw::RawDigit > const &sum, unsigned int run, unsigned int event)
void CreateHistogram(TH1S *histo, raw::RawDigit const &waveform, unsigned int run, unsigned int event, unsigned int channel, std::string label)
std::vector< raw::ChannelID_t > fChannelsToPrint
std::vector< raw::ChannelID_t > fChannelsBadOverlay
RawDigitAdderAna(size_t sample=100, std::vector< raw::ChannelID_t > special_channels=std::vector< raw::ChannelID_t >(0), bool print_bad=true, std::string in1label="in1", std::string in2label="in2", std::string sumlabel="sum")
Default constructor.
std::vector< raw::ChannelID_t > fChannelsSpecial
ChannelMappingService::Channel Channel
size_t CheckOverlay(std::vector< raw::RawDigit > const &in1, std::vector< raw::RawDigit > const &in2, std::vector< raw::RawDigit > const &sum)
Event finding and building.