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 |
#include "TRef.h"
|
14 |
|
15 |
#include "../interface/TRootVertex.h"
|
16 |
|
17 |
using namespace std;
|
18 |
|
19 |
class TRootEvent : public TObject
|
20 |
{
|
21 |
|
22 |
public:
|
23 |
|
24 |
TRootEvent() :
|
25 |
nb_(0)
|
26 |
,eventId_(-1)
|
27 |
,runId_(-1)
|
28 |
,passGlobalL1_(false)
|
29 |
,passGlobalHLT_(false)
|
30 |
,trigHLT_(0)
|
31 |
,csa07id_(-1)
|
32 |
,csa07weight_(-1.)
|
33 |
,csa07process_()
|
34 |
,nBasicClusters_()
|
35 |
,nSuperClusters_()
|
36 |
,primaryVertexIndex_(-1)
|
37 |
,primaryVertex_(0)
|
38 |
,idParton1_(-1)
|
39 |
,xParton1_(-1.)
|
40 |
,idParton2_(-1)
|
41 |
,xParton2_(-1.)
|
42 |
,factorizationScale_(-1.)
|
43 |
{;}
|
44 |
|
45 |
~TRootEvent() {;}
|
46 |
|
47 |
// Event number
|
48 |
Int_t nb() const { return nb_; }
|
49 |
Int_t eventId() const { return eventId_; }
|
50 |
Int_t runId() const { return runId_; }
|
51 |
|
52 |
// Trigger decision
|
53 |
Int_t passGlobalL1() const { return passGlobalL1_; }
|
54 |
Bool_t passGlobalHLT() const { return passGlobalHLT_; }
|
55 |
unsigned int nHLTPaths() const { return trigHLT_.size(); }
|
56 |
std::vector<Bool_t> trigHLT() const { return trigHLT_; }
|
57 |
Bool_t trigHLT(unsigned int i) const
|
58 |
{
|
59 |
if (trigHLT_.size()>i)
|
60 |
{
|
61 |
return trigHLT_.at(i);
|
62 |
}
|
63 |
else
|
64 |
{
|
65 |
cout << "HLT path " << i << " not found" << endl;
|
66 |
return false;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
// CSA07 Process Id and Event Weight
|
71 |
Int_t csa07id() const { return csa07id_; }
|
72 |
Float_t csa07weight() const { return csa07weight_; }
|
73 |
TString csa07process() const { return csa07process_; }
|
74 |
|
75 |
// Nb of BasicClusters of a given type
|
76 |
Int_t nBasicClusters(Int_t type)
|
77 |
{
|
78 |
map<Int_t,Int_t>::iterator it=nBasicClusters_.find(type);
|
79 |
return ( it ==nBasicClusters_.end() ? 0 : (*it).second );
|
80 |
}
|
81 |
|
82 |
// Nb of SuperClusters of a given type
|
83 |
Int_t nSuperClusters(Int_t type)
|
84 |
{
|
85 |
map<Int_t,Int_t>::iterator it=nSuperClusters_.find(type);
|
86 |
return ( it ==nSuperClusters_.end() ? 0 : (*it).second );
|
87 |
}
|
88 |
|
89 |
|
90 |
// Selected Primary Vertex
|
91 |
Int_t primaryVertexIndex() const { return primaryVertexIndex_; }
|
92 |
TRootVertex* primaryVertex() const
|
93 |
{
|
94 |
if ( primaryVertex_==0)
|
95 |
{
|
96 |
cout << " ********** Error in TRootEvent::primaryVertex() - No primary vertex selected **********" << endl;
|
97 |
return 0;
|
98 |
}
|
99 |
else
|
100 |
{
|
101 |
return (TRootVertex*) primaryVertex_.GetObject();
|
102 |
}
|
103 |
}
|
104 |
|
105 |
|
106 |
// PDF infos
|
107 |
// flavour first incoming parton
|
108 |
Int_t idParton1() const { return idParton1_; }
|
109 |
// energy fraction carried by first incoming parton
|
110 |
Float_t xParton1() const { return xParton1_; }
|
111 |
// flavour first incoming parton
|
112 |
Int_t idParton2() const { return idParton2_; }
|
113 |
// energy fraction carried by first incoming parton
|
114 |
Float_t xParton2() const { return xParton2_; }
|
115 |
// Factorization Scale Q
|
116 |
Float_t factorizationScale() const { return factorizationScale_; }
|
117 |
|
118 |
|
119 |
|
120 |
void setNb(Int_t nb) { nb_ = nb; }
|
121 |
void setEventId(Int_t eventId) { eventId_ = eventId; }
|
122 |
void setRunId(Int_t runId) { runId_ = runId; }
|
123 |
void setGlobalL1(Int_t passGlobalL1) { passGlobalL1_ = passGlobalL1; }
|
124 |
void setGlobalHLT(Bool_t passGlobalHLT) { passGlobalHLT_ = passGlobalHLT; }
|
125 |
void setTrigHLT(std::vector<Bool_t> trigHLT)
|
126 |
{
|
127 |
trigHLT_.resize(trigHLT.size());
|
128 |
for (unsigned int i=0; i!=trigHLT.size(); ++i) trigHLT_[i]=trigHLT[i];
|
129 |
}
|
130 |
|
131 |
void setCsa07id(Int_t csa07id) { csa07id_=csa07id; }
|
132 |
void setCsa07weight(Float_t csa07weight) { csa07weight_=csa07weight; }
|
133 |
void setCsa07process(TString csa07process) { csa07process_=csa07process; }
|
134 |
void setCsa07process(char* csa07process) { csa07process_=csa07process; }
|
135 |
|
136 |
void setNBasicClusters(Int_t type,Int_t nBC) { nBasicClusters_[type]=nBC; }
|
137 |
void setNSuperClusters(Int_t type,Int_t nSC) { nSuperClusters_[type]=nSC; }
|
138 |
|
139 |
void setPrimaryVertexIndex(Int_t primaryVertexIndex) { primaryVertexIndex_=primaryVertexIndex; }
|
140 |
void setPrimaryVertex(TRootVertex* primaryVertex) { primaryVertex_ = primaryVertex; }
|
141 |
|
142 |
void setIdParton1(Int_t idParton1) { idParton1_=idParton1; }
|
143 |
void setXParton1(Float_t xParton1) { xParton1_=xParton1; }
|
144 |
void setIdParton2(Int_t idParton2) { idParton2_=idParton2; }
|
145 |
void setXParton2(Float_t xParton2) { xParton2_=xParton2; }
|
146 |
void setFactorizationScale(Float_t factorizationScale) { factorizationScale_=factorizationScale; }
|
147 |
|
148 |
// FIXME
|
149 |
friend std::ostream& operator<< (std::ostream& stream, const TRootEvent& event) {
|
150 |
stream << "Event #"<< event.nb() <<" L1="<< event.passGlobalL1() <<" HLT="<< event.passGlobalHLT();
|
151 |
return stream;
|
152 |
};
|
153 |
|
154 |
|
155 |
private:
|
156 |
|
157 |
Int_t nb_;
|
158 |
Int_t eventId_;
|
159 |
Int_t runId_;
|
160 |
|
161 |
// Trigger Infos
|
162 |
Bool_t passGlobalL1_;
|
163 |
Bool_t passGlobalHLT_;
|
164 |
std::vector<Bool_t> trigHLT_;
|
165 |
|
166 |
// CSA07 Process ID and Weight
|
167 |
Int_t csa07id_;
|
168 |
Float_t csa07weight_;
|
169 |
TString csa07process_;
|
170 |
|
171 |
map<Int_t,Int_t> nBasicClusters_;
|
172 |
map<Int_t,Int_t> nSuperClusters_;
|
173 |
|
174 |
// Selected Primary vertex (by VertexAnalyzer::SelectPrimary)
|
175 |
Int_t primaryVertexIndex_; // Index in vertices TClonesArray of the selected primary vertex
|
176 |
TRef primaryVertex_; // Reference to the TRootVertex of the selected primary vertex
|
177 |
|
178 |
// PDF infos
|
179 |
Int_t idParton1_;
|
180 |
Float_t xParton1_;
|
181 |
Int_t idParton2_;
|
182 |
Float_t xParton2_;
|
183 |
Float_t factorizationScale_;
|
184 |
|
185 |
ClassDef (TRootEvent,2);
|
186 |
|
187 |
};
|
188 |
|
189 |
#endif
|