JAPAn
Just Another Parity Analyzer
Loading...
Searching...
No Matches
QwScaler Class Reference

Subsystem managing scaler modules and derived rates. More...

#include <QwScaler.h>

+ Inheritance diagram for QwScaler:
+ Collaboration diagram for QwScaler:

Public Member Functions

 QwScaler (const TString &name)
 Constructor with name.
 
 QwScaler (const QwScaler &source)
 Copy constructor.
 
 ~QwScaler () override
 Destructor.
 
void ProcessOptions (QwOptions &options) override
 
Int_t LoadChannelMap (TString mapfile) override
 
Int_t LoadInputParameters (TString pedestalfile) override
 
void ClearEventData () override
 
Int_t ProcessConfigurationBuffer (const ROCID_t roc_id, const BankID_t bank_id, UInt_t *buffer, UInt_t num_words) override
 
Int_t ProcessEvBuffer (const ROCID_t roc_id, const BankID_t bank_id, UInt_t *buffer, UInt_t num_words) override
 
void ProcessEvent () override
 
void ConstructHistograms (TDirectory *folder, TString &prefix) override
 
void FillHistograms () override
 
void ConstructBranchAndVector (TTree *tree, TString &prefix, QwRootTreeBranchVector &values) override
 
void ConstructBranch (TTree *tree, TString &prefix) override
 Construct the branch and tree vector.
 
void ConstructBranch (TTree *tree, TString &prefix, QwParameterFile &trim_file) override
 Construct the branch and tree vector based on the trim file.
 
void FillTreeVector (QwRootTreeBranchVector &values) const override
 
Bool_t Compare (VQwSubsystem *source)
 
VQwSubsystemoperator= (VQwSubsystem *value) override
 
VQwSubsystemoperator+= (VQwSubsystem *value) override
 
VQwSubsystemoperator-= (VQwSubsystem *value) override
 
void Ratio (VQwSubsystem *value1, VQwSubsystem *value2) override
 
void Scale (Double_t factor) override
 
void AccumulateRunningSum (VQwSubsystem *value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF) override
 
void DeaccumulateRunningSum (VQwSubsystem *value, Int_t ErrorMask=0xFFFFFFF) override
 
void CalculateRunningAverage () override
 
Int_t LoadEventCuts (TString filename) override
 Optional event cut file.
 
Bool_t SingleEventCuts ()
 
Bool_t ApplySingleEventCuts () override
 Apply the single event cuts.
 
Bool_t CheckForBurpFail (const VQwSubsystem *subsys) override
 Report the number of events failed due to HW and event cut failures.
 
void IncrementErrorCounters () override
 Increment the error counters.
 
void PrintErrorCounters () const override
 
UInt_t GetEventcutErrorFlag () override
 Return the error flag to the top level routines related to stability checks and ErrorFlag updates.
 
void UpdateErrorFlag (const VQwSubsystem *ev_error) override
 update the error flag in the subsystem level from the top level routines related to stability checks. This will uniquely update the errorflag at each channel based on the error flag in the corresponding channel in the ev_error subsystem
 
void PrintValue () const override
 
void PrintInfo () const override
 
Double_t * GetRawChannelArray ()
 
Double_t GetDataForChannelInModule (Int_t modnum, Int_t channum)
 
Int_t GetChannelIndex (TString channelName, UInt_t module_number)
 
virtual void ConstructHistograms ()
 Construct the histograms for this subsystem.
 
virtual void ConstructHistograms (TDirectory *folder)
 Construct the histograms for this subsystem in a folder.
 
virtual void ConstructHistograms (TString &prefix)
 Construct the histograms for this subsystem with a prefix.
 
virtual void ConstructBranchAndVector (TTree *tree, QwRootTreeBranchVector &values)
 Construct the branch and tree vector.
 
- Public Member Functions inherited from VQwSubsystemParity
 VQwSubsystemParity (const TString &name)
 Constructor with name.
 
 VQwSubsystemParity (const VQwSubsystemParity &source)
 Copy constructor.
 
 ~VQwSubsystemParity () override
 Default destructor.
 
virtual void FillDB_MPS (QwParityDB *, TString)
 Fill the database with MPS-based variables Note that most subsystems don't need to do this.
 
virtual void FillDB (QwParityDB *, TString)
 Fill the database.
 
virtual void FillErrDB (QwParityDB *, TString)
 
virtual void Sum (VQwSubsystem *value1, VQwSubsystem *value2)
 
virtual void Difference (VQwSubsystem *value1, VQwSubsystem *value2)
 
Int_t LoadEventCuts (TString filename) override
 Load the event cuts file.
 
virtual void LoadEventCuts_Init ()
 
virtual void LoadEventCuts_Line (QwParameterFile &, TString &, Int_t &)
 
virtual void LoadEventCuts_Fin (Int_t &)
 
virtual UInt_t UpdateErrorFlag ()
 Uses the error flags of contained data elements to update Returns the error flag to the top level routines related to stability checks and ErrorFlag updates.
 
virtual void Blind (const QwBlinder *)
 Blind the asymmetry of this subsystem.
 
virtual void Blind (const QwBlinder *, const VQwSubsystemParity *)
 Blind the difference of this subsystem.
 
virtual void WritePromptSummary (QwPromptSummary *, TString)
 
virtual Bool_t CheckForEndOfBurst () const
 
virtual void LoadMockDataParameters (TString)
 
- Public Member Functions inherited from VQwSubsystem
 VQwSubsystem (const TString &name)
 Constructor with name.
 
 VQwSubsystem (const VQwSubsystem &orig)
 Copy constructor by object.
 
 ~VQwSubsystem () override
 Default destructor.
 
TString GetName () const
 
Bool_t HasDataLoaded () const
 
VQwSubsystemGetSibling (const std::string &name) const
 Get the sibling with specified name.
 
virtual std::vector< TString > GetParamFileNameList ()
 
virtual std::map< TString, TString > GetDetectorMaps ()
 
Bool_t PublishByRequest (TString) override
 Try to publish an internal variable matching the submitted name.
 
Bool_t PublishInternalValues () const override
 Publish all variables of the subsystem.
 
virtual Int_t LoadDetectorMaps (QwParameterFile &file)
 Parse parameter file to find the map files.
 
virtual Int_t LoadGeometryDefinition (TString)
 Optional geometry definition.
 
