25#include <TEventList.h>
52 std::pair<EQwHandleType,std::string> type_name;
66 if (primary_token ==
"iv") {
71 else if (primary_token ==
"dv") {
76 else if (primary_token ==
"treetype") {
80 QwError <<
"Function LoadChannelMap in LRBCorrector.cc read in invalid primary_token." <<
QwLog::endl;
87 std::string SlopeFile = SlopeFilePath + SlopeFileName;
88 TString corFileName(SlopeFile);
91 TFile* corFile =
new TFile(corFileName);
92 if (! corFile->IsOpen()) {
98 TH1 *dvnames = (TH1 *) corFile->Get(
"DVname");
105 TString name = dvnames->GetXaxis()->GetBinLabel(i+1);
106 name.Remove(0, name.First(
"_") + 1);
108 QwWarning <<
"DV name expected differs from found: "
117 TH1 *ivnames = (TH1 *) corFile->Get(
"IVname");
124 TString name = ivnames->GetXaxis()->GetBinLabel(i+1);
125 name.Remove(0, name.First(
"_") + 1);
127 QwWarning <<
"IV name expected differs from found: "
136 TKey* key = corFile->GetKey(
"slopes");
144 for (Short_t cycle=1; cycle<=
fLastCycle; cycle++){
145 TKey* key_cycle = corFile->GetKey(
"slopes", cycle);
146 TMatrixD *alphasM = (TMatrixD *) key_cycle->ReadObj();
153 QwWarning <<
"Slope matrix has wrong number of rows: "
160 QwWarning <<
"Slope matrix has wrong number of cols: "
202 QwWarning <<
"Independent variable for corrector has unknown type."
#define QwError
Predefined log drain for errors.
#define QwWarning
Predefined log drain for warnings.
#define QwMessage
Predefined log drain for regular messages.
Parameter file parsing and management.
Definition of the pure virtual base class of all data elements.
Decoding and management for VQWK ADC channels (6x32-bit datawords)
Linear regression blue corrector data handler class.
Helicity pattern analysis and management.
const VQwHardwareChannel * RequestExternalPointer(const TString &name) const
const VQwHardwareChannel * RequestExternalPointer(const TString &name) const
Retrieve a direct pointer to an external variable Searches for the named variable in external subsyst...
static std::ostream & endl(std::ostream &)
End of the line.
Configuration file parser with flexible tokenization and search capabilities.
Bool_t PopValue(const std::string keyname, T &retvalue)
void TrimWhitespace(TString::EStripType head_tail=TString::kBoth)
void TrimComment(const char commentchar)
std::string GetNextToken(const std::string &separatorchars)
Get next token as a string.
Abstract base for concrete hardware channels implementing dual-operator pattern.
std::map< Short_t, std::vector< std::vector< Double_t > > > fSensitivity
std::string fAlphaFilePath
std::string fAlphaFileBase
void ParseConfigFile(QwParameterFile &file) override
std::vector< std::string > fIndependentName
void ProcessData() override
Int_t ConnectChannels(QwSubsystemArrayParity &asym, QwSubsystemArrayParity &diff) override
std::vector< EQwHandleType > fIndependentType
std::vector< const VQwHardwareChannel * > fIndependentVar
std::string fAlphaFileSuff
std::vector< std::string > fIndependentFull
Subsystem array container specialized for parity analysis with asymmetry calculations.
void CalcOneOutput(const VQwHardwareChannel *dv, VQwHardwareChannel *output, std::vector< const VQwHardwareChannel * > &ivs, std::vector< Double_t > &sens)
std::vector< std::string > fDependentFull
virtual void ParseConfigFile(QwParameterFile &file)
std::vector< const VQwHardwareChannel * > fDependentVar
VQwDataHandler(const TString &name)
std::string ParseSeparator
Short_t fBurstCounter
When a datahandler array is processed, handlers with lower priority will be processed before handlers...
std::vector< VQwHardwareChannel * > fOutputVar
std::pair< EQwHandleType, std::string > ParseHandledVariable(const std::string &variable)
std::vector< EQwHandleType > fDependentType
std::vector< std::string > fDependentName
virtual Int_t ConnectChannels(QwSubsystemArrayParity &, QwSubsystemArrayParity &asym, QwSubsystemArrayParity &diff)