ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/PhysicsTools/IsolationUtils/interface/PtIsolationAlgo.h
Revision: 1.1
Committed: Wed May 23 17:29:36 2007 UTC (17 years, 11 months ago) by auterman
Content type: text/plain
Branch point for: tex, PatCrossCleaner, Demo, SusyScan, scripts, IsolationUtils, MAIN
Log Message:
Initial revision

File Contents

# User Rev Content
1 auterman 1.1 #ifndef IsolationUtils_PtIsolationAlgo_h
2     #define IsolationUtils_PtIsolationAlgo_h
3     /* \class PtIsolationAlgo<T, C>
4     *
5     * \author Francesco Fabozzi, INFN
6     */
7     #include "PhysicsTools/Utilities/interface/Math.h"
8    
9     template <typename T, typename C>
10     class PtIsolationAlgo {
11     public:
12     typedef double value_type;
13     PtIsolationAlgo() { }
14     PtIsolationAlgo( double dRMin, double dRMax, double dzMax ) :
15     dRMin_( dRMin ), dRMax_( dRMax ), dzMax_( dzMax ) { }
16     double operator()(const T &, const C &) const;
17    
18     private:
19     double dRMin_, dRMax_, dzMax_;
20     };
21    
22     template <typename T, typename C>
23     double PtIsolationAlgo<T, C>::operator()(const T & cand, const C & elements) const {
24     double ptSum = 0;
25     double candVz = cand.vz();
26     double candEta = cand.eta();
27     double candPhi = cand.phi();
28     for( typename C::const_iterator elem = elements.begin(); elem != elements.end(); ++ elem ) {
29     double dz = fabs( elem->vz() - candVz );
30     double dR = deltaR( elem->eta(), elem->phi(), candEta, candPhi );
31     if ( dz < dzMax_ && dR < dRMax_ && dR > dRMin_ ) {
32     ptSum += elem->pt();
33     }
34     }
35     return ptSum;
36     }
37    
38     #endif