virtual Int_t LoadCrosstalkDefinition (TString)
 Optional crosstalk definition.
 
void SetEventTypeMask (const UInt_t mask)
 Set event type mask.
 
UInt_t GetEventTypeMask () const
 Get event type mask.
 
virtual Int_t ProcessEvBuffer (const UInt_t event_type, const ROCID_t roc_id, const BankID_t bank_id, UInt_t *buffer, UInt_t num_words)
 
virtual void ExchangeProcessedData ()
 Request processed data from other subsystems for internal use in the second event processing stage. Not all derived classes will require data from other subsystems.
 
virtual void ProcessEvent_2 ()
 Process the event data again, including data from other subsystems. Not all derived classes will require a second stage of event data processing.
 
virtual void AtEndOfEventLoop ()
 Perform actions at the end of the event loop.
 
virtual void RandomizeEventData (int=0, double=0.0)
 
virtual void EncodeEventData (std::vector< UInt_t > &)
 
virtual void ConstructObjects ()
 Construct the objects for this subsystem.
 
virtual void ConstructObjects (TDirectory *folder)
 Construct the objects for this subsystem in a folder.
 
virtual void ConstructObjects (TString &prefix)
 Construct the objects for this subsystem with a prefix.
 
virtual void ConstructObjects (TDirectory *, TString &)
 Construct the objects for this subsystem in a folder with a prefix.
 
virtual void ConstructTree ()
 Construct the tree for this subsystem.
 
virtual void ConstructTree (TDirectory *folder)
 Construct the tree for this subsystem in a folder.
 
virtual void ConstructTree (TString &prefix)
 Construct the tree for this subsystem with a prefix.
 
virtual void ConstructTree (TDirectory *, TString &)
 Construct the tree for this subsystem in a folder with a prefix.
 
virtual void FillTree ()
 Fill the tree for this subsystem.
 
virtual void DeleteTree ()
 Delete the tree for this subsystem.
 
virtual void PrintDetectorMaps (Bool_t status) const
 
void GetMarkerWordList (const ROCID_t roc_id, const BankID_t bank_id, std::vector< UInt_t > &marker) const
 
std::vector< ROCID_tGetROCIds () const
 
- Public Member Functions inherited from MQwHistograms
void ShareHistograms (const MQwHistograms *source)
 Share histogram pointers between objects.
 
- Public Member Functions inherited from MQwPublishable_child< QwSubsystemArray, VQwSubsystem >
 MQwPublishable_child ()
 Default constructor Initializes the child object and sets up self-reference for publishing.
 
 MQwPublishable_child (const MQwPublishable_child &source)
 Copy constructor.
 
virtual ~MQwPublishable_child ()
 Virtual destructor.
 
void SetParent (QwSubsystemArray *parent)
 Set the parent container for this child object.
 
QwSubsystemArrayGetParent () const
 Get the parent container for this child object.
 
- Public Member Functions inherited from MQwCloneable< VQwSubsystem, QwScaler >
 ~MQwCloneable () override
 Virtual destructor.
 
VQwSubsystemClone () const override
 Concrete clone method.
 
const VQwFactory< VQwSubsystem > * Factory () const override
 Factory getter.
 
- Public Member Functions inherited from VQwCloneable< VQwSubsystem >
virtual ~VQwCloneable ()
 Virtual destructor.
 
std::string GetClassName () const
 Get demangled name of this class.
 

Static Public Member Functions

static void DefineOptions (QwOptions &options)
 
- Static Public Member Functions inherited from VQwSubsystem
static void DefineOptions ()
 Define options function (note: no virtual static functions in C++)
 
- Static Public Member Functions inherited from MQwCloneable< VQwSubsystem, QwScaler >
static VQwSubsystemCreate (const std::string &name)
 Object creation.
 
static QwScalerCast (QwScaler *type)
 Object dynamic cast.
 

Private Types

typedef std::map< Int_t, std::vector< std::vector< Int_t > > > Subbank_to_Scaler_Map_t
 
typedef std::map< std::pair< Int_t, Int_t >, Int_t > Module_Channel_to_Scaler_Map_t
 
typedef std::map< TString, Int_t > Name_to_Scaler_Map_t
 

Private Member Functions

 QwScaler ()
 Private default constructor (not implemented, will throw linker error on use)
 

Private Attributes

Int_t fGoodEventCount
 
Subbank_to_Scaler_Map_t fSubbank_Map
 
Module_Channel_to_Scaler_Map_t fModuleChannel_Map
 
Name_to_Scaler_Map_t fName_Map
 
std::vector< VQwScaler_Channel * > fScaler
 
std::vector< UInt_t > fBufferOffset
 
std::vector< std::pair< VQwScaler_Channel *, double > > fNorm
 

Additional Inherited Members

void ClearAllBankRegistrations ()
 Clear all registration of ROC and Bank IDs for this subsystem.
 
virtual Int_t RegisterROCNumber (const ROCID_t roc_id, const BankID_t bank_id=0)
 Tell the object that it will decode data from this ROC and sub-bank.
 
Int_t RegisterSubbank (const BankID_t bank_id)
 Tell the object that it will decode data from this sub-bank in the ROC currently open for registration.
 
Int_t RegisterMarkerWord (const UInt_t markerword)
 
void RegisterRocBankMarker (QwParameterFile &mapstr)
 
Int_t GetSubbankIndex () const
 
Int_t GetSubbankIndex (const ROCID_t roc_id, const BankID_t bank_id) const
 
void SetDataLoaded (Bool_t flag)
 
template<class T>
Int_t FindIndex (const std::vector< T > &myvec, const T value) const
 
Bool_t Compare (VQwSubsystem *source)
 
- Protected Member Functions inherited from MQwHistograms
 MQwHistograms ()
 Default constructor.
 
 MQwHistograms (const MQwHistograms &source)
 Copy constructor.
 
virtual ~MQwHistograms ()
 Virtual destructor.
 
MQwHistogramsoperator= (const MQwHistograms &value)
 
void Fill_Pointer (TH1_ptr hist_ptr, Double_t value)
 
void AddHistogram (TH1 *h)
 Register a histogram.
 
- Protected Member Functions inherited from MQwPublishable_child< QwSubsystemArray, VQwSubsystem >
Bool_t RequestExternalValue (const TString &name, VQwHardwareChannel *value) const
 Retrieve the variable name from other subsystem arrays Get the value corresponding to some variable name from a different data array.
 
