rootana/src/FastSlowCompare.cpp File Reference

#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)

Function Documentation

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 }


Generated on 15 Jun 2016 for AlcapDAQ by  doxygen 1.6.1