1 #ifndef __RATOutNtupleProc___
2 #define __RATOutNtupleProc___
4 #include <TTimeStamp.h>
8 #include <RAT/DS/FitResult.hh>
9 #include <RAT/DS/Run.hh>
10 #include <RAT/Processor.hh>
13 #include "Math/Types.h"
25 enum mc_pe_type { noise = 0, cherenkov = 1, scintillation = 2, reemission = 3, unknown = 4 };
39 virtual bool OpenFile(std::string theFilename);
41 virtual void SetI(std::string param,
int value);
42 virtual void SetS(std::string param, std::string value);
44 static ULong64_t TTimeStamp_to_UnixTime(TTimeStamp ts) {
45 const ULong64_t stonano = 1000000000;
46 return static_cast<ULong64_t
>(ts.GetSec()) * stonano +
static_cast<ULong64_t
>(ts.GetNanoSec());
48 virtual void EndOfRun(
DS::Run *run)
override;
51 virtual void AssignAdditionalAddresses(){};
52 virtual void AssignAdditionalMetaAddresses(){};
54 virtual void FillNoTriggerEvent(
DS::Root *){};
55 virtual void FillMeta(){};
64 bool digitizerwaveforms;
74 std::vector<std::string> waveform_fitters;
75 std::map<std::string, std::vector<std::string>> waveform_fitter_FOMs;
76 std::vector<std::string> event_fitters;
77 std::map<std::string, std::vector<std::string>> event_fitter_FOMs;
80 std::string defaultFilename;
91 std::vector<int> pmtType;
92 std::vector<int> pmtId;
93 std::vector<int> pmtChannel;
94 std::vector<bool> pmtIsOnline;
95 std::vector<double> pmtCableOffset;
96 std::vector<double> pmtChargeScale;
97 std::vector<double> pmtPulseWidthScale;
98 std::vector<double> pmtX;
99 std::vector<double> pmtY;
100 std::vector<double> pmtZ;
101 std::vector<double> pmtU;
102 std::vector<double> pmtV;
103 std::vector<double> pmtW;
104 std::vector<int> ntId;
105 std::vector<double> ntX;
106 std::vector<double> ntY;
107 std::vector<double> ntZ;
108 std::vector<double> ntU;
109 std::vector<double> ntV;
110 std::vector<double> ntW;
111 u_int32_t digitizerWindowSize;
112 Double_t digitizerSampleRate;
113 Double_t digitizerDynamicRange;
114 Double_t digitizerVoltageResolution;
117 bool done_writing_calib;
120 Double_t calibIntensity;
121 Double_t calibWavelength;
122 std::string calibName;
124 Double_t calibX, calibY, calibZ, calibU, calibV, calibW;
127 std::vector<Double_t> inWindowPulseTimes;
128 std::vector<Double_t> inWindowPulseCharges;
129 std::vector<UShort_t> waveform;
132 double mcx, mcy, mcz;
133 double mcu, mcv, mcw;
142 ULong64_t trigger_word;
143 ULong64_t event_cleaning_word;
144 double timeSinceLastTrigger_us;
147 double scintEdepQuenched;
154 std::vector<int> mcpmtid;
155 std::vector<int> mcpmtnpe;
156 std::vector<double> mcpmtcharge;
160 std::vector<int> mcNTid;
161 std::vector<double> mcNThittime;
162 std::vector<double> mcNThitx;
163 std::vector<double> mcNThity;
164 std::vector<double> mcNThitz;
166 std::vector<int> mcpepmtid;
167 std::vector<double> mcpehittime;
168 std::vector<double> mcpefrontendtime;
169 std::vector<int> mcpeprocess;
170 std::vector<double> mcpewavelength;
171 std::vector<double> mcpex;
172 std::vector<double> mcpey;
173 std::vector<double> mcpez;
174 std::vector<double> mcpecharge;
178 std::vector<Int_t> pdgcodes;
179 std::vector<double> mcKEnergies;
180 std::vector<double> mcPosx;
181 std::vector<double> mcPosy;
182 std::vector<double> mcPosz;
183 std::vector<double> mcDirx;
184 std::vector<double> mcDiry;
185 std::vector<double> mcDirz;
186 std::vector<double> mcTime;
188 std::map<std::string, double> fitvalues;
189 std::map<std::string, bool> fitvalids;
190 std::map<std::string, std::map<std::string, double>> fiteventFOMs;
192 std::vector<int> hitPMTID;
193 std::vector<double> hitPMTTime;
194 std::vector<double> hitPMTCharge;
197 std::vector<double> digitPeak;
198 std::vector<double> digitTime;
199 std::vector<double> digitCharge;
200 std::vector<double> digitTimeOverThreshold;
201 std::vector<double> digitVoltageOverThreshold;
202 std::vector<double> digitLocalTriggerTime;
203 std::vector<int> digitReconNPEs;
204 std::vector<int> digitNCrossings;
205 std::vector<int> digitPMTID;
207 int digitHitCleanedNhits;
208 std::vector<uint64_t> digitHitCleaningMask;
210 std::map<std::string, std::vector<int>> wfmFitPmtID;
211 std::map<std::string, std::vector<double>> wfmFitTime;
212 std::map<std::string, std::vector<double>> wfmFitCharge;
213 std::map<std::string, std::map<std::string, std::vector<double>>> wfmFitFOM;
215 std::map<std::string, int> processCodeMap;
216 std::vector<int> processCodeIndex;
217 std::vector<std::string> processName;
218 std::map<std::string, int> volumeCodeMap;
219 std::vector<int> volumeCodeIndex;
220 std::vector<std::string> volumeName;
223 std::vector<int> trackPDG;
224 std::vector<std::vector<double>> trackPosX;
225 std::vector<std::vector<double>> trackPosY;
226 std::vector<std::vector<double>> trackPosZ;
227 std::vector<std::vector<double>> trackMomX;
228 std::vector<std::vector<double>> trackMomY;
229 std::vector<std::vector<double>> trackMomZ;
230 std::vector<std::vector<double>> trackKE;
231 std::vector<std::vector<double>> trackTime;
232 std::vector<std::vector<int>> trackProcess;
233 std::vector<std::vector<int>> trackVolume;
Definition: OutNtupleProc.hh:20
virtual void SetI(std::string param, int value)
Definition: OutNtupleProc.cc:809
virtual Processor::Result DSEvent(DS::Root *ds)
Definition: OutNtupleProc.cc:306
virtual void SetS(std::string param, std::string value)
Definition: OutNtupleProc.cc:803
Definition: Processor.hh:36
Result
Definition: Processor.hh:59
Definition: CCCrossSecMessenger.hh:29
Definition: OutNtupleProc.hh:60