const VQwHardwareChannelRequestExternalPointer (const TString &name) const
 Retrieve a pointer to an external variable by name Requests a direct pointer to a variable from sibling subsystems via the parent container.
 
Bool_t PublishInternalValue (const TString name, const TString desc, const VQwHardwareChannel *element) const
 Publish a variable from this child into the parent container.
 
- Protected Attributes inherited from VQwSubsystem
std::vector< std::vector< TString > > fPublishList
 
TString fSystemName
 Name of this subsystem.
 
UInt_t fEventTypeMask
 Mask of event types.
 
Bool_t fIsDataLoaded
 Has this subsystem gotten data to be processed?
 
std::vector< TString > fDetectorMapsNames
 Names of loaded detector map files.
 
std::map< TString, TString > fDetectorMaps
 Map of file name to full path or content.
 
ROCID_t fCurrentROC_ID
 ROC ID that is currently being processed.
 
BankID_t fCurrentBank_ID
 Bank ID (and Marker word) that is currently being processed;.
 
std::vector< ROCID_tfROC_IDs
 Vector of ROC IDs associated with this subsystem.
 
std::vector< std::vector< BankID_t > > fBank_IDs
 Vector of Bank IDs per ROC ID associated with this subsystem.
 
std::vector< std::vector< std::vector< UInt_t > > > fMarkerWords
 Vector of marker words per ROC & subbank associated with this subsystem.
 
- Protected Attributes inherited from MQwHistograms
std::vector< TH1_ptrfHistograms
 Histograms associated with this data element.
 

Detailed Description

Subsystem managing scaler modules and derived rates.

Wraps hardware scaler channels, provides per-MPS processing, histogram and tree output, and utilities for normalization and cuts.

Definition at line 30 of file QwScaler.h.

Member Typedef Documentation

◆ Module_Channel_to_Scaler_Map_t

typedef std::map< std::pair<Int_t,Int_t>, Int_t > QwScaler::Module_Channel_to_Scaler_Map_t
private

Definition at line 140 of file QwScaler.h.

◆ Name_to_Scaler_Map_t

typedef std::map< TString, Int_t> QwScaler::Name_to_Scaler_Map_t
private

Definition at line 144 of file QwScaler.h.

◆ Subbank_to_Scaler_Map_t

typedef std::map< Int_t, std::vector< std::vector<Int_t> > > QwScaler::Subbank_to_Scaler_Map_t
private

Definition at line 136 of file QwScaler.h.

Constructor & Destructor Documentation

◆ QwScaler() [1/3]

QwScaler::QwScaler ( )
private

Private default constructor (not implemented, will throw linker error on use)

Referenced by AccumulateRunningSum(), Compare(), DeaccumulateRunningSum(), operator+=(), operator-=(), operator=(), QwScaler(), and Ratio().

+ Here is the caller graph for this function:

◆ QwScaler() [2/3]

QwScaler::QwScaler ( const TString & name)

Constructor with name.

Constructor: initialize scaler subsystem with name.

Definition at line 41 of file QwScaler.cc.

43{
44 // Nothing, really
45}
VQwSubsystemParity()
Private default constructor (not implemented, will throw linker error on use)

References VQwSubsystem::VQwSubsystem(), and VQwSubsystemParity::VQwSubsystemParity().

+ Here is the call graph for this function:

◆ QwScaler() [3/3]

QwScaler::QwScaler ( const QwScaler & source)
inline

Copy constructor.

Definition at line 41 of file QwScaler.h.

42 : VQwSubsystem(source),VQwSubsystemParity(source)
43 {
44 fScaler.resize(source.fScaler.size());
45 for (size_t i = 0; i < fScaler.size(); i++) {
46 VQwScaler_Channel* scaler_tmp = 0;
47 if ((scaler_tmp = dynamic_cast<QwSIS3801D24_Channel*>(source.fScaler.at(i)))) {
48 QwSIS3801D24_Channel* scaler = dynamic_cast<QwSIS3801D24_Channel*>(source.fScaler.at(i));
49 fScaler.at(i) = new QwSIS3801D24_Channel(*scaler);
50 } else if ((scaler_tmp = dynamic_cast<QwSIS3801D32_Channel*>(source.fScaler.at(i)))) {
51 QwSIS3801D32_Channel* scaler = dynamic_cast<QwSIS3801D32_Channel*>(source.fScaler.at(i));
52 fScaler.at(i) = new QwSIS3801D32_Channel(*scaler);
53 }
54 }
55 }
class QwScaler_Channel< 0x00ffffff, 0 > QwSIS3801D24_Channel
class QwScaler_Channel< 0xffffffff, 0 > QwSIS3801D32_Channel
std::vector< VQwScaler_Channel * > fScaler
Definition QwScaler.h:148

References fScaler, QwScaler(), VQwSubsystem::VQwSubsystem(), and VQwSubsystemParity::VQwSubsystemParity().

+ Here is the call graph for this function:

◆ ~QwScaler()

QwScaler::~QwScaler ( )
override

Destructor.

Destructor: clean up all owned scaler channel objects.

Definition at line 50 of file QwScaler.cc.

51{
52 // Delete scalers
53 for (size_t i = 0; i < fScaler.size(); i++) {
54 delete fScaler.at(i);
55 }
56 fScaler.clear();
57}

References fScaler.

Member Function Documentation

◆ AccumulateRunningSum()

void QwScaler::AccumulateRunningSum ( VQwSubsystem * value,
Int_t count = 0,
Int_t ErrorMask = 0xFFFFFFF )
overridevirtual

Accumulate running sums for all scaler channels.

Implements VQwSubsystemParity.

Definition at line 478 of file QwScaler.cc.

479{
480 if (Compare(value)) {
481 QwScaler* scaler = dynamic_cast<QwScaler*>(value);
482 for (size_t i = 0; i < fScaler.size(); i++) {
483 fScaler.at(i)->AccumulateRunningSum(scaler->fScaler.at(i), count, ErrorMask);
484 }
485 }
486}
Bool_t Compare(VQwSubsystem *source)
Definition QwScaler.cc:558
QwScaler()
Private default constructor (not implemented, will throw linker error on use)

References Compare(), fScaler, QwScaler(), and VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ ApplySingleEventCuts()

