1 |
#ifndef TRootEvent_h
|
2 |
#define TRootEvent_h
|
3 |
|
4 |
#include <string>
|
5 |
#include <iostream>
|
6 |
#include <vector>
|
7 |
#include <map>
|
8 |
#include <cmath>
|
9 |
|
10 |
#include "Rtypes.h"
|
11 |
#include "TObject.h"
|
12 |
#include "TVector3.h"
|
13 |
|
14 |
using namespace std;
|
15 |
|
16 |
class TRootEvent : public TObject
|
17 |
{
|
18 |
|
19 |
public:
|
20 |
|
21 |
TRootEvent() :
|
22 |
nb_(0)
|
23 |
,passGlobalL1_(false)
|
24 |
,passGlobalHLT_(false)
|
25 |
,trigHLT_(0)
|
26 |
,csa07id_(0)
|
27 |
,csa07weight_(0.)
|
28 |
,csa07process_()
|
29 |
,nBasicClusters_()
|
30 |
,nSuperClusters_()
|
31 |
,primaryVertex_(0)
|
32 |
{;}
|
33 |
|
34 |
~TRootEvent() {;}
|
35 |
|
36 |
// Event number
|
37 |
Int_t nb() const { return nb_; }
|
38 |
|
39 |
// Trigger decision
|
40 |
Int_t passGlobalL1() const { return passGlobalL1_; }
|
41 |
Bool_t passGlobalHLT() const { return passGlobalHLT_; }
|
42 |
unsigned int nHLTPaths() const { return trigHLT_.size(); }
|
43 |
std::vector<Bool_t> trigHLT() const { return trigHLT_; }
|
44 |
Bool_t trigHLT(unsigned int i) const
|
45 |
{
|
46 |
if (trigHLT_.size()>i)
|
47 |
{
|
48 |
return trigHLT_.at(i);
|
49 |
}
|
50 |
else
|
51 |
{
|
52 |
cout << "HLT path " << i << " not found" << endl;
|
53 |
return false;
|
54 |
}
|
55 |
}
|
56 |
|
57 |
// CSA07 Process Id and Event Weight
|
58 |
Int_t csa07id() const { return csa07id_; }
|
59 |
Float_t csa07weight() const { return csa07weight_; }
|
60 |
TString csa07process() const { return csa07process_; }
|
61 |
|
62 |
// Nb of primary vertices
|
63 |
unsigned nPrimaryVertices() const { return primaryVertex_.size(); }
|
64 |
|
65 |
// Nb of BasicClusters of a given type
|
66 |
Int_t nBasicClusters(Int_t type)
|
67 |
{
|
68 |
map<Int_t,Int_t>::iterator it=nBasicClusters_.find(type);
|
69 |
return ( it ==nBasicClusters_.end() ? 0 : (*it).second );
|
70 |
}
|
71 |
|
72 |
// Nb of SuperClusters of a given type
|
73 |
Int_t nSuperClusters(Int_t type)
|
74 |
{
|
75 |
map<Int_t,Int_t>::iterator it=nSuperClusters_.find(type);
|
76 |
return ( it ==nSuperClusters_.end() ? 0 : (*it).second );
|
77 |
}
|
78 |
|
79 |
|
80 |
// Primary Vertex as 3-vector
|
81 |
TVector3 primaryVertex() const { return (primaryVertex_.size()>0 ? primaryVertex_.at(0) : TVector3(0.,0.,0.) ); }
|
82 |
TVector3 primaryVertex(unsigned i) const { return (primaryVertex_.size()>i ? primaryVertex_.at(i) : TVector3(0.,0.,0.) ); }
|
83 |
// x, y, z of Primary Vertex
|
84 |
Double_t primaryVertex_x() const { return (primaryVertex_.size()>0 ? primaryVertex_.at(0).x() : 0. ); }
|
85 |
Double_t primaryVertex_y() const { return (primaryVertex_.size()>0 ? primaryVertex_.at(0).y() : 0. ); }
|
86 |
Double_t primaryVertex_z() const { return (primaryVertex_.size()>0 ? primaryVertex_.at(0).z() : 0. ); }
|
87 |
Double_t primaryVertex_x(unsigned i) const { return (primaryVertex_.size()>i ? primaryVertex_.at(i).x() : 0. ); }
|
88 |
Double_t primaryVertex_y(unsigned i) const { return (primaryVertex_.size()>i ? primaryVertex_.at(i).x() : 0. ); }
|
89 |
Double_t primaryVertex_z(unsigned i) const { return (primaryVertex_.size()>i ? primaryVertex_.at(i).x() : 0. ); }
|
90 |
|
91 |
|
92 |
void setNb(Int_t nb) { nb_ = nb; }
|
93 |
void setGlobalL1(Int_t passGlobalL1) { passGlobalL1_ = passGlobalL1; }
|
94 |
void setGlobalHLT(Bool_t passGlobalHLT) { passGlobalHLT_ = passGlobalHLT; }
|
95 |
void setTrigHLT(std::vector<Bool_t> trigHLT)
|
96 |
{
|
97 |
trigHLT_.resize(trigHLT.size());
|
98 |
for (unsigned int i=0; i!=trigHLT.size(); ++i) trigHLT_[i]=trigHLT[i];
|
99 |
}
|
100 |
|
101 |
void setCsa07id(Int_t csa07id) { csa07id_=csa07id; }
|
102 |
void setCsa07weight(Float_t csa07weight) { csa07weight_=csa07weight; }
|
103 |
void setCsa07process(TString csa07process) { csa07process_=csa07process; }
|
104 |
void setCsa07process(char* csa07process) { csa07process_=csa07process; }
|
105 |
|
106 |
void setNBasicClusters(Int_t type,Int_t nBC) { nBasicClusters_[type]=nBC; }
|
107 |
void setNSuperClusters(Int_t type,Int_t nSC) { nSuperClusters_[type]=nSC; }
|
108 |
|
109 |
void addPrimaryVertex(TVector3 vertex) { primaryVertex_.push_back(vertex); }
|
110 |
void clearPrimaryVertex(TVector3 vertex) { primaryVertex_.clear(); }
|
111 |
/*
|
112 |
friend std::ostream& operator<< (std::ostream& stream, const TRootEvent& event) {
|
113 |
stream << "Event #"<< event.nb() <<" L1="<< event.trigL1() <<" HLT="<< event.trigHLT()
|
114 |
<< " Primary vertex x=" << event.primaryVertex_x() << " y=" << event.primaryVertex_y() << " z=" << event.primaryVertex_z();
|
115 |
return stream;
|
116 |
};
|
117 |
*/
|
118 |
|
119 |
private:
|
120 |
|
121 |
Int_t nb_;
|
122 |
Bool_t passGlobalL1_;
|
123 |
Bool_t passGlobalHLT_;
|
124 |
std::vector<Bool_t> trigHLT_;
|
125 |
|
126 |
Int_t csa07id_;
|
127 |
Float_t csa07weight_;
|
128 |
TString csa07process_;
|
129 |
|
130 |
map<Int_t,Int_t> nBasicClusters_;
|
131 |
map<Int_t,Int_t> nSuperClusters_;
|
132 |
std::vector<TVector3> primaryVertex_;
|
133 |
|
134 |
ClassDef (TRootEvent,1);
|
135 |
};
|
136 |
|
137 |
#endif
|