#include "FastSlowCompare.h"
#include "RegisterModule.inc"
#include "TPulseIsland.h"
#include "TGlobalData.h"
#include "TSetupData.h"
#include "ModulesOptions.h"
#include "definitions.h"
#include "TH1I.h"
#include "TH2I.h"
#include "TDirectory.h"
#include <stdexcept>
#include <iostream>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <climits>
#include <map>
#include <string>
Go to the source code of this file.
Functions | |
static std::vector< double > | TPI2Times (const std::vector< TPulseIsland * > &) |
static double | GetTime (const TPulseIsland *, const int) |
static bool | isValid (const TPulseIsland *) |
ALCAP_REGISTER_MODULE (FastSlowCompare) |
ALCAP_REGISTER_MODULE | ( | FastSlowCompare | ) |
double GetTime | ( | const TPulseIsland * | tpi, | |
const int | pol | |||
) | [static] |
Definition at line 111 of file FastSlowCompare.cpp.
References TPulseIsland::GetBankName(), TPulseIsland::GetClockTickInNs(), TPulseIsland::GetSamples(), TSetupData::GetTimeShift(), TPulseIsland::GetTimeStamp(), and TSetupData::Instance().
00111 { 00112 const static double cf_frac = 0.2; 00113 const std::vector<int>& samps = tpi->GetSamples(); 00114 const std::vector<int>::const_iterator b = samps.begin(), e = samps.end(); 00115 const unsigned int ped = std::accumulate(b, b + 5, 0)/5.; 00116 std::vector<int>::const_iterator m = pol > 0 ? std::max_element(b, e) : std::min_element(b, e); 00117 const unsigned int amp = *m; 00118 const unsigned int cf = pol > 0 ? (unsigned int)(cf_frac*(double)(amp-ped)) + ped : (unsigned int)((double)(ped-amp)*(1.-cf_frac) + amp); 00119 while (m != b && (pol > 0 ? *--m > (int)cf : *--m < (int)cf)); 00120 //m = pol > 0 std::upper_bound(b, m, cf, ) : ; 00121 double dx = (double)(m-b); 00122 if (*(m+1) != *m) 00123 dx += (double)((int)cf - *m)/(double)(*(m+1) - *m); 00124 return (dx + (double)tpi->GetTimeStamp()) * tpi->GetClockTickInNs() - TSetupData::Instance()->GetTimeShift(tpi->GetBankName()); 00125 }
bool isValid | ( | const TPulseIsland * | tpi | ) | [static] |
Definition at line 154 of file FastSlowCompare.cpp.
References TPulseIsland::GetBankName(), TSetupData::GetNBits(), TPulseIsland::GetSamples(), and TSetupData::Instance().
00154 { 00155 const std::vector<int>& samps = tpi->GetSamples(); 00156 const int min = 0; 00157 const int max = (int)std::pow(2., (double)TSetupData::Instance()->GetNBits(tpi->GetBankName())) - 1; 00158 if (*std::min_element(samps.begin(), samps.end()) <= min || 00159 *std::max_element(samps.begin(), samps.end()) >= max) 00160 return false; 00161 return true; 00162 }
std::vector< double > TPI2Times | ( | const std::vector< TPulseIsland * > & | vec | ) | [static] |
Definition at line 145 of file FastSlowCompare.cpp.
References GetTime().
Referenced by FastSlowCompare::ProcessEntry().
00145 { 00146 static std::vector<TPulseIsland*>::const_iterator tpi; 00147 std::vector<double> times; 00148 for (tpi = vec.begin(); tpi < vec.end(); ++tpi) 00149 // if (isValid(*tpi)) 00150 times.push_back(GetTime(*tpi, (*tpi)->GetTriggerPolarity())); 00151 return times; 00152 }