Bool_t QwScaler::ApplySingleEventCuts ( )
overridevirtual

Apply the single event cuts.

Implements VQwSubsystemParity.

Definition at line 516 of file QwScaler.cc.

517{
518 return true;
519}

◆ CalculateRunningAverage()

void QwScaler::CalculateRunningAverage ( )
overridevirtual

Calculate running averages for all scaler channels.

Implements VQwSubsystemParity.

Definition at line 504 of file QwScaler.cc.

505{
506 for (size_t i = 0; i < fScaler.size(); i++) {
507 fScaler.at(i)->CalculateRunningAverage();
508 }
509}

References fScaler.

◆ CheckForBurpFail()

Bool_t QwScaler::CheckForBurpFail ( const VQwSubsystem * subsys)
inlineoverridevirtual

Report the number of events failed due to HW and event cut failures.

Implements VQwSubsystemParity.

Definition at line 105 of file QwScaler.h.

105 {
106 //QwError << "************* test inside Scaler *****************" << QwLog::endl;
107 return kFALSE;
108 };

References VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ ClearEventData()

void QwScaler::ClearEventData ( )
overridevirtual

Clear event data for all scaler channels and reset good event count.

Implements VQwSubsystem.

Definition at line 281 of file QwScaler.cc.

282{
283 // Clear all scaler channels
284 for (size_t i = 0; i < fScaler.size(); i++) {
285 fScaler.at(i)->ClearEventData();
286 }
287 // Reset good event count
288 fGoodEventCount = 0;
289}
Int_t fGoodEventCount
Definition QwScaler.h:133

References fGoodEventCount, and fScaler.

◆ Compare()

Bool_t QwScaler::Compare ( VQwSubsystem * value)

Compare two scaler objects

Parameters
valueObject to compare with
Returns
kTRUE if the object is equal

Definition at line 558 of file QwScaler.cc.

559{
560 // Immediately fail on null objects
561 if (value == 0) return kFALSE;
562
563 // Continue testing on actual object
564 Bool_t result = kTRUE;
565 if (typeid(*value) != typeid(*this)) {
566 result = kFALSE;
567
568 } else {
569 QwScaler* input = dynamic_cast<QwScaler*> (value);
570 if (input->fScaler.size() != fScaler.size()) {
571 result = kFALSE;
572 }
573 }
574 return result;
575}

References fScaler, QwScaler(), and VQwSubsystem::VQwSubsystem().

Referenced by AccumulateRunningSum(), DeaccumulateRunningSum(), operator+=(), operator-=(), operator=(), and Ratio().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ConstructBranch() [1/2]

void QwScaler::ConstructBranch ( TTree * tree,
TString & prefix )
inlineoverridevirtual

Construct the branch and tree vector.

Construct the branches for this subsystem.

Parameters
treeOutput ROOT tree.
prefixName prefix for all branch names.

Implements VQwSubsystem.

Definition at line 78 of file QwScaler.h.

78{ };

◆ ConstructBranch() [2/2]

void QwScaler::ConstructBranch ( TTree * tree,
TString & prefix,
QwParameterFile & trim_file )
inlineoverridevirtual

Construct the branch and tree vector based on the trim file.

Construct the branches for this subsystem using a trim file.

Parameters
treeOutput ROOT tree.
prefixName prefix for all branch names.
trim_fileTrim file describing which branches to construct.

Implements VQwSubsystem.

Definition at line 79 of file QwScaler.h.

79{ };

◆ ConstructBranchAndVector() [1/2]

virtual void VQwSubsystem::ConstructBranchAndVector ( TTree * tree,
QwRootTreeBranchVector & values )
inlinevirtual

Construct the branch and tree vector.

Reimplemented from VQwSubsystem.

Definition at line 303 of file VQwSubsystem.h.

303 {
304 TString tmpstr("");
305 ConstructBranchAndVector(tree,tmpstr,values);
306 };
void ConstructBranchAndVector(TTree *tree, TString &prefix, QwRootTreeBranchVector &values) override
Definition QwScaler.cc:376

◆ ConstructBranchAndVector() [2/2]

void QwScaler::ConstructBranchAndVector ( TTree * tree,
TString & prefix,
QwRootTreeBranchVector & values )
overridevirtual

Construct TTree branches and backing vectors for all scaler channels.

Implements VQwSubsystem.

Definition at line 376 of file QwScaler.cc.

377{
378 for (size_t i = 0; i < fScaler.size(); i++) {
379 fScaler.at(i)->ConstructBranchAndVector(tree, prefix, values);
380 }
381}

References fScaler.

◆ ConstructHistograms() [1/4]

virtual void VQwSubsystem::ConstructHistograms ( )
inlinevirtual

Construct the histograms for this subsystem.

Reimplemented from VQwSubsystem.

Definition at line 270 of file VQwSubsystem.h.

270 {
271 TString tmpstr("");
272 ConstructHistograms((TDirectory*) NULL, tmpstr);
273 };
virtual void ConstructHistograms()
Construct the histograms for this subsystem.

◆ ConstructHistograms() [2/4]

virtual void VQwSubsystem::ConstructHistograms ( TDirectory * folder)
inlinevirtual

Construct the histograms for this subsystem in a folder.

Reimplemented from VQwSubsystem.

Definition at line 275 of file VQwSubsystem.h.

275 {
276 TString tmpstr("");
277 ConstructHistograms(folder, tmpstr);
278 };

◆ ConstructHistograms() [3/4]

void QwScaler::ConstructHistograms ( TDirectory * folder,
TString & prefix )
overridevirtual

Construct histograms for all scaler channels.

Implements VQwSubsystem.

Definition at line 360 of file QwScaler.cc.

361{
362 for(size_t i = 0; i < fScaler.size(); i++) {
363 fScaler.at(i)->ConstructHistograms(folder, prefix);
364 }
365}

References fScaler.

◆ ConstructHistograms() [4/4]

virtual void VQwSubsystem::ConstructHistograms ( TString & prefix)
inlinevirtual

Construct the histograms for this subsystem with a prefix.

Reimplemented from VQwSubsystem.

Definition at line 280 of file VQwSubsystem.h.

280 {
281 ConstructHistograms((TDirectory*) NULL, prefix);
282 };

◆ DeaccumulateRunningSum()

void QwScaler::DeaccumulateRunningSum ( VQwSubsystem * value,
Int_t ErrorMask = 0xFFFFFFF )
overridevirtual

