7 #ifndef TRIGGERANALYSISINTERFACES_ITRIGGLOBALEFFICIENCYCORRECTIONTOOL_H 
    8 #define TRIGGERANALYSISINTERFACES_ITRIGGLOBALEFFICIENCYCORRECTIONTOOL_H 1 
   17 #include <type_traits> 
   18 #include <string_view> 
   25     template<
typename Arg> 
static constexpr 
bool validArgs(
unsigned nTrailingDoubles);
 
   26     template<
typename Arg1, 
typename Arg2, 
typename... OtherArgs> 
static constexpr 
bool validArgs(
unsigned nTrailingDoubles);
 
   39     template<
typename... 
Args>
 
   41     template<
typename... 
Args>
 
   43     template<
typename BoolOrMap, 
typename... 
Args>
 
   59     double* 
handleArg(
double& 
arg, std::vector<const xAOD::IParticle*>&) { 
return &
arg; }
 
   60     template<
typename P>  
double* 
handleArg(
const std::vector<P>& 
arg, std::vector<const xAOD::IParticle*>& 
particles)
 
   67 template<
typename Arg>
 
   71     using P = std::remove_cv_t<Arg>;
 
   72     return std::is_same<P, std::vector<xAOD::Electron*>>
::value 
   73         || std::is_same<P, std::vector<const xAOD::Electron*>>
::value 
   74         || std::is_same<P, std::vector<xAOD::Muon*>>
::value 
   75         || std::is_same<P, std::vector<const xAOD::Muon*>>
::value 
   76         || std::is_same<P, std::vector<xAOD::Photon*>>
::value 
   77         || std::is_same<P, std::vector<const xAOD::Photon*>>
::value;
 
   80 template<
typename Arg1, 
typename Arg2, 
typename... OtherArgs>
 
   84     for(
bool x : xs) 
if(!
x) 
return validArgs<Arg1>(0) && 
validArgs<Arg2, OtherArgs...>(nTrailingDoubles);
 
   85     unsigned nTD = 
sizeof...(OtherArgs);
 
   86     if(nTD == nTrailingDoubles) 
return validArgs<Arg1>(0) && validArgs<Arg2>(0);
 
   92 template<
typename... 
Args>
 
   96     std::vector<const xAOD::IParticle*> 
particles;
 
  101 template<
typename... 
Args>
 
  105     std::vector<const xAOD::IParticle*> 
particles;
 
  110 template<
typename BoolOrMap, 
typename... 
Args>
 
  114     std::vector<const xAOD::IParticle*> 
particles;
 
  119 #endif //> !TRIGGERANALYSISINTERFACES_ITRIGGLOBALEFFICIENCYCORRECTIONTOOL_H