12 return math.sqrt(
deltaR2(*args) )
16 '''Computes delta phi, handling periodic limit conditions.''' 25 '''Univoque association of an element from matchCollection to an element of objects. 26 Reco and Gen objects get the "matched" attribute, true if they are part of a matched tuple. 27 By default, the matching is true only if delta R is smaller than 0.3. 33 if len(matchCollection)==0:
34 return dict(
zip(objects, [
None]*len(objects)) )
37 allPairs = [(deltaR2 (object.eta(), object.phi(), match.eta(), match.phi()), (object, match))
for object
in objects
for match
in matchCollection
if filter(object,match) ]
43 for object
in objects:
44 object.matched =
False 45 for match
in matchCollection:
49 deltaR2Max = deltaRMax * deltaRMax
50 for dR2, (object, match)
in allPairs:
53 if dR2 < deltaR2Max
and object.matched ==
False and match.matched ==
False:
59 for object
in objects:
60 if object.matched ==
False:
70 '''Masks objects using a deltaR cut, another algorithm (same results).''' 73 deltaR2Min = deltaRMin*deltaRMin
74 cleanObjects = copy.copy( objects )
77 for idx, object
in enumerate(cleanObjects):
78 dR2 =
deltaR2( object.eta(), object.phi(),
79 mask.eta(), mask.phi() )
81 tooClose.append( idx )
97 '''Masks objects using a deltaR cut.''' 98 if len(objects)==0
or len(masks)==0:
100 deltaR2Min = deltaRMin*deltaRMin
103 for object
in objects:
106 dR2 =
deltaR2( object.eta(), object.phi(),
107 mask.eta(), mask.phi() )
111 cleanObjects.append( object )
113 dirtyObjects.append( object )
114 return cleanObjects, dirtyObjects
119 '''Return the best match to object in matchCollection, which is the closest object in delta R''' 120 deltaR2Min =
float(
'+inf')
122 for match
in matchCollection:
123 dR2 =
deltaR2( object.eta(), object.phi(),
124 match.eta(), match.phi() )
128 return bm, deltaR2Min
135 if len(matchCollection)==0:
136 return dict(
zip(objects, [
None]*len(objects)) )
137 for object
in objects:
138 bm, dr2 =
bestMatch( object, matchCollection )
147 '''Univoque association of an element from matchCollection to an element of objects. 148 Reco and Gen objects get the "matched" attribute, true if they are part of a matched tuple. 149 By default, the matching is true only if delta R is smaller than 0.3. 155 if len(matchCollection)==0:
156 return dict(
zip(objects, [
None]*len(objects)) )
158 allPairs = [(deltaR2 (object.eta(), object.phi(), match.eta(), match.phi()), (object, match))
for object
in objects
for match
in matchCollection]
163 for object
in objects:
164 object.matched =
False 165 for match
in matchCollection:
166 match.matched =
False 168 deltaR2Max = deltaRMax * deltaRMax
169 for dR2, (object, match)
in allPairs:
172 if dR2 < deltaR2Max
and object.matched ==
False and match.matched ==
False:
173 object.matched =
True 175 pairs[object] = match
177 for object
in objects:
178 if object.matched ==
False:
187 if __name__ ==
'__main__':
191 fargs =
map( float, args )
193 print 'dR2 = ',
deltaR2( *fargs )
194 print 'dR = ',
deltaR( *fargs )
def cleanObjectCollection2(objects, masks, deltaRMin)
def matchObjectCollection3
def cleanObjectCollection(objects, masks, deltaRMin)
def deltaR2(e1, p1, e2, p2)
def matchObjectCollection2(objects, matchCollection, deltaRMax=0.3)
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
double deltaR(double eta1, double eta2, double phi1, double phi2)
def matchObjectCollection(objects, matchCollection, deltaR2Max)
def bestMatch(object, matchCollection)