1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#ifndef Calibration_EcalCalibAlgos_EcalPhiSymRecHit_h
#define Calibration_EcalCalibAlgos_EcalPhiSymRecHit_h
/** \class EcalPhiSymRecHit
*
* Dataformat dedicated to Phi Symmetry ecal calibration
*
* Note: SumEt array ordering:
* 0 - central value
* 1<->N/2 - misCalib<1
* N/2+1<->N - misCalib>1
*
* Original Author: Simone Pigazzini (2022)
*/
#include <vector>
#include <cassert>
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
class EcalPhiSymRecHit {
public:
//---ctors---
EcalPhiSymRecHit();
EcalPhiSymRecHit(uint32_t id, unsigned int nMisCalibV, unsigned int status = 0);
EcalPhiSymRecHit(uint32_t id, std::vector<float>& etValues, unsigned int status = 0);
//---dtor---
~EcalPhiSymRecHit() = default;
//---getters---
inline uint32_t rawId() const { return id_; };
inline int8_t eeRing() const { return eeRing_; };
inline unsigned int statusCode() const { return chStatus_; };
inline uint32_t nHits() const { return nHits_; };
inline unsigned int nSumEt() const { return etSum_.size(); };
inline float sumEt(int i = 0) const { return etSum_[i]; };
inline float sumEt2() const { return et2Sum_; };
inline float lcSum() const { return lcSum_; };
inline float lc2Sum() const { return lc2Sum_; };
//---setters---
void setEERing(const int8_t& eering) { eeRing_ = eering; };
//---utils---
void addHit(const std::vector<float>& etValues, const float laserCorr = 0);
void reset();
//---operators---
EcalPhiSymRecHit& operator+=(const EcalPhiSymRecHit& rhs);
private:
uint32_t id_;
int8_t eeRing_;
unsigned int chStatus_;
uint32_t nHits_;
std::vector<float> etSum_;
float et2Sum_;
float lcSum_;
float lc2Sum_;
};
typedef std::vector<EcalPhiSymRecHit> EcalPhiSymRecHitCollection;
#endif
|