3 |
|
|
4 |
|
#include "UserCode/L1RpcTriggerAnalysis/interface/L1Obj.h" |
5 |
|
#include <vector> |
6 |
+ |
#include <cmath> |
7 |
|
|
8 |
|
class L1ObjColl : public TObject { |
9 |
|
|
15 |
|
void set(const std::vector<L1Obj> & obj) { theL1Obj = obj; } |
16 |
|
void set(const std::vector<bool> & comp) { theL1Matching = comp; } |
17 |
|
void set(const std::vector<double> & dr) { theDeltaR = dr; } |
18 |
+ |
void push_back(const L1Obj & obj, bool match, double deltaR); |
19 |
|
|
20 |
|
const std::vector<L1Obj> & getL1Objs() const { return theL1Obj; } |
21 |
|
const std::vector<bool> & getL1ObjsMatching() const { return theL1Matching; } |
22 |
|
const std::vector<double> & getL1ObjDeltaR() const { return theDeltaR; } |
23 |
+ |
|
24 |
+ |
L1ObjColl l1RpcColl() const { |
25 |
+ |
return selectByType(L1Obj::RPCb)+selectByType(L1Obj::RPCf); |
26 |
+ |
} |
27 |
+ |
L1ObjColl l1RpcCollEmu() const { |
28 |
+ |
return selectByType(L1Obj::RPCb_emu)+selectByType(L1Obj::RPCf_emu); |
29 |
+ |
} |
30 |
+ |
L1ObjColl l1OthColl() const { |
31 |
+ |
return selectByType(L1Obj::DT)+selectByType(L1Obj::CSC); |
32 |
+ |
} |
33 |
+ |
|
34 |
+ |
L1ObjColl selectByType( TYPE t1) const; |
35 |
+ |
L1ObjColl selectByPt( double ptMin = 0., double ptMax = 161.) const; |
36 |
+ |
L1ObjColl selectByPtMin( double ptMin = 0.) const; |
37 |
+ |
L1ObjColl selectByEta( double etaMin = -1.61, double etaMax = 1.61) const; |
38 |
+ |
L1ObjColl selectByBx( int bxMin = 0, int bxMax = 0) const; |
39 |
+ |
L1ObjColl selectByQuality( int qMin = 0, int qMax = 7) const; |
40 |
+ |
L1ObjColl selectByMatched() const; |
41 |
+ |
L1ObjColl selectByDeltaR( double deltaRMax) const; |
42 |
+ |
L1ObjColl operator+(const L1ObjColl &o) const; |
43 |
+ |
operator bool() const {return !theL1Obj.empty(); } |
44 |
+ |
bool operator!() const {return theL1Obj.empty(); } |
45 |
+ |
|
46 |
+ |
inline bool isMatching_DRBx(double deltaR, int bx) const { |
47 |
+ |
for (unsigned int i=0; i< theL1Obj.size(); i++) if ( (bx == theL1Obj[i].bx) && ( theDeltaR[i] < deltaR) ) return true; |
48 |
+ |
return false; |
49 |
+ |
} |
50 |
+ |
inline bool isMatching_PtminPtmaxBx(double ptMin, double ptMax, int bx ) const { |
51 |
+ |
for (unsigned int i=0; i< theL1Obj.size(); i++) if ( (theL1Obj[i].pt >= ptMin && theL1Obj[i].pt < ptMax) && (bx == theL1Obj[i].bx) ) return true; |
52 |
+ |
return false; |
53 |
+ |
} |
54 |
|
|
55 |
< |
/* |
23 |
< |
L1ObjColl selectByType( TYPE t1=L1Obj::NONE, TYPE t2=L1Obj::NONE, TYPE t3=L1Obj::NONE, TYPE t4=L1Obj::NONE); |
24 |
< |
L1ObjColl selectByPtMin( double ptMin = 0.); |
25 |
< |
L1ObjColl selectByEta( double etaMin = -2.5, double etaMax = 2.5); |
26 |
< |
L1ObjColl selectByBx( int bxMin = 0, int bxMax = 0); |
27 |
< |
L1ObjColl selectByQuality( int qMin = 0, int qMax = 7); |
28 |
< |
L1ObjColl operator+(const L1ObjColl& , const L1ObjColl&) const; |
29 |
< |
*/ |
30 |
< |
|
31 |
< |
void print() const; |
55 |
> |
friend ostream & operator<< (ostream &out, const L1ObjColl&s); |
56 |
|
|
57 |
|
//tmp |
58 |
|
std::vector<L1Obj> getL1ObjsMatched(double ptMin = 0) const; |
64 |
|
double phiMin = 0., double phiMax = 7., |
65 |
|
int qMin = 0, int qMax = 7) const; |
66 |
|
static std::vector<L1Obj> typeSelector(const std::vector<L1Obj> & col, TYPE t1=L1Obj::NONE, TYPE t2=L1Obj::NONE, TYPE t3=L1Obj::NONE, TYPE t4=L1Obj::NONE); |
43 |
– |
|
67 |
|
|
68 |
|
private: |
69 |
|
std::vector<L1Obj> theL1Obj; |