CMS 3D CMS Logo

CPPFCluster.cc
Go to the documentation of this file.
1 #include "CPPFCluster.h"
2 #include <iostream>
3 #include <fstream>
4 #include <cmath>
5 
6 using namespace std;
7 
9  : fstrip(0), lstrip(0), bunchx(0), sumTime(0), sumTime2(0), nTime(0), sumY(0), sumY2(0), nY(0) {}
10 
12  : fstrip(fs), lstrip(ls), bunchx(bx), sumTime(0), sumTime2(0), nTime(0), sumY(0), sumY2(0), nY(0) {}
13 
15 
16 int CPPFCluster::firstStrip() const { return fstrip; }
17 int CPPFCluster::lastStrip() const { return lstrip; }
18 int CPPFCluster::clusterSize() const { return lstrip - fstrip + 1; }
19 int CPPFCluster::bx() const { return bunchx; }
20 
21 bool CPPFCluster::hasTime() const { return nTime > 0; }
22 float CPPFCluster::time() const { return hasTime() ? sumTime / nTime : 0; }
23 float CPPFCluster::timeRMS() const {
24  return hasTime() ? sqrt(max(0.F, sumTime2 * nTime - sumTime * sumTime)) / nTime : -1;
25 }
26 
27 bool CPPFCluster::hasY() const { return nY > 0; }
28 float CPPFCluster::y() const { return hasY() ? sumY / nY : 0; }
29 float CPPFCluster::yRMS() const { return hasY() ? sqrt(max(0.F, sumY2 * nY - sumY * sumY)) / nY : -1; }
30 
32  return ((cl.firstStrip() == this->firstStrip() - 1) && (cl.bx() == this->bx()));
33 }
34 
35 void CPPFCluster::addTime(const float time) {
36  ++nTime;
37  sumTime += time;
38  sumTime2 += time * time;
39 }
40 
41 void CPPFCluster::addY(const float y) {
42  ++nY;
43  sumY += y;
44  sumY2 += y * y;
45 }
46 
48  if (!this->isAdjacent(cl))
49  return;
50 
51  fstrip = cl.firstStrip();
52 
53  nTime += cl.nTime;
54  sumTime += cl.sumTime;
55  sumTime2 += cl.sumTime2;
56 
57  nY += cl.nY;
58  sumY += cl.sumY;
59  sumY2 += cl.sumY2;
60 }
61 
63  if (cl.bx() == this->bx())
64  return cl.firstStrip() < this->firstStrip();
65 
66  return cl.bx() < this->bx();
67 }
68 
70  return ((this->clusterSize() == cl.clusterSize()) && (this->bx() == cl.bx()) &&
71  (this->firstStrip() == cl.firstStrip()));
72 }
int clusterSize() const
Definition: CPPFCluster.cc:18
int lastStrip() const
Definition: CPPFCluster.cc:17
float sumY2
Definition: CPPFCluster.h:39
uint16_t nY
Definition: CPPFCluster.h:40
float y() const
Definition: CPPFCluster.cc:28
uint16_t fstrip
Definition: CPPFCluster.h:32
int firstStrip() const
Definition: CPPFCluster.cc:16
float sumTime2
Definition: CPPFCluster.h:36
uint16_t nTime
Definition: CPPFCluster.h:37
T sqrt(T t)
Definition: SSEVec.h:23
float sumTime
Definition: CPPFCluster.h:36
void addTime(const float time)
Definition: CPPFCluster.cc:35
float timeRMS() const
Definition: CPPFCluster.cc:23
int bx() const
Definition: CPPFCluster.cc:19
float time() const
Definition: CPPFCluster.cc:22
bool operator==(const CPPFCluster &cl) const
Definition: CPPFCluster.cc:69
bool operator<(const CPPFCluster &cl) const
Definition: CPPFCluster.cc:62
uint16_t lstrip
Definition: CPPFCluster.h:33
void merge(const CPPFCluster &cl)
Definition: CPPFCluster.cc:47
bool isAdjacent(const CPPFCluster &cl) const
Definition: CPPFCluster.cc:31
float yRMS() const
Definition: CPPFCluster.cc:29
bool hasTime() const
Definition: CPPFCluster.cc:21
float sumY
Definition: CPPFCluster.h:39
void addY(const float y)
Definition: CPPFCluster.cc:41
bool hasY() const
Definition: CPPFCluster.cc:27
int16_t bunchx
Definition: CPPFCluster.h:34
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163