Deaccumulate running sums for all scaler channels.

Implements VQwSubsystemParity.

Definition at line 491 of file QwScaler.cc.

492{
493 if (Compare(value)) {
494 QwScaler* scaler = dynamic_cast<QwScaler*>(value);
495 for (size_t i = 0; i < fScaler.size(); i++) {
496 fScaler.at(i)->DeaccumulateRunningSum(scaler->fScaler.at(i), ErrorMask);
497 }
498 }
499}

References Compare(), fScaler, QwScaler(), and VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ DefineOptions()

void QwScaler::DefineOptions ( QwOptions & options)
static

Define command-line options for scaler subsystem (placeholder).

Definition at line 26 of file QwScaler.cc.

27{
28 // Define command line options
29}

◆ FillHistograms()

void QwScaler::FillHistograms ( )
overridevirtual

Fill histograms for all scaler channels.

Implements VQwSubsystem.

Definition at line 368 of file QwScaler.cc.

369{
370 for(size_t i = 0; i < fScaler.size(); i++) {
371 fScaler.at(i)->FillHistograms();
372 }
373}

References fScaler.

◆ FillTreeVector()

void QwScaler::FillTreeVector ( QwRootTreeBranchVector & values) const
overridevirtual

Fill tree vector with current scaler channel values.

Implements VQwSubsystem.

Definition at line 384 of file QwScaler.cc.

385{
386 for(size_t i = 0; i < fScaler.size(); i++) {
387 fScaler.at(i)->FillTreeVector(values);
388 }
389}

References fScaler.

◆ GetChannelIndex()

Int_t QwScaler::GetChannelIndex ( TString channelName,
UInt_t module_number )

Definition at line 547 of file QwScaler.cc.

548{
549 return 0;
550}

◆ GetDataForChannelInModule()

Double_t QwScaler::GetDataForChannelInModule ( Int_t modnum,
Int_t channum )
inline

Definition at line 123 of file QwScaler.h.

123 {
124 Int_t index = fModuleChannel_Map[std::pair<Int_t,Int_t>(modnum,channum)];
125 return fScaler.at(index)->GetValue();
126 }
Module_Channel_to_Scaler_Map_t fModuleChannel_Map
Definition QwScaler.h:141

References fModuleChannel_Map, and fScaler.

◆ GetEventcutErrorFlag()

UInt_t QwScaler::GetEventcutErrorFlag ( )
overridevirtual

Return the error flag to the top level routines related to stability checks and ErrorFlag updates.

Implements VQwSubsystemParity.

Definition at line 542 of file QwScaler.cc.

543{
544 return 0;
545}

◆ GetRawChannelArray()

Double_t * QwScaler::GetRawChannelArray ( )

◆ IncrementErrorCounters()

void QwScaler::IncrementErrorCounters ( )
overridevirtual

Increment the error counters.

Implements VQwSubsystemParity.

Definition at line 534 of file QwScaler.cc.

535{
536}

◆ LoadChannelMap()

Int_t QwScaler::LoadChannelMap ( TString mapfile)
overridevirtual

Load scaler channel map from file, creating channels and configuring normalization, headers, differential mode, and buffer offsets.

Parameters
mapfilePath to the channel map file.
Returns
0 on success.

Implements VQwSubsystem.

Definition at line 67 of file QwScaler.cc.

