37 static Int_t
GetBufferOffset(Int_t scalerindex, Int_t wordindex, UInt_t header = 1);
108 void InitializeChannel(TString subsystem, TString instrumenttype, TString name, TString datatosave)
override;
134 Int_t
ProcessEvBuffer(UInt_t* buffer, UInt_t num_words_left, UInt_t index = 0)
override = 0;
169 void Scale(Double_t Offset)
override;
194#ifdef HAS_RNTUPLE_SUPPORT
195 void ConstructNTupleAndVector(std::unique_ptr<ROOT::RNTupleModel>& model, TString& prefix, std::vector<Double_t>& values, std::vector<std::shared_ptr<Double_t>>& fieldPtrs)
override = 0;
196 void FillNTupleVector(std::vector<Double_t>& values)
const override = 0;
203 if (tmp_ptr != NULL) {
206 throw std::invalid_argument(
"Standard exception from VQwScaler_Channel::AccumulateRunningSum: incompatible hardware channel type");
266template <UInt_t data_mask=0xffffffff, UInt_t data_shift=0 >
288 Int_t
ProcessEvBuffer(UInt_t* buffer, UInt_t num_words_left, UInt_t index = 0)
override;
292#ifdef HAS_RNTUPLE_SUPPORT
293 void ConstructNTupleAndVector(std::unique_ptr<ROOT::RNTupleModel>& model, TString& prefix, std::vector<Double_t>& values, std::vector<std::shared_ptr<Double_t>>& fieldPtrs)
override;
294 void FillNTupleVector(std::vector<Double_t>& values)
const override;
class QwScaler_Channel< 0x00ffffff, 0 > QwSIS3801D24_Channel
class QwScaler_Channel< 0xffffffff, 0 > QwSIS3801_Channel
class QwScaler_Channel< 0xffffffff, 0 > QwSTR7200_Channel
class QwScaler_Channel< 0xffffffff, 0 > QwSIS3801D32_Channel
virtual void LoadMockDataParameters(QwParameterFile ¶mfile)
Load the mock data parameters from the current line in the param file.
Configuration file parser with flexible tokenization and search capabilities.
A helper class to manage a vector of branch entries for ROOT trees.
Abstract base class for scaler channels.
void AccumulateRunningSum(const VQwHardwareChannel *value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF) override
static const Bool_t kDEBUG
void SetDefaultSampleSize(size_t)
void Difference(VQwScaler_Channel &value1, VQwScaler_Channel &value2)
void InitializeChannel(TString name, TString datatosave="raw") override
Initialize the fields in this object.
void Product(VQwScaler_Channel &numer, VQwScaler_Channel &denom)
std::string GetExternalClockName() override
void ProcessEvent() override
static void PrintErrorCounterTail()
Bool_t fIsDifferentialScaler
void ClearEventData() override
Clear the event data in this element.
Double_t GetValue(size_t) const override
Int_t ProcessEvBuffer(UInt_t *buffer, UInt_t num_words_left, UInt_t index=0) override=0
Process the CODA event buffer for this element.
void Scale(Double_t Offset) override
Bool_t NeedsExternalClock() override
void AddValueFrom(const VQwHardwareChannel *valueptr) override
Double_t fClockNormalization
void LoadChannelParameters(QwParameterFile ¶mfile) override
void SubtractValueFrom(const VQwHardwareChannel *valueptr) override
void FillTreeVector(QwRootTreeBranchVector &values) const override=0
VQwScaler_Channel(const VQwScaler_Channel &source, VQwDataElement::EDataToSave datatosave)
void ConstructHistograms(TDirectory *folder, TString &prefix) override
Construct the histograms for this data element.
Double_t GetValueError(size_t) const override
Bool_t ApplySingleEventCuts() override
void RandomizeEventData(int helicity=0, double time=0.0) override
Internally generate random event data.
void ConstructBranch(TTree *tree, TString &prefix) override
void SetNeedsExternalClock(Bool_t needed) override
VQwScaler_Channel & operator=(const VQwScaler_Channel &value)
Int_t fNumEvtsWithHWErrors
VQwScaler_Channel(const VQwScaler_Channel &source)
void Sum(VQwScaler_Channel &value1, VQwScaler_Channel &value2)
void SetExternalClockName(const std::string name) override
void FillHistograms() override
Fill the histograms for this data element.
VQwHardwareChannel & operator/=(const VQwHardwareChannel &input) override
Bool_t fNeedsExternalClock
void PrintInfo() const override
Print multiple lines of information about this data element.
virtual void SetDifferentialScaler(Bool_t diff)
void DeaccumulateRunningSum(const VQwScaler_Channel &value, Int_t ErrorMask)
static Int_t GetBufferOffset(Int_t scalerindex, Int_t wordindex, UInt_t header=1)
void PrintErrorCounters() const override
report number of events failed due to HW and event cut failure
void ScaledAdd(Double_t scale, const VQwHardwareChannel *value) override
std::string fNormChannelName
void SmearByResolution(double resolution) override
void SetRawEventData() override
void MultiplyBy(const VQwHardwareChannel *valueptr) override
Bool_t CheckForBurpFail(const VQwDataElement *)
Int_t ApplyHWChecks() override
Int_t GetRawValue(size_t) const override
VQwScaler_Channel & operator+=(const VQwScaler_Channel &value)
void SetExternalClockPtr(const VQwHardwareChannel *clock) override
virtual Bool_t IsDifferentialScaler()
const VQwHardwareChannel * fNormChannelPtr
static void PrintErrorCounterHead()
void PrintValue() const override
Print single line of value and error of this data element.
void SetEventData(Double_t value)
VQwScaler_Channel & operator*=(const VQwScaler_Channel &value)
void CalculateRunningAverage() override
void Ratio(const VQwScaler_Channel &numer, const VQwScaler_Channel &denom)
void DivideBy(const VQwHardwareChannel *valueptr) override
VQwScaler_Channel & operator-=(const VQwScaler_Channel &value)
Double_t GetValueM2(size_t) const override
Int_t fNumEvtsWithEventCutsRejected
~VQwScaler_Channel() override
void AddChannelOffset(Double_t Offset)
void IncrementErrorCounters() override
void AssignValueFrom(const VQwDataElement *valueptr) override
void AssignScaledValue(const VQwScaler_Channel &value, Double_t scale)
void ConstructBranchAndVector(TTree *tree, TString &prefix, QwRootTreeBranchVector &values) override=0
void AccumulateRunningSum(const VQwScaler_Channel &value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF)
void CopyFrom(const VQwScaler_Channel &value)
VQwScaler_Channel(TString name, TString datatosave="raw")
void EncodeEventData(std::vector< UInt_t > &buffer) override=0
Encode the event data into a CODA buffer.
Templated concrete scaler channel with configurable data masking.
void ConstructBranchAndVector(TTree *tree, TString &prefix, QwRootTreeBranchVector &values) override
QwScaler_Channel(const QwScaler_Channel &source, VQwDataElement::EDataToSave datatosave)
QwScaler_Channel(const QwScaler_Channel &source)
QwScaler_Channel(TString name, TString datatosave="raw")
Int_t ProcessEvBuffer(UInt_t *buffer, UInt_t num_words_left, UInt_t index=0) override
Process the CODA event buffer for this element.
void EncodeEventData(std::vector< UInt_t > &buffer) override
Encode the event data into a CODA buffer.
VQwHardwareChannel * Clone(VQwDataElement::EDataToSave datatosave) const override
void FillTreeVector(QwRootTreeBranchVector &values) const override
The pure virtual base class of all data elements.
VQwDataElement()
Default constructor.
Abstract base for concrete hardware channels implementing dual-operator pattern.
Double_t GetValueError() const
Double_t GetValueM2() const
Double_t fCalibrationFactor
void CopyFrom(const VQwHardwareChannel &value)
virtual VQwHardwareChannel * Clone() const
Double_t GetValueWidth() const
Double_t GetValue() const
Int_t GetRawValue() const
virtual void DeaccumulateRunningSum(const VQwHardwareChannel *value, Int_t ErrorMask=0xFFFFFFF)
virtual void AccumulateRunningSum(const VQwHardwareChannel *value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF)