JAPAn
Just Another Parity Analyzer
Loading...
Searching...
No Matches
QwPromptSummary.h
Go to the documentation of this file.
1/*!
2 * \file QwPromptSummary.h
3 * \brief Prompt summary data management
4 * \author jhlee@jlab.org
5 * \date 2011-12-16
6 */
7
8#pragma once
9
10#include <iostream>
11#include <fstream>
12
13#include "TObject.h"
14#include "TClonesArray.h"
15#include "TList.h"
16#include "TString.h"
17
18#include "TROOT.h"
19#include "QwOptions.h"
20#include "QwParameterFile.h"
21/**
22 * \class QwPromptSummary
23 * \ingroup QwAnalysis
24 *
25 * \brief
26 *
27 */
28
29class PromptSummaryElement : public TObject
30{
31 public:
33 PromptSummaryElement(TString name);
34 ~PromptSummaryElement() override;
35 // friend std::ostream& operator<<(std::ostream& os, const PromptSummaryElement &ps_element);
36
37 void FillData(Double_t yield, Double_t yield_err, Double_t yield_width, TString yield_unit,
38 Double_t asym_diff, Double_t asym_diff_err, Double_t asym_diff_width, TString asym_diff_unit);
39
40 void SetName (const TString in) {fElementName=in;};
41 TString GetName () {return fElementName;};
42
43
44 // Yield : fHardwareBlockSumM2
45 // YieldError : fHardwareBlockSumError = sqrt(fHardwareBlockSumM2) / fGoodEventCount;
46 //void SetNumGoodEvents (const Double_t in) { fNumGoodEvents=in;};
47
48 void SetYield (const Double_t in) { fYield=in; };
49 void SetYieldError (const Double_t in) { fYieldError=in; };
50 void SetYieldWidth (const Double_t in) { fYieldWidth=in; };
51 void SetYieldUnit (const TString in) { fYieldUnit=in; };
52
53 // Asymmetry :
54 void SetAsymmetry (const Double_t in) { fAsymDiff=in; };
55 void SetAsymmetryError (const Double_t in) { fAsymDiffError=in; };
56 void SetAsymmetryWidth (const Double_t in) { fAsymDiffWidth=in; };
57 void SetAsymmetryUnit (const TString in) { fAsymDiffUnit=in; };
58
59
60 // Difference :
61 void SetDifference (const Double_t in) { fAsymDiff=in; };
62 void SetDifferenceError (const Double_t in) { fAsymDiffError=in; };
63 void SetDifferenceWidth (const Double_t in) { fAsymDiffWidth=in; };
64 void SetDifferenceUnit (const TString in) { fAsymDiffUnit=in; };
65
66 // Yield
67 Double_t GetNumGoodEvents () {
68 // Returns the number of entries corresponding to the asymmetry error/width ratio
69 if(fAsymDiffError!=0){
70 Double_t temp = (fAsymDiffWidth/fAsymDiffError);
71 return temp*temp;
72 }else{
73 return 0;
74 }
75 };
76
77 Double_t GetYield () { return fYield; };
78 Double_t GetYieldError () { return fYieldError; };
79 Double_t GetYieldWidth () { return fYieldWidth; };
80 TString GetYieldUnit () { return fYieldUnit; };
81
82 // Asymmetry :
83 Double_t GetAsymmetry () { return fAsymDiff; };
84 Double_t GetAsymmetryError() { return fAsymDiffError; };
85 Double_t GetAsymmetryWidth() { return fAsymDiffWidth; };
86 TString GetAsymmetryUnit () { return fAsymDiffUnit; };
87
88
89 // Difference :
90 Double_t GetDifference () { return fAsymDiff; };
91 Double_t GetDifferenceError() { return fAsymDiffError; };
92 Double_t GetDifferenceWidth() { return fAsymDiffWidth; };
93 TString GetDifferenceUnit () { return fAsymDiffUnit; };
94
95 void Set(TString type, const Double_t a, const Double_t a_err, const Double_t a_width);
96
97 // void SetAsymmetryWidthError (const Double_t in) { fAsymmetryWidthError=in; };
98 // void SetAsymmetryWidthUnit (const TString in) { fAsymmetryWidthUnit=in; };
99
100
101 TString GetCSVSummary(TString type);
102 TString GetTextSummary();
103 //
104
105 // This is not sigma, but error defined in QwVQWK_Channel::CalculateRunningAverage() in QwVQWK_Channel.cc as follows
106 // fHardwareBlockSumError = sqrt(fHardwareBlockSumM2) / fGoodEventCount;
107 //
108 private:
109
111
113 Double_t fYield;
114 Double_t fYieldError;
115 Double_t fYieldWidth;
116 TString fYieldUnit;
117
118 Double_t fAsymDiff;
122
123 /* Double_t fAsymmetryWidth; */
124 /* Double_t fAsymmetryWidthError; */
125 /* TString fAsymmetryWidthUnit; */
126
128
129};
130
131
132class QwPromptSummary : public TObject
133{
134
135 public:
137 QwPromptSummary(Int_t run_number, Int_t runlet_number);
138 QwPromptSummary(Int_t run_number, Int_t runlet_number, const std::string& parameter_file);
139 virtual ~QwPromptSummary();
140
141 std::map<TString, PromptSummaryElement*> fElementList;
143
144 void SetRunNumber(const Int_t in) {fRunNumber = in;};
145 Int_t GetRunNumber() {return fRunNumber;};
146
147 void SetRunletNumber(const Int_t in) {fRunletNumber = in;};
149
150 void SetPatternSize(const Int_t in) { fPatternSize=in; };
151 Int_t GetPatternSize() { return fPatternSize; };
152
155
156 void FillDataInElement(TString name,
157 Double_t yield, Double_t yield_err, Double_t yield_width, TString yield_unit,
158 Double_t asym_diff, Double_t asym_diff_err, Double_t asym_diff_width, TString asym_diff_unit);
159
160 void FillYieldToElement(TString name, Double_t yield, Double_t yield_error, Double_t yield_width, TString yield_unit);
161 void FillAsymDiffToElement(TString name, Double_t asym_diff, Double_t asym_diff_err, Double_t asym_diff_width, TString asym_diff_unit);
162 // void FillDifferenceToElement(Double_t asym_diff, Double_t asym_diff_err, TString asym_diff_unit);
163
164 // void Print(const Option_t* options = 0) const;
165
166 void FillDoubleDifference(TString type, TString name1, TString name2);
167
168 Int_t GetSize() const {return fElementList.size();};
169 Int_t Size() const {return fElementList.size();};
170 Int_t HowManyElements() const {return fElementList.size();};
171
172
173 void PrintCSV(Int_t nEvents, TString start_time, TString end_time);
174 void PrintTextSummary();
175
176private:
177
178
180
181 TString PrintTextSummaryHeader();
182 TString PrintTextSummaryTailer();
183 TString PrintCSVHeader(Int_t nEvents, TString start_time, TString end_time);
184
185 void SetupElementList();
186 void LoadElementsFromParameterFile(const std::string& parameter_file);
188
191
193
195
196};
An options class which parses command line, config file and environment.
Parameter file parsing and management.
Configuration file parser with flexible tokenization and search capabilities.
void SetYield(const Double_t in)
void SetDifference(const Double_t in)
~PromptSummaryElement() override
Double_t GetDifferenceError()
void SetYieldWidth(const Double_t in)
void SetAsymmetryWidth(const Double_t in)
TString GetCSVSummary(TString type)
void SetYieldError(const Double_t in)
void SetAsymmetry(const Double_t in)
void SetName(const TString in)
void SetDifferenceUnit(const TString in)
void Set(TString type, const Double_t a, const Double_t a_err, const Double_t a_width)
void SetAsymmetryUnit(const TString in)
Double_t GetDifferenceWidth()
void SetDifferenceError(const Double_t in)
void SetAsymmetryError(const Double_t in)
void FillData(Double_t yield, Double_t yield_err, Double_t yield_width, TString yield_unit, Double_t asym_diff, Double_t asym_diff_err, Double_t asym_diff_width, TString asym_diff_unit)
void SetDifferenceWidth(const Double_t in)
ClassDefOverride(PromptSummaryElement, 0)
void SetYieldUnit(const TString in)
Int_t Size() const
void FillDataInElement(TString name, Double_t yield, Double_t yield_err, Double_t yield_width, TString yield_unit, Double_t asym_diff, Double_t asym_diff_err, Double_t asym_diff_width, TString asym_diff_unit)
virtual ~QwPromptSummary()
TString PrintTextSummaryTailer()
PromptSummaryElement * fReferenceElement
void SetRunNumber(const Int_t in)
void AddElement(PromptSummaryElement *in)
void SetPatternSize(const Int_t in)
TString PrintTextSummaryHeader()
void SetRunletNumber(const Int_t in)
void FillDoubleDifference(TString type, TString name1, TString name2)
void LoadElementsFromParameterFile(const std::string &parameter_file)
Int_t HowManyElements() const
PromptSummaryElement * GetElementByName(TString name)
TString PrintCSVHeader(Int_t nEvents, TString start_time, TString end_time)
ClassDefOverride(QwPromptSummary, 0)
Int_t GetSize() const
void FillYieldToElement(TString name, Double_t yield, Double_t yield_error, Double_t yield_width, TString yield_unit)
void FillAsymDiffToElement(TString name, Double_t asym_diff, Double_t asym_diff_err, Double_t asym_diff_width, TString asym_diff_unit)
void PrintCSV(Int_t nEvents, TString start_time, TString end_time)
std::map< TString, PromptSummaryElement * > fElementList