13#ifdef HAS_RNTUPLE_SUPPORT
14#include "ROOT/RNTupleModel.hxx"
15#include "ROOT/RField.hxx"
61 if (
fSumADC.GetElementName() == name)
return fSumADC.GetChannel(name);
78 void SetEventData(Double_t* block, UInt_t sequencenumber);
86 void SetSingleEventCuts(UInt_t errorflag, Double_t LL, Double_t UL, Double_t stability, Double_t burplevel);
94 return fSumADC.GetEventcutErrorFlag();
98 fSumADC.IncrementErrorCounters();
115 void Scale(Double_t factor);
140#ifdef HAS_RNTUPLE_SUPPORT
142 void ConstructNTupleAndVector(std::unique_ptr<ROOT::RNTupleModel>& model, TString& prefix, std::vector<Double_t>& values, std::vector<std::shared_ptr<Double_t>>& fieldPtrs);
143 void FillNTupleVector(std::vector<Double_t>& values)
const;
Decoding and management for Moller ADC channels (6x32-bit datawords)
Integration PMT detector for charge and asymmetry measurements.
const TString QwBPMStripline< T >::subelement[4]
Concrete hardware channel for Moller ADC modules (6x32-bit words)
Configuration file parser with flexible tokenization and search capabilities.
A helper class to manage a vector of branch entries for ROOT trees.
The pure virtual base class of all data elements.
VQwDataElement()
Default constructor.
void SetSubsystemName(TString sysname)
Set the name of the inheriting subsystem name.
Data blinding utilities for parity violation analysis.
Combines multiple integration PMTs into weighted sum/average.
Int_t ProcessEvBuffer(UInt_t *buffer, UInt_t word_position_in_buffer, UInt_t subelement=0) override
Process the CODA event buffer for this element.
void Sum(const QwCombinedPMT &value1, const QwCombinedPMT &value2)
void SetRandomEventAsymmetry(Double_t asymmetry)
void FillTreeVector(QwRootTreeBranchVector &values) const
void AccumulateRunningSum(const QwCombinedPMT &value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF)
void PrintInfo() const override
Print multiple lines of information about this data element.
void DeaccumulateRunningSum(QwCombinedPMT &value, Int_t ErrorMask=0xFFFFFFF)
QwCombinedPMT & operator=(const QwCombinedPMT &value)
void SetNormalizability(Bool_t isnormalizable)
void Normalize(VQwDataElement *denom)
void ClearEventData() override
Clear event-scoped data for the sum channel.
void IncrementErrorCounters()
void CalculateRunningAverage()
void ConstructBranch(TTree *tree, TString &prefix)
void SetPedestal(Double_t ped)
void Blind(const QwBlinder *blinder)
Blind the asymmetry.
void SetEventCutMode(Int_t bcuts)
Bool_t CheckForBurpFail(const VQwDataElement *ev_error)
Check for burp failures by delegating to the sum ADC channel.
void ProcessEvent()
Process event by computing the weighted average of members.
void RandomizeEventData(int helicity)
void Scale(Double_t factor)
QwCombinedPMT(TString name)
UInt_t UpdateErrorFlag() override
Update the sum ADC error flag from member PMTs.
UInt_t GetEventcutErrorFlag() override
return the error flag on this channel/device
void LinkChannel(TString name)
Link internal sum channel names to the given detector name.
void SetBlindability(Bool_t isblindable)
void PrintErrorCounters()
QwCombinedPMT(const QwCombinedPMT &source)
Bool_t ApplyHWChecks()
Apply hardware checks (none needed at combiner level).
void Ratio(QwCombinedPMT &numer, QwCombinedPMT &denom)
void ConstructHistograms(TDirectory *folder, TString &prefix) override
Construct the histograms for this data element.
void InitializeChannel(TString name, TString datatosave)
Initialize the combined PMT with a name and data-saving mode.
static const Bool_t bDEBUG
void EncodeEventData(std::vector< UInt_t > &buffer)
std::vector< Double_t > fWeights
void PrintValue() const override
Print single line of value and error of this data element.
void SetCalibrationFactor(Double_t calib)
void SetEventData(Double_t *block, UInt_t sequencenumber)
Set the block data for the current event sequence.
const QwMollerADC_Channel * GetChannel(const TString name) const
void Difference(const QwCombinedPMT &value1, const QwCombinedPMT &value2)
void Add(QwIntegrationPMT *pmt, Double_t weight)
Add a PMT channel to this combination with a weight.
void SetRandomEventParameters(Double_t mean, Double_t sigma)
void SetHardwareSum(Double_t hwsum, UInt_t sequencenumber=0)
Set the hardware-level sum for a sequence (unused for combo).
~QwCombinedPMT() override
void SetDefaultSampleSize(Int_t sample_size)
Set default sample size on the sum ADC.
Double_t fSequenceNo_Prev
Bool_t ApplySingleEventCuts()
QwCombinedPMT & operator+=(const QwCombinedPMT &value)
QwCombinedPMT(TString subsystemname, TString name)
std::vector< QwIntegrationPMT * > fElement
used to validate sequence number in the IsGoodEvent()
void CalculateSumAndAverage()
Compute the weighted sum (and average) from member PMTs.
void FillHistograms() override
Fill the histograms for this data element.
std::vector< QwErrDBInterface > GetErrDBEntry()
void SetSingleEventCuts(UInt_t errorflag, Double_t LL, Double_t UL, Double_t stability, Double_t burplevel)
Inherited from VQwDataElement to set the upper and lower limits (fULimit and fLLimit),...
void ConstructBranchAndVector(TTree *tree, TString &prefix, QwRootTreeBranchVector &values)
std::vector< QwDBInterface > GetDBEntry()
QwCombinedPMT & operator-=(const QwCombinedPMT &value)
Integration PMT providing yield/diff/asym readout from Moller ADC.