68{
69 // Normalization channel (register default token "1")
70 const TString default_norm_channel = "1";
71 fName_Map[default_norm_channel] = -1;
72 Name_to_Scaler_Map_t::iterator current_norm_channel = fName_Map.find(default_norm_channel);
73 double current_norm_factor = 1;
74 // Map with normalizations
75 std::vector<Name_to_Scaler_Map_t::iterator> norm_channel;
76 std::vector<double> norm_factor;
77
78 // Include header for this scaler bank
79 UInt_t header = 1;
80 UInt_t buffer_offset = 0;
81
82 // By default the scalers are not differential
83 Bool_t differential = false;
84
85 // Open the file
86 QwParameterFile mapstr(mapfile.Data());
87 fDetectorMaps.insert(mapstr.GetParamFileNameContents());
88 mapstr.EnableGreediness();
89 mapstr.SetCommentChars("!");
90 mapstr.AddBreakpointKeyword("norm");
91 mapstr.AddBreakpointKeyword("header");
92 mapstr.AddBreakpointKeyword("differential");
93 mapstr.AddBreakpointKeyword("scaler_buffer_offset");
94
95 while (mapstr.ReadNextLine()) {
97
98 mapstr.TrimComment(); // Remove everything after a comment character.
99 mapstr.TrimWhitespace(); // Get rid of leading and trailing whitespace
100 if (mapstr.LineIsEmpty()) continue;
101
102 TString varname, varvalue;
103 if (mapstr.HasVariablePair("=", varname, varvalue)) {
104 // This is a declaration line. Decode it.
105 varname.ToLower();
106 UInt_t value = QwParameterFile::GetUInt(varvalue);
107 if (varname == "norm") {
108 // Normalization line of format: norm = [ 1 | channel / factor ]
109 string dummy = mapstr.GetNextToken("=");
110 string channame = mapstr.GetNextToken("/");
111 string channorm = mapstr.GetNextToken("/");
112 if (fName_Map.count(channame) == 0) {
113 // assign a temporarily pointer
114 fName_Map[channame] = -1;
115 }
116 current_norm_channel = fName_Map.find(channame);
117 try {
118 current_norm_factor = lexical_cast<double>(channorm);
119 } catch (boost::bad_lexical_cast&) {
120 current_norm_factor = 1;
121 }
122 QwMessage << "Normalization channel: " << channame << QwLog::endl;
123 QwMessage << "Normalization factor: " << current_norm_factor << QwLog::endl;
124 } else if (varname == "scaler_buffer_offset") {
125 // Buffer offset
126 buffer_offset = value;
127 } else if (varname == "header") {
128 // Header for this block of channels
129 header = value;
130 QwMessage << "Number of scaler header words: " << header << QwLog::endl;
131 if (header > 32)
132 QwError << "Is that really what you want?" << QwLog::endl;
133 } else if (varname == "differential") {
134 // Differential scaler
135 try {
136 differential = lexical_cast<bool>(varvalue);
137 } catch (boost::bad_lexical_cast&) {
138 differential = false;
139 }
140 if (differential)
141 QwMessage << "Subsequent scalers will be differential." << QwLog::endl;
142 else
143 QwMessage << "Subsequent scalers will not be differential." << QwLog::endl;
144 }
145
146 } else {
147
148 // Break this line into tokens to process it.
149 TString modtype = mapstr.GetTypedNextToken<TString>();
150 UInt_t modnum = mapstr.GetTypedNextToken<UInt_t>();
151 UInt_t channum = mapstr.GetTypedNextToken<UInt_t>();
152 TString dettype = mapstr.GetTypedNextToken<TString>();
153 TString keyword = mapstr.GetTypedNextToken<TString>();
154 modtype.ToUpper();
155 dettype.ToUpper();
156
157 UInt_t offset = 0;
158 if (modtype == "SIS3801" || modtype == "SIS3801D24" || modtype == "SIS3801D32") {
159 offset = QwSIS3801D24_Channel::GetBufferOffset(modnum, channum, header)+buffer_offset;
160 } else if (modtype == "STR7200") {
161 offset = QwSIS3801D32_Channel::GetBufferOffset(modnum, channum, header)+buffer_offset;
162 } else {
163 QwError << "Unrecognized module type " << modtype << QwLog::endl;
164 continue;
165 }
166
167 // Register data channel type
169 if (modnum >= fSubbank_Map[subbank].size())
170 fSubbank_Map[subbank].resize(modnum+1);
171 if (channum >= fSubbank_Map[subbank].at(modnum).size())
172 fSubbank_Map[subbank].at(modnum).resize(channum+1,-1);
173 // Add scaler channel
174 if (fSubbank_Map[subbank].at(modnum).at(channum) < 0) {
175 QwVerbose << "Registering " << modtype << " " << keyword
176 << std::hex
177 << " in ROC 0x" << fCurrentROC_ID << ", bank 0x" << fCurrentBank_ID
178 << std::dec
179 << " at mod " << modnum << ", chan " << channum
180 << QwLog::endl;
181 size_t index = fScaler.size();
182 VQwScaler_Channel* scaler = 0;
183 if (modtype == "SIS3801" || modtype == "SIS3801D24")
184 scaler = new QwSIS3801D24_Channel(keyword);
185 else if (modtype == "SIS3801D32")
186 scaler = new QwSIS3801D32_Channel(keyword);
187 else if (modtype == "STR7200")
188 scaler = new QwSTR7200_Channel(keyword);
189 else {
190 QwError << "Unrecognized module type " << modtype << QwLog::endl;
191 continue;
192 }
193
194 // Differential scaler
195 scaler->SetDifferentialScaler(differential);
196
197 // Register keyword to scaler channel
198 fName_Map[keyword] = index;
199 fSubbank_Map[subbank].at(modnum).at(channum) = index;
200 fModuleChannel_Map[std::pair<Int_t,Int_t>(modnum,channum)] = index;
201 // Store scaler
202 fScaler.push_back(scaler);
203 fNorm.push_back(std::pair<VQwScaler_Channel*,double>(0,1));
204 fBufferOffset.push_back(offset);
205 // Store current normalization
206 norm_channel.push_back(current_norm_channel);
207 norm_factor.push_back(current_norm_factor);
208 }
209 }
210 }
211
212 // Check for normalization names without actual channels
213 for (Name_to_Scaler_Map_t::iterator iter = fName_Map.begin(); iter != fName_Map.end(); iter++) {
214 if (iter->second == -1 && iter->first != default_norm_channel) {
215 QwError << "Normalization channel " << iter->first << " not found!" << QwLog::endl;
216 }
217 }
218
219 // Fill normalization structure
220 fNorm.resize(fScaler.size());
221 for (size_t i = 0; i < fScaler.size(); i++) {
222 Int_t norm_index = norm_channel.at(i)->second;
223 if (norm_index < 0) {
224 // No normalization
225 fNorm.at(i).first = 0;
226 fNorm.at(i).second = 1;
227 } else {
228 // Normalization
229 fNorm.at(i).first = fScaler.at(norm_index);
230 fNorm.at(i).second = norm_factor.at(i);
231 // Prevent corruption of normalization channel itself
232 fNorm.at(norm_index).first = 0;
233 fNorm.at(norm_index).second = 1;
234 }
235 }
236
237 mapstr.Close(); // Close the file (ifstream)
238 return 0;
239}
class QwScaler_Channel< 0xffffffff, 0 > QwSTR7200_Channel
#define QwVerbose
Predefined log drain for verbose messages.
Definition QwLog.h:54
#define QwError
Predefined log drain for errors.
Definition QwLog.h:39
#define QwMessage
Predefined log drain for regular messages.
Definition QwLog.h:49
static std::ostream & endl(std::ostream &)
End of the line.
Definition QwLog.cc:297
static UInt_t GetUInt(const TString &varvalue)
virtual void SetDifferentialScaler(Bool_t diff)
BankID_t fCurrentBank_ID
Bank ID (and Marker word) that is currently being processed;.
Int_t GetSubbankIndex() const
void RegisterRocBankMarker(QwParameterFile &mapstr)
std::map< TString, TString > fDetectorMaps
Map of file name to full path or content.
ROCID_t fCurrentROC_ID
ROC ID that is currently being processed.
Name_to_Scaler_Map_t fName_Map
Definition QwScaler.h:145
std::vector< std::pair< VQwScaler_Channel *, double > > fNorm
Definition QwScaler.h:150
std::vector< UInt_t > fBufferOffset
Definition QwScaler.h:149
Subbank_to_Scaler_Map_t fSubbank_Map
Definition QwScaler.h:137

References QwParameterFile::AddBreakpointKeyword(), QwParameterFile::Close(), QwParameterFile::EnableGreediness(), QwLog::endl(), fBufferOffset, VQwSubsystem::fCurrentBank_ID, VQwSubsystem::fCurrentROC_ID, VQwSubsystem::fDetectorMaps, fModuleChannel_Map, fName_Map, fNorm, fScaler, fSubbank_Map, QwParameterFile::GetNextToken(), QwParameterFile::GetParamFileNameContents(), VQwSubsystem::GetSubbankIndex(), QwParameterFile::GetTypedNextToken(), QwParameterFile::GetUInt(), QwParameterFile::HasVariablePair(), QwParameterFile::LineIsEmpty(), QwError, QwMessage, QwVerbose, QwParameterFile::ReadNextLine(), VQwSubsystem::RegisterRocBankMarker(), QwParameterFile::SetCommentChars(), VQwScaler_Channel::SetDifferentialScaler(), QwParameterFile::TrimComment(), and QwParameterFile::TrimWhitespace().

