ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/L1RpcTriggerAnalysis/src/L1ObjColl.cc
Revision: 1.6
Committed: Tue Nov 27 16:16:48 2012 UTC (12 years, 5 months ago) by konec
Content type: text/plain
Branch: MAIN
CVS Tags: Artur_11_07_2013_B, Artur_11_07_2013_A, Artur_11_07_2013, Artur_28_06_2013, HEAD
Changes since 1.5: +7 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 konec 1.1 #include "UserCode/L1RpcTriggerAnalysis/interface/L1ObjColl.h"
2 konec 1.2 #include <iostream>
3 konec 1.1
4     ClassImp(L1Obj)
5     ClassImp(L1ObjColl)
6    
7 konec 1.5
8     L1ObjColl L1ObjColl::selectByType( TYPE t) const
9     {
10     L1ObjColl result;
11     for (unsigned int i=0; i<theL1Obj.size(); i++) if (theL1Obj[i].type == t) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
12     return result;
13     }
14    
15 konec 1.6 L1ObjColl L1ObjColl::selectByPt( double ptMin, double ptMax) const
16     {
17     L1ObjColl result;
18     const double epsilon = 1.e-9;
19     for (unsigned int i=0; i<theL1Obj.size(); i++) if ( theL1Obj[i].pt > (ptMin-epsilon) && theL1Obj[i].pt < (ptMax+epsilon) ) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
20     return result;
21     }
22 konec 1.5 L1ObjColl L1ObjColl::selectByPtMin( double ptMin) const
23     {
24     L1ObjColl result;
25     const double epsilon = 1.e-9;
26     for (unsigned int i=0; i<theL1Obj.size(); i++) if ( theL1Obj[i].pt > (ptMin-epsilon) ) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
27     return result;
28     }
29    
30     L1ObjColl L1ObjColl::selectByEta( double etaMin, double etaMax) const
31     {
32     L1ObjColl result;
33     for (unsigned int i=0; i<theL1Obj.size(); i++) if ( etaMin < theL1Obj[i].eta && theL1Obj[i].eta <= etaMax) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
34     return result;
35     }
36    
37     L1ObjColl L1ObjColl::selectByBx( int bxMin, int bxMax) const
38     {
39     L1ObjColl result;
40     for (unsigned int i=0; i<theL1Obj.size(); i++) if ( bxMin <= theL1Obj[i].bx && theL1Obj[i].bx <= bxMax) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
41     return result;
42     }
43    
44     L1ObjColl L1ObjColl::selectByQuality( int qMin, int qMax) const
45     {
46     L1ObjColl result;
47     for (unsigned int i=0; i<theL1Obj.size(); i++) if ( qMin <= theL1Obj[i].q && theL1Obj[i].q <= qMax) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
48     return result;
49     }
50    
51     L1ObjColl L1ObjColl::selectByMatched() const
52     {
53     L1ObjColl result;
54     for (unsigned int i=0; i<theL1Obj.size(); i++) if (theL1Matching[i]) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
55     return result;
56     }
57    
58     L1ObjColl L1ObjColl::selectByDeltaR( double deltaRMax) const
59     {
60     L1ObjColl result;
61     for (unsigned int i=0; i<theL1Obj.size(); i++) if ( theDeltaR[i] <= deltaRMax) result.push_back( theL1Obj[i], theL1Matching[i], theDeltaR[i]);
62     return result;
63     }
64    
65     L1ObjColl L1ObjColl::operator+(const L1ObjColl &o) const
66     {
67     L1ObjColl result = *this;
68     for (unsigned int i=0; i<o.theL1Obj.size(); i++) result.push_back( o.theL1Obj[i], o.theL1Matching[i], o.theDeltaR[i]);
69     return result;
70     }
71    
72     void L1ObjColl::push_back(const L1Obj & obj, bool match, double deltaR)
73     {
74     theL1Obj.push_back(obj);
75     theL1Matching.push_back(match);
76     theDeltaR.push_back(deltaR);
77     }
78    
79    
80    
81    
82    
83 konec 1.3 std::vector<L1Obj> L1ObjColl::typeSelector(const std::vector<L1Obj> & col,
84     TYPE t1, TYPE t2, TYPE t3, TYPE t4)
85     {
86     std::vector<L1Obj> result;
87     for (std::vector<L1Obj>::const_iterator it= col.begin(); it != col.end(); ++it) {
88     if ( it->type == t1 || it->type == t2 || it->type == t3 ||it->type == t4 ) result.push_back(*it);
89     }
90     return result;
91     }
92 konec 1.1 std::vector<L1Obj> L1ObjColl::getL1ObjsMatched(double ptMin) const
93     {
94     std::vector<L1Obj> result;
95     unsigned int nObj = theL1Obj.size();
96     unsigned int nCom = theL1Matching.size();
97    
98     for (unsigned int i=0; i<nObj && i<nCom; ++i)
99     if (theL1Matching[i] && theL1Obj[i].pt >= ptMin) result.push_back(theL1Obj[i]);
100    
101     return result;
102     }
103 konec 1.2
104     std::vector<L1Obj> L1ObjColl::getL1ObjsSelected(
105     bool requireMatched,
106     bool requireNonMatched,
107     double ptMin, double ptMax,
108     int bxMin, int bxMax,
109     double etaMin, double etaMax,
110     double phiMin, double phiMax,
111     int qMin, int qMax) const
112     {
113     std::vector<L1Obj> result;
114     unsigned int nMS = theL1Matching.size();
115     for (unsigned int i=0; i<theL1Obj.size(); ++i) {
116     bool isMatched = ( (i<nMS) && theL1Matching[i] );
117     if (requireMatched && !isMatched ) continue;
118     if (requireNonMatched && isMatched) continue;
119     if (theL1Obj[i].pt < ptMin) continue;
120     if (theL1Obj[i].pt > ptMax) continue;
121     if (theL1Obj[i].bx < bxMin) continue;
122     if (theL1Obj[i].bx > bxMax) continue;
123     if (theL1Obj[i].eta < etaMin) continue;
124     if (theL1Obj[i].eta > etaMax) continue;
125     if (theL1Obj[i].phi < phiMin) continue;
126     if (theL1Obj[i].phi > phiMax) continue;
127     if (theL1Obj[i].q < qMin) continue;
128     if (theL1Obj[i].q > qMax) continue;
129     result.push_back(theL1Obj[i]);
130     }
131     return result;
132     }
133    
134 konec 1.5
135     ostream & operator<< (ostream &out, const L1ObjColl &col)
136     {
137     for (unsigned int i=0; i< col.theL1Obj.size(); ++i) {
138     out <<"("<<i<<")"<<col.theL1Obj[i];
139     out <<" matched: "<< col.theL1Matching[i]<<" deltaR: "<< col.theDeltaR[i];
140     if (i != col.theL1Obj.size()-1) out <<std::endl;
141     }
142     return out;
143     }
144    
145     ostream & operator<< (ostream &out, const L1Obj &o)
146 konec 1.2 {
147 konec 1.5 out<<"L1Obj: ";
148     switch (o.type) {
149     case L1Obj::RPCb: { out <<"RPCb "; break; }
150     case L1Obj::RPCf: { out <<"RPCf "; break; }
151     case L1Obj::DT: { out <<"DT "; break; }
152     case L1Obj::CSC: { out <<"CSC "; break; }
153     case L1Obj::GMT: { out <<"GMT "; break; }
154     case L1Obj::RPCb_emu: { out <<"RPCb_emu"; break; }
155     case L1Obj::RPCf_emu: { out <<"RPCf_emu"; break; }
156     case L1Obj::GMT_emu: { out <<"GMT_emu "; break; }
157     case L1Obj::NONE : { out <<"NONE "; break; }
158     default: out <<"Unknown";
159     };
160     out <<" pt: "<<o.pt<<", eta: "<<o.eta<<", phi: "<<o.phi<<", q: "<<o.q<<", bx: "<<o.bx;
161     return out;
162 konec 1.2 }