CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AndSelector.h
Go to the documentation of this file.
1 #ifndef CommonTools_Utils_AndSelector_h
2 #define CommonTools_Utils_AndSelector_h
3 /* \class AndSelector
4  *
5  * \author Luca Lista, INFN
6  *
7  * $Id: AndSelector.h,v 1.1 2009/02/20 16:20:38 llista Exp $
8  */
9 
10 namespace helpers {
11  struct NullAndOperand;
12 }
13 
14 namespace reco {
15  namespace modules {
16  template<typename T1, typename T2, typename T3, typename T4, typename T5> struct CombinedEventSetupInit;
17  }
18 }
19 
20 template<typename S1, typename S2,
21  typename S3 = helpers::NullAndOperand, typename S4 = helpers::NullAndOperand,
22  typename S5 = helpers::NullAndOperand>
23 struct AndSelector {
24  AndSelector( const S1 & s1, const S2 & s2, const S3 & s3, const S4 & s4, const S5 & s5 ) :
25  s1_( s1 ), s2_( s2 ), s3_( s3 ), s4_( s4 ), s5_( s5 ) { }
26  template<typename T>
27  bool operator()( const T & t ) const {
28  return s1_( t ) && s2_( t ) && s3_( t ) && s4_( t ) && s5_( t );
29  }
30 
31 private:
32  friend class reco::modules::CombinedEventSetupInit<S1, S2, S3, S4, S5>;
33  S1 s1_;
34  S2 s2_;
35  S3 s3_;
36  S4 s4_;
37  S5 s5_;
38 };
39 
40 
41 template<typename S1, typename S2>
42 struct AndSelector<S1, S2, helpers::NullAndOperand, helpers::NullAndOperand, helpers::NullAndOperand> {
43  AndSelector( const S1 & s1, const S2 & s2 ) :
44  s1_( s1 ), s2_( s2 ) { }
45  template<typename T>
46  bool operator()( const T & t ) const {
47  return s1_( t ) && s2_( t );
48  }
49  template<typename T1, typename T2>
50  bool operator()( const T1 & t1, const T2 & t2 ) const {
51  return s1_( t1 ) && s2_( t2 );
52  }
53 private:
54  friend class reco::modules::CombinedEventSetupInit<S1, S2, helpers::NullAndOperand, helpers::NullAndOperand, helpers::NullAndOperand>;
55  S1 s1_;
56  S2 s2_;
57 };
58 
59 template<typename S1, typename S2, typename S3>
60 struct AndSelector<S1, S2, S3, helpers::NullAndOperand, helpers::NullAndOperand> {
61  AndSelector( const S1 & s1, const S2 & s2, const S3 & s3 ) :
62  s1_( s1 ), s2_( s2 ), s3_( s3 ) { }
63  template<typename T>
64  bool operator()( const T & t ) const {
65  return s1_( t ) && s2_( t ) && s3_( t );
66  }
67  template<typename T1, typename T2, typename T3>
68  bool operator()( const T1 & t1, const T2 & t2, const T3 & t3 ) const {
69  return s1_( t1 ) && s2_( t2 ) && s3_( t3 );
70  }
71 private:
72  friend class reco::modules::CombinedEventSetupInit<S1, S2, S3, helpers::NullAndOperand, helpers::NullAndOperand>;
73  S1 s1_;
74  S2 s2_;
75  S3 s3_;
76 };
77 
78 template<typename S1, typename S2, typename S3, typename S4>
79 struct AndSelector<S1, S2, S3, S4, helpers::NullAndOperand> {
80  AndSelector( const S1 & s1, const S2 & s2, const S3 & s3, const S4 & s4 ) :
81  s1_( s1 ), s2_( s2 ), s3_( s3 ), s4_( s4 ) { }
82  template<typename T>
83  bool operator()( const T & t ) const {
84  return s1_( t ) && s2_( t ) && s3_( t ) && s4_( t );
85  }
86  template<typename T1, typename T2, typename T3, typename T4>
87  bool operator()( const T1 & t1, const T2 & t2, const T3 & t3, const T4 & t4 ) const {
88  return s1_( t1 ) && s2_( t2 ) && s3_( t3 ) && s4_( t4 );
89  }
90 private:
91  friend class reco::modules::CombinedEventSetupInit<S1, S2, S3, S4, helpers::NullAndOperand>;
92  S1 s1_;
93  S2 s2_;
94  S3 s3_;
95  S4 s4_;
96 };
97 
98 #endif
tuple s2
Definition: indexGen.py:106
bool operator()(const T &t) const
Definition: AndSelector.h:27
AndSelector(const S1 &s1, const S2 &s2, const S3 &s3, const S4 &s4)
Definition: AndSelector.h:80
bool operator()(const T1 &t1, const T2 &t2, const T3 &t3) const
Definition: AndSelector.h:68
long double T
def template
Definition: svgfig.py:520
AndSelector(const S1 &s1, const S2 &s2, const S3 &s3, const S4 &s4, const S5 &s5)
Definition: AndSelector.h:24
bool operator()(const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4) const
Definition: AndSelector.h:87