+ Here is the call graph for this function:

◆ LoadEventCuts()

Int_t QwScaler::LoadEventCuts ( TString )
overridevirtual

Optional event cut file.

Reimplemented from VQwSubsystem.

Definition at line 511 of file QwScaler.cc.

512{
513 return 0;
514}

◆ LoadInputParameters()

Int_t QwScaler::LoadInputParameters ( TString mapfile)
overridevirtual

Load pedestals and calibration factors for scaler channels.

Returns
0 on success.

Implements VQwSubsystem.

Definition at line 246 of file QwScaler.cc.

247{
248 // Open the file
249 QwParameterFile mapstr(mapfile.Data());
250 fDetectorMaps.insert(mapstr.GetParamFileNameContents());
251 while (mapstr.ReadNextLine()) {
252 mapstr.TrimComment(); // Remove everything after a comment character
253 mapstr.TrimWhitespace(); // Get rid of leading and trailing spaces
254 if (mapstr.LineIsEmpty()) continue;
255
256 TString varname = mapstr.GetTypedNextToken<TString>(); // name of the channel
257 varname.ToLower();
258 varname.Remove(TString::kBoth,' ');
259 Double_t varped = mapstr.GetTypedNextToken<Double_t>(); // value of the pedestal
260 Double_t varcal = mapstr.GetTypedNextToken<Double_t>(); // value of the calibration factor
261 QwVerbose << varname << ": " << QwLog::endl;
262
263 if (fName_Map.count(varname) != 0) {
264 Int_t index = fName_Map[varname];
265 QwMessage << "Parameters scaler channel " << varname << ": "
266 << "ped = " << varped << ", "
267 << "cal = " << varcal << QwLog::endl;
268 fScaler[index]->SetPedestal(varped);
269 fScaler[index]->SetCalibrationFactor(varcal);
270 }
271
272 } // end of loop reading all lines of the pedestal file
273
274 mapstr.Close(); // Close the file (ifstream)
275 return 0;
276}

References QwParameterFile::Close(), QwLog::endl(), VQwSubsystem::fDetectorMaps, fName_Map, fScaler, QwParameterFile::GetParamFileNameContents(), QwParameterFile::GetTypedNextToken(), QwParameterFile::LineIsEmpty(), QwMessage, QwVerbose, QwParameterFile::ReadNextLine(), QwParameterFile::TrimComment(), and QwParameterFile::TrimWhitespace().

+ Here is the call graph for this function:

◆ operator+=()

VQwSubsystem & QwScaler::operator+= ( VQwSubsystem * value)
overridevirtual

Addition-assignment: element-wise addition of scaler channels.

Implements VQwSubsystemParity.

Definition at line 425 of file QwScaler.cc.

426{
427 if (Compare(value)) {
428 QwScaler* input = dynamic_cast<QwScaler*>(value);
429 for (size_t i = 0; i < fScaler.size(); i++) {
430 *(fScaler.at(i)) += *(input->fScaler.at(i));
431 }
432 }
433 return *this;
434}

References Compare(), fScaler, QwScaler(), and VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ operator-=()

VQwSubsystem & QwScaler::operator-= ( VQwSubsystem * value)
overridevirtual

Subtraction-assignment: element-wise subtraction of scaler channels.

Implements VQwSubsystemParity.

Definition at line 439 of file QwScaler.cc.

440{
441 if (Compare(value)) {
442 QwScaler* input = dynamic_cast<QwScaler *> (value);
443 for (size_t i = 0; i < fScaler.size(); i++) {
444 *(fScaler.at(i)) -= *(input->fScaler.at(i));
445 }
446 }
447 return *this;
448}

References Compare(), fScaler, QwScaler(), and VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ operator=()

VQwSubsystem & QwScaler::operator= ( VQwSubsystem * value)
overridevirtual

Assignment operator: copy all scaler channel values.

Implements VQwSubsystemParity.

Definition at line 410 of file QwScaler.cc.

