25 double locDeltaTRangeMax = 2.2;
26 unsigned int locNumDeltaTBins = 1100;
41 string locHistName, locHistTitle;
44 new TDirectoryFile(
"RF",
"RF");
53 new TDirectoryFile(
"NumRFSignals",
"NumRFSignals");
54 gDirectory->cd(
"NumRFSignals");
60 locHistName =
string(
"Num") + locSystemName +
string(
"RFSignals");
61 locHistTitle =
string(
"RF_") + locSystemName +
string(
";Num RF Signals");
62 dHistMap_NumSignals[locSystem] =
new TH1I(locHistName.c_str(), locHistTitle.c_str(), 20, -0.5, 19.5);
67 new TDirectoryFile(
"RFHitsFound",
"RFHitsFound");
68 gDirectory->cd(
"RFHitsFound");
74 locHistName = locSystemName +
string(
"RFHitsFound");
75 locHistTitle =
string(
"RF_") + locSystemName +
string(
";Which RF Hits Were Found");
76 dHistMap_RFHitsFound[locSystem] =
new TH1I(locHistName.c_str(), locHistTitle.c_str(), 20, -0.5, 19.5);
81 new TDirectoryFile(
"NumRFHitsMissing",
"NumRFHitsMissing");
82 gDirectory->cd(
"NumRFHitsMissing");
88 locHistName = locSystemName +
string(
"NumRFHitsMissing");
89 locHistTitle =
string(
"RF_") + locSystemName +
string(
";# RF Hits Missing");
95 new TDirectoryFile(
"DeltaT_RF_FirstTime",
"DeltaT_RF_FirstTime");
96 gDirectory->cd(
"DeltaT_RF_FirstTime");
102 locHistName = locSystemName +
string(
"RF_FirstTimeDeltaT");
103 locHistTitle =
string(
"RF_") + locSystemName +
string(
"_TDC;#Deltat (Subsequent Times - First Time) (ns)");
106 gDirectory->cd(
"..");
109 new TDirectoryFile(
"DeltaT_All",
"DeltaT_All");
110 gDirectory->cd(
"DeltaT_All");
118 for(
size_t loc_k = loc_j; loc_k < dMaxDeltaTHits[locSystem]; ++loc_k)
120 pair<size_t, size_t> locTimePair(loc_j, loc_k);
121 ostringstream locHistNameStream, locHistTitleStream;
122 locHistNameStream << locSystemName <<
"RF_DeltaT_" << loc_j <<
"_" << loc_k;
124 locHistTitleStream <<
"RF_" << locSystemName <<
"_TDC;" <<
"#Deltat: Hit " << loc_k <<
" - Hit " << loc_j <<
" (ns)";
125 dHistMap_AdjacentRFDeltaTs[locSystem][locTimePair] =
new TH1I(locHistNameStream.str().c_str(), locHistTitleStream.str().c_str(), 80000, locHistRangeMin, locHistRangeMin + 400.0);
129 gDirectory->cd(
"..");
132 new TDirectoryFile(
"RF_SignalPeriod",
"RF_SignalPeriod");
133 gDirectory->cd(
"RF_SignalPeriod");
139 locHistName = locSystemName +
string(
"RF_SignalPeriod");
140 locHistTitle =
string(
"RF_") + locSystemName +
string(
";RF Signal Period (ns)");
143 gDirectory->cd(
"..");
146 new TDirectoryFile(
"RF_BeamBunchPeriod",
"RF_BeamBunchPeriod");
147 gDirectory->cd(
"RF_BeamBunchPeriod");
148 locHistName =
"RFBeamBunchPeriod";
149 locHistTitle =
";TAGH #Deltat (Within Same Counter) (ns)";
151 gDirectory->cd(
"..");
154 new TDirectoryFile(
"DeltaT_RF_Itself",
"DeltaT_RF_Itself");
155 gDirectory->cd(
"DeltaT_RF_Itself");
161 locHistName = locSystemName +
string(
"RF_SelfDeltaT");
162 locHistTitle =
string(
"RF_") + locSystemName +
string(
";#Deltat (First Pair) (ns)");
163 dHistMap_SelfResolution[locSystem] =
new TH1I(locHistName.c_str(), locHistTitle.c_str(), locNumDeltaTBins, -1.0*locDeltaTRangeMax, locDeltaTRangeMax);
165 gDirectory->cd(
"..");
168 new TDirectoryFile(
"AbsoluteDeltaT_RF_OtherRFs",
"AbsoluteDeltaT_RF_OtherRFs");
169 gDirectory->cd(
"AbsoluteDeltaT_RF_OtherRFs");
176 locHistName =
string(
"RFDeltaT_") + locSystemName1 +
string(
"_") + locSystemName2;
177 locHistTitle =
string(
";#Deltat (RF_") + locSystemName1 +
string(
" - RF_") + locSystemName2 +
string(
")");
182 gDirectory->cd(
"..");
185 new TDirectoryFile(
"DeltaT_RF_OtherRFs",
"DeltaT_RF_OtherRFs");
186 gDirectory->cd(
"DeltaT_RF_OtherRFs");
193 locHistName =
string(
"RFDeltaT_") + locSystemName1 +
string(
"_") + locSystemName2;
194 locHistTitle =
string(
";#Deltat (RF_") + locSystemName1 +
string(
" - RF_") + locSystemName2 +
string(
")");
196 dHistMap_RFRFDeltaTs[locSystemPair] =
new TH1I(locHistName.c_str(), locHistTitle.c_str(), locNumDeltaTBins, -1.0*locDeltaTRangeMax, locDeltaTRangeMax);
199 gDirectory->cd(
"..");
203 new TDirectoryFile(
"AverageDeltaT_RF_OtherRFs",
"AverageDeltaT_RF_OtherRFs");
204 gDirectory->cd(
"AverageDeltaT_RF_OtherRFs");
211 locHistName =
string(
"RFDeltaT_") + locSystemName1 +
string(
"_") + locSystemName2;
212 locHistTitle =
string(
";#Deltat_{#mu} (RF_") + locSystemName1 +
string(
" - RF_") + locSystemName2 +
string(
")");
214 dHistMap_AverageRFRFDeltaTs[locSystemPair] =
new TH1I(locHistName.c_str(), locHistTitle.c_str(), locNumDeltaTBins, -1.0*locDeltaTRangeMax, locDeltaTRangeMax);
217 gDirectory->cd(
"..");
220 new TDirectoryFile(
"DeltaT_RF_TAGH",
"DeltaT_RF_TAGH");
221 gDirectory->cd(
"DeltaT_RF_TAGH");
227 locHistName = locSystemName +
string(
"RF_TaggerDeltaT");
228 locHistTitle =
string(
";#Deltat (RF_") + locSystemName +
string(
" - TAGH) (ns)");
229 dHistMap_RFTaggerDeltaT[locSystem] =
new TH1I(locHistName.c_str(), locHistTitle.c_str(), locNumDeltaTBins, -1.0*locDeltaTRangeMax, locDeltaTRangeMax);
231 gDirectory->cd(
"..");
233 gDirectory->cd(
"..");
247 vector<const DCODAROCInfo*> locCODAROCInfos;
248 locEventLoop->Get(locCODAROCInfos);
251 locEventLoop->GetSingle(locTTabUtilities);
253 vector<const DRFTDCDigiTime*> locRFTDCDigiTimes;
254 locEventLoop->Get(locRFTDCDigiTimes);
256 vector<const DTAGHHit*> locTAGHHits;
257 locEventLoop->Get(locTAGHHits);
263 map<DetectorSystem_t, set<double> > locRFTimes;
264 map<DetectorSystem_t, set<double> >::iterator locTDCIterator;
265 for(
size_t loc_i = 0; loc_i < locRFTDCDigiTimes.size(); ++loc_i)
269 locRFTimes[locSystem].insert(locRFTime);
273 uint64_t locTotalROCTimeStamp = 0;
274 for(
size_t loc_i = 0; loc_i < locCODAROCInfos.size(); ++loc_i)
275 locTotalROCTimeStamp += locCODAROCInfos[loc_i]->timestamp;
278 map<DetectorSystem_t, double> locAverageRFTimes;
279 for(locTDCIterator = locRFTimes.begin(); locTDCIterator != locRFTimes.end(); ++locTDCIterator)
281 set<double>& locRFTimeSet = locTDCIterator->second;
284 double locAverageTime = locFirstTime;
285 set<double>::iterator locSetIterator = locRFTimeSet.begin();
286 for(++locSetIterator; locSetIterator != locRFTimeSet.end(); ++locSetIterator)
288 locAverageTime /= double(locRFTimeSet.size());
289 locAverageRFTimes[locTDCIterator->first] = locAverageTime;
293 map<int, set<double> > locTAGHHitMap;
294 for(
size_t loc_i = 0; loc_i < locTAGHHits.size(); ++loc_i)
296 if(locTAGHHits[loc_i]->has_TDC)
297 locTAGHHitMap[locTAGHHits[loc_i]->counter_id].insert(locTAGHHits[loc_i]->time_tdc);
301 map<int, set<double> >::iterator locTAGHIterator = locTAGHHitMap.begin();
302 vector<double> locTAGHDeltaTs;
303 for(; locTAGHIterator != locTAGHHitMap.end(); ++locTAGHIterator)
305 set<double>& locCounterHits = locTAGHIterator->second;
306 if(locCounterHits.size() < 2)
308 set<double>::iterator locSetIterator = locCounterHits.begin();
309 set<double>::iterator locPreviousSetIterator = locSetIterator;
310 for(++locSetIterator; locSetIterator != locCounterHits.end(); ++locSetIterator, ++locPreviousSetIterator)
311 locTAGHDeltaTs.push_back(*locSetIterator - *locPreviousSetIterator);
344 japp->RootWriteLock();
348 for(
size_t loc_i = 0; loc_i < locCODAROCInfos.size(); ++loc_i)
351 double locTotalROCTimeStamp_AllButThis = double(locTotalROCTimeStamp - locCODAROCInfos[loc_i]->timestamp);
352 double locDeltaT = 4.0*(double(locCODAROCInfos[loc_i]->timestamp) - locTotalROCTimeStamp_AllButThis/(double(locCODAROCInfos.size() - 1)));
355 uint32_t locROCID = locCODAROCInfos[loc_i]->rocid;
359 ostringstream locROCIDStream;
360 locROCIDStream << locROCID;
361 string locHistName =
string(
"ROCDeltaTs_ROC") + locROCIDStream.str();
362 string locHistTitle =
string(
";#Deltat (ROC ") + locROCIDStream.str() +
string(
" - #mu_{Other ROCs}) (ns)");
375 japp->RootFillLock(
this);
381 locTDCIterator = locRFTimes.find(locSystem);
382 if(locTDCIterator == locRFTimes.end())
389 for(locTDCIterator = locRFTimes.begin(); locTDCIterator != locRFTimes.end(); ++locTDCIterator)
391 set<double>& locRFTimeSet = locTDCIterator->second;
395 set<double>::iterator locSetIterator = locRFTimeSet.begin();
396 size_t locNumHitsMissing = 0;
397 for(; locSetIterator != locRFTimeSet.end(); ++locSetIterator)
399 double locTimeFromStart1 = *locSetIterator - *(locRFTimeSet.begin());
400 size_t locHitIndex1 = size_t(locTimeFromStart1 / locHitPeriod + 0.5);
403 int locExpectedHitIndex = locHitIndex1 + 1;
404 set<double>::iterator locOtherIterator = locSetIterator;
405 for(++locOtherIterator; locOtherIterator != locRFTimeSet.end(); ++locOtherIterator)
407 double locTimeFromStart2 = *locOtherIterator - *(locRFTimeSet.begin());
408 size_t locHitIndex2 = size_t(locTimeFromStart2 / locHitPeriod + 0.5);
409 locNumHitsMissing += (int(locHitIndex2) > locExpectedHitIndex) ? locHitIndex2 - locExpectedHitIndex : 0;
413 pair<size_t, size_t> locTimePair(locHitIndex1, locHitIndex2);
414 double locDeltaT = *locOtherIterator - *locSetIterator;
417 locExpectedHitIndex = locHitIndex2 + 1;
424 for(locTDCIterator = locRFTimes.begin(); locTDCIterator != locRFTimes.end(); ++locTDCIterator)
426 set<double>& locRFTimeSet = locTDCIterator->second;
427 if(locRFTimeSet.size() < 2)
430 double locDeltaT = *(locRFTimeSet.rbegin()) - *(locRFTimeSet.begin());
431 double locRFSignalFrequency = locDeltaT/(double(
dRFSamplingFactor[locSystem]*(locRFTimeSet.size() - 1)));
436 for(
size_t loc_i = 0; loc_i < locTAGHDeltaTs.size(); ++loc_i)
440 for(locTDCIterator = locRFTimes.begin(); locTDCIterator != locRFTimes.end(); ++locTDCIterator)
442 set<double>& locRFTimeSet = locTDCIterator->second;
443 set<double>::iterator locSetIterator = locRFTimeSet.begin();
444 for(++locSetIterator; locSetIterator != locRFTimeSet.end(); ++locSetIterator)
449 for(locTDCIterator = locRFTimes.begin(); locTDCIterator != locRFTimes.end(); ++locTDCIterator)
451 set<double>& locRFTimeSet = locTDCIterator->second;
452 if(locRFTimeSet.size() < 2)
454 set<double>::iterator locSetIterator = locRFTimeSet.begin();
461 for(
size_t loc_i = 0; loc_i < locTAGHHits.size(); ++loc_i)
463 if(!locTAGHHits[loc_i]->has_TDC)
467 for(locTDCIterator = locRFTimes.begin(); locTDCIterator != locRFTimes.end(); ++locTDCIterator)
469 set<double>& locRFTimeSet = locTDCIterator->second;
470 set<double>::iterator locSetIterator = locRFTimeSet.begin();
471 for(; locSetIterator != locRFTimeSet.end(); ++locSetIterator)
483 locTDCIterator = locRFTimes.find(locSystem);
484 if(locTDCIterator == locRFTimes.end())
486 set<double>& locRFTimeSet = locTDCIterator->second;
491 map<DetectorSystem_t, set<double> >::iterator locTDCIterator2 = locRFTimes.find(locSystem2);
492 if(locTDCIterator2 == locRFTimes.end())
495 pair<DetectorSystem_t, DetectorSystem_t> locSystemPair(locSystem, locSystem2);
498 set<double>& locRFTimeSet2 = locTDCIterator2->second;
501 double locDeltaT = locShiftedRFTime - *(locRFTimeSet2.begin());
510 locTDCIterator = locRFTimes.find(locSystem);
511 if(locTDCIterator == locRFTimes.end())
517 map<DetectorSystem_t, set<double> >::iterator locTDCIterator2 = locRFTimes.find(locSystem2);
518 if(locTDCIterator2 == locRFTimes.end())
521 pair<DetectorSystem_t, DetectorSystem_t> locSystemPair(locSystem, locSystem2);
526 double locDeltaT = locShiftedAverageRFTime - locAverageRFTimes[locTDCIterator2->first];
535 locTDCIterator = locRFTimes.find(locSystem);
536 if(locTDCIterator == locRFTimes.end())
538 set<double>& locRFTimeSet = locTDCIterator->second;
543 map<DetectorSystem_t, set<double> >::iterator locTDCIterator2 = locRFTimes.find(locSystem2);
544 if(locTDCIterator2 == locRFTimes.end())
547 pair<DetectorSystem_t, DetectorSystem_t> locSystemPair(locSystem, locSystem2);
550 set<double>& locRFTimeSet2 = locTDCIterator2->second;
552 double locDeltaT = *(locRFTimeSet.begin()) - *(locRFTimeSet2.begin());
557 japp->RootFillUnLock(
this);
jerror_t evnt(jana::JEventLoop *locEventLoop, uint64_t eventnumber)
Called every event.
map< pair< DetectorSystem_t, DetectorSystem_t >, TH1I * > dHistMap_RFRFDeltaTs
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
map< DetectorSystem_t, double > dRFSamplingFactor
map< DetectorSystem_t, TH1I * > dHistMap_RFHitsFound
double Convert_TDCToTime(const DRFTDCDigiTime *locRFTDCDigiTime, const DTTabUtilities *locTTabUtilities) const
map< DetectorSystem_t, TH1I * > dHistMap_RFFirstTimeDeltaT
vector< DetectorSystem_t > dRFSignalSystems
map< DetectorSystem_t, TH1I * > dHistMap_SelfResolution
map< DetectorSystem_t, TH1I * > dHistMap_RFSignalPeriod
map< DetectorSystem_t, TH1I * > dHistMap_RFTaggerDeltaT
map< DetectorSystem_t, size_t > dMaxDeltaTHits
map< uint32_t, TH1I * > dHistMap_ROCInfoDeltaT
map< DetectorSystem_t, TH1I * > dHistMap_NumSignals
jerror_t brun(jana::JEventLoop *locEventLoop, int32_t runnumber)
Called everytime a new run number is detected.
map< DetectorSystem_t, map< pair< size_t, size_t >, TH1I * > > dHistMap_AdjacentRFDeltaTs
const char * SystemName(DetectorSystem_t sys)
jerror_t init(void)
Called once at program start.
TH1I * dHist_RFBeamBunchPeriod
TDirectoryFile * dROCTIDirectory
map< pair< DetectorSystem_t, DetectorSystem_t >, TH1I * > dHistMap_AbsoluteRFRFDeltaTs
double Step_TimeToNearInputTime(double locTimeToStep, double locTimeToStepTo) const
DRFTime_factory * dRFTimeFactory
map< pair< DetectorSystem_t, DetectorSystem_t >, TH1I * > dHistMap_AverageRFRFDeltaTs
map< DetectorSystem_t, TH1I * > dHistMap_NumRFHitsMissing
jerror_t fini(void)
Called after last event of last event source has been processed.