411{
412 if (Compare(value)) {
414 QwScaler* input = dynamic_cast<QwScaler*>(value);
415 for (size_t i = 0; i < fScaler.size(); i++) {
416 *(fScaler.at(i)) = *(input->fScaler.at(i));
417 }
418 }
419 return *this;
420}
virtual VQwSubsystem & operator=(VQwSubsystem *value)
Assignment Note: Must be called at the beginning of all subsystems routine call to operator=(VQwSubsy...

References Compare(), fScaler, VQwSubsystem::operator=(), QwScaler(), and VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ PrintErrorCounters()

void QwScaler::PrintErrorCounters ( ) const
overridevirtual

Implements VQwSubsystemParity.

Definition at line 538 of file QwScaler.cc.

539{
540}

◆ PrintInfo()

void QwScaler::PrintInfo ( ) const
overridevirtual

Print some debugging output for the subcomponents

Reimplemented from VQwSubsystem.

Definition at line 580 of file QwScaler.cc.

581{
583
584 QwOut << " there are " << fScaler.size() << " scaler channels" << QwLog::endl;
585
586 for (size_t i = 0; i < fScaler.size(); i++) {
587 QwOut << " scaler " << i << ": ";
588 fScaler.at(i)->PrintInfo();
589 }
590}
#define QwOut
Predefined log drain for explicit output.
Definition QwLog.h:34
virtual void PrintInfo() const
Print some information about the subsystem.

References QwLog::endl(), fScaler, VQwSubsystem::PrintInfo(), and QwOut.

+ Here is the call graph for this function:

◆ PrintValue()

void QwScaler::PrintValue ( ) const
overridevirtual

Print the value for the subcomponents

Reimplemented from VQwSubsystemParity.

Definition at line 595 of file QwScaler.cc.

596{
597 QwMessage << "=== QwScaler: " << GetName() << " ===" << QwLog::endl;
598 for(size_t i = 0; i < fScaler.size(); i++) {
599 fScaler.at(i)->PrintValue();
600 }
601}
TString GetName() const

References QwLog::endl(), fScaler, VQwSubsystem::GetName(), and QwMessage.

+ Here is the call graph for this function:

◆ ProcessConfigurationBuffer()

Int_t QwScaler::ProcessConfigurationBuffer ( const ROCID_t roc_id,
const BankID_t bank_id,
UInt_t * buffer,
UInt_t num_words )
overridevirtual

Process the configuration buffer for this subsystem

Parameters
roc_idROC ID
bank_idSubbank ID
bufferBuffer to read from
num_wordsNumber of words left in buffer
Returns
Number of words read

Implements VQwSubsystem.

Definition at line 299 of file QwScaler.cc.

300{
301 return 0;
302}

◆ ProcessEvBuffer()

Int_t QwScaler::ProcessEvBuffer ( const ROCID_t roc_id,
const BankID_t bank_id,
UInt_t * buffer,
UInt_t num_words )
overridevirtual

Process raw buffer data, routing to registered scaler channels.

Returns
Number of words consumed from the buffer.

Implements VQwSubsystem.

Definition at line 309 of file QwScaler.cc.

310{
311 // TODO fix :-)
312
313 UInt_t words_read = 0;
314
315 // Get the subbank index (or -1 when no match)
316 Int_t subbank = GetSubbankIndex(roc_id, bank_id);
317
318 if (subbank >= 0 && num_words > 0) {
319
320 // Read header word
321 //UInt_t num_events = buffer[words_read];
322 words_read++;
323 // TODO Multiscaler functionality
324
325 // Read scalers
326 for (size_t modnum = 0; modnum < fSubbank_Map[subbank].size(); modnum++) {
327 for (size_t channum = 0; channum < fSubbank_Map[subbank].at(modnum).size(); channum++) {
328 Int_t index = fSubbank_Map[subbank].at(modnum).at(channum);
329 if (index >= 0) {
330 UInt_t offset = fBufferOffset.at(index);
331 words_read += fScaler[index]->ProcessEvBuffer(&(buffer[offset]), num_words - offset);
332 }
333 }
334 }
335 words_read = num_words;
336
337 }
338
339 return words_read;
340}

References fBufferOffset, fScaler, fSubbank_Map, and VQwSubsystem::GetSubbankIndex().

+ Here is the call graph for this function:

◆ ProcessEvent()

void QwScaler::ProcessEvent ( )
overridevirtual

Process all scaler channels and apply normalization if configured.

Implements VQwSubsystem.

Definition at line 343 of file QwScaler.cc.

344{
345 // Process the event
346 for (size_t i = 0; i < fScaler.size(); i++) {
347 fScaler.at(i)->ProcessEvent();
348 }
349
350 // Normalization
351 for (size_t i = 0; i < fScaler.size(); i++) {
352 if (fNorm.at(i).first) {
353 fScaler.at(i)->Scale(fNorm.at(i).second);
354 fScaler.at(i)->DivideBy(*(fNorm.at(i).first));
355 }
356 }
357}

References fNorm, and fScaler.

◆ ProcessOptions()

void QwScaler::ProcessOptions ( QwOptions & options)
overridevirtual

Process command-line options for scaler subsystem (placeholder).

Reimplemented from VQwSubsystem.

Definition at line 32 of file QwScaler.cc.

33{
34 // Handle command line options
35}

◆ Ratio()

void QwScaler::Ratio ( VQwSubsystem * numer,
VQwSubsystem * denom )
overridevirtual

Compute element-wise ratios of scaler channels.

Implements VQwSubsystemParity.

Definition at line 454 of file QwScaler.cc.

455{
456 if (Compare(numer) && Compare(denom)) {
457 QwScaler* innumer = dynamic_cast<QwScaler*>(numer);
458 QwScaler* indenom = dynamic_cast<QwScaler*>(denom);
459 for (size_t i = 0; i < fScaler.size(); i++) {
460 fScaler.at(i)->Ratio(*(innumer->fScaler.at(i)), *(indenom->fScaler.at(i)));
461 }
462 }
463}

References Compare(), fScaler, QwScaler(), and VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

◆ Scale()

void QwScaler::Scale ( Double_t factor)
overridevirtual

Scale all scaler channels by a common factor.

Implements VQwSubsystemParity.

Definition at line 468 of file QwScaler.cc.

469{
470 for (size_t i = 0; i < fScaler.size(); i++) {
471 fScaler.at(i)->Scale(factor);
472 }
473}

References fScaler.

◆ SingleEventCuts()

Bool_t QwScaler::SingleEventCuts ( )

◆ UpdateErrorFlag()

void QwScaler::UpdateErrorFlag ( const VQwSubsystem * ev_error)
inlineoverridevirtual

update the error flag in the subsystem level from the top level routines related to stability checks. This will uniquely update the errorflag at each channel based on the error flag in the corresponding channel in the ev_error subsystem

Implements VQwSubsystemParity.

Definition at line 115 of file QwScaler.h.

115 {
116 };

References VQwSubsystem::VQwSubsystem().

+ Here is the call graph for this function:

Field Documentation

◆ fBufferOffset

std::vector< UInt_t > QwScaler::fBufferOffset
private

Definition at line 149 of file QwScaler.h.

Referenced by LoadChannelMap(), and ProcessEvBuffer().

◆ fGoodEventCount

Int_t QwScaler::fGoodEventCount
private

Definition at line 133 of file QwScaler.h.

Referenced by ClearEventData().

◆ fModuleChannel_Map

Module_Channel_to_Scaler_Map_t QwScaler::fModuleChannel_Map
private

Definition at line 141 of file QwScaler.h.

Referenced by GetDataForChannelInModule(), and LoadChannelMap().

◆ fName_Map

Name_to_Scaler_Map_t QwScaler::fName_Map
private

Definition at line 145 of file QwScaler.h.

Referenced by LoadChannelMap(), and LoadInputParameters().

◆ fNorm

std::vector< std::pair< VQwScaler_Channel*, double > > QwScaler::fNorm
private

Definition at line 150 of file QwScaler.h.

Referenced by LoadChannelMap(), and ProcessEvent().

◆ fScaler

◆ fSubbank_Map

Subbank_to_Scaler_Map_t QwScaler::fSubbank_Map
private

Definition at line 137 of file QwScaler.h.

Referenced by LoadChannelMap(), and ProcessEvBuffer().


The documentation for this class was